ABAP/4 - cs.put. · PDF filez poziomu Edytora ABAP opcja Utilities Program Analysis. Operatory...

20

Click here to load reader

Transcript of ABAP/4 - cs.put. · PDF filez poziomu Edytora ABAP opcja Utilities Program Analysis. Operatory...

Page 1: ABAP/4 - cs.put. · PDF filez poziomu Edytora ABAP opcja Utilities Program Analysis. Operatory porównania łańcuchów znakowych Operator Opis Prawda gdy  Wielko

ABAP/4

Page 2: ABAP/4 - cs.put. · PDF filez poziomu Edytora ABAP opcja Utilities Program Analysis. Operatory porównania łańcuchów znakowych Operator Opis Prawda gdy  Wielko

Instrukcja IF

Opis: Instrukcja warunkowa

Składnia:IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

[ELSEIF warunek.

… ]

[ELSE.

… ]

ENDIF.

gdzie:

warunek – dowolne wyrażenie logiczne o wartości TRUE lub FALSE

… - dowolny fragment kodu

Page 3: ABAP/4 - cs.put. · PDF filez poziomu Edytora ABAP opcja Utilities Program Analysis. Operatory porównania łańcuchów znakowych Operator Opis Prawda gdy  Wielko

Instrukcja IF – właściwości

IF musi być zakończone przez ENDIF.

ELSE oraz ELSEIF są opcjonalne

Można stosować złożone warunki, w których o kolejności wartościowania decydują nawiasy

Klauzula IS INITIAL pozwala sprawdzić czy wartość zmiennej jest znakiem pustym (typ C) lub zerem (pozostałe typy) np. z1 IS INITIAL

Klauzula IS NULL pozwala sprawdzić czy zmiennej nie przypisano żadnej wartości

NOT musi poprzedzać warunek

ELSEIF – stosowana w celu uniknięcia zagnieżdżeń instrukcji IF

Page 4: ABAP/4 - cs.put. · PDF filez poziomu Edytora ABAP opcja Utilities Program Analysis. Operatory porównania łańcuchów znakowych Operator Opis Prawda gdy  Wielko

Operatory porównania

Operatory: = lub EQ

<> lub NE lub ><

> lub GT

< lub LT

>= lub GE lub =>

<= lub LE lub =<

z BETWEEN x AND y

NOT z BETWEEN z AND y

Operandy: zmienne

literały

łańcuchy pól – traktowane jak zmienna typu C

Page 5: ABAP/4 - cs.put. · PDF filez poziomu Edytora ABAP opcja Utilities Program Analysis. Operatory porównania łańcuchów znakowych Operator Opis Prawda gdy  Wielko

Konwersja danych przy porównaniach

Przy niezgodności typów przeprowadzana jest automatyczna konwersja według następującego algorytmu:1. Jeśli jedno pole jest typu F, to pozostałe są konwertowane do typu F

2. Jeśli jedno pole jest typu P, to pozostałe są konwertowane do typu P

3. Jeśli jedno pole jest typu I, to pozostałe są konwertowane do typu I

4. Jeśli jedno pole jest typu D, to pozostałe są konwertowane do typu D, o ile nie są typu C lub N

5. Jeśli jedno pole jest typu T, to pozostałe są konwertowane do typu T, on ile nie są typu C lub N

6. Jeśli jedno jest typu N, to wszystkie pola są konwertowane do typu P

7. Jeśli jedno jest typu C, to pozostałe pola typu X są konwertowane do typu C

Konwersje literałów: do typu I – liczby do 9 cyfr

do typu P – liczby dłuższe niż 9 cyfr

do typu C – pozostałe literały

Wyświetlanie miejsc występowania konwersji: z poziomu Edytora ABAP opcja Utilities Program Analysis

Page 6: ABAP/4 - cs.put. · PDF filez poziomu Edytora ABAP opcja Utilities Program Analysis. Operatory porównania łańcuchów znakowych Operator Opis Prawda gdy  Wielko

Operatory porównania łańcuchów

znakowychOperator Opis Prawda gdy … Wielkość liter Końcowe spacje

z1 CO z2 contains only z1 składa się tylko ze

znaków zawartych w z2

ma znaczenie ważne

z1 CN z2 NOT z1 CO z2 z1 składa się ze znaków

innych niż zawarte w z2

ma znaczenie ważne

z1 CA z2 contains any z1 zawiera dowolny znak z

z2

ma znaczenie ważne

z1 NA z2 NOT z1 CA z2 z1 nie zawiera żadnego

znaku z z2

ma znaczenie ważne

z1 CS z2 contains string z1 zawiera podciąg z2 bez znaczenia pomijane

z1 NS z2 NOT z1 CS z2 z1 nie zawiera podciągu z2 bez znaczenia pomijane

z1 CP z2 contains pattern z1 zawiera podciąg

pasujący do wzorca z2

bez znaczenia pomijane

z1 NP z2 NOT z1 CP z2 z1 nie zawiera podciągu

pasującego do wzorca z2

bez znaczenia pomijane

Symbole wzorca:

* dowolny ciąg znaków

+ dowolny znak

# następny znak jest interpretowany jest dosłownie

(dla znaków *, +, #, wielkości liter itp.)

Page 7: ABAP/4 - cs.put. · PDF filez poziomu Edytora ABAP opcja Utilities Program Analysis. Operatory porównania łańcuchów znakowych Operator Opis Prawda gdy  Wielko

Zmienna SY-FDPOS

Zmienna ustawiana w wyniku zastosowania operatorów porównania łańcuchów znakowych

Porównanie Wartość SY-FDPOS dla wyniku

TRUE

Wartość SY-FDPOS dla wyniku

FALSE

z1 CO z2 długość z1 offset pierwszego znaku należącego

do z1, który nie występuje w z2

z1 CN z2 offset pierwszego znaku należącego

do z1, który występuje w z2

długość z1

z1 CA z2 offset pierwszego znaku należącego

do z1, który występuje w z2

długość z1

z1 NA z2 długość z1 offset pierwszego znaku należącego

do z1 i występującego w z2

z1 CS z2 offset pierwszego znaku w z2, który

występuje w z1

długość z1

z1 NS z2 długość z1 offset pierwszego znaku należącego

do z1 i występującego w z2

z1 CP z2 offset pierwszego znaku w z2, który

występuje w z1

długość z1

Page 8: ABAP/4 - cs.put. · PDF filez poziomu Edytora ABAP opcja Utilities Program Analysis. Operatory porównania łańcuchów znakowych Operator Opis Prawda gdy  Wielko

Instrukcja CASE

Instrukcja wyboru

Składnia:CASE z1.

WHEN z2 [OR zn …].

WHEN z3 [OR zn …].

[ WHEN OTHERS.

… ]

ENDCASE.

gdzie:

z1, z2, z3, zn – zmienna, literał, stała, łańcuch pól

… - dowolny ciąg instrukcji (również pusta)

Page 9: ABAP/4 - cs.put. · PDF filez poziomu Edytora ABAP opcja Utilities Program Analysis. Operatory porównania łańcuchów znakowych Operator Opis Prawda gdy  Wielko

Instrukcja CASE – właściwości

Wykonywana jest tylko pierwsza instrukcja WHEN, dla której spełniony jest warunek

WHEN OTHERS oznacza warunek, który będzie spełniony jeśli nie będzie spełniony żaden z warunków WHEN

Jeśli nie wyspecyfikowano WHEN OTHERS a żaden z warunków WHEN nie jest spełniony, to sterowanie jest przekazywane do pierwszej instrukcji po ENDCASE

Niedopuszczalne są wyrażenia wymagające wartościowania

Łańcuchy pól traktowane są jak zmienna typu C

Porównuje się pojedyncze wartości w relacji równości

Page 10: ABAP/4 - cs.put. · PDF filez poziomu Edytora ABAP opcja Utilities Program Analysis. Operatory porównania łańcuchów znakowych Operator Opis Prawda gdy  Wielko

Instrukcja EXIT

Opis: przerwanie wykonywania bloku instrukcji i

przekazanie sterowania poza ten blok

Składnia:EXIT.

Działanie: wewnątrz pętli powoduje przerwanie

wykonywania tej pętli

w podprogramie powoduje wyjście z podprogramu

w programie głównym powoduje przerwanie wykonywania tego programu

Page 11: ABAP/4 - cs.put. · PDF filez poziomu Edytora ABAP opcja Utilities Program Analysis. Operatory porównania łańcuchów znakowych Operator Opis Prawda gdy  Wielko

Instrukcja DO

Opis: pętla

Składnia:DO [z1 TIMES] [VARYING f1 FROM s-c1 NEXT s-c2 [VARYING f2 FROM s2-c1 NEXT s2-c2 … ] ].

[EXIT.]

ENDDO.

gdzie:

z1 – zmienna, literał lub stała

s, s2 – łańcuch pól o składowych c1 i c2

f1 – zmienna (składowe łańcucha s muszą być konwertowalne do typu i rozmiaru f1)

Page 12: ABAP/4 - cs.put. · PDF filez poziomu Edytora ABAP opcja Utilities Program Analysis. Operatory porównania łańcuchów znakowych Operator Opis Prawda gdy  Wielko

Instrukcja DO – właściwości

Pętla DO może być wielokrotnie zagnieżdżona

EXIT powoduje natychmiastowe wyjście z pętli

DO bez warunku oznacza pętlę nieskończoną

Zmiana wartości v1 wewnątrz pętli nie ma wpływu na wykonywanie pętli

Zmienna SY-INDEX wewnątrz pętli zawiera numer bieżącej iteracji, po ENDDO ma wartość taką, jaką miała przed wejściem do pętli, w pętlach zagnieżdżonych zawiera numer iteracji bieżącej pętli

Zmiana wartości SY-INDEX wewnątrz pętli nie ma wpływu na jej wykonanie, przed następną iteracją zostanie przywrócona poprzednia wartość numeru iteracji

Page 13: ABAP/4 - cs.put. · PDF filez poziomu Edytora ABAP opcja Utilities Program Analysis. Operatory porównania łańcuchów znakowych Operator Opis Prawda gdy  Wielko

Klauzula VARYING

Opis: stosowana w celu dostępu do pól łańcucha w pewnym ciągu

NEXT określa odległość w bajtach do następnej składowej

Przykład:

REPORT zpba007.

DATA: f1,

BEGIN OF s,

c1 VALUE 'A',

c2 VALUE 'B',

c3 VALUE 'C',

c4 VALUE 'D',

c5 VALUE 'E',

c6 VALUE 'F',

END OF s.

WRITE / ''.

DO 6 TIMES VARYING f1 FROM s-c1 NEXT s-c2.

WRITE f1.

ENDDO.

WRITE / ''.

DO 3 TIMES VARYING f1 FROM s-c1 NEXT s-c3.

WRITE f1.

ENDDO.

Wynik:

A B C D E F

A C E

Page 14: ABAP/4 - cs.put. · PDF filez poziomu Edytora ABAP opcja Utilities Program Analysis. Operatory porównania łańcuchów znakowych Operator Opis Prawda gdy  Wielko

Klauzula VARYING - właściwości

NEXT – określa odległość w bajtach pomiędzy kolejnymi odczytami

Rozmiar f1 określa ile bajtów odczytać

Wszystkie składowe s odczytywane w ten sposób w pętli DO muszą być oddalone od siebie o taką samą liczbę bajtów

Nie przeprowadza się konwersji podczas przypisania do f1

Aby uniknąć odczytów danych spoza struktury s należy zapewnić wyjście z pętli DO w odpowiednim momencie (EXIT lub TIMES)

Wartość f1 jest ponownie zapisywana w strukturze s po osiągnięciu instrukcji ENDDO, bez względu na to, czy została ona wcześniej zmodyfikowana, czy też nie

Opuszczenie pętli instrukcją EXIT nie zabezpiecza przed działaniem powyższego mechanizmu

Aby uniknąć nadpisania składowej struktury wartością f1 można zastosować instrukcję STOP lub instrukcję wywołującą komunikat o błędzie.

Page 15: ABAP/4 - cs.put. · PDF filez poziomu Edytora ABAP opcja Utilities Program Analysis. Operatory porównania łańcuchów znakowych Operator Opis Prawda gdy  Wielko

Instrukcja WHILE

Opis: pętla wykonywana warunkowo

Składnia:WHILE warunek [VARY f1 FROM s-c1 NEXT s-c2 [VARY f2 FROM s-c1 NEXT s-c2 … ]

[EXIT.]

ENDWHILE.

gdzie:

warunek – jest warunkiem logicznym o wartości TRUE lub FALSE

s – łańcuch pól ze składowymi c1 i c2

f1 – zmienna (składowe ci muszą mieć typ i rozmiar umożliwiający konwersję do f1)

Page 16: ABAP/4 - cs.put. · PDF filez poziomu Edytora ABAP opcja Utilities Program Analysis. Operatory porównania łańcuchów znakowych Operator Opis Prawda gdy  Wielko

Instrukcja WHILE – właściwości

Może być zagnieżdżana wielokrotnie, także w innych typach pętli

Instrukcja EXIT powoduje natychmiastowe przerwanie pętli i przekazanie sterowania poza ENDWHILE

Zmienna SY-INDEX: wewnątrz pętli oznacza numer bieżącej iteracji

po ENDWHILE przyjmuje wartość, jaką miała przed wejściem do pętli

w pętlach zagnieżdżonych zawiera numer iteracji w bieżącej pętli

ENDWHILE – powoduje zapisanie wartości f1 z powrotem do odpowiedniej składowej łańcucha s

Jeżeli instrukcja WHILE zawiera klauzulę VARY, to najpierw sprawdzany jest warunek, a dopiero potem obliczane są wartości z klauzuli VARY

Page 17: ABAP/4 - cs.put. · PDF filez poziomu Edytora ABAP opcja Utilities Program Analysis. Operatory porównania łańcuchów znakowych Operator Opis Prawda gdy  Wielko

Instrukcja CONTINUE

Opis: stosowana w pętli służy do bezwarunkowego

przekazania sterowania na koniec pętli

Składnia:DO | WHILE | SELECT | LOOP

CONTINUE.

ENDDO | ENDWHILE | ENDSELECT | ENDLOOP

Właściwości: może być użyta tylko w pętli

nie ma żadnych klauzul

Page 18: ABAP/4 - cs.put. · PDF filez poziomu Edytora ABAP opcja Utilities Program Analysis. Operatory porównania łańcuchów znakowych Operator Opis Prawda gdy  Wielko

Instrukcja CHECK

Opis: instrukcja używana wewnątrz pętli powodująca

warunkowe przerwanie bieżącej iteracji (gdy warunek nie jest spełniony)

Składnia:DO | WHILE | SELECT | LOOP

CHECK warunek.

ENDDO | ENDWHILE | ENDSELECT | ENDLOOP

gdzie:

warunek oznacza warunek logiczny o wartości TRUE lub FALSE

Page 19: ABAP/4 - cs.put. · PDF filez poziomu Edytora ABAP opcja Utilities Program Analysis. Operatory porównania łańcuchów znakowych Operator Opis Prawda gdy  Wielko

EXIT, CONTINUE, CHECK - podsumowanie

EXIT – opuszczenie pętli

CONTINUE – bezwarunkowy skok na koniec pętli

CHECK warunek – warunkowy skok na koniec pętli o ile warunek nie jest spełniony

Nie zaleca się stosowania instrukcji CONTINUE i CHECK w pętli SELECT ze względów wydajnościowych – w takim przypadku zaleca się odpowiednio zmodyfikować warunek w klauzuli WHERE

Page 20: ABAP/4 - cs.put. · PDF filez poziomu Edytora ABAP opcja Utilities Program Analysis. Operatory porównania łańcuchów znakowych Operator Opis Prawda gdy  Wielko

Określanie pozycji wydruku

Instrukcja:

WRITE [/][P][(L)] z1.

gdzie:

/ - oznacza przejście do nowej linii

P – oznacza pozycję w linii

L – oznacza liczbę bajtów (długość) przeznaczoną na odpowiedni wpis.

pomiędzy /, P oraz (L) nie powinno być spacji.