Code: Alles auswählen.
IF is_user_address IS NOT INITIAL.
lo_struc ?= cl_abap_structdescr=>describe_by_data(
p_data = is_user_address ).
DO.
ASSIGN COMPONENT sy-index OF STRUCTURE is_user_address TO <lfs_field>.
IF sy-subrc NE 0.
EXIT.
ENDIF.
IF <lfs_field> IS NOT INITIAL.
READ TABLE lo_struc->components INDEX sy-index INTO DATA(ls_components).
"HIER MÜSSTE DER PARAMETER IN ADDRESSX auf true gesetzt werden das "Feld hat den gleichen Namen
"wie in ls_components bzw. is_user_address
BREAK-POINT.
ENDIF.
ENDDO.
ENDIF.
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
Ingo
Code: Alles auswählen.
LOOP AT lo_struc->components ASSIGNING FIELD-SYMBOL(<lfs_component>).
ASSIGN COMPONENT <lfs_component>-name OF STRUCTURE is_user_address
TO FIELD-SYMBOL(<lfs_field>).
IF <lfs_field> IS NOT INITIAL.
"HIER LS_USER_ADDRESS im gleichnamigen Feld zu <lfs_component>-name ein X zuweisen
BREAK-POINT.
ENDIF.
ENDLOOP.
Code: Alles auswählen.
LOOP AT lo_struc->components ASSIGNING FIELD-SYMBOL(<component>).
ASSIGN COMPONENT <component>-name OF STRUCTURE is_user_address TO FIELD-SYMBOL(<data_field>).
IF sy-subrc = 0 AND <data_field> IS NOT INITIAL.
ASSIGN component <component>-name OF STRUCTURE ls_user_address TO FIELD-SYMBOL(<datax_field>).
IF sy-subrc = 0.
<datax_field> = abap_true.
ENDIF.
ENDIF.
ENDLOOP.
Genau das habe ich gesucht! Mir qualmt auch der Kopf ;-)qyurryus hat geschrieben: ↑04.08.2021 14:27Bei den Variablennamen is_user_address und ls_user_address schwirrt mir der Kopf, aber wenn ich es richtig verstanden habe willst du folgendes tun?
Code: Alles auswählen.
LOOP AT lo_struc->components ASSIGNING FIELD-SYMBOL(<component>). ASSIGN COMPONENT <component>-name OF STRUCTURE is_user_address TO FIELD-SYMBOL(<data_field>). IF sy-subrc = 0 AND <data_field> IS NOT INITIAL. ASSIGN component <component>-name OF STRUCTURE ls_user_address TO FIELD-SYMBOL(<datax_field>). IF sy-subrc = 0. <datax_field> = abap_true. ENDIF. ENDIF. ENDLOOP.