Die COMPONENTS der CL_ABAP_STRUCTDESCR hast du auch schon überprüft, oder?a-dead-trousers hat geschrieben:Schau dir dazu mal meinen Code-Schnippsel an.
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
cmalthaner
Code: Alles auswählen.
LOOP AT nicht zu vergleichende Felder.
ASSIGN COMPONENT Name des nicht zu vergleichenden Feldes OF STRUCTURE Struc1 to <FS>.
CHECK SY-SUBRC = 0.
CLEAR <FS>.
ASSIGN COMPONENT Name des nicht zu vergleichenden Feldes OF STRUCTURE Struc2 to <FS>.
CHECK SY-SUBRC = 0.
CLEAR <FS>.
ENDLOOP.
* Da die nicht zu vergleichenden Felder in beiden Strukturen nun gleich sind, kannst du mittels eines normalen Vergleichs weitermachen
IF Struc1 = Struc2.
Gleich in allen zu vergleichenden Feldern
ELSE.
Ungleich in mindestens einem zu vergleichenden Feld.
ENDIF.
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
cmalthaner
Aber nur wenn die beiden Strukturen tatsächlich die gleichen Felder haben.black_adept hat geschrieben:Da die nicht zu vergleichenden Felder in beiden Strukturen nun gleich sind, kannst du mittels eines normalen Vergleichs weitermachen
Code: Alles auswählen.
ld_equal = abap_true.
LOOP AT lt_components ASSIGNING <ls_components>.
UNASSIGN <ls_field01>.
UNASSIGN <ls_field02>.
ASSIGN COMPONENT <ls_components>-name OF STRUCUTE ls_struct01 TO <ls_field01>.
ASSIGN COMPONENT <ls_components>-name OF STRUCUTE ls_struct02 TO <ls_field02>.
IF <ls_field01> IS ASSIGNED AND <ls_field02> IS ASSIGNED AND <ls_field01> NE <ls_field02>.
ld_equal = abap_false. "Prüfvariable löschen
exit. "Abbruch, weitere Vergleiche sind sinnlos
ENDIF.
ENDLOOP.
Code: Alles auswählen.
IF <ls_field01> IS NOT ASSIGNED OR <ls_field02> IS NOT ASSIGNED OR <ls_field01> NE <ls_field02>.
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
cmalthaner
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
cmalthaner