-
Notifications
You must be signed in to change notification settings - Fork 0
/
Set_x_struct
39 lines (30 loc) · 1.16 KB
/
Set_x_struct
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
*Copying content of one struct to another
*param
*is_struct type any imp
*cs_struct_x type any exp
METHOD set_x_struct.
DATA:
lr_typedescr TYPE REF TO cl_abap_typedescr,
lr_structdescr TYPE REF TO cl_abap_structdescr,
lt_fields TYPE ttfieldname,
lt_field_list TYPE ddfields.
lr_typedescr = cl_abap_structdescr=>describe_by_data( is_struct ).
lr_structdescr ?= lr_typedescr.
lt_field_list = lr_structdescr->get_ddic_field_list( ).
LOOP AT lt_field_list ASSIGNING FIELD-SYMBOL(<lfs_field>).
APPEND <lfs_field>-fieldname TO lt_fields.
ENDLOOP.
LOOP AT lt_fields ASSIGNING FIELD-SYMBOL(<field_name>).
ASSIGN COMPONENT <field_name> OF STRUCTURE is_struct TO FIELD-SYMBOL(<is>).
CHECK sy-subrc = 0.
ASSIGN COMPONENT <field_name> OF STRUCTURE cs_struct_x TO FIELD-SYMBOL(<cs_x>).
CHECK sy-subrc = 0.
IF <is> IS NOT INITIAL.
<cs_x> = abap_true.
ENDIF.
ENDLOOP.
ENDMETHOD.
*if line not exist in itab add str to itab
IF NOT line_exists( lt_adsmtp_old[ e_mail = ls_communications-email ] ).
APPEND VALUE #( email = ls_communications-email ) TO lt_adsmtp.
ENDIF.