Code: Alles auswählen.
IF tmpRegion NE wa_vbrk-land1.
tmpRegion = wa_vbrk-land1.
WRITE: / wa_vbrk-land1.
IF NOT tmpMatNr IS INITIAL.
tmpMatNr = '*****'. "Wert ungültig machen
IF tmpMatNr NE wa_vbrk-matnr.
WRITE: / wa_vbrk-matnr.
IF NOT tmpMaxWert IS INITIAL.
tmpMaxWert = '0.00'. "Wert ungültig machen
tmpMatNr = wa_vbrk-matnr.
IF tmpMaxWert LT varEinzelpreis.
tmpMaxWert = varEinzelpreis.
ENDIF.
ELSE.
tmpMaxWert = varEinzelpreis.
ENDIF.
ENDIF.
ELSE.
tmpMatNr = wa_vbrk-matnr.
WRITE: / wa_vbrk-matnr.
ENDIF.
ELSE.
ENDIF.
Hallo Mike.Michael.Nett hat geschrieben:Ich muss mich vielleicht jetzt schon für mein grausiges Coding entschuldigen, bin aber im Selbststudium und noch ziemlich am Anfang.
Mit freundlichem Gruß
Michael
Code: Alles auswählen.
l_matnr = wa_vbrk-matnr
AT new wa_vbrk-land
... hier ist wa_vbrk-matnr = *********
write l_matnr.
... drum vorher speichern
...
ENDAT.
Code: Alles auswählen.
LOOP AT itab ASSIGNING <wa_itab>.
AT NEW land.
* in <wa_itab>-matnr steht die Materialnummer zur Verfügung
ENDAT.
ENDLOOP.
Code: Alles auswählen.
SORT itab BY land1 matnr.
LOOP AT itab.
*GW Land
AT NEW land1.
WRITE: / itab-land1.
ULINE.
ENDAT.
*GW Artikel-Nr.
AT NEW matnr.
WRITE: / itab-matnr.
ENDAT.
WRITE: / itab-ebeln, itab-menge, itab-netpr.
*Summe pro Artikel
AT END OF matnr.
SUM.
WRITE : / '*' , itab-menge UNDER itab-menge.
ENDAT.
...
ENDLOOP.
Code: Alles auswählen.
LOOP AT itab INTO wa.
wa_save = wa.
AT NEW ...
...
ENDAT
...
ENDLOOP.
Es ist z.B. durchaus möglich in einem Loop vor "AT FIRST" ABAP-Befehle einzubauen ( die Sternchen der Workarea werden erst bei Eintritt in AT FIRST gefüllt - vorher ist die Workarea vollständig) oder auch hinter "AT LAST" noch ein paar Befehle abzusetzen.LOOP AT <itab>.
AT FIRST.... ENDAT.
AT NEW <f1>....... ENDAT.
AT NEW <f2>....... ENDAT.
.......
<Einzelsatzverarbeitung>
.......
AT END OF <f2>.... ENDAT.
AT END OF <f1>.... ENDAT.
AT LAST..... ENDAT.
ENDLOOP.
Hallo ereglam,ereglam hat geschrieben:dazu noch ein kleiner Tipp:
wenn man den LOOP mit ASSIGNING <fs> benutzt, hat man alle Felder im Zugriff, weil das FS ja direkt auf die Tabellenzeile verweist.
Das heißt im Besonderen, dass dann keines der Felder mit '*..*' maskiert ist!Code: Alles auswählen.
LOOP AT itab ASSIGNING <wa_itab>. AT NEW land. * in <wa_itab>-matnr steht die Materialnummer zur Verfügung ENDAT. ENDLOOP.
Code: Alles auswählen.
field-symbols: <wa_vbrk> LIKE LINE OF itab_vbrk.
LOOP AT itab_vbrk ASSIGNING <wa_vbrk>.
AT NEW <wa_vbrk>-LAND1.
WRITE: / 'Neues Land'.
ENDAT.
ENDLOOP.
Code: Alles auswählen.
LOOP AT itab INTO itab.
* Feldsymbol setzen
READ TABLE itab ASSIGNING <wa_itab> INDEX sy-tabix.
AT NEW land1.
* in <wa_itab>-matnr steht die Materialnummer zur Verfügung
ENDAT.
AT LAST land1.
SUM.
...
ENDAT.
ENDLOOP.
Oh, das wird wohl das Problem sein.ereglam hat geschrieben:
- Die Tabelle muss in der Spaltenreihenfolge korrekt aufgebaut sein:
Ein 'AT NEW Spalte 3' bedeutet immer auch, dass sich etwas in Spalte 1 und/oder 2 geändert haben kann, damit dieses Ereignis ausgelöst wird.
Das ist nur die vollständige Form für die Kurzform 'LOOP AT itab.'.Michael.Nett hat geschrieben:...
//Edit:
Soll es wirklich LOOP AT itab INTO itab heißen? Mach mein ABAP-Bild nicht kaputt...
Ein Loop muss doch in einen Arbeitsbereich geschoben werden, oder?