Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co...

40
Język ABAP/4

Transcript of Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co...

Page 1: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Język ABAP/4

Page 2: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Bufor programu a roll area

Programy są buforowane na serwerze aplikacji w buforze programów

Dostęp do programu odbywa się podobnie jak do buforowanych tabel

Wszyscy użytkownicy korzystają z tej samej kopii programu, ale z różnych (dla każdego wywołania programu) obszarów pamięci roll-area

Obszary pamięci roll-area są używane do: przechowywania informacji o wykonywaniu programu i

przydziale pamięci (zmienne i ich wartości, wskaźnik do bieżącej instrukcji, lista wartości wyjściowych)

Każda instancja programu wymaga osobnego obszaru roll-area

Page 3: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Elementy składni ABAP/4

Każdy program składa się z co najmniej jednej instrukcji

Każda instrukcja składa się z co najmniej jednego słowa

Instrukcja zaczyna się od słowa kluczowego (wyjątek – niektóre wersje instrukcji przypisania)

Klauzule (w ABAP-ie nazywane uzupełnieniami) służą do modyfikowania funkcjonowania instrukcji z określonym słowem kluczowym

Instrukcja może rozpoczynać się w dowolnej kolumnie i rozciągać na kilka linii

Instrukcje kończą się kropką

W instrukcjach nie rozróżnia się wielkich i małych liter (nieliczne wyjątki)

Page 4: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Obiekty danych

Są to obszary pamięci używane do przechowywania danych podczas wykonywania programu

Dwa typy: modyfikowalne

niemodyfikowalne

Niemodyfikowalne obiekty danych: stałe

literały

Modyfikowalne obiekty danych zmienne

łańcuchy znaków (odpowiednik struktury)

tabele wewnętrzne (odpowiednik tablicy)

Uruchomienie programu wywołuje przydział pamięci w roll-area dla każdego obiektu danych tego programu

Zakończenie wykonywania programu wiąże się ze zwolnieniem obszarów pamięci używanych dla obiektów danych

Trzy poziomy widoczności obiektów: lokalny – obiekt dostępny tylko wewnątrz podprogramu, w którym jest zdefiniowany

globalny – obiekt dostępny w dowolnym miejscu programu

zewnętrzny – obiekt dostępny także poza programem, w którym został zdefiniowany

Page 5: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Literały

Literał – niemodyfikowalny obiekt danych

Może występować w dowolnym miejscu programu (tam gdzie jest potrzebny)

Typy literałów: łańcuch znaków

○ ciąg znaków (o rozróżnialnej wielkości) ujęty w parę znaków ’ ’

numeryczny ○ wartości mogą ale nie muszą być ujęte w apostrofy (wyjątek liczba z

częścią dziesiętną)

zmiennopozycyjny ○ postaci ‘mantysaEwykładnik’

○ apostrofy obowiązkowe

○ mantysa – może zawierać znak – lub + oraz miejsca dziesiętne

○ wykładnik – może zawierać znak – lub + oraz wiodące zera

○ E lub e

szesnastkowy○ apostrofy obowiązkowe

○ wielkie litery

○ parzysta liczba znaków

○ rzadko używane

Page 6: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Zmienne Definiowane za pomocą instrukcji:

DATA

PARAMETERS

Instrukcja DATA: składnia:

DATA v1[(l)] [TYPE t] [DECIMALS d] [VALUE ‘xxx’]

lub

DATA v1 LIKE v2 [VALUE ‘xxx’]

○ v1 oraz v2 nazwy zmiennych: długość do 30 znaków

zestaw znaków – alfanumeryczne oprócz + . , : ( )

nie mogą składać się wyłącznie z cyfr

nie mogą być takie same jak słowa kluczowe i klauzule instrukcji ABAP-owych

○ TYPE t dowolny predefiniowany typ języka ABAP

lokalny typ danych

typ danych słownika ABAP

○ DECIMALS d liczba miejsc dziesiętnych (tylko typ P)

Page 7: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Instrukcja DATA – c.d.

Wartości domyślne: długość: zależna od typu

typ danych: C

wartość:○ numeryczna: 0

○ znakowa: pusta

dla instrukcji z klauzulą LIKE:○ typ i długość przejmowane są ze zmiennej referencyjne

○ wartość początkowa nie jest przejmowana ze zmiennej referencyjnej

początkowa wartość domyślna może być jedynie stałą lub literałem

Zmienna może być zdefiniowana w dowolnym miejscu programu, ale musi być zdefiniowana przed jej pierwszym użyciem

Zalecane jest definiowanie zmiennych na początku programu

Page 8: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Typy znakowe

Typ Opis Domyślny

rozmiar

Max. dł. Dopuszczalne

wartości

Domyślna

wartość

początkowa

C znakowy 1 65535 Dowolny znak pusta

N tekst

numeryczny

1 65535 0-9 0

D data 8(stały) - 0-9 00000000

T czas 6(stały) - 0-9 000000

X szesnastkowy 1 65535 Dowolny znak

Bieżąca data sy-datum

Bieżący czas sy-uzeit

sy-datum i sy-uzeit są ustawiane na początku wykonywania programu i później nie są już zmieniane, aby je zaktualizować należy użyć instrukcji GET TIME

Page 9: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Typy numeryczne

Typ Opis Rozmiar

domyślny

Max. dł. Max. liczba

miejsc

dziesiętnych

Dopuszczalne

wartości

Domyślna wartość

początkowa

I całkowite 4(stały) - 0 -231 do +231 0

P spakowane 8 16 14 0-9 0

F zmienno-

pozycyjne

8 8 15* -1E-307 do

1E308

0.0

Page 10: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Instrukcja PARAMETERS

Działanie podobne do instrukcji DATA, z tą różnicą, że zanim program się rozpocznie pojawi się tzw. ekran wyboru, na którym można wprowadzić wartości zmiennych zdefiniowanych w instrukcji PARAMETERS

Nazwy parametrów (zmiennych): takie same reguły jak dla zmiennych

definiowanych w instrukcji DATA

różnice:○ maksymalnie 8 znaków

○ domyślna wartość początkowa może być również zmienną

Page 11: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Składnia instrukcji PARAMETERS

PARAMETERS p1[(l)] [TYPE t] [DECIMALS d] [DEFAULT ‘xxx’] [OBLIGATORY] [LOWER CASE] [AS CHECKBOX] [RADIOBUTTON GROUP g]

lub

PARAMETERS p1 LIKE v1 [DEFAULT ‘xxx’] [OBLIGATORY] [LOWER CASE] [AS CHECKBOX] [RADIOBUTTON GROUP g]

Objaśnienia: p1 – nazwa parametru

v1 – nazwa wcześniej zdefiniowanej zmiennej lub pola tabeli (struktury)

l – długość zmiennej

t – typ

d – liczba pól dziesiętnych (tylko dla typu P)

Page 12: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Klauzule instrukcji PARAMETERS

TYPE – jak w instrukcji DATA

DECIMALS – jak w instrukcji DATA

LIKE – jak w instrukcji DATA

DEFAULT – tak jak w klauzula VALUE instrukcji DATA

OBLIGATORY – użytkownik musi wprowadzić jakąś wartość przed wykonaniem programu

LOWER CASE – zapobiega automatycznej zamianie na wielkie litery

AS CHECKBOX – wyświetla parametr jako pole wyboru

RADIOBUTTON GROUP g – wyświetla parametr jako przycisk radiowy należący do grupy g (g -dowolna nazwa o długości 1-4 znaków)

Page 13: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Właściwości instrukcji PARAMETERS Pola obowiązkowe zaznaczone znakiem zapytania

Domyślny typ: C

Domyślna wartość początkowa: pusta dla typu C

0 dla pozostałych typów

Klauzula DEFAULT dopuszcza użycie stałych, literałów, zmiennych i zmiennych systemowych SY-…

Klauzula LIKE powoduje, że parametr przyjmuje taki sam typ i rozmiar jak zmienne referencyjna

Klauzula LIKE nie przyczynia się do ustalenia wartości początkowej

Może występować w dowolnym miejscu programu, ale jeszcze przed pierwszym miejscem użycia

Parametry występują w tym samym porządku na ekranie wyboru w jakim występują w instrukcji PARAMETERS

Interpreter ABAP-a gromadzi wszystkie wystąpienia instrukcji PARAMETERS i łączy je w jednym ekranie wyboru

Parametry wyświetlane w sposób domyślny

Domyślne wartości początkowe przy klauzuli AS CHECKBOX to ‘X’ lub ‘ ‘ (typ C długość 1)

Dla przycisków radiowych domyślny typ C a długość 1, jedyna wartość dopuszczalna jako domyślna wartość początkowa to ‘X’ dla przycisku, który ma być zaznaczony

Page 14: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Etykiety parametrów

Domyślnie takie jak nazwy parametrów

Mogą być zmienione: Otworzyć program w Edytorze ABAP

GotoText Elements

Selection Texts

W oknie Change PARAMETERS/SELECT-OPTIONS:○ ręcznie podać etykietę pola

○ lub skopiować ją (średnia etykieta) z elementu danych (Utilities Copy DD Text)

○ lub ręcznie wprowadzić część etykiet a resztę skopiować z elementów danych (Utilities Supplement DD Text)

Zapisać zmiany

Zmiana etykiety w obiekcie słownikowym wymaga ręcznej aktualizacji (Utilities Copy DD Text lub Utilities Copy DD Texts)

Page 15: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

LIKE czy TYPE w instrukcji PARAMETERS

Zalecane LIKE

Zalety LIKE: Pomoc F1 przejmowana z elementu danych

Pomoc F4 przejmowana z obiektu o ile powiązano z nim tabelę kontrolną, ale bez mechanizmu walidacji

Etykiety pola przejmowane z elementu danych –gwarancja jednolitości wyglądu etykiety do tego samego pola we wszystkich programach

Modyfikacje typu i rozmiaru danych są automatycznie od razu widoczne w programie

Page 16: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Stałe

Definiowane instrukcją CONSTANTS

Składnia:

CONSTANTS c1[(l)] [TYPE t] [DECIMALS d]

VALUE ‘xxx’.

lub

CONSTANTS c1 LIKE cv VALUE ‘xxx’.

Jedna predefiniowana stała SPACE

Page 17: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Łańcuch pól

Odpowiada strukturze słownikowej

Ciąg pól zgrupowanych pod wspólną

nazwą

Definiowane instrukcjami DATA lub

TABLES

Page 18: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Łańcuch pól – definiowanie

instrukcją DATA Składnia:

DATA: BEGIN OF fs1,

f1[(l)] [TYPE t] [DECIMALS d] [VALUE ‘xxx’],

f2[(l)] [TYPE t] [DECIMALS d] [VALUE ‘xxx’],

END OF fs1.

lub

DATA BEGIN OF fs1.

DATA f1[(l)] [TYPE t] [DECIMALS d] [VALUE ‘xxx’].

DATA f2[(l)] [TYPE t] [DECIMALS d] [VALUE ‘xxx’].

[INCLUDE STRUCTURE st1.]

DATA END OF fs1.

lub

DATA fs1 LIKE fs2.

• fs1 – łańcuch pól

• f1, f2 – pola składowe łańcucha pól

• fs2 – zdefiniowany łańcuch pól lub nazwa tabeli (struktury) zdefiniowanej w słowniku

• (l) – długość

• t – typ danych

• d – liczba miejsc dziesiętnych (tylko typ P)

• ‘xxx’ – domyślna wartość

• st1 – nazwa tabeli (struktury)słownikowej

Page 19: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Łańcuch pól – właściwości

Odwołania do pól: fs1-fi

Łańcuchy pól można zagnieżdżać

Odwołania do pól zagnieżdżonego łańcucha pól wymaga podania nazw każdego łańcucha: fs1-fs2-fi

Stosując konstrukcję DATA … LIKE … łańcuch pól można zdefiniować dokładnie tak jak jest zdefiniowana odpowiednia tabela lub struktura słownika ABAP

Struktury i tabele słownika ABAP można również zagnieżdżać w łańcuchu pól (instrukcja INCLUDE STRUCTURE …)

Jeżeli struktura zostanie włączona do łańcucha pól instrukcją INCLUDE … to odwołanie do pól tej struktury jest standardowe fs1-fi, natomiast włączenie tej samej struktury instrukcją DATA fs2 LIKE … wymaga odwołań wielopoziomowych (np. fs1-fs2-fi)

Instrukcja przypisania wymaga takiej samej struktury w przypadku obydwu łańcuchów pól

Page 20: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Definiowanie łańcucha pól

instrukcją TABLES Składnia:

TABLES fs1.

fs1 – jest nazwą łańcucha pól

w Słowniku ABAP musi istnieć tabela lub struktura o takiej samej nazwie

definicja łańcucha pól fs1 jest identyczna z odpowiadającą jej definicją tabeli lub struktury Słownika ABAP

definicja łańcucha pól za pomocą instrukcji TABLES umożliwia dostęp do danych tabeli o tej samej nazwie

zasięg – bez względu na miejsce zdefiniowania zawsze globalny i zewnętrzny (współdzielenie tego samego obszaru pamięci przez dwa programy)

Page 21: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Definiowanie typów

Typy użytkownika można definiować za pomocą

instrukcji TYPES

Składnia:TYPES typ1[(dł)] [TYPE typ] [DECIMALS d].

lub

TYPES typ1 LIKE zmienna1.

Typ strukturalny – typ użytkownika oparty na

definicji łańcucha pól

Page 22: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Grupa typów

Grupa (pula) typów jest obiektem Słownika ABAP gromadzącym definicje typów użytkownika oraz stałych

Typy i stałe zdefiniowane w grupie typów mogą być używane w wielu programach

Program stanowiący grupę typów musi zaczynać się od instrukcji:

TYPE-POOL nazwa_grupy_typów.

Odwołanie do grupy typów z poziomu programu wymaga użycia instrukcji

TYPE-POOLS nazwa_grupy_typów.

Wielokrotne zdefiniowanie grupy typów nie powoduje pojawienia się komunikatu o błędzie

Nazwa grupy typów musi zaczynać się od Y lub Z i ni może być dłuższa niż 5 znaków.

Zasięg stałych i typów zdefiniowanych instrukcją TYPE-POOLSzawsze jest globalny

Page 23: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Zmienne systemowe

Nie wymagają definiowania

Zasięg globalny i zewnętrzny

Zdefiniowane w strukturze SYST

Słownika ABAP

Ponad 170 zmiennych

Zamiast nazwy struktury SYST można

stosować jej alias SY

Page 24: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Przykładowe zmienne systemowe

Zmienna Opis

SY-DATUM Bieżąca data

SY-UZEIT Bieżący czas

SY-UNAME Bieżące ID użytkownika

SY-SUBRC Poprzedni kod powrotu

SY-MANDT Numer mandanta

SY-PAGNO Numer bieżącej strony

SY-COLNO Numer bieżącej kolumny

SY-LINNO Numer bieżącej linii

SY-VLINE Linia pionowa

SY-ULINE Linia pozioma

SY-REPID Nazwa bieżącego raportu

SY-CPROG Nazwa programu głównego

SY-TCODE Kod bieżącej transakcji

SY-DBCNT W pętli SELECT – numer iteracji

Po zakończeniu pętli SELECT (po ENDSELECT) – liczba rekordów

spełniających warunek klauzuli WHERE

Page 25: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Instrukcje przypisania

Jedna z trzech instrukcji:

CLEAR

MOVE

MOVE-CORRESPONDING

Page 26: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Instrukcja CLEAR

Opis: przypisanie zmiennej wartości 0 lub pustych znaków (zmienna typu C)

Składnia:CLEAR z1 [WITH z2 | WITH ‘lit’ | WITH NULL]

○ z1 i z2 zmienne lub nazwy łańcucha pól

○ ‘lit’ – literał dowolnej długości

Działanie: gdy z1 jest typu znakowego zmienna wypełniana jest pustymi znakami,

w każdym innym przypadku (oprócz łańcucha znaków) zmienna wypełniana jest zerami

gdy z1 jest łańcuchem znaków to jego składowe wypełniane są w zależności od typu tej składowej

klauzula WITH z2 powoduje wypełnienie całej długości zmiennej pierwszym bajtem zmiennej z2

klauzula WITH ‘lit’ powoduje wypełnienie całej długości zmiennej pierwszym bajtem podanego literału

klauzula WITH NULL powoduje wypełnienie całej długości zmiennej zerami heksadecymalnymi

Page 27: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Instrukcja MOVE

Opis: służy przypisaniu zmiennej wartości reprezentowanej

przez: literał, stałą, zmienną, pole łańcucha, pole tabeli

Składnia:MOVE z1 TO z2.

lub

z2 = z1.

lub

z2 = z1 = zm = zn = … .

lub

MOVE z1[+n(l)] TO z2[+n(l)].

lub

z2[+n(l)] = z1[+n(l)].

Page 28: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Konwersja danych –

automatyczna zmiana rozmiaru

Typ Przypisanie do dłuższego

pola

Przypisanie do krótszego

pola

C Uzupełnienie z prawej

pustymi znakami

Obcięcie prawostronne

X Uzupełnienie z prawej

zerami

Obcięcie prawostronne

N Uzupełnienie z lewej

zerami

Obcięcie lewostronne

P Uzupełnienie z lewej

zerami

Przypisanie następuje o ile

wartość mieści się w rozmiarze

zmiennej, w przeciwnym

przypadku

F, I, D, T Typy o stałej długości – nie podlegają konwersji

Page 29: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Konwersja danych –

automatyczna zmiana typu (z typu C)

Z typu Na typ Reguły

C P Pole źródłowe nie może zawierać innych znaków niż: cyfry, kropka

dziesiętna, opcjonalny znak (z przodu/z tyłu), puste znaki (z przodu/ z tyłu).

Wyrównanie do prawej, uzupełnienie z lewej zerami. Łańcuch pustych

znaków konwertowany na 0.

C D Pole źródłowe powinno zawierać prawidłową datę w formacie RRRRMMDD,

w przeciwnym przypadku błąd nie wystąpi i nastąpi przypisanie

nieprawidłowej wartości.

C T Pole źródłowe powinno zawierać poprawny czas w formacie GGMMSS.

Reszta jak wyżej.

C N Pole źródłowe przeglądane z lewej do prawej, ale tylko cyfry przepisywane

do zmiennej docelowej (wyrównanie do prawej, uzupełnienie zerami),

pozostałe znaki ignorowane.

C X Z pola źródłowego do zmiennej docelowej przepisywane tylko cyfry i znaki

A-F (wyrównanie do lewej, uzupełnienie zerami/obcięcie z prawej),

pozostała część pola począwszy od pierwszego nieprawidłowego znaku

ignorowana

Page 30: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Konwersja danych –

automatyczna zmiana typu (pozostałe)

Z typu Na typ Reguły

P C Gdy rozmiar C mniejszy od liczby cyfr: wyrównanie do prawej, ostatni bajt

pozostawiony na znak („-” lub znak pusty), uzupełnienie z lewej zerami.

Gdy rozmiar C równy liczbie cyfr: gdy jest to liczba dodatnia nie zostawia się

ostatniego bajtu z prawej .

Gdy rozmiar C mniejszy od liczby cyfr: obcięcie z lewej, skrajny lewy bajt ma

wartość „*”.

Gdy liczba jest 0 to wpisuje się pojedyncze zero.

P D Liczba traktowana jest jako liczba dni od 1 stycznia 0001 i zamieniana na

datę formatu RRRRMMDD.

P T Liczba traktowana jako liczba sekund, jakie upłynęły od północy i

zamieniana na czas w 24-godzinnym formacie GGMMSS.

D P Data zamieniana jest na liczbę dni, jakie upłynęły od 01-01-0001.

T P Czas zamieniany jest na liczbę sekund, jakie upłynęły od północy.

I

*

*

I

Dla typu I obowiązują takie same zasady jak dla typu P.

Page 31: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Podpola

Podpole - część pola, do której następuje odwołanie przez podanie offsetu i/lub długości

Składnia:z1[+off][(dł)] = z2[+off][(dł)].

gdzie:

z1, z2 – zmienne lub pola łańcucha

off – offset względem początku pola

dł – długość podpola wyrażona w bajtach

Reguły: podpole może być określone dla pola źródłowego i/lub pola

docelowego

podpole może być określone przez offset i/lub długość

gdy brak offsetu podpole zaczyna się z początkiem pola

gdy brak długości podpole rozciąga się do końca pola

w specyfikacji podpola nie mogą pojawić się białe znaki

offset zawsze musi być poprzedzony znakiem „+”

długość musi być umieszczona w nawiasach

Page 32: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

MOVE a łańcuchy pól

Jeżeli nie zostanie podana nazwa składowej to łańcuch pól traktowany jest jak zmienna typu C

Jeśli pole źródłowe jest kategorii znakowej (C, N, D, T, X), a pole docelowe jest łańcuchem zawierającym składowe numeryczne (typu I, P lub F), to nie jest wykonywana żadna konwersja a wynik jest nieprawidłowy i niezdefiniowany (zależny od maszyny).

W odwrotnej sytuacji wynik jest również nieprawidłowy i niezdefiniowany na skutek braku konwersji

Dopuszczalne jest użycie instrukcji MOVE dla dwóch łańcuchów pól pod warunkiem, że zawierają one tylko składowe typów znakowych

Pola numeryczne muszą (zależnie od maszyny) znaleźć się pod odpowiednim adresem (np. parzysty), zatem czasami kompilator musi dodać pewne dodatkowe bajty do łańcucha, co powoduje pewne niespodziewane zachowanie instrukcji MOVE

W przypadku łańcuchów o mieszanych (znakowych i numerycznych) polach przypisanie instrukcją MOVE dopuszczalne jest tylko wtedy, gdy dla wszystkich pól ich typy, rozmiary i położenie w łańcuchu są identyczne

Page 33: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Instrukcja MOVE-CORRESPONDING

Opis: przypisanie wartości tych pól łańcucha, które

mają taką samą nazwę jak pola drugiego łańcucha

Składnia:MOVE-CORRESPONDING z1 TO z2.

Właściwości: wykonanie MOVE-CORRESPONDING jest

równoważne wykonaniu ciągu odpowiednich instrukcji MOVE

jeżeli składowe o tej samej nazwie różnią się typem i/lub rozmiarem wykonywana jest automatyczna konwersja danych

Page 34: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Obliczenia

Zbiór instrukcji służących do wykonywania obliczeń składa się z instrukcji: COMPUTE

ADD

ADD-CORRESPONDING

SUBTRACT

SUBTRACT-CORRESPONDING

MULTIPLY

MULTIPLY-CORRESPONDING

DIVIDE

DIVIDE-CORRESPONDING

Page 35: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Instrukcja COMPUTE

Opis: instrukcja stosowana do wykonywania obliczeń

matematycznych

Składnia:COMPUTE z3 = z1 op z2 [op zn …]

lub

z3 = z1 op z2 [op zn …]

gdzie:

z3 – zmienna wynikowa

z1, z2, zn – operandy

op – operatory matematyczne

Page 36: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Instrukcja COMPUTE - właściwości

Operatory i operandy muszą być rozdzielone spacjami

Priorytety operacji: funkcje wbudowane (np. SQRT(x))

** (potęgowanie)

*, /, DIV, MOD (w porządku, w jakim występują w wyrażeniu)

+, - (w porządku, w jakim występują w wyrażeniu)

Porządek wykonywania obliczeń można zmienić stosując nawiasy „(” i „)” nawiasy muszą być odseparowane spacjami (wyjątek – nawias

poprzedzający argumenty wywołania funkcji)

Dzielenie przez zero jest niedopuszczalne Uwaga! Wyjątek – dzielenie 0 przez 0 jest dopuszczalne, a wynik też jest

zerem

O ile konieczne, to przeprowadzana jest konwersja danych

Parametr programu Fixed Point Arythmetic odpowiada za obliczenia z dokładnością do 31 miejsc po przecinku (gdy ustawiony) lub bez części ułamkowej (gdy nie ustawiony)

Page 37: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Instrukcje ADD, SUBTRACT,

MULTIPLY oraz DIVIDE Opis:

ADD – dodawanie dwóch liczb

SUBTRACT – odejmowanie dwóch liczb

MULTIPLY – mnożenie dwóch liczb

DIVIDE – dzielenie dwóch liczb

Składnia: ADD z1 TO z2.

SUBTRACT z1 FROM z2.

MULTIPLY z2 BY z1.

DIVIDE z2 BY z1.

Znaczenie: dodawanie z1 do z2

odejmowanie z1 od z2

mnożenie z2 przez z1

dzielenie z2 przez z1

Konwersje danych wykonywane w razie potrzeby

Page 38: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Instrukcje ADD-, SUBTRACT-, MULTIPLY-

oraz DIVIDE-CORRESPONDING

Opis: dodawanie (odejmowanie, mnożenie, dzielenie)

zawartości tych pól składowych dwóch łańcuchów, które mają taką samą nazwę

Składnia: ADD-CORRESPONDING fs1 TO fs2.

SUBTRACT-CORRESPONDING fs1 FROM fs2.

MULTIPLY-CORRESPONDING fs2 BY fs1.

DIVIDE-CORRESPONDING fs2 BY fs1.

Konwersja danych, o ile musi być przeprowadzona, jest realizowana według ogólnych zasad

Page 39: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Operacje matematyczne na datach

Na zmiennych typu D można wykonywać pewne operacje matematyczne

Operand lub wynik mogą być typu P

Przykład:DATA: d1 LIKE SY-DATUM,

d2 LIKE d1,

l_dni TYPE P.

d1 = d2 = SY-DATUM.

SUBTRACT 1 FROM d1.

d2+6 = ‘01’.

SUBTRACT 1 FROM d2.

l_dni = d1 – d2.

Page 40: Język ABAP/4 - cs.put. · PDF fileElementy składni ABAP/4 Każdy program składa się z co najmniej jednej instrukcji Każda instrukcja składa się z co najmniej jednego

Przypisanie dynamiczne

Pole symbol (field-symbol) – wskaźnik, który może być dynamicznie przydzielony do pola.

Po przypisaniu pole symbol może być użyte w programie w miejscu aktualnej nazwy pola

Do zdefiniowania pola symbol używana jest instrukcja:

FIELD-SYMBOLS <nazwa_symbolu>.

Do przypisania wartości polu symbol stosowana jest instrukcja:

ASSIGN nazwa_pola TO <nazwa_symbolu>.

Zastosowanie: uniwersalne programy o bardzo ogólnym charakterze,

gdzie np. parametrem wejściowym jest nazwa tabeli