Code: Alles auswählen.
Select v~kunrg v~vkorg v~fkart v~fkdat v~netwr v~mwsbk
v~vbeln v~valdt k~name1 k~stras k~ort01 k~pstlz b~bankl
b~bkont b~bankn
into corresponding fields of table itab
from
( ( vbrk as v INNER JOIN kna1 as k
ON v~kunrg = k~kunnr )
inner join
knbk as b
on b~kunnr = k~kunnr )
where v~fkdat between '20060201' and '20080229'
and v~vkorg = '3000'
and v~fkart = 'ZES'.
Sort itab by kunrg name1.
Loop at itab into wa.
at new kunrg.
Concatenate wa-bankl wa-bkont wa-bankn into bankverbindung.
Concatenate bankverbindung brutto into bank_brutto.
Condense bank_brutto no-gaps.
Replace '.' in bank_brutto with ''.
dat_day = wa-valdt+6(2).
dat_mon = wa-valdt+4(2).
dat_year = wa-valdt(4).
Concatenate dat_day dat_mon dat_year into duedate.
Concatenate wa-vbeln duedate into fak_due.
Shift fak_due left deleting leading '0'.
write: / 'Loop: '.
write: / '5670B80112857000', wa-kunrg, wa-name1, bank_brutto,
'REM765POP', fak_due.
endat.
endloop.
Kann man umgehen indem manWenn in der Anweisung LOOP der Zusatz INTO verwendet wird, um den Inhalt der aktuellen Zeile einem Arbeitsbereich wa zuzuweisen, wird dessen Inhalt bei Eintritt in die AT-ENDAT-Kontrollstruktur wie folgt geändert:
Die Komponenten des aktuellen Gruppenschlüssels bleiben unverändert.
Alle Komponenten mit zeichenartigem flachen Datentyp rechts vom aktuellen Gruppenschlüssel werden an jeder Stelle auf das Zeichen "*" gesetzt.
Alle anderen Komponenten rechts vom aktuellen Gruppenschlüssel werden auf ihren Initialwert gesetzt.
Wenn man statt des INTO mit ASSIGNING arbeitet, findest auch keine Ersetzung statt:GastX hat geschrieben:...Gruß, Frank
- LOOP AT itab INTO wa.
wa2 = wa.
AT NEW kunrg.
CONCATENATE wa2-bankl wa2-bkont wa2-bankn INTO bankverbindung.
CONCATENATE bankverbindung brutto INTO bank_brutto.
CONDENSE bank_brutto NO-GAPS.
REPLACE '.' IN bank_brutto WITH ''.
dat_day = wa2-valdt+6(2).
dat_mon = wa2-valdt+4(2).
dat_year = wa2-valdt(4).
CONCATENATE dat_day dat_mon dat_year INTO duedate.
CONCATENATE wa2-vbeln duedate INTO fak_due.
SHIFT fak_due LEFT DELETING LEADING '0'.
WRITE: / 'Loop: '.
WRITE: / '5670B80112857000', wa2-kunrg, wa2-name1, bank_brutto,
'REM765POP', fak_due.
ENDAT.
ENDLOOP.
Code: Alles auswählen.
LOOP AT itab ASSIGNING <wa>.
AT NEW kunrg.
CONCATENATE <wa>-bankl <wa>-bkont <wa>-bankn INTO bankverbindung.
CONCATENATE bankverbindung brutto INTO bank_brutto.
CONDENSE bank_brutto NO-GAPS.
REPLACE '.' IN bank_brutto WITH ''.
dat_day = <wa>-valdt+6(2).
dat_mon = <wa>-valdt+4(2).
dat_year = <wa>-valdt(4).
CONCATENATE dat_day dat_mon dat_year INTO duedate.
CONCATENATE <wa>-vbeln duedate INTO fak_due.
SHIFT fak_due LEFT DELETING LEADING '0'.
WRITE: / 'Loop: '.
WRITE: / '5670B80112857000', <wa>-kunrg, <wa>-name1, bank_brutto,
'REM765POP', fak_due.
ENDAT.
ENDLOOP.