Folgende Benutzer bedankten sich beim Autor PeterPaletti für den Beitrag:
MarkusW
Code: Alles auswählen.
cl_abap_corresponding=>create( source = <gt_data>
destination = <gt_data_chk>
mapping = VALUE cl_abap_corresponding=>mapping_table( )
)->execute( EXPORTING source = <gt_data>
CHANGING destination = <gt_data_chk> ).
Code: Alles auswählen.
<gt_data_chk> = CORRESPONDING #( <gt_data> ).
Code: Alles auswählen.
<gt_data_chk> = <gt_data>.
Code: Alles auswählen.
Category ABAP programming error
Runtime Errors OBJECTS_TABLES_NOT_COMPATIBLE
Wenn ich Markus richtig verstanden habe, heißen die Spalten der Quelltabelle A;B;C;D;E;F (riecht für mich nach Excel) und die der Zieltabelle haben sprechende Namen. Wenn man da ein Mapping beim Corresponding machen will, kann man ja gleich die einzelnen Felder zuweisen.ewx hat geschrieben: ↑26.01.2024 12:43wenn du wirklich nicht weißt, wie die Feldname heißen, bleibt dir nichts anderes als ein LOOP mit ASSIGN COMPONENT sy-index.
Aber irgendwie liest du die Daten doch ein? also hast du auch hier eine Struktur mit Feldnamen, oder nicht?
Und dann kannst du sie beim Mapping bei CORRESPONDING angeben.
Korrekt...dachte es irgendwo erwähnt zu haben...quelle ist Excel...und das auch nicht immer die gleiche Datei... somit ändern sich die Strukturbreiten je nachdem welche Excel eingelesen wird.PeterPaletti hat geschrieben: ↑26.01.2024 13:11Wenn ich Markus richtig verstanden habe, heißen die Spalten der Quelltabelle A;B;C;D;E;F (riecht für mich nach Excel) und die der Zieltabelle haben sprechende Namen. Wenn man da ein Mapping beim Corresponding machen will, kann man ja gleich die einzelnen Felder zuweisen.
Nö. Eine längere Mappingliste im Code ist immer noch allemal eleganter, besser lesbar und mutmaßlich auch schneller als ein händischer LOOP. Zumal Dir beim LOOP das Mapping ja auch nicht erspart bleiben würde; da müsstest Du dannPeterPaletti hat geschrieben: ↑26.01.2024 13:11Wenn ich Markus richtig verstanden habe, heißen die Spalten der Quelltabelle A;B;C;D;E;F (riecht für mich nach Excel) und die der Zieltabelle haben sprechende Namen. Wenn man da ein Mapping beim Corresponding machen will, kann man ja gleich die einzelnen Felder zuweisen.
Code: Alles auswählen.
<tabelle1>-feldname1 = <tabelle2>-anderer_feldname1.
<tabelle1>-feldname2 = <tabelle2>-anderer_feldname2.
usw.
Code: Alles auswählen.
DO spaltenanzahl TIMES.
ASSIGN COMPONENT sy-index of tabelle1 to FIELD-SYMBOL(<tab1>).
ASSIGN COMPONENT sy-index of tabelle2 to FIELD-SYMBOL(<tab2>).
<tab2> = <tab1>.
ENDDO.