ich habe jetzt eine Struktur "ls_invoice", die folgenden zwei Komponenten haben:
1. Header: ist eine Tabelle, die Kopf Info für eine Rechnung enthält, wie z.B. WE, RG, Belegnummer usw.
2. Items: ist eine Tabelle, die alle Positionen enthält. Wobei jede Zeile der Tabelle ist wiederrum eine Tabelle (enthält die konkrete Info für eine Position, z.B. Materialnummer, Preis usw.).
Ich muss jetzt prüfen, ob der Preis einer Position 0 ist. Wenn der Preis 0 ist, muss die Position ausgenommen werden. Wie kann ich dann einzelne Zeile aus der Items Tabelle löschen?
LOOP AT ls_invoice-items INTO ls_bil_items_price.
LOOP AT ls_bil_items_price-IT_PRICE INTO ls_IT_price.
l_Item_Price = ls_IT_price-NETWR.
if l_Item_Price = 0.
"Price is null
???
endif.
endloop.
endloop.
Es wäre toll, wenn jemand mir ein paar Tipps geben könnte. Vielen Dank im Voraus!
LOOP AT ls_bil_items_price-IT_PRICE INTO ls_IT_price.
l_Item_Price = ls_IT_price-NETWR.
if l_Item_Price = 0.
"Price is null delete ls_bol_items_price-it.
endif.
endloop.
endloop.
Gruß Wolfgang
Folgende Benutzer bedankten sich beim Autor wreichelt für den Beitrag: uibig
mit jedem Schleifendurchlauf wird das Feld TABIX der SYST-Struktur automatisch mit der Zeile gefüllt, in der du dich gerade in der Tabelle befindest, daher TAB-IX = TABellen-IndeX.
Wenn du nun eine Zeile in der Tabelle findest, solltest du diese mit
DELETE TABLE ls_bil_items_price-IT_PRICE FROM ls_it_price INDEX sy-tabix
löschen können.
Wenn dir das ganze Tabelle in der Tabelle einer Struktur zu unübersichtlich wird, empfehle ich dir die Tabellen jeweils in eigene Feld-Symbole zu referenziere. Dadurch wirkt das ganze dann zumindest beim Lesen etwas übersichtlicher.
@Wolfgang
Ich glaube dein Befehl wird mittlerweile als obsolet betrachtet. Bin mir gerade nicht sicher, ob SAP da bei der Generierung nicht maulen würde, dass das im OO-Kontext nicht mehr erlaubt ist.
Folgende Benutzer bedankten sich beim Autor Thanatos82 für den Beitrag: uibig