Code: Alles auswählen.
DATA target TYPE mara_tab.
DATA source TYPE mara_tab.
source = VALUE #( mandt = '600'
vpsta = '0'
( matnr = '00000000000076964' )
( matnr = '00000000000076182' )
( matnr = '00000000000076162' )
( matnr = '00000000000076165' )
( matnr = '00000000000076150' )
( matnr = '00000000000075274' )
( matnr = '00000000000075275' )
( matnr = '00000000000074094' )
( matnr = '00000000000074868' )
( matnr = '00000000000102906' ) ).
target = VALUE mara_tab( FOR <l> IN source
( VALUE #( BASE CORRESPONDING #( <l> )
vpsta = COND #( WHEN <l>-matnr+16(1) = '8' THEN 'X' ELSE <l>-vpsta ) ) ) ).
cl_demo_output=>display_data( target ).
Code: Alles auswählen.
types:
begin of source_table_type,
entry_id type i,
partner1 type partner,
partner2 type partner,
text type string,
end of source_table_type,
begin of target_table_type,
entry_id type i,
partner type partner,
text type string,
end of target_table_type.
data source_table type sorted table of source_table_type with unique key entry_id.
data target_table type sorted table of target_table_type with unique key entry_id.
source_table = value #(
( entry_id = 1 partner1 = '100123456' partner2 = '' text = '"Entry 1!"' )
( entry_id = 1 partner1 = '' partner2 = '200123456' text = '"Entry 2! Text Blah;"' )
( entry_id = 1 partner1 = '100789123' partner2 = '' text = '"Ich; mag; Züge?"' )
( entry_id = 1 partner1 = '' partner2 = '200147852' text = 'Schraubschlüssel 2"' )
).
target_table = corresponding #( source_table
mapping entry_id = entry_id
partner = cond #( when partner1 is initial then partner2
when partner2 is initial then partner1
else '' )
text = me->escape_text( text ) )
Code: Alles auswählen.
target_table = value #(
( entry_id = 1 partner = '100123456' text = '"""Entry 1!"""' )
( entry_id = 1 partner = '200123456' text = '"""Entry 2! Text Blah,"""' )
( entry_id = 1 partner = '100789123' text = '"""Ich; mag; Züge?"""' )
( entry_id = 1 partner = '200147852' text = 'Schraubschlüssel 2"""' )
).
Code: Alles auswählen.
loop at source_table assigning field-symbol(<line>).
insert value target_table_type(
entry_id = <line>-entry_id
partner = cond #( when <line>-partner1 is initial then <line>-partner2
when <line>-partner2 is initial then <line>-partner1
else '' )
text = me->escape_text( conv string( <line>-text ) )
) into table target_table.
endloop.
Moin Radinator,Radinator hat geschrieben: ↑19.11.2025 15:55Mein "Problem" besteht darin, dass ich bei der Verwendung von CORRESPONDING mit MAPPING "nur" 2 Zeilen angeben müsste wärend es halt jetzt (von knapp 30 Spalten) halt alle sind und ich bei zwei was extriges machen muss und den Rest schreiben muss weil es sonst nicht übernommen werden würde.
Code: Alles auswählen.
partner = cond #( when partner1 is initial then partner2
when partner2 is initial then partner1
else '' )Code: Alles auswählen.
partner = cond #( when partner1 is initial then partner2
else partner1 )Code: Alles auswählen.
partner = cond #( when partner1 is not initial then partner1
else partner2 )