sie

16

Programowanie ABAP – pętla LOOP…ENDLOOP (2)

Autor: admin

Dzisiaj do naszej pętli dodamy warunkowe sprawdzanie po polu – dzięki temu będziemy mogli ograniczyć wybór, oraz przyspieszyć działanie programu.

Korzystając z naszego pierwszego wpisu na temat pętli LOOP…ENDLOOP, wykorzystam kod z przykładu 2 - na końcu mieliśmy pętlę po tabeli lt_mara, czyli program nam przeleciał przez każdy rekord z tej tabeli.

Ale dla nas jest ważne żeby z tej tabeli program wyświetlił nam materiały które są towarami handlowymi – czyli pole mtart (typ materiału) musi być HAWA. Do tego używamy klauzuli WHERE dla pętli, czyli powinno to wyglądać następująco:

LOOP AT lt_mara WHERE mtart = ’HAWA’.
WRITE:/ lt_mara-matnr, lt_mara-mtart.
ENDLOOP.

Widzimy że doszło nam wyrażenie WHERE, w naszym wolnym tłumaczeniu znaczy – gdzie, dla warunku pola – i teraz wpisujemy nazwę pola z tabeli lt_mara, czyli mtart ma być równe ‘HAWA’ - czyli dla towaru handlowego.

W tym wypadku program w pętli będzie czytał tylko rekordy dla towarów handlowych. Równie dobrze to ograniczenie moglibyśmy zrobić w SELECT gdzie mamy WHERE użyte tylko dla materiału, a wyglądało by to tak:

 SELECT * FROM mara INTO TABLE lt_mara
                WHERE matnr IN material
                         OR mtart = ’HAWA’.

W tym wypadku moglibyśmy zrezygnować w pętli z dodatkowego WHERE, ponieważ system wybrałby tylko takie rekordy do tabeli lokalnej.

Zostaw komentarz