Code: Alles auswählen.
if itab-rt_6p74 gt 0.
itab-r_6p7x = ' 100 ' * itab-rt_6p78 / itab-rt_6p74.
endif.
if itab-rt_6p54 gt 0.
itab-r_6p5x = ' 100 ' * itab-rt_6p58 / itab-rt_6p54.
endif.
Code: Alles auswählen.
DATA: tabfieldname1 TYPE string,
tabfieldname2 TYPE string,
tabfieldname3 TYPE string.
FIELD-SYMBOLS: <tabfield1> TYPE any,
<tabfield2> TYPE any,
<tabfield3> TYPE any.
DATA: lv_num(2) TYPE c,
lv_let(1) TYPE c.
lv_num = 5.
DO 5 TIMES.
CONCATENATE 'rt_6p' lv_num '4' INTO tabfieldname1.
ASSIGN tabfieldname1 TO <tabfield1>.
CONCATENATE 'itab-r_6p' lv_num 'x' INTO tabfieldname2.
* ASSIGN tabfieldname1 TO <tabfield2>.
CONCATENATE 'itab-rt_6p' lv_num '8' INTO tabfieldname3.
* ASSIGN tabfieldname1 TO <tabfield3>.
LOOP AT itab WHERE <tabfield1> GT 0.
tabfieldname2 = ' 100 ' * tabfieldname3 / tabfieldname1.
ENDLOOP.
Code: Alles auswählen.
loop at itab.
add itab-rt_6p76 to summe-rt_6p76.
add itab-rt_6p78 to summe-rt_6p78.
add itab-rt_6p74 to summe-rt_6p74.
add itab-r_6p7x to summe-r_6p7x.
Code: Alles auswählen.
if zw-bloecke = 1.
move-corresponding itab to m1tab.
if itab-werks eq '****'.
m1tab-wostd = space.
else.
write itab-wostd to m1tab-wostd.
endif.
if zw-inhalt_block_1 = '6px6'.
m1tab-b1_6px6 = itab-rt_6px6.
m1tab-b1_6px8 = itab-rt_6px8.
m1tab-b1_6px4 = itab-rt_6px4.
m1tab-b1_6pxx = itab-r_6pxx.
endif.
[…]
append m1tab.
endif.
if zw-bloecke = 2.
move-corresponding itab to m2tab.
if itab-werks eq '****'.
m2tab-wostd = space.
else.
write itab-wostd to m2tab-wostd.
endif.
if zw-inhalt_block_1 = '6px6'.
m2tab-b1_6px6 = itab-rt_6px6.
m2tab-b1_6px8 = itab-rt_6px8.
m2tab-b1_6px4 = itab-rt_6px4.
m2tab-b1_6pxx = itab-r_6pxx.
endif.
[…]
if zw-inhalt_block_2 = '6px6'.
m2tab-b2_6px6 = itab-rt_6px6.
m2tab-b2_6px8 = itab-rt_6px8.
m2tab-b2_6px4 = itab-rt_6px4.
m2tab-b2_6pxx = itab-r_6pxx.
endif.
append m2tab.
endif.
Poste mal bitte die Definition von ITAB. Verwendest du wirklich Kopfzeilen?dvdh1979 hat geschrieben:aktuell suche ich nach einem Weg, Aufrufe innerhalb von Schleifen zu dynamisieren, habe aber noch keinen richtigen "Ansatz" gefunden und hoffe, dass man mir hier weiterhelfen kann.
Code: Alles auswählen.
DATA: lv_num TYPE c LENGTH 1.
LOOP AT itab. "Für jede Zeile
lv_num = 1. "Feldzähler zurücksetzten
DO 5 times. "Für jeden Block
CONCATENATE 'RT_6P' lv_num '4' INTO tabfieldname1. "Nur den Feldnamen, Großbuchstaben
ASSIGN COMPONENT (tabfieldname1) OF STRUCTURE itab TO <tabfield1>. "ein Feld der Struktur
IF <tabfield1> > 0. "Prüfung für jeden "Block"
CONCATENATE 'RT_6P' lv_num 'X' INTO tabfieldname2. "Nur den Feldnamen, Großbuchstaben
ASSIGN COMPONENT (tabfieldname2) OF STRUCTURE itab TO <tabfield2>. "ein Feld der Struktur
CONCATENATE 'RT_6P' lv_num '8' INTO tabfieldname3. "Nur den Feldnamen, Großbuchstaben
ASSIGN COMPONENT (tabfieldname3) OF STRUCTURE itab TO <tabfield3>. "ein Feld der Struktur
<tabfield2> = 100 * <tabfield3> / <tabfield1>.
ENDIF.
lv_num = lv_num + 1. "Zähler für nächsten Block erhöhen.
ENDDO.
ENDLOOP.