You are on page 1of 55

Podstawy programowania w jzyku ABAP

- 1 -


Instytut Automatyki i Informatyki Stosowanej
Politechniki Warszawskiej


PODSTAWY PROGRAMOWANIA
W JZYKU ABAP

dr in. Mariusz Kaleta


listopad 2007








Copyright 2007 by Instytut Automatyki i Informatyki Stosowanej Politechniki Warszawskiej.
Wszystkie prawa zastrzeone. adna cz tej publikacji nie moe by reprodukowana, przechowywana w
bazach danych, transmitowana w adnej formie ani w aden sposb, elektroniczny, mechaniczny, kserograficzny
czy inny, bez uprzedniej pisemnej zgody autorw.

Podstawy programowania w jzyku ABAP
- 2 -
1. STRUKTURA SYSTEMU ZINTEGROWANEGO................................................................................. 4
2. RODOWISKO PROGRAMISTYCZNE SAP......................................................................................... 6
3. PODSTAWY JZYKA ABAP ................................................................................................................. 10
3.1. TYPY DANYCH..................................................................................................................................... 10
3.2. ELEMENTARNE OPERACJE NA OBIEKTACH........................................................................................... 15
3.3. KONTROLA PRZEPYWU STEROWANIA................................................................................................ 18
3.4. MODULARNO .................................................................................................................................. 19
4. PODSTAWOWE KONSTRUKCJE JZYKA ABAB........................................................................... 22
4.1. PRZETWARZANIE NAPISW................................................................................................................. 22
4.2. DYNAMICZNY DOSTP DO OBIEKTW.................................................................................................. 23
4.3. PRZETWARZANIE TABEL WEWNTRZNYCH.......................................................................................... 24
5. OBIEKTOWO W ABAP...................................................................................................................... 29
5.1. KLASY................................................................................................................................................. 29
5.2. DZIEDZICZENIE I POLIMORFIZM........................................................................................................... 32
5.3. INTERFEJSY......................................................................................................................................... 32
5.4. ZDARZENIA......................................................................................................................................... 34
6. PROGRAMOWANIE EKRANW......................................................................................................... 35
6.1. LISTY .................................................................................................................................................. 35
6.2. EKRANY OGLNE ................................................................................................................................ 37
6.3. EKRANY WYBORU............................................................................................................................... 44
6.4. KOMUNIKATY ..................................................................................................................................... 48
6.5. MENU KONTEKSTOWE......................................................................................................................... 49
7. ZEWNTRZNE RDA DANYCH .................................................................................................... 49
7.1. WSPPRACA Z BAZ DANYCH........................................................................................................... 49
7.2. OBSUGA PLIKW............................................................................................................................... 53

Podstawy programowania w jzyku ABAP
- 3 -
Wstp

Raport rozpoczynamy od omwienia struktury systemu zintegrowanego. Gwnym
elementem struktury jest centralne repozytorium integrujce cao zasobw
informacyjnych przedsibiorstwa, wok ktrego budowane s poszczeglne elementy
funkcjonalne.
Ze wzgldu na kompleksowo rozwiza zintegrowanych oraz specyfik
poszczeglnych wdroe, rozwizania komercyjne musz dostarcza platformy
programistyczne pozwalajce rozwija i dopasowywa moduy systemu do potrzeb
danego przedsibiorstwa. Ze wzgldu na charakter problemu, a wic przede wszystkim
zadania przetwarzania danych, platformy programistyczne systemw zintegrowanych s
czsto budowane w oparciu o jzyki programowania czwartej generacji (4GL).
Czoowy system na rynku SAP jest zbudowany prawie w caoci w oparciu o jzyk
ABAP nalecy do klasy jzykw 4GL.
W ramach niniejszego raportu przedstawiamy rodowisko programistyczne ABAB
Workbench oraz omawiamy podstawy programowania w jzyku ABAP. Najpierw
skupiamy si na strukturze podstawowych strukturach jzyka: typach danych, skadni,
kontroli przepywu sterowania, a nastpnie omawiamy najwaniejsze elementy
obejmujce operacje na tablicach wewntrznych, programowanie ekranw, dostp do
bazy danych oraz elementy obiektowoci w ABAP.
Podstawy programowania w jzyku ABAP
- 4 -

1. Struktura systemu zintegrowanego
Zintegrowane systemy informatyczne to klasa systemw informatycznych odznaczajca si
stosunkowo duym stopniem zaawansowania technologicznego i funkcjonalnego spord
systemw informatycznych wspomagajcych zarzdzanie przedsibiorstwami. Systemy
zintegrowane obejmuj wikszo procesw realizowanych w przedsibiorstwie jak i jego
najbliszym otoczeniu dc do jak najwikszej automatyzacji procesw wewntrznych oraz
w ramach wsppracy z kooperantami w caym acuch dostaw.
Cechy charakterystyczne zintegrowanego systemu informatycznego (ZSI) istotne z punktu
widzenia jego struktury s nastpujce:
obszerna i kompleksowa funkcjonalno,
integracja danych i procedur w czasie rzeczywistym,
zaawansowanie merytoryczne,
skalowalno,
otwarto,
ujednolicenie interfejsw i procedur,
zorientowanie na e-biznes.
Kompleksowo funkcjonalna jest niezbdna ze wzgldu na zakres dziaalnoci
przedsibiorstw, jaki jest pokrywany przez systemy zintegrowane. Obejmuje to wszystkie
gwne sfery dziaalnoci przedsibiorstw o rnej specyfice, w szczeglnoci obszary
zwizane z aspektami finansowymi, jak rwnie obszary zwizane z technologi produkcji i
logistyk. Systemy odznaczajce si tak dua kompleksowoci, a co za tym idzie
zoonoci realizowanych funkcji wymagaj stosowania zaawansowanych rozwiza
technologicznych oraz modularyzacji. Systemy zintegrowane s w praktyce zbiorami
moduw aplikacyjnych pokrywajcych si z obszarami dziaalnoci przedsibiorstwa, np. z
obsug finansw, zasobw ludzkich, logistyki, produkcji itd. lub przekrojowych (patrz Rys.
1.1).
Wsppraca moduw aplikacyjnych jak i wymg dostpu do danych i realizacji procedur w
czasie rzeczywistym jest realizowany poprzez centralne repozytorium danych. Caoksztat
wiedzy przedsibiorstwa, wszystkie obiekty informacyjne zwizane z prowadzonymi
procesami biznesowymi s przechowywane centralnie. Jednym z gwnych czynnikw ZSI
jest integracja danych pochodzcych z wielu rde w wielu rnych obszarach organizacji.
Moduy aplikacyjne maj dostp do wszystkich danych przedsibiorstwa, ktry moe by
ograniczony jedynie poprzez system uprawnie. Dziki temu jest moliwa natychmiastowa
aktualizacja danych zasilajcych jeden modu aplikacyjny bdca wynikiem przetwarzania
danych przez inny modu. Informacje o zdarzeniach i zmianach w stanie przedsibiorstwa s
wprowadzane tylko raz i natychmiast dostpne dla wszystkich uytkownikw w ramach
rnych moduw. Z punktu widzenia zarzdzania przedsibiorstwem moliwe staje si
zarzdzanie i reagowanie na zachodzce zdarzenia w moliwie najkrtszym czasie.
Kompleksowo systemw zintegrowanych przejawia si nie tylko poprzez obejmowanie ich
dziaaniem rnych obszarw aktywnoci przedsibiorstw, ale rwnie poprzez dostarczanie
bogatego zakresu metod wsparcia w optymalizacji i zarzdzaniu tymi procesami.
Zaawansowanie merytoryczne systemw zintegrowanych uwidacznia si poprzez wsparcie
dla rnych koncepcji zarzdzania m.in. JIT (Just In Time), MRP II (Manufacturing Resorce
Podstawy programowania w jzyku ABAP
- 5 -
Planning), TQM (Total Quality Management). Poszczeglne moduy aplikacyjne tworz
obraz systemu o zaawansowanych rozwizaniach merytorycznych, w tym elementach
prognozowania, optymalizacji, agregacji danych, ekstrakcji wiedzy.
Rozwj przedsibiorstwa moe powodowa wzrost wymaga dotyczcych wydajnoci
przetwarzania danych w systemie zintegrowanym. Skalowalno ZSI jest osigana poprzez
stosowanie architektury wielowarstwowej, w ktrej poszczeglne elementy systemu mog
by alokowane na wyodrbnionych zasobach sprztowych tworzc struktur rozproszon.
Rozwj przedsibiorstwa moe rwnie skutkowa wzrostem zoonoci operacji
biznesowych, a w konsekwencji do redefinicji tych procesw. Z tego wzgldu moduowa
architektura systemw zintegrowanych uatwia wprowadzanie modyfikacji w systemie oraz
rozszerzanie o nowe funkcjonalnoci. Jest to szczeglnie atwe w systemach dostarczajcych
rodowisko rozwoju aplikacji, najczciej oparte o jzyk programowania czwartej generacji
(4GL) wysokiego poziomu ukierunkowany na przetwarzanie danych. Przykadem moe by
system SAP, w ktrym rodowisko ABAP Workbench umoliwia dostosowywanie oraz
tworzenie aplikacji w jzyku ABAP. Wikszo moduw funkcjonalnych dostarczanych w
ramach SAP jest zakodowana w jzyku ABAP.
Uniwersalne systemy zintegrowane czsto s wzbogacane o moduy specyficzne dla
okrelonych brany. Wdroenia systemw dotycz zazwyczaj podzbiorw moduw
funkcjonalnych, ktre musz wic funkcjonowa samoistnie oraz we wsppracy z innymi
podzbiorami moduw.
Integracja wielu aspektw dziaalnoci przedsibiorstwa w ramach jednego systemu
umoliwia ustandaryzowanie interfejsu systemu uywanego zarwno w bezporedniej
komunikacji z uytkownikiem systemu jak i w wymianie danych z systemami zewntrznymi.
Standaryzacja interfejsw dotyczy rwnie aspektw uprawnie dostpu do danych.
Zorientowanie systemw zintegrowanych na e-biznes jest siln tendencj rozwojow, majc
wpyw na struktur techniczn systemw. Wymusza stosowanie rozwiza
charakterystycznych dla systemw dziaajcych w sposb rozproszony w sieci typu Internet,
w tym protokow komunikacyjnych midzy warstwami, usug sieciowych (web services),
serwerw aplikacyjnych (J2EE).
Rys. 1.1 przedstawia ogln struktur systemu zintegrowanego. Oglnie jest to architektura
wielowarstwowa z wyrnieniem co najmniej trzech warstw: prezentacji, aplikacji i bazy
danych. Przetwarzanie danych i komunikacja midzy warstwami odbywa si w strukturze
klient-serwer z wykorzystaniem standardowych protokow, np. TCP/IP. Komponenty
oprogramowania naturalnie odseparowane od siebie w strukturze warstwowej mog
funkcjonowa centralnie lub w sposb rozproszony na odrbnych maszynach serwerowych.
Poniewa struktur systemu zintegrowanego tworz zazwyczaj moduy funkcjonalne o
pewnej zamknitej funkcjonalnoci z dobrze zdefiniowanym interfejsem, to rwnie
rozproszenie moduw w ramach tych samych warstw jest moliwe.
Warstw prezentacji tworzy dedykowane rodowisko graficzne GUI lub cienki klient w
postaci przegldarki internetowej. Zazwyczaj systemy zintegrowane oferuj oba typy
interfejsw jednoczenie. Poniej warstwy prezentacji, w warstwie aplikacji znajduj si
moduy aplikacyjne realizujce poszczeglne funkcje biznesowe, a take komponent
spajajcy wszystkie moduy, tzw. jdro systemu. Jdro systemu moe zawiera rodowisko
rozwojowe, interpreter/kompilator jzyka 4GL oraz innych uytych do budowy moduw
aplikacyjnych, usugi zarzdzania systemem, obsugi systemu zabezpiecze i autoryzacji,
obsug synchronizacji, kolejkowania, komunikacji oraz inne elementy przekrojowe systemu.
W najniszej warstwie znajduje si system zarzdzania relacyjn baz danych oraz baza
penica rol centralnego repozytorium.
Podstawy programowania w jzyku ABAP
- 6 -

Rys. 1.1. Struktura systemu zintegrowanego

2. rodowisko programistyczne SAP
rodowiskiem deweloperskim dla tworzenia programw ABAP jest rodowisko ABAP
Workbench, ktre jest czci kadej instancji SAP. ABAP (Advanced Business Application
Programming) jest jzykiem programowania systemu SAP. Poza rdzeniem SAP napisanym w
C, wszystkie aplikacje, cznie ze rodowiskiem deweloperskim, s napisane w jzyku
ABAP. ABAP Objects jest rozszerzeniem jzyka ABAP o elementy obiektowoci, w
szczeglnoci enkapsulacj, dziedziczenie, polimorfizm. Poniewa ABAP rozwija si od lat
dziewidziesitych, aktualnie wspiera rwnolegle dwa modele programowania: model
zorientowany proceduralnie oraz model zorientowany obiektowo. ABAP jest jzykiem
dedykowanym do przetwarzania danych biznesowych dziaajc na relacyjnych bazach
danych. rodowisko ABAP Workbench mona odnale w drzewku aplikacji SAP Easy
Access w wle Tools. Przed rozpoczciem pracy kady programista SAP musi zosta
zarejestrowany poprzez SAPNet i otrzyma przypisany do siebie klucz deweloperski.
Najwaniejsze moduy rodowiska ABAP Workbench to (patrz Rys. 2.1):
ABAP Editor umoliwiajcy edycj programw ABAP,
ABAP Dictionary dajcy dostp do repozytorium obiektw i umoliwiajcy ich
tworzenie (w tym tabel bazodanowych),
Screen Painter narzdzie do tworzenia ekranw,
Menu Painter narzdzie do tworzenia menu na definiowanych ekranach,
Function Builder narzdzie do tworzenia elementw strukturalnych programu
ABAP,
Podstawy programowania w jzyku ABAP
- 7 -
Class Builder narzdzie do tworzenia klas.

Rys. 2.1. Drzewo aplikacji w ramach rodowiska ABAP Workbench
Wszystkie powysze narzdzia s dostpne w drzewie aplikacji rodowiska ABAP oraz z
poziomu narzdzia Object Navigator, ktry jest najlepszym punktem startowym. Na Rys. 2.2
przedstawione jest okno narzdzia Object Navigator. Widoczny w oknie lewy panel
przedstawia list obiektw. Wyszukanie obiektu odbywa si poprzez wybr z listy rozwijanej
typu obiektu, nastpnie wpisanie nazwy w polu tekstowym i kliknicie przycisku z ikon
okularw.




Podstawy programowania w jzyku ABAP
- 8 -

Rys. 2.2. Okno Object Navigator
Aby utworzy nowy obiekt naley na odpowiednim elemencie drzewka obiektw wywoa
menu kontekstowe, a nastpnie wybra opcj CREATE. W ten sposb na elemencie
PROGRAMS mona utworzy nowy program. W pierwszym okienku podaje si nazw
programu, ktra jak nazwa kadego nowego obiektu tworzonego przez programist powinna
zaczyna si od litery Y lub Z. Aby szybko utworzy szkielet standardowej aplikacji naley
odznaczy opcj With TOP INCL. Na nastpnym oknie definiuje si atrybuty programu, w
szczeglnoci typ programu. Mona przyj standardowe dane proponowane na oknie i
klikn przycisk SAVE. Kolejne okno pozwala na przypisanie programu do pakietu, ktry
typowo powinien zosta ustawiony na TEST. Ikonka dyskietki finalnie koczy ustawienia
nowego programu.
Po utworzeniu programu uruchamiany jest ABAP Editor (Rys. 2.3). Nawigacja midzy
oknami w rodowisku ABAP moe by dokonywana za pomoc przyciskw znajdujcych si
na grze ekranu, w szczeglnoci przycisk Back (zielone kko ze strzak w lewo) oraz
przycisk Exit (czerowne kko z krzyykiem). Przyciski edytora ABAP znajduj si pod
nazw aplikacji. Najwaniejsze z nich to
Display<->Change pozwala przecza edytor w tryb edycji oraz przegldania;
przycisk ten rwnie wystpuje w innych aplikacjach;
Activate<->Inactivate aktywuje lub dezaktywuje obiekt; kady obiekt musi by
aktywowany po wprowadzeniu zmian; stan obiektu znajduje si obok nazwy raportu
w oknie edycyjnym;
Check sprawdza poprawno skadni programu;
Podstawy programowania w jzyku ABAP
- 9 -
Activate aktywuje obiekty zalogowanego uytkownika;
Direct processing uruchamia program;
Where-used list wywietla informacje o wykorzystaniu obiektu;
Uruchomienie programu jest moliwe poprzez przycisk Direct Processing, ale niesie ryzyko
koniecznoci zamknicia caego rodowiska ABAP w przypadku braku moliwoci
normalnego zakoczenia programu. Dlatego bezpieczniejsze jest uruchamianie aplikacji
poprzez menu kontekstowe wywoane na nazwie programu w drzewku obiektw i
uruchomienie programu w nowym oknie (Execute->In new window).
W menu kontekstowym w opcji Execute moliwe jest rwnie wywoanie debuggera. W
dolnej czci okienka debuggera znajduj si podstawowe pola systemowe oraz miejsce na
podgld wartoci obiektw. Ustawienia breakpointw mona wykona poprzez funkcj
Breakepoint at soubroutine i podanie nazwy procedury lub moduu. Rwnie poprzez prawy
przycisk w kodzie programu mona dodawa lub usuwa breakpointy.
Na uwag zasuguje rwnie pomoc, ktra jest zawarta w grnym menu umieszczonym na
niebieskim tle po uruchomieniu ABAP Dictionary w pozycji Environment->Examples-
>ABAP Examples. W miejscu tym mona znale zbir prostych przykadw ukazujcych
wszystkie najwaniejsze aspekty ABAP.

Rys. 2.3. Okno ABAP Editor
Podstawy programowania w jzyku ABAP
- 10 -
3. Podstawy jzyka ABAP
ABAP jest jzykiem interpretowanym, sterowanym zdarzeniami. Kady program jest
uruchamiany na tzw. procesorze ABAP zarzdzanym przez rodowisko uruchomieniowe
(ABAP runtime environment).
Kady program skada si z kodu rdowego, elementw tekstowych oraz atrybutw.
Atrybuty s ustawiane gwnie podczas tworzenia programu i zawieraj m.in. typ programu
(program wykonywalny, modu, podprocedura lub kod zaczany do innych programw),
tytu, jzyk, pakiet i inne. Elementy tekstowe s tworzone poprzez narzdzie Text Element
Maintenance Tool i obejmuj nagwki list i kolumn, tekst wyboru, symbole tekstowe.
Symbole tekstowe wykorzystuje si w wyraeniu WRITE. Umoliwiaj one tworzenie
wsplnych elementw tekstowych wykorzystywanych w wielu aplikacjach oraz tworzenie
aplikacji wielojzycznych. Program automatycznie wybiera odpowiedni wersj jzykow w
zalenoci od ustawie konta uytkownika, ktry go uruchamia.
Kod programu skada si ze deklaracji globalnych oraz blokw przetwarzania danych.
Globalne deklaracje znajduj si na pocztku programu. Dalej blok przetwarzania danych jest
podzielony na jednostki zwane blokami przetwarzania (processing blocks). Przetwarzanie w
ramach bloku przetwarzania jest sekwencyjne, natomiast kolejno wykonywania blokw
przetwarzania jest sterowana przez rodowisko ABAP na podstawie zdarze.
Linia zaczynajca si od znaku * jest traktowana jako komentarz.
3.1. Typy danych
W jzyku ABAP fragmenty pamici dostpne i interpretowalne z poziomu programu s
okrelane jako obiekt danych (data object). Kady obiekt danych musi zosta zadeklarowany
w programie ABAP i jest powoywany jedynie na czas wykonywania programu. Zakoczenie
programu powoduje usunicie obiektu z pamici. Obiekt danych posiada okrelony typ, tzn.
jest fizyczn jednostk danego typu powoan na czas wykonywania programu. Operacje na
obiekcie danych s zdeterminowane przez typ obiektu. Typ danych nie zajmuje przestrzeni
pamici, a jedynie okrela atrybuty obiektu.
ABAP zawiera obszern list wbudowanych typw prostych i zoonych, przeznaczonych do
specyficznych operacji biznesowych. Typy danych tworz struktur hierarchiczn, w ktrej
typy zoone skadaj si z typw prostszych. Wszystkie typy danych, nie liczc typw o
lokalnym zakresie, s zdefiniowane w sowniku ABAP Dictionary (transakcja SE11).
Wszystkie typy danych mog zosta podzielone na trzy podstawowe grupy: typy wbudowane,
typy referencyjny oraz typ zoone.
Programista moe definiowa wasny typ nazwa_typu dostpny lokalnie w programie
uywajc wyraenia TYPES. Czas ycia definicji typu okrelonego przez wyraenie TYPES
jest ograniczony przez czas ycia programu. Typy danych, ktre s wsplne dla wielu
programw mog zosta zdefiniowane w tzw. sowniku ABAB (ABAP Dictionary) w ramach
ABAP Workbench. Dziki temu wszystkie typy danych uywane w zoonym programie lub
wielu programach mog by zdefiniowane centralnie. Wwczas zmiana danego typu danych
polega jedynie na edycji jego definicji i nie wymaga modyfikacji innych fragmentw kodu
programu. Dodatkowo typy definiowane poprzez ABAP Dictionary mog przechowywa
pewn semantyk, np. opis deskryptywny, tekst pomocy, list wartoci.
Podstawowa skadnia wyraenia TYPES:
TYPES nazwa_typu(rozmiar) TYPE typ [DECIMALS dec].
Podstawy programowania w jzyku ABAP
- 11 -
Przykad: typ_miasto(30) TYPE c.
Typ moe by oczywicie typem wczeniej zdefiniowanym w programie. Wwczas nowy typ
nazwa_typu dziedziczy wszystkie cechy typu typ.
Do deklaracji obiektu danych suy wyraenie DATA. Podstawowa skadnia wyraenia jest
nastepujca:
DATA nazwa(rozmiar) TYPE typ [DECIMALS dec] VALUE
warto_pocztkowa.
Przykad: DATA miasto(30) TYPE c VALUES `Warszawa`.
Wyraenie powoduje utworzenie obiektu danych o nazwie nazwa, typie typ oraz przypisuje
mu warto pocztkow warto_pocztkowa. Obiekty utworzone poprzez wyraenie DATA
nazywamy zmiennymi.
Skadnia wyraenia DATA jest bardzo zbliona do skadnie wyraenia TYPES, dlatego dalej
czsto bdziemy podawa skadnie dla obu wyrae jednoczenie.
Typy i obiekty danych mog by tworzone nie tylko na podstawie zdefiniowanego typu, ale
rwnie na podstawie ju utworzonego obiektu danych. Wwczas zamiast okrelenia typu
przez sowo kluczowe TYPE definiuje si obiekt, na podobiestwo ktrego ma powsta nowy
obiekt uywajc skadni LIKE obiekt_danych, np.
DATA kwota_netto TYPE p DECIMALS 2.
DATA kwota_brutto LIKE kwota_netto.
Nazwy typw oraz obiektw danych musz skada si z maksymalnie 30 znakw liter, cyfr
lub podkrelenia _, przy czym musz zaczyna si od litery i nie mog pokrywa si ze
sowami kluczowymi lub predefiniowanymi obiektami. Przestrze nazw typw i obiektw
danych s rozdzielne. Do definicji obiektu mona wic uy tej samej nazwy co jego typ.
Typy wbudowane
Wbudowane typy danych o staej dugoci zostay przedstawione w Tab. 1. Minimalny i
maksymalny rozmiar okrela ile obiekt danych danego typu bdzie zajmowa pamici. Jeeli
rozmiar obiektu nie zostanie okrelony przy jego definicji to zostanie uyty domylny
rozmiar. Dla typw danych, w ktrych dopuszczalny jest tylko jeden rozmiar, nie powinien
on explicite wystpowa w deklaracji obiektu. Warto pocztkowa okrela warto
przypisan do obiektu, o ile inna warto nie zostaa przypisana w momencie jego deklaracji.
Mamy do dyspozycji typy numeryczne i, p, f, typy tekstowe c, n, d, t oraz typ bajtowy x.
Tab. 1. Wbudowane typy danych o staej dugoci
Typ Rozmiar
minimalny/maksymalny
(w bajtach)
Rozmiar
standardowy
(w bajtach)
Warto
pocztkowa
Opis
i 4 4 0 Liczba cakowita
p 1-16 8 0 Liczba spakowana
f 8 8 0 Liczba zmiennoprzecinkowa
c 1-65535 1 Tekst alfanumeryczny
n 1-65535 1 00 Tekst numeryczny (zoony
Podstawy programowania w jzyku ABAP
- 12 -
z cyfr)
d 8 8 00000000 Data
t 6 6 000000 Czas
x 1-65535 1 00 00 Liczba zapisana
hexadecymalnie

Typ c reprezentuje cig znakw o staej dugoci, jednak puste znaki s pomijane przy
konkatenacji cigw. Obiekty jednoznakowe typu c s wykorzystywane rwnie jako
zastpnik typu logicznego, przy czym znak X oznacza prawd, a znak spacji lub
predefiniowany obiekt space reprezentuje fasz.
Typ n mona traktowa jako typ tekstowy, ktry moe zawiera jedynie liczby. Nie jest on
raczej uywany do oblicze, gdy to wymagaoby konwersji typu do liczby, a raczej do
reprezentacji liczb typu kody bankowe, kod pocztowy, itp. Typ ten jest rwnie wygodny
przy wprowadzaniu danych przez uytkownika do automatycznej walidacji.
Typ d ma format YYYMMDD, gdzie YYYY oznacza rok, MM miesic, a DD dzie. Typ t
ma format HHMMSS, gdzie HH jest godzin, MM oznacza minuty, a SS sekundy. W
wyraeniach matematycznych obiekty obu typw s traktowane jako odpowiednio data lub
czas, w pozostaych przypadkach jako napisy. Typ x umoliwia operacje bitowe.
Oprcz powyszych typw istniej rwnie dwa typy wbudowane o zmiennej dugoci. Typ
string jest odpowiednikiem typu c, jednak rozmiar alokowanej pami zaley od dugoci
przypisanego do obiektu tekstu. Typ xstring jest odpowiednikiem o zmiennej dugoci
typu x.
Typy referencyjne
Typ referencyjny okrela typ obiektu danych ktry zawiera jedynie referencje do innego
obiektu danych. Taki obiekt jest nazywany obiektem referencyjnym.
TYPES|DATA TYPE REF TO obiekt|klasa|interfejs.
Referencja moe zosta utworzona do konkretnego obiektu lub klasy obiektw.
Typy zoone
Zoone typy danych gromadz w jednej logicznej jednostce pewn liczb obiektw danych.
Wyrnione s dwa rodzaje typw zoonych: typy strukturalne (structured types) oraz typy
tabelaryczne (table-like types).
Typy strukturalne grupuj zadan liczb komponentw zadanych typw tworzc struktur.
TYPES|DATA: BEGIN OF nazwa_struktury,
komponent1 {TYPE typ|LIKE obiekt} ,

komponentN {TYPE typ|LIKE obiekt} ,
END OF nazwa_struktury.
Komponent jest typem elementarnym, referencyjnym, strukturalnym lub tabelarycznym.
Szczegln, przydatn konstrukcj jest nastpujcy przykad, w ktrym tworzona jest
Podstawy programowania w jzyku ABAP
- 13 -
struktura odpowiadajca tabeli bazy danych dbtab, tak aby komponenty struktury
odpowiaday kolumn tabeli.
TYPES|DATA structure TYPE dbtab.
Adresowanie komponentu struktury odbywa si poprzez odwoanie struktura-komponent.
Oprcz standardowego zagniedanie struktur, w ktrym komponent moe by struktur,
istnieje moliwo wczania do struktury komponentw innej struktury, tak aby byy one
widoczne na tym samym poziomie. Wykorzystuje si w tym celu swko kluczowe
INCLUDE, a ewentualne niejednoznacznoci s rozstrzygane przez dodanie przyrostkw.
TYPES|DATA BEGIN OF struct1.

INCLUDE TYPE|STRUCTURE struct2 AS nazwa
{RENAMING WITH SUFFIX przyrostek].

TYPES|DATA END OF struct1.
Struktury zawierajce elementarny typy danych o staej dugoci (tzw. typy danych flat) s
reprezentowane bezporednio jako obiekty w pamici, natomiast dla typw danych
reprezentowanych poprzez wskanik (w tym elementarnych typw o zmiennej dugoci) jest
przetwarzany wskanik do struktury.
Typy tabelaryczne s zwizane z obiektami nazywanymi tabelami wewntrznymi (internal
tables). Tabela wewntrzna jest okrelona przez rodzaj tabeli, typ wiersza oraz klucz tabeli.
Podstawowa skadnia jest nastpujca:
TYPES|DATA {TYPE|LIKE} rodzaj_tabeli
OF {typ_wersza|wiersz}
WITH {UNIQUE KEY} klucz.
Rodzaj tabeli okrela sposb przechowywania i dostpu do danych i moe przyj warto
STANDARD TABEL, SORTED TABLE lub HASHED TABLE dla odpowiednio
standardowych, sortowanych lub haszujcych tabel. W definicji obiektu moe zosta podany
typ wykorzystywany do reprezentacji pojedynczego wiersza tabeli lub obiekt, ktrego typ ma
zosta zaaplikowany, np. tabela bazy danych. Klucz moe skada si z wielu kolumn, ktre
naley poda rozdzielajc spacjami. Typowy przykad kod tworzcego tabel wewntrzn i
zasilajcego j danymi z tabel bazodanowej moe by nastpujcy:
DATA tabela TYPE SORTED TABLE
OF spfli
WITH UNIQUE KEY corrid connid.
SELECT *
FROM spfli
INTO TABLE tabela
WHERE carrid = LH.
Ponadto istniej typy generyczne wymienione w Tab. 2.
Podstawy programowania w jzyku ABAP
- 14 -
Tab. 2. Typy generyczne
typ generyczny opis
ANY dowolny typ
ANY TABLE dowolna tabela
INDEX TABLE tabele indeksowe
TABLE|STANDARD TABLE tabele standardowe
SORTED TABLE tabele posortowane
HASHED TABEL tabele laszujce
c, n, s, p typy wbudowane o dowolnej dugoci

Proste typy danych o staej dugoci mog by wykorzystane do definicji staych z
wykorzystaniem skadni
CONSTANTS const[(dlugosc)} {TYPE typ|LIKE obj}
[DECIMALS dec]
VALUE wartosc.
Wyraenie PARAMETERS rwnie tworzy zmienne, cho ma inn semantyk. Jest ono
zwizane z definiowanie ekranw i zostanie omwione w dalszej czci lekcji.
Do tej pory zajmowalimy si tworzeniem obiektw nazwanych. W programie mog istnie
rwnie obiekty anonimowe literay, obiekty o zadanym typie, wymagajce okrelonej
porcji pamici, ale nie posiadajce nazwy. Literay tekstowe to cig alfanumerycznych
znakw ujtych w apostrofy, o dugoci do 255 znakw, odpowiadajcy typowi c. Litera
moe by zapisany w wielu liniach czc poszczeglne czci ujte apostrofach znakiem
&, np.
WRITE / To jest &
jeden litera.
Dwa wystpujce bezporednio po sobie znaki apostrofu nie s traktowane jako znak
ograniczajcy litera, a jako pojedynczy znak apostrofu w nim zawarty.
Literay numeryczne powinny by umieszczane bez znakw apostrofu, jeeli s to liczby bez
kropki dziesitnej. W przypadku liczb dziesitnych konieczne jest zapisanie literau jako
litera tekstowy, co oznacza konieczno konwersji z typu c na waciwy typ numeryczny, a
co za tym idzie moliwo nie dokadnej reprezentacji, np. moliwo zaokrgle.
Predefiniowane obiekt tworzone i aktualizowane przez system, dostpne jako komponenty
obiektu SYST o typie zdefiniowanym w ABAB Dictionary, nazywa si polami systemowymi
(system fields). Poniewa w ABAB Dictionary zawarta jest rwnie semantyka komponentw,
to najatwiejszym sposobem ich poznania jest przegldanie sownika. W kadym programie
jest tworzona automatycznie struktura sy typu SYST. Odczyt pl systemowych odbywa si
poprzez selektor komponentu w strukturze, np. sy-uname zwraca nazw uytkownika, sy-
datum, sy-uzelt zwraca biec dat i czas. Wanym polem systemowym jest pole sy-
subrc uywane do przekazywania kodu zwracanego przez wiele wyrae ABAP, gdzie zero
oznacza wykonanie zakoczone sukcesem.
Podstawy programowania w jzyku ABAP
- 15 -
3.2. Elementarne operacje na obiektach
Przypisanie wartoci do obiektw odbywa si za pomoc dwch rwnowanych skadni
MOVE obiekt2 TO obiekt1.
lub
Obiekt1 = obiekt2.
Obiekt obiekt2 moe oczywicie by obiektem nie nazwanym, czyli literaem. Jeeli
obiekty s rnych typw, ale moliwe jest dokonanie konwersji, to jest ona wykonywana.
Brak moliwoci konwersji jest zgaszane jako bd skadni lub podczas wykonywania
programu jako bd wykonania (runtime error). Bdy konwersji podczas wykonywania
programu powoduj wyjtek, ktry moe zosta przechwycony i obsuony przez program.
Operacja przypisania wywoana na strukturach powoduje przepisanie zawartoci ich
poszczeglnych komponentw. Jeeli struktury s rnych typw to moliwe jest przepisanie
zawartoci tylko komponentw odpowiadajcych sobie nazwami poprzez skadnie
MOVE-CORRESPONDING struktura2 TO struktura1.
Prba przypisana do obiektu typu d daty o niewaciwym formacie powoduje przypisanie
wartoci 0. Jeeli znacznik czasu musi by unikalny mona to zagwarantowa przypisujc
warto za pomoc skadni
GET TIME STAMP FIELD f.
Odwoania do elementw obiektw moliwe jest poprzez adresowanie
f[+off][(dlugosc)]
Jeeli typ f jest cigiem znakw to zwracany jest podcig o dugoci dlugosc poczwszy od
indeksu off. Poniszy przykad pokazuje jak wyodrbni z daty poszczeglne elementy:
rok = sy-datum(4).
miesiac = sy-datum+4(2).
dzien = sy-datum+6(2).
W kadym momencie mona przywrci warto pocztkow zmiennej poprzez wyraenie
CLEAR obiekt.
W przypadku tabeli wewntrznej oznacza to usunicie wszystkich wierszy, w przypadku typu
referencyjnego ustawienie wartoci NULL.
Wyznaczanie wyrae matematycznych odbywa si za pomoc skadni
[COMPUTE] obiekt2 = wyraenie matematyczne.
Operatory arytmetyczne +, - *, / maj odpowiadajce im sowa kluczowe ADD TO,
SUBSTRACT FROM, MULTIPLY BY , DIVIDE BY. Pozostae operatory
dwuargumentowe to DIV, MOD i ** oznaczajce dzielenie cakowitoliczbowe, reszt z
podziau oraz potgowanie. W przypadku niejednoznacznoci w pierwszestwie
wykonywania dziaa, operacje s wykonywane od lewej do prawej z wyjtkiem
potgowania, ktre jest wykonywane od prawej do lewej strony. Operatory matematyczne,
jak rwnie nawiasy s traktowane jako odrbne sowa, a wic przed nimi i po nich musi
wystpowa spacja.
ABAP dostarcza nastpujcych wbudowanych funkcji matematycznych:
Podstawy programowania w jzyku ABAP
- 16 -
funkcja opis
abs warto bezwzgldna
sign znak argumentu
ceil najmniejsza warto nie mniejsza ni argument
floor najwiksza warto nie wiksza ni argument
trunc cz cakowita argumentu
frac cz uamkowa argumentu
acos, asin, atan, cos, sin, tan funkcje trygonometryczne
cosh, sinh, tanh, funkcje hiperboliczne
exp funkcja wykadnicza o podstawie e
log logarytm naturalny
log10 logarytm dziesitny
sqrt pierwiastek

Wyraenia logiczne nie mog by uywane po prawej stronie przypisa, a jedynie w
warunkach logicznych. W wyraeniach logicznych mog wystpowa operatory
operator opis
=, EQ rwny
<>, NE nie rwny
<, LT mniejszy
<=, LE mniejszy rwny
>, GT wikszy
>=, GE wikszy rwny
AND logiczny operator i
OR logiczny operator lub
NOT logiczny operator zaprzeczenia
IS operator sprawdzenie obiektu pod ktem operatora
BETWEEN AND obiekt zawarty w przedziale
IN obiekt zawarty w zbiorze
Operator NOT ma pierwszestwo wykonywania przez operatorem AND, a AND przed
operatorem OR.
W przypadku porwnywania struktur, porwnywane s wszystkie ich komponenty. Struktury
s sobie rwne, jeeli wszystkie komponenty s identyczne. W przypadku porwnywania
tabel wewntrznych najpierw porwnywana jest liczba wierszy im wicej wierszy tym
tablica jest wiksza. Jeeli liczba wierszy jest rwna porwnywane s kolejne wiersze,
Podstawy programowania w jzyku ABAP
- 17 -
komponent po komponencie. Porwnywanie jest zatrzymywane w przypadku napotkania
pierwszego rnicego si wiersza, ktry determinuje warto relacji porwnania.
Wyraenie IS moe mie nastpujce skadnie
IS INITIAL sprawdzenie, czy obiekt ma warto pocztkow,
IS ASSIGNED sprawdzenie, czy tzw. symbol pola (field symbol) zosta przypisany
do obiektu,
IS {SUPPLIED|REQUESTED} sprawdzenie, czy obiekt zosta wypeniony lub
sprawdzony podczas wywoania procedury.
Wystpujca po operatorze IN tabela jest tzw. tabel wyboru, ktra powinna by
zdefiniowana poprzez konstrukcje
DATA tabela_wyboru LIKE RANGE OF f.
lub
SELECT-OPTIONS table_wyboru FOR f.
Druga skadnia jest zwizana z definicj ekranw wyboru, ktre zostan omwione w
dalszych punktach.
Do porwnywania acuchw tekstu przeznaczone s odrbne operatory:
s1 CO s2 zwraca prawd, jeeli s1 zawiera tylko znaki wystpujce w s2; w
przypadku faszu, pole systemowe su-fdpos zawiera indeks pierwszego znaku nie
zawartego w s2;
s1 CN s2 zwraca prawd, jeeli s1 zawiera nie tylko znaki wystpujce w s2, w
przeciwnym przypadku, pole systemowe su-fdpos zawiera indeks pierwszego
znaku nie zawartego w s2;
s1 CA s2 zwraca prawd, jeeli s1 zawiera co najmniej jeden wystpujcy w s2;
w przeciwnym przypadku, pole systemowe su-fdpos zawiera indeks pierwszego
znaku, ktry jest zawarty rwnie w s2;
s1 NA s2 zwraca prawd, jeeli s1 nie zawiera adnego znaku wystpujcego w
s2; w przeciwnym przypadku, pole systemowe su-fdpos zawiera indeks
pierwszego znaku, ktry rwnie wystpuje w s2;
s1 CS s2 zwraca prawd, jeeli s1 zawiera cig s2, a su-fdpos zawiera indeks
pierwszego wystpienia s2 w s1;
s1 NS s2 zwraca prawd, jeeli s1 nie zawiera cig s2, w przeciwnym przypadku
su-fdpos zawiera indeks pierwszego wystpienia s2 w s1;
s1 CP s2 zwraca prawd, jeeli s1 pasuje do wzorca zawartego w s2; wzorzec
moe zawiera specjalne znaki * oraz +; w przypadku prawdy su-fdpos
zawiera indeks wystpienia s2 w s1;
s1 NP s2 zwraca prawd, jeeli s1 nie pasuje do wzorca zawartego w s2, w
przeciwnym przypadku su-fdpos zawiera indeks wystpienia s2 w s1;
Operatory CO, CN, CA i NA rozrniaj mae i wielkie litery.
Podstawy programowania w jzyku ABAP
- 18 -
3.3. Kontrola przepywu sterowania
Instrukcje warunkowe
W jzyku ABAP wystpuj dwie konstrukcje instrukcji warunkowych. W instrukcji
IF/ENDIF wystpuj wyraenia logiczne warunkujce przekazanie sterowania programem
do waciwego bloku instrukcji. Skadnia instrukcji
IF wyraenie_logiczne1.
Blok_instrukcji1
[ELSEIF wyraenie_logiczne2.
Blok instrukcij2]

[ELSEIF wyraenie_logiczneN.
Blok instrukcijN]
[ELSE.]
Blok_instrukcjiN+1
ENDIF.
W instrukcji CASE/ENDCASE wyrniony obiekt jest porwnywany z innymi obiektami.
Skadnia instrukcji CASE/ENDCASE
CASE obiekt.
WHEN obiekt1 [OR ].
Blok_instrukcji_1
[WHEN obiekt2 [OR ].
Blok_instrukcji_2]

[WHEN OTHERS.
Blok_instrukcjiN
ENDCASE.
Przykad
CASE sy-datum+4(2).
WHEN 12 OR 01 OR 02.
WRITE / Zima.
WHEN 06 OR 07 OR 08.
WRITE / Lato.
WHEN OTHERS.
WRITE Zla data.
ENDCASE.
Ptle
Podstawy programowania w jzyku ABAP
- 19 -
Ptle bezwarunkowe DO ma nastpujc skadnie
DO [n TIMES].
Blok instrukcji
ENDDO.
n okrela liczb iteracji. Jeeli n jest mniejsze ni 1 lub nie zostao sprecyzowane, ptla moe
by zakoczona jedynie w wyniku wykonania wyraenie EXIT. Biecy numer iteracji moe
zosta odczytany z obiektu sy-index. W przypadku ptli zagniedonej dostp do numeru
iteracji ptli zewntrznej jest moliwy jedynie z wykorzystaniem dodatkowych zmiennych,
gdy sy-index przechowuje informacje dla biecej (zagniedonej) ptli.
Ptle warunkowe WHILE powoduje powtrzenie wykonywania bloku wyrae tak dugo jak
podany warunek logiczny jest prawdziwy.
WHILE wyraenie_logiczne.
Blok_wyrae
ENDWHILE.
Sterowanie ptl moe odbywa si rwnie za pomoc wyrae CONTINUE, EXIT oraz
CHECK. Wyraenie CONTINUE powoduje pominicie dalszych wyrae w biecej iteracji
ptli i natychmiastowe rozpoczcie nowej iteracji. Wyraenie CHECK
wyraenie_logiczne funkcjonuje tak samo jak CONTINUE, ale tylko gdy
wyraenie_logiczne ma warto false. Wyraenie EXIT powoduje natychmiastowe
opuszczenie ptli.
3.4. Modularno
ABAP daje moliwo programowania zgodnie z paradygmatem programowania
proceduralnego i/lub paradygmatem programowania obiektowego. Wedug pierwszego z
paradygmatw kod dzielony jest na funkcjonalne moduy zawierajce lokalne dane. Kady
program posiada co najmniej blok zdarzeniowy START-OF-SELECTION uruchamiany
automatycznie podczas startu programu.
Najprostszym sposobem modularyzacji jest wykorzystanie wyraenia
INCLUDE incl.
gdzie incl jest nazw programu. Wynik jest taki, jakby kod rdowy programu incl
zosta umieszczony w miejscu wyraenia. Rwnie podczas sprawdzana skadni program jest
traktowany, jakby kod programu incl zosta wczony zamiast wyraenia INCLUDE.
Inny sposobem modularyzacji s makra. Makro grupuje sekwencje wyrae, ktre mog by
nastpnie wielokrotnie uywane. Skadnia makra:
DEFINE makro.

END-OF-DEFINITION.
Makra s dostpne jedynie w programie, w ktrym s zdefiniowane. Uycie makra ma posta
makro [p1 p9]
gdzie wartoci p1 do p9 s podstawiane pod wyraenia &1 &9 w definicji makra.
Podstawy programowania w jzyku ABAP
- 20 -
Program APAB moe by podzielony na podprocedury (subroutines) widoczne w ramach
programu lub z poziomu innych programw. Definicja podprocedury wyglda nastpujco:
FORM nazwa
[USING
{VALUE(u
i
)|u
i
}[TYPE typ|LIKE obiekt]
]
[CHANGING
{VALUE(c
i
)|c
i
}[TYPE typ|LIKE obiekt]
]

ENDFORM.
Lista parametrw u
i
i c
i
moe by zdefiniowana bez wyspecyfikowanych typw lub wraz z
okrelonymi typami przez wyraenia TYPE lub LIKE. Okrelenie typw wyrae zapewnia,
i do podprocedury zostan przekazane tylko obiekty o typach jakie s oczekiwane w
podprocedurze. Typy mog by wyspecyfikowane jednoznacznie lub nie jednoznacznie, np.
typ o zmiennej dugoci bez podania konkretnej dugoci lub typy generyczne np. INDEX
TABLE. Wystpuj cztery sposoby przekazywania parametrw:
1. USING u
i

Deklaracja powoduje przekazanie parametru przez referencje. Przekazywany parametr
nie powinien by modyfikowany wewntrz podprocedury, a uyty jedynie do odczytu.
2. USING VALUE(u
i
)
Deklaracja powoduje utworzenie lokalnej zmiennej bdcej kopi przekazywanego
parametru. Zmiana obiektu wewntrz podprocedury nie powoduje zmiany
zadeklarowanego poza podprocedur i przekazanego do niej obiektu.
3. CHANGING c
i

Deklaracja jest zbiena z USING ui, jednak przekazywane obiekty mog by
modyfikowane. Jeeli obiekt zostanie zmieniony to zmiany te bd widoczne rwnie
poza podprocedur, gdy obiekty s przekazane przez referencje.
4. CHANGING VALUE(c
i
)
Deklaracja powoduje przekazanie parametrw poprzez utworzenie lokalnej kopii
przekazywanych obiektw, tak jak w przypadku USING VALUE(u
i
). Przy
poprawnym zakoczeniu procedury (poprzez ENDFORM, CHECK lub EXIT) obiekty
lokalne s kopiowane do obiektw przekazywanych do podprocedury. W przypadku
niepoprawnego zakoczenia podprocedury obiekty na zewntrz podprocedury
pozostaj niezmienione.
Wywoanie podprocedury odbywa si poprzez wyraenie PERFORM. Podstawowa skadnia
ma nastpujc posta:
PERFORM podprocedura [USING a
i
]
[CHANGING a
j
]
[IN PROGRAM program].
Podstawy programowania w jzyku ABAP
- 21 -
Parametry w wywoaniu podprocedury s przypisywane do obiektw w deklaracji zgodnie z
kolejnoci ich wystpowania, w odrnieniu od moduw funkcjnych i metod, gdzie istotn
rol odgrywa nie kolejno, a nazwy obiektw. Poniszy przykadowy kod rdowy zwiera
przykadowe wywoanie i definicj podprocedury
PERFORM select_data USING p_carrid
p_connid
CHANGING sflight_tab.

FORM select_data USING u_carrid LIKE p_carid
u_connid LIKE p_connid
CHANGING c_sflight_tab TYPE t_sflight_tab.
SELECT *
FROM sflight
INTO TABLE c_sflight_tab
WHERE carrid = u_carrid AND
connid = u_connid.
ENDFORM.
W ramach podprocedury mona uywa wyrae CHECK i EXIT na podobnej zasadzie jak w
ptlach (patrz 3.3). Podprocedury nie mog by zagniedane.
Moduy funkcyjne (functions modules) s zaprojektowane do wywoa zewntrznych (poza
programem zawierajcym definicj moduu funkcyjnego) i odgrywaj gwn rol w
przypadku fragmentw kodu wykorzystywanego przez wiele programw rwnie na wielu
instancjach SAP (zdalne wywoywanie moduu funkcyjnego RFC). Cho moduy funkcyjne
s definiowane w ramach grupy funkcji, to kady modu funkcyjny posiada unikaln nazw w
ramach caego systemu SAP. Grupy funkcji s kontenerami moduw funkcyjnych, ale mog
rwnie posiada wasne globalne obiekty, typy, ekrany przeznaczone do wykorzystania w
wielu programach. Grupa jest w rzeczywistoci programem ABAP, a modu funkcyjny
blokiem przetwarzania w programie. Grupy funkcji tworzy si w narzdziu Function Bulider
(transakcja SE37) w ramach ABAP Workbench. Aby utworzy grupy funkcyjne najatwiej
ustawi w ABAP Workbench filtr Function group i na drzewie obiektw wywoa menu
kontektowe, gdzie w Create jest opcja Function module. Nazwy moduw funkcyjnych
tworzonych przez uytkownika musz zaczyna si od znakw Y_ lub Z_ (z
podkreleniem w odrnieniu od nazw programu). Na kolejnych zakadkach definiuje si
m.in. parametry, wyjtki funkcji oraz kod rdowy. Aby przetestowa modu funkcyjny
mona z poziomu Function Builder wywoa opcj Test / Execute.
Wywoanie moduu funkcyjnego odbywa si za pomoc CALL FUNCTION o nastpujcej
skadni:
CALL FUNCTION obiekt_zawierajacy_nazwe_funkcji
[EXPORTING f
1
=a
1
.. f
n
=a
n
]
[IMPORTING f
1
=a
1
.. f
n
=a
n
]
[CHANGING f
1
=a
1
.. f
n
=a
n
]
Podstawy programowania w jzyku ABAP
- 22 -
[EXCEPTIONS e
1
=r
1
.. e
n
=r
n

[ERROR_MESSAGE = r
E
]
[OTHERS =r
o
]].
gdzie f reprezentuj formalne parametry wystpujce w module, a a to obiekty
przekazywane do moduu, e reprezentuj wyjtki, a r to liczby. Nazwa funkcji jest
dostarczana jako obiekt, a wic w postaci zmiennej lub literau. Z wyjtkami skojarzone s
liczby, zwracana poprzez obiekt systemowy sy-subrc, jeeli wyjtek wystpi.
Zauwamy, e obiekty lokalne s tworzone w podprocedurach lub moduach funkcyjnych.
Obiekty tworzone przed gwnym blokiem przetwarzania maj zasig globalny. Dlatego tylko
niezbdne dane powinny by tworzone w gwnym bloku programu, a wiksza cz
funkcjonalnoci powinna by schowana w podprocedurach lub moduach funkcyjnych.
Aspekty programowania obiektowego i zwizane z nim metody modularyzacji zostan
omwione w sekcji 5.
4. Podstawowe konstrukcje jzyka ABAB
4.1. Przetwarzanie napisw
Konkatenacja napisw moe zosta dokonana przez wyraenie CONCATENATE.
CONCATENATE n1 nn INTO n [SEPARATED by sep].
Napisy n1 do nn s zczane, a wynik jest umieszczany w obiekcie n. Jeeli docelowy napis
n jest krtszy ni wynik zczenia napisw n1 do nn, to wynik zczenia jest obcinany do
dugoci obiektu n. Opcjonalnie mona zdefiniowa separator sep, ktry bdzie wystpowa
w zczonym napisie n pomidzy napisami n1 do nn.
s1 = ABAB
s2 = Objects
CONCATENATE s1 s2 INTO s3 SEPERATED BY SPACE.

Odwrotna operacja do konkatenacji dzielenie napisu, jest wykonywana poprzez wyraenie
SPLIT
SPLIT n_zrodlowy AT sep INTO n1 nn.
Napis rdowy jest dzielony w miejscach przed i po wystpieniu separatora sep. Wynikowe
napisy, po pominiciu separatora, s umieszczane w obiektach n1 do nn. Jeeli liczba
obiektw docelowych jest zbyt maa, to w ostatnim obiekcie jest umieszczana pozostaa do
podziau cz napisu i w szczeglnoci moe ona zawiera separator. Innym rozwizaniem
jest dokonanie podziau napisu do obiektu typu tabela wewntrzna (internal table) poprzez
skadnie
SPLIT n_zrodlowy AT sep INTO TABLE tabela.
Dla kadego wynikowego napisu powstaego w wyniku dzielenia do tabeli tabela dodawany
jest nowy wiersz.
DATA: text TYPE string,
itab TYPE TABLE OF string.
Podstawy programowania w jzyku ABAP
- 23 -
text = Napis zoony &
z wielu linii.
SPLIT text AT space INTO TABLE itab.
LOOP AT itab INTO text.
WRITE / text.
ENDLOOP.
Nastpujce wyraenie SEARCH pozwala wyszuka podcig znakw s2 w cigu znakw s1:
SEARCH s1 FOR s2.
W polu systemowym sy-subrc zwracana jest warto 0 jeeli podcig zosta znaleziony, a
pole sy-fdpos zawiera pozycj wystpienia cigu s2 w cigu s1. W cigu s1 mona
wykorzystywa znaki wieloznaczne * oraz ..
Podmiana podcigu znakw moe by wykonana poprzez wyraenie
REPLACE s1 WITH s2 INTO s3.
W cigu znakw s3 szukany jest cig s1. Pierwsze wystpienie tego podcigu jest
zastpowane poprzez cig znakw s2.
Inne istotne sowa kluczowe zwizane z przetwarzaniem napisw:
strlen zwraca dugo napisu,
SHIFT przesuwa znaki w napisie,
CONDENSE usuwa odstpy,
CONVERT TEXT tworzy format, ktry moe podlega sortowaniu,
OVERLAY nakada napisy na siebie.
4.2. Dynamiczny dostp do obiektw
Symbole pl (field symbols) to symboliczne nazwy dla istniejcych obiektw. Ich zadaniem
jest stworzenie moliwoci oprogramowania dziaa na obiektach bez ich znajomoci (i
znajomoci ich typw). Obiekty s wizane z symbolami pl dopiero w trakcie dziaania
programu.
Deklaracja symbolu pola odbywa si za pomoc konstrukcji
FIELD-SYMBOLS <fs> {TYPE typ|LIKE obiekt}.
Statyczne przypisanie obiektu do symbolu odbywa si poprzez wyraenie
ASSIGN f[+off]{(dlugosc)] TO <fs>.
Statyczne przypisanie polega na przypisaniu konkretnego nazwanego obiektu. Dziki
parametrom off i dlugosc przypisanie moe dotyczy tylko czci obiektu.
Dynamiczne przypisanie ma miejsce, gdy nazwa obiektu jest znana dopiero podczas
wykonywania programu. Jeeli nazwa obiektu jest przechowywana w zmiennej f to takie
przypisanie moe odby si poprzez wyraenie:
ASSIGN (f) TO <fs>.
Podstawy programowania w jzyku ABAP
- 24 -
Jeeli przypisanie nie jest moliwe, polu systemowemu sy-subrc jest przypisywana
warto 4.
Usunicie przypisania odbywa si za pomoc konstrukcji
UNASSIGN <fs>.
Wyraenie
<fs> IS ASSIGNED
ma warto true, jeeli symbol jest przypisany.
Podczas przypisywania obiektw mona dokona rzutowania dodajc swko kluczowe
CASTING.
Innym sposobem dynamicznego dostpu do obiektw jest dostp poprzez referencje, czyli
adresy obiektw w pamici. Dodatkowo poprzez typ referencyjny mona dynamicznie
tworzy nowe obiekty, co nie jest moliwe w przypadku symboli pl. Deklaracja obiektu
referencyjnego odbywa si w nastpujcy sposb:
DATA dref TYPE REF TO obiekt.
Tak zadeklarowana referencja nie wskazuje jeszcze na aden obiekt. Przypisane referencji do
obiektu moe odbywa si na trzy sposoby. Referencja do nazwanego obiektu moe by
przypisana za pomoc skadni
GET REFERENCE OF dobj INTO dref.
Referencja moe by przepisana z innego obiektu referencyjnego poprzez MOVE lub operator
przypisania =. Wreszcie, referencja moe by przypisana wraz z powoaniem nowego
obiektu.
Dostp do obiektu poprzez referencje jest moliwy dziki operatorowi dereferencji ->*, np.
ASSIGN dref->* TO <fs> [CASTING [typ|nazwa]].
Aby dynamicznie utworzy obiekt wykorzystuje si skadnie
CREATE DATA dref {TYPE {typ|(nazwa)}|LIKE obiekt}.
Obiekt utworzony dynamicznie funkcjonuje pamici programu dopki jest wskazywany
chocia przez jeden obiekt referencyjny.
4.3. Przetwarzanie tabel wewntrznych
Tabele wewntrzne (internal tables) to zoone obiekty przypominajce tabele bazodanowe.
S to jednak obiekty powoywane do ycia tylko na czas wykonywania programu. Tabela
wewntrzna skada si z wierszy, liczba wierszy moe zmienia si dynamicznie w trakcie
wykonywania programu i jest ograniczona przez zasoby komputera. Wiersz jest definiowany
przez zbir typw obiektw, mog to by zarwno obiekty proste jak i zoone, np. inna
tabela wewntrzna.
Cho mona dynamicznie tworzy obiekty i zarzdza nimi poprzez referencje, to jednak ten
sposb jest o wiele bardziej zoony i podatny na bdy, ni wykorzystanie tabel
wewntrznych. Dlatego w ogromnej wikszoci przypadkw, gdy zachodzi potrzeba
przetwarzania danych poprzez dynamicznie alokowane zasoby, tabele wewntrzne s
najlepszym rozwizaniem.
Typ lub obiekt tabeli wewntrzn definiuje si za pomoc wyraenia
Podstawy programowania w jzyku ABAP
- 25 -
TYPES|DATA tab {TYPE|LIKE} typ
OF {typ_wiersza|wiersz}
WITH klucz
[INITIAL SIZE n].
Typ tabeli moe zosta okrelony poprzez jedno z wyrae:
STANDARD TABLE tabela z indeksami. Dostp do wierszy mona uzyska
specyfikujc klucz lub poprzez indeks. Nowe wiersz s albo doczane na kocu,
albo wstawiane pomidzy inne wiersze. Podczas wstawiania lub usuwania linii indeks
jest ponownie wyznaczany.
SORTED TABLE jest to tabela o cechach takich jak standardowa tabela, przy czym
wiersze s zawsze uoone w porzdku rosncym.
HASHED TABLE tabela bez indeksu, wiersze tabeli haszujcej nie s ukadane,
natomiast miejsce wiersza w pamici jest wyznaczane przez funkcje haszujc. Nie
jest moliwy dostp poprzez indeks.
Do okrelenia typw tabel uywane s jeszcze sowa kluczowe ANY TABLE oraz INDEX
TABEL, przy czym nie mog by one uyte do tworzenia obiektw lub typw, a np. do
przekazywania argumentw w procedurach. ANY TABLE jest typem generycznym
obejmujcym wszystkie tabele wewntrzne, a INDEX TABEL obejmuje typy STANDARD
TABLE oraz SORTED TABLE.
Wiersz lub typ wiersza tabeli wewntrznej moe by okrelony przez dowolny obiekt
ABAPa, typowo wykorzystuje si tu struktury.
Klucz jest istotny z punktu widzenia dostpu do wierszy i sortowania. Jeeli wiersz jest
struktur, to kady element struktury nie bdcy lub nie zawierajcy tabeli moe by
umieszczony w kluczu:
[UNIQUE|NON-UNIQUE] KEY obiekt1 obiekt2
Kolejno obiektw w kluczu okrela ich wano.
Jeeli wiersz nie jest struktur mona uy pseudo komponentu table_line
[UNIQUE|NON-UNIQUE] KEY table_line.
Wwczas cay wiersz jest traktowany jako klucz. Zawsze istnieje moliwo ustawienia
standardowego klucza poprzez:
[UNIQUE|NON-UNIQUE] DEFAULT KEY.
Wwczas klucz tworzony jest z komponentw tabeli nie bdcych lub nie zawierajcych
tabeli i typw numerycznych: i, f, p. Sowa kluczowe UNIQUE oraz NON-UNIQUE okrelaj
unikalno klucza, przy czym tylko tabela standardowa moe mie tylko nieunikalny klucz, a
tabela haszujca moe mie tylko unikalny klucz.
Po INITIAL SIZE podaje si liczb wierszy. Informacja ta jest wykorzystywana do
pocztkowej alokacji pamici. Okrelanie wielkoci pocztkowej ma sens, jeeli znana jest
apriori liczba wiersze i w ten sposb mona lepiej zarzdza zasobami systemowymi,
szczeglnie, gdy taka tabela jest zanurzona w inne tabeli.
Podstawy programowania w jzyku ABAP
- 26 -
Ze wzgldw historycznych moliwe jest uywanie skrtw podczas tworzenia tabeli, co
spowoduje domylne potraktowanie jako tabeli standardowej z nie unikalnym standardowym
kluczem. Wwczas taka definicja sprowadza si do
DATA tab TYPE TABLE OF typ_wiersza.
Przy tworzeniu tabeli mona na kocu doda dopisek WITH HEADER LINE. Nie zaleca si
uywania tego typu tabel, gdy s one przestarzae i utrzymywane jedynie dla zgodnoci
wstecznej. Operacje na tabeli z wierszem nagwkowym nie wymagaj specyfikowania
obiektu roboczego pozwalajcych na przechowywanie wierszy, gdy sama tabela posiada taki
obiekt. Obiekt ten nazywa si tak samo jak tabela i jest typu zgodnego z typem wiersza tabeli.
Operacje na tabeli z wierszem nagwkowym mog wic mie uproszczon skadnie, gdy
domylnie uywany jest wiersz nagwkowy.
Dla tabel standardowych preferowana forma dostpu jest poprzez index, dla tabel
posortowanych poprzez klucz, a dla tabel haszujcych tylko poprzez klucz.
Wstawianie wierszy odbywa si poprzez wyraenie
INSERT wiersz INTO tab INDEX idx.
Powoduje to wstawienie wiersza przed wierszem o indeksie idx, nowa linia otrzyma indeks
idx, a indeksy nastpnych wierszy zostan zwikszone o 1. Dla dostpu poprzez klucz
skadnia jest nastpujca:
INSERT wiersz INTO TABLE tab.
Dla tabeli standardowej spowoduje to zawsze wstawienie wiersza jako ostatni, dla tabeli
posortowanej w miejscu zalenym od klucza, tak aby zachowany by porzdek, a dla tabeli
haszujcej na podstawie funkcji haszujcej. Obiekt wiersz musi by zgodny z definicj
tabeli i mona go zadeklarowa poprzez wyraenie
TYPES|DATA wiersz {TYPE|LIKE} LINE OF {typ_tabeli|tabela}.
Wstawienie wielu wierszy znajdujcych si w innej tabeli, ograniczonych przez zakres
indeksu odbywa si poprzez dodanie wyraenia
LINES OF tab2 [FORM idx1] [TO idx2].
Dla tabel o nie unikalnym kluczu mona rwnie wykorzysta polecenie
COLLECT wiersz INTO tab2.
Jeeli wiersz o podanym kluczu ju istnieje, to jest on modyfikowany przez dodanie do pl
numerycznych wartoci z tabeli tab2. W przypadku polecenia INSERT prba wstawienia
wiersza duplikujcego klucz do tabeli z unikalnym kluczem powoduje ustawienia pola
systemowego sy-surc na cztery.
Doczanie wierszy jest moliwe poprzez skadnie APPEND:
APPEND wiersz TO tab.
lub
APPEND LINES OF tab1 [FROM idx1] [TO idx2] TO tab2.
W przypadku tabeli posortowanej rekordy musz by doczane, tak aby posortowanie byo
zachowane. Poniszy przykad pokazuje wykorzystanie wyraenia APPEND, gdzie t_adres
jest struktur zdefiniowan poza przykadem
DATA adres TYPE t_adres.
Podstawy programowania w jzyku ABAP
- 27 -
DATA tabela_adresow TYPE TABLE OF t_adres.

CLEAR tabela_adresow.
adres-miasto = Warszawa.
adres-ulica = Zlota.
APPEND adres TO tabela_adresow.
Odczyt pojedynczego wiersza z tabeli wewntrznej odbywa si poprzez wyraenie READ o
nastpujcej skadni
READ TABLE tab INDEX idx {INTO wiersz|ASSIGNING <fs>}.
dla odczytu z wykorzystaniem indeksu lub
READ TABLE tab FROM key {INTO wiersz|ASSIGNING <fs>}.
READ TABLE tab
WITH TABLE KEY komp1=f1 kompn=fn
{INTO wa|ASSIGNING <fs>}.
dla odczytu z wykorzystaniem klucza, przy czym w pierwszym przypadku key musi by
wypenion danymi struktur zgodn z kluczem tabeli, a w drugim warunki na klucz s
wyspecyfikowane explicite. Wiersz moe by odczytany do obiektu wiersz (oznaczanego
czsto jako wa working area) lub skojarzony z symbolem pola fs. Obiekt wiersz musi
pasowa do typu wiersza zdefiniowanego w tabeli wewntrznej. Wykorzystujc dodatkowo
sowo kluczowe TRANSPORTING mona wskaza ktre komponenty wiersza maj zosta
przepisane do obiektu. W przypadku skojarzenia z symbolem pola nie nastpuje przepisanie
wartoci, a jedyne symbol wskazuje na wiersz w pamici. Tak wic operacje na symbolu pola
bezporednio zmieniaj dane w tabeli wewntrznej, podczas gdy obiekt wiersz musiaby
jawnie zosta przepisany do tabeli. Przypisanie obiektu wiersz do tabeli odbywa si
poprzez wyraenie MODIFY:
MODIFY tab FROM wiersz INDEX idx.
MODIFY TABLE tab FROM wiersz.
MODIFY tab FROM wiersz
TRANPORTING komp1 kompn
WHERE wyrazenie_logiczne.
Druga wersja dotycz dostpu poprzez klucz pierwszy wiersz o kluczu pasujcym do obiektu
wiersz zostanie zmodyfikowany. Dodajc wyraenie TRANSPORTING mona okreli,
ktre z komponentw maj zosta zapisane. Moliwa jest rwnie jednoczesna zmiana wielu
wierszy speniajcych zadane wyraenie logiczne.
Analogiczne skadnie mog zosta wykorzystane do usuwania wierszy. Typowe skadnie s
nastpujce:
DELETE TABLE tab INDEX idx.
DELETE tab FROM key.
DELETE TABLE tab WITH TABLE KEY komp1=f1 kompn=fn.
Podstawy programowania w jzyku ABAP
- 28 -
DELETE tab [FROM idx1] [TO idx2].
DELETE tab WHERE wyrazenie_logiczne.
Ostatnie dwie skadnie dotycz usuwania wielu wierszy. Pierwszym przypadku s to wiersze
o indeksie w podanym przedziale, w drugim przypadku wiersze speniajca podany warunek
logiczny okrelony na komponentach tabeli wewntrznej.
Przetwarzanie tabel wewntrznych czsto wie si z przetwarzaniem kolejnych wierszy.
Wygodnie jest wwczas uywa ptli LOOP iterujcej po kolejnych wierszach tabeli.
Skadnia ptli jest nastpujca:
LOOP AT tab {INTO wiersz|ASSIGNING <fs>}.

ENDLOOP.
Kolejne wiersza s albo przepisywane do roboczego obiektu wiersz lub s przypisywane do
symbolu pola. Kolejno wierszy zaley od typu tabeli. Dla tabeli standardowej zwracane s
wiersze w kolejnoci odpowiadajcej indeksowi, dla tabeli posortowanej zgodnie z
posortowaniem, dla tabeli haszujcej zgodnie z kolejnoci, w jakiej wiersze byy dodawane
lub zgodnie z sortowaniem o ile takie byo wykonane na tabeli. Indeks biecego wiersza
mona odczyta z pola systemowego sy-tabix. Jest on zdefiniowany oczywicie dla tabel
typu INDEX TABLE.
W skadni LOOP, analogicznie do skadni poprzednich wrae mona uywa rozszerze
FROM do okrelenia zakresu indeksw lub WHERE do krelenia warunku logicznego.
Dodatkowo w bloku przetwarzania pomidzy LOOP a ENDLOOP mog zosta wyrnione
nastpujce bloki
AT NEW komp

ENDAT.
oraz
AT END OF komp

ENDAT.
Bloki s wykonywane, jeeli komponent komp przyjmuje now warto lub ostatni warto
w sekwencji wierszy o identycznych wartociach komponentu.
Sortowanie wierszy odbywa si za pomoc wyraenia SORT:
SORT tab [ASCENDING|DESCENDING]
[ BY komp1 [ASCENDING|DESCENDING]].
Sortowanie moe dotyczy klucza lub jawnie wyspecyfikowanych komponentw. Sortowanie
tabel haszujcych ma sens jedynie przed ptl LOOP, gdy tylko tam sortowanie ujawnia si.
Sortowanie tabel standardowych zmienia przypisanie indeksw do poszczeglnych wierszy.
Sortowanie tabel posortowanych nie zmienia ich.
Podstawy programowania w jzyku ABAP
- 29 -
5. Obiektowo w ABAP
ABAP historycznie wspiera proceduralny model programowania. Programowanie
strukturalne oferuje gwnie modularyzacje za pomoc procedur poprzez podzia na bloki
przetwarzania omwione w rozdziale 3.4. Jednak wraz z pojawieniem si koncepcji
obiektowoci wprowadzone zostay elementy modelu obiektowego. Podstawowe cechy
modelu obiektowego to
Abstrakcja elementy wiata rzeczywistego s modelowane jako klasy i powoywane
do ycia jako obiekty.
Enkapsulacja szczegy implementacyjne s ukryte za interfejsami.
Dziedziczenie nowe klasy pochodz od innych klas, dziedziczc i rozszerzajc
atrybuty i metody klasy nadrzdnej.
Polimorfizm rne obiekty mog wystawia takie same interfejsy, a dostp do klas
jest ukryty pod interfejsami uytkownik nie musi zna szczegw klasy
wystawiajcej interfejs.
5.1. Klasy
Podstawowym elementem modelu obiektowego ABAP s klasy. Klasy globalne, widoczne z
dowolnego programu ABAP s tworzone poprzez narzdzie Class Builder w ABAP
Workbench. Klasy lokalne s tworzone w programie ABAP i widoczne tylko w jego obszarze.
Aby utworzy klas naley zdefiniowa cz definicyjn zwizan z deklaracj
komponentw klasy oraz cz implementacyjn klasy za pomoc wyrae:
CLASS klasa DEFINITION.
PUBLIC SECTION.

PROTECTED SECTION.

PRIVATE SECTION.

ENDCLASS.
CLASS klasa IMPLEMENTATION.

ENDCLASS.
W czci definicyjnej mog pojawi si trzy sekcje zwizane z zasigiem komponentw
klasy:
PUBLIC dla obiektw publicznych, dostpnych z dowolnego poziomu,
PROTECTED dla obiektw chronionych dostpnych tylko w klasach pochodnych,
PRIVATE dla obiektw dostpnych jedynie w definiowanej klasie.
Na komponenty klasy skadaj si atrybuty, metody i zdarzenia. Kady komponent moe by
statyczny wwczas jest jedna instancja komponentu dla wszystkich obiektw danej klasy.
Co wicej instancja ta jest dostpna, nawet jeli aden obiekt klasy nie zosta utworzony.
Podstawy programowania w jzyku ABAP
- 30 -
Jeeli komponent nie jest statyczny to dla kadego obiektu klasy tworzona jest odrbna
instancja komponentu.
Atrybuty klasy s klasycznymi obiektami danych ABAP i s definiowane tak jak inne obiekt
w ABAPie za pomoc wyraenia DATA, CONSTANTS lub TYPES dla zmiennych, staych
oraz typw odpowiednio. Aby atrybut by traktowany jako statyczny naley sowo kluczowe
DATA zastpi poprzez CLASS-DATA. Dodanie sowa kluczowego READ-ONLY powoduje,
i obiekt moe by zmieniany jedynie poprzez metody klasy.
CLASS klasa DEFINITION.
PRIVATE SECTION.
DATA atrybut1 TYPE i.
CLASS-DATA atrybut2 TYPE i.
ENDCLASS.
Metody wystpuj zarwno w czci deklaracyjnej jak i implementacyjnej klasy. Prosta
deklaracja metody ma nastpujc skadni:
METHODS metoda
IMPORTING i
i
TYPE type
EXPORTING e
i
TYPE type
CHANGING c
i
TYPE type
EXCEPTIONS e
i

Elementy skadni s zblione do elementw skadni definiujcej moduy funkcyjne i
podprocedury przedstawione w sekcji 3.4. Przykad:
CLASS klasa DEFINITION.
PUBLIC SECTION.
METHODS:
set_value
IMPORTING VALUE(i_value) TYPE i,
get_value
EXPORTING VALUE(e_value) TYPE i.
PRIVATE SECTION.
DATA object_value TYPE i.
ENDCLASS.
CLASS klasa IMPLEMENTATION.
METHOD set_value.
object_value = i_value.
ENDMETHOD.
METHOD get_value.
e_value = object_value.
Podstawy programowania w jzyku ABAP
- 31 -
ENDMETHOD.
ENDCLASS.
Wywoanie metody jest zbiene ze skadni CALL FUNCTION omwion w sekcji 3.4, przy
czym uywa si sw kluczowych CALL METHOD. Istnieje rwnie skrcona forma
wywoania metody o skadni:
CALL METHOD metoda (f
1
= a
1
f
n
= a
n
).
Dynamiczne wywoanie metody polega na wywoaniu metody, ktrej nazwa jest zawarta w
obiekcie, np. jeeli nazwa metody jest w obiekcie f, to wywoanie moe wyglda
nastpujco:
CALL METHOD obiekt->(f).
Metoda o nazwie constructor jest automatycznie wywoywana po utworzeniu kadej
nowej instancji obiektu. Metoda o nazwie class_constructor jest wywoywana przy
pierwszej prbie dostpu do klasy.
Metody zwracajce warto s deklarowane za pomoc skadni
METHODS metoda
IMPORTING {VALUE(i
i
)| i
i
} {TYPE typ|LIKE obj}
[OPTIONAL|DEFAULT def
i
]
RETURNING VALUE(r) {TYPE typ|LIKE obj}.
Wwczas wywoanie moe wyglda nastpujco:
CALL METHOD obiekt->metoda
EXPORTING i
1
= a
1
i
n
= a
n
RECEIVING r = a.
W czci definicyjne mog zosta rwnie zdefiniowane zdarzenia (events). Metody tej klasy
lub poza klas mog zosta zdefiniowane jako uchwyt dla tych zdarze. Wwczas wywoanie
zdarzenia w metody tej samej klasy powoduje automatycznie wywoanie metody
dedykowanej do obsugi zdarzenia.
Aby utworzy instancj klasy konieczna jest referencja do obiektu o typie zgodnym z klas.
Zamy, e zosta utworzony typ klasy samochod. Wwczas, powoanie instancji klasy i
wywoane metody moe wyglda nastpujco:
DATA samochod_ref TYPE REF TO samochod.
CREATE OBJECT samochod_ref.
CALL METHOD samochod_ref->tankuj.
Utworzenie obiektu moe wiza si z wywoaniem konstruktora. Wwczas przekazanie
parametrw do kontraktora odbywa si poprzez rozszerzenie wyraenia CREATE METHOD o
odpowiednie elementy tak jak w wywoaniu metody: EXPORTING, EXCEPTIONS,
Przykad pokazuje rwnie w jaki sposb adresuje si komponenty klasy. Dla obiektw nie
statycznych uywa si selektora ->. Dla obiektw statycznych skadnia wyglda
nastpujco
klasa=>komponent
Podstawy programowania w jzyku ABAP
- 32 -
przy czym klasa jest nazw typu a nie obiektu. W obrbie klasy nie jest konieczne
uywanie selektora. Referencje do obiektu wewntrz jego samego mona uzyska odwoujc
si do predefiniowanej referencji me.
Obiekt klasy jest usuwany z pamici, gdy ostatnia referencja z nim zwizane jest usuwana.
5.2. Dziedziczenie i polimorfizm
ABAP implementuje mechanizm pojedynczego dziedziczenia kada klasa moe dziedziczy
tylko z jednej klasy. Skadnia umoliwiajca zdefiniowanie klasy potomnej jest nastpujca:
CLASS klasa_potomna DEFINITION INHERITING FORM
klasa_nadrzdna.

ENDCLASS.
W klasie potomnej istnieje moliwo redefinicji metody. W czci deklaracyjnej musi
pojawi si wyraenie
METHODS metoda REDEFINITION.
a w czci implementacyjnej metoda musi zosta zdefiniowana ponownie, przy czym zestaw
parametrw nie moe ulec zmianie w stosunku do definicji w klasie nadrzdnej. Istnieje
moliwo wywoania metody w klasie nadrzdnej uywajc predefiniowanej pseudo
referencji super oznaczajcej referencje do klasy nadrzdnej.
ABAP wspiera rwnie klasy abstrakcyjne. Aby utworzy klas abstrakcyjn po sowie
kluczowym DEFINITION musi wystpi sowo kluczowe ABSTRACT. Analogicznie metody
mog by zadeklarowane jako abstrakcyjne poprzez dodanie sowa ABSTRACT. Sytuacj
odwrotn, w ktrej nie mona zmienia ju zdefiniowanej klasy lub metody osiga si
uywajc sowa kluczowego FINAL w miejscu sowa ABSTRACT.
Polimorfizm oznacza, e pewne wywoania metod mog powodowa rne dziaania w
zalenoci do kontekstu. Polimorfizm moe by wic osigany dziki dziedziczeniu, gdzie
poprzez referencje wskazujc do klasy nadrzdnej faktycznie mona wywoa metod
redefiniowan w pewnej klasy podrzdnej. Innym mechanizmem wspierajcym polimorfizm
s interfejsy.
5.3. Interfejsy
Interfejs opisuje publicznie dostpn sekcj klasy bez jej implementacji. Jeeli klasa
implementuje interfejs, to moe by dostpna poprzez ten interfejs. Poniewa wiele klas moe
implementowa jeden interfejs, a obiekty tych klas s dostpne poprzez jeden obiekt, to
mechanizm ten moe wspiera polimorfizm. Podobnie jak klasy, interfejsy mog by lokalne
lub globalne. Skadnia definicji interfejsu lokalnego jest nastpujca:
INTERFACE interfejs
DATA
CLASS-DATA
METHODS
CLASS-METHODS
EVENTS
Podstawy programowania w jzyku ABAP
- 33 -
CLASS-EVENTS
ENDINTERFACE.
Interfejs moe wic mie dokadnie takie same komponenty jak klasa, ale wszystkie
komponenty s traktowane jako publiczne.
Kada klasa moe implementowa jeden lub wiele interfejsw. W sekcji publiczne definicji
klasy musi wystpi skadnia
INTERFACES: int1, int2,
Znak ~ jest selektorem interfejsu. W ramach klasy komponenty interfejsu s adresowane za
pomoc skadni
interfejs~komponent
Interfejsy mog by komponowane z innych interfejsw poprzez wyraenie INTEREFACES
zawarte pomidzy INTERFACE ENDINTERFACE. Wyraenie
DATA interfejs_ref TYPE REF TO interfejs.
tworzy referencj do interfejsu.
Poniszy przykad pokazuje definicj interfejsu i klasy implementujcej interfejs:
INTERFACE raport.
METHODS wydrukuj_raport.
ENDINTERFACE

CLASS klasa DEFINITION.
PUBLIC SECTION.
INTERFACES: raport.
PRIVATE SECTION.
DATA wartosc TYPE i.
ENDCLASS.

CLASS klasa IMPLEMENTATION
METHOD raport~wydrukuj_raport.
WRITE: / Wartosc: , wartosc.
ENDMETHOD.
ENDCLASS.

DATA klasa_ref TYPE REF TO klasa.

CREATE OBJECT klasa_ref.
CALL METHOD: klasa_ref->raport~wydukuj_raport.
Podstawy programowania w jzyku ABAP
- 34 -
5.4. Zdarzenia
Zdarzenia (events) s trzecim, obok atrybutw i metod, komponentem klas. Dwa istotne
czynniki wyrniaj zdarzenia od metod. Obiekt wywoujcy zdarzenie nie zna kodu
obsugujcego zdarzenie, podczas gdy wywoanie metody wie si z jej dokadnym
zaadresowaniem. Co wicej, obiekt powodujcy zdarzenie nawet nie wie apriori, czy kod
obsugujcy zdarzenie przyniesie jaki skutek, np. procedura obsugi zdarzenie moe uzna, i
w danym stanie aplikacji, zdarzenie nie skutkuje adnymi zmianami. Zdarzenia implementuj
wic lune powizania pomidzy obiektami. S one zwizane z koncepcj publikacji i zapisu
(publish and subscribe) polegajc na tym, i obiekt publikuje zdarzenie, a inne obiekty mog
je wywoywa, przy czym obiekt publikujcy zdarzenie nie zna obiektw wywoujcych je.
Do obsugi zdarze wymagane s dwie klasy: klasa wywoujca zdarzenie i klasa
implementujca procedur obsugi zdarzenia (handler). W klasie wywoujcej zdarzenia,
wszystkie zdarzenia, jakie mog zosta wywoane, s deklarowane tak jak pozostae
komponenty klasy za pomoc skadni:
EVENTS zdarzenie
EXPORTING
VALUE(e
i
) {TYPE typ|LIKE obiekt}
[OPTIONAL|DEFAULT def
i
]

Zdarzenia statyczne s definiowane za pomoc sowa kluczowego CLASS-EVENTS. W
metodach klasy wywoanie zdarzenie odbywa si za pomoc wyraenia:
RAISE EVENT zdarzenie EXPORTING e
i
= a
i

Procedura obsugi zdarzenia moe zosta umieszczona w dowolnej klasie za pomoc wariacji
skadni METHODS lub CLASS_METHODS:
METHODS handler FOR EVENT zdarzenie
OF {klasa|interfejs}
IMPORTING e
i
[sender].
Metoda handler zostaje przypisana do obsugi zdarzenia zdarzenie podanej klasy lub
interfejsu. Powizanie zdarzenia z metod obsugujca zdarzenia odbywa si poprzez
rejestracj. Rejestracja metody obsugujcej zdarzenie moe w kadym momencie by
odwoana lub zamieniona na inn. Rejestracja odbywa si poprzez skadni:
SET HANDLER .. ref_handler
i
->handler
i

FOR ref_sender
[ACTIVATION act].
gdzie ref_handler oraz ref_sender s referencjami do wskazujcymi na obiekt
zawierajcy obsug zdarzenia oraz obiekt wywoujcy zdarzenia.
Podstawy programowania w jzyku ABAP
- 35 -
6. Programowanie ekranw
6.1. Listy
Listy s standardowym sposobem organizacji prezentacji danych wynikowych
przeznaczonym gwnie do raportowania wynikw, ktre mog by bezporednio przesane
do systemu zarzdzania drukowaniem SAP (spooler SAP). W najprostszym programie na
pocztku wywoywany jest ekran wyboru (patrz 6.3), nastpnie przekazane przez
uytkownika dane s odczytywane i przetwarzane i na zakoczenie programu wywoywany
jest ekran listy.
Listy s jedynym typem ekranw, ktre nie s zdefiniowane w programie ABAP apriori.
Dopiero wypisywanie lub formatowanie danych w trakcie dziaania programu ABAP
powoduje zapis wynikw do tzw. bufora list, a nastpnie ekran listy moe zosta przywoana
z bufora automatycznie lub na danie programu
1
. Wwczas uruchamiany jest specjalny
program systemowy procesor listy (list procesor), do ktrego przekazywane jest sterowanie.
Obszar prezentacji wynikw na ekranie typu lista jest podzielony na linie i wiersze znakw.
Pocztkowa pozycja kursora jest w lewym grnym rogu. Wypisywanie na ekran pl odbywa
si za pomoc polecenia
WRITE [AT /pos(len)] pole [opcje ].
Polecenie powoduje wypisanie zawartoci pola pole na ekranie uywajc len znakw, w
pozycji okrelonej przez przesunicie pos wzgldem biecej pozycji kursora. Ukonik
powoduje przejcie do nowej linii przed rozpoczciem wypisywana wynikw. Przykadowe
opcje to LEFT-JUSTIFIED dla wyrwnania do lewej, COLOR dla wyspecyfikowania
koloru, INPUT dla pl tekstowych, HOTSPOT dla obiektw klikalnych. W pojedynczym
poleceniu WRITE moe wystpi sekwencja argumentw oddzielona przecinkami. Opcje
mog by rwnie wczane lub wyczane dla wszystkich polece WRITE poprzez polecenie
FORMAT, np. FORMAT HOTSPOT ON.
Drukowanie linii poziomych jest moliwe poprzez komend
ULINE [AT /pos(len)].
lub
WRITE [AT /pos(len)] sy-uline.
lub
WRITE [AT /pos(len)] --------------.
Analogicznie linie pionowe mona drukowa uywajc obiektu sy-vline lub drukujc
znak |. W opisie wyraenia WRITE mona znale dodatkowe okrelenia na rne elementy,
np.
WRITE line_top_right_corner AS LINE.
powoduje wydrukowania na ekranie odpowiedniego naronika.
Drukowanie pusty linii umoliwia komenda
SKIP [n].

1
Podczas debugowania mona podejrze biece listy w ABAP Debugger wybierajc opcje Display List.
Podstawy programowania w jzyku ABAP
- 36 -
gdzie n jest liczb pusty wierszy. Pozycjonowanie kursora horyzontalne i wertykalne moe
by dokonane przez polecenia
POSITION col. przesunicie kursora do kolumny col
SKIP TO LINE lin. wydrukowanie lin pustych wierszy
NEW-LINE przejcie do nowej linii
NEW-PAGE przejcie do nowej strony
Rozmiar drukowanej strony ustalamy poleceniami
REPORT raport LINE-SIZE szerokosc.
REPORT raport LINE-COUNT wysokosc.
Tytu listy mona zdefiniowa poprzez wyraenie
SET TITLEBAR tytul.
Ekrany listy s wywoywane automatycznie gdy ostatni z blokw przetwarzania zdarzenia
jest zakoczony. Gdy wywietlane s inne ekrany mona wypisywa wyniki jedynie do
bufora. Wywietlenie listy znajdujcej si w buforze jest moliwe poprzez wyraenie
LEAVE TO LIST-PROCESSING [AND RETURN TO SCREEN nr].
Powoduje to wywietlenie listy na zakonczeniu obsugi zdarzenia Process After Input
biecego ekranu. Opuszczenie listy wykonuje si poprzez kod
LEAVE LIST-PROCESSING.
Uytkownik moe wywoywa akcj na ekranie listy, gwnie poprzez zaznaczanie linii
dwuklikiem myszki. Akcje uytkownika powoduj wywoania zdarze w programie ABAP,
ktry wywoa ekran listy. Wyraenia znajdujce si w procedurze obsugi zdarzenia zapisuj
wyniki do nowej listy, ktra jest przywoywana na koniec obsugi zdarzenia jako modalne
okno dialogowe. W ten sposb tworzony jest acuch ekranw, ktry jednak musi by
ograniczony do 20 ekranw. Informacje zwizane z akcjami uytkownika mog by
wywietlane jedynie w obszarach statusu GUI (statusy s omwione w nastpnym punkcie).
Wyraenie
AT LINE-SELECTION.
umoliwia zdefiniowanie bloku zdarzenia zwizanego z zaznaczeniem linii. Lini mona
zaznaczy poprzez dwuklik myszk lub przycisk funkcyjny F2, lub funkcje Choose, ktra
pojawia si w statusie ekranu. Aby odczyta, ktra linia zostaa zaznaczona mona posuy
si obiektami sy-lilli oraz sy-curow, ktre dostarczaj informacji o biecej pozycji
kursora. Jednak lepszym sposobem jest skojarzenie z lini ukrytych informacji poprzez
wyraenie
HIDE f
Zaznaczenie linii powoduje automatycznie zaadowanie ukrytych informacji do zmiennej f.
Kade inne zdarzenie mona analogicznie obsuy uywajc AT USER-COMMAND i testujc
obiekt systemowy sy-ucomm zawierajcy tzw. kod funkcyjny okrelajcy przyczyn
zdarzenia. W trakcie obsugi zdarzenia mona utworzy now list (tzw. detail list). Listy s
indeksowane, a numer biecej listy jest przetrzymywany w obiekcie sy-lsind. Kade
wywoanie zdarzenia powoduje zwikszenie indeksu biecej listy, dlatego wyniki
wypisywane w zdarzeniu trafiaj na now list. Obiekt sy-listi przechowuje indeks listy,
Podstawy programowania w jzyku ABAP
- 37 -
na ktrej akcja uytkownika spowodowaa wywoanie zdarzenia. Jeeli uytkownik wybierze
opcj Back to bieca lista jest usuwana. Lista szczegowa (detail list) moe by rwnie
wywietlona jako okno modalne, jeeli zostanie uyta konstrukcja
WINDOW STARTING AT left upper
ENDING AT right lower.
Podczas przetwarzania listy mona rwnie dokona zmian poszczeglnych linii. Suy do
tego celu wyraenie
MODIFY LINE linia [INDEX idx]
gdzie idx jest indeksem listy (domylnie bieca lista).
6.2. Ekrany oglne
Kady ekran skada si z rozmieszczenia elementw oraz logiki przepywu ekranu (screen
flow logic). Logika jest podzielona na co najmniej dwa bloki: blok PBO (Process Befor
Output) przetwarzania danych przed ich pokazaniem oraz blok PAI (Process After Input)
przetwarzania danych po akcji uytkownika. Kady ekran jest przypisany statycznie lub
dynamicznie do dokadnie jednego programu. Uytkownik moe jednak widzie jednoczenie
wiele ekranw w postaci komponentw lub tzw. podekranw.
Po zakoczeniu przetwarzania ekranu wywoywany jest nastpny ekran. Kolejne wywoania
ekranw tworz sekwencje ekranw bdc podstaw aplikacji zorientowanych na dialog.
Sekwencje ekranw mog by zanurzone w innych sekwencjach ekranw, tworzc w
oglnym przypadku pewne potencjalne cieki wywoa kolejnych ekranw, tak jak
pokazano na Rys. 6.1.

Rys. 6.1. Sekwencja ekranw. rdo: [ 4].
Ekrany oglne (general screen) definiuje si za pomoc narzdzia Screen Painter. Aby
utworzy nowy ekrana naley wywoa menu kontekstowe na drzewie programu i wybra
opcj NEW, a nastpnie SCREEN.
Podstawy programowania w jzyku ABAP
- 38 -
Podczas definiowania ekranu okrela si podstawowe atrybuty, takie jak
Program nazwa programu, do ktrego naley ekran,
Screen number unikalny w obszarze programu, czterocyfrowy identyfikator
ekranu,
Screen type typ ekranu okrelajcy sposb jego prezentacji: jako okno modalne lub
nie, podekran ktry moe by wywietlony w innym ekranie
Next screen numer nastpnego ekranu jaki bdzie uruchomiony po zakoczeniu
obsugi definiowanego ekranu; warto zero lub brak wartoci oznacza, i jest to
ostatni ekran.
Rozmieszczenie elementw na ekranie jest moliwe poprzez narzdzie Graphical Screen
Painter. Uruchamia si je poprzez przycisk Layout w narzdziu Screen Painter lub poprzez
transakcje o kodzie SE51. W oknie Graphical Screen Painter w lewym panelu s dostpne
elementy, ktre mona rozmieszcza na ekranie technik drag&drop. Podstawowe elementy
to
pola tekstowe i ramki umoliwiaj wywietlanie nieedytowalnych danych,
pola input/output umoliwiaj wywietlanie danych z programu lub pobranie danych
do programu,
przyciski, przyciski typu radio, typu checkbox,
podekrany zanuone ekrany,
zakadki,
tabele umoliwiaj wywietlanie i edycj danych w postaci tabelarycznej,
komponenty firm trzecich
Kady komponent posiada atrybuty. Okienko atrybutw wywouje si poprzez dwuklik na
wybranym komponencie. Warto zwrci uwag na atrybut FctCode, ktry jest kodem
funkcyjnym (function code) komponentu. Warto kodu jest zwracana do programu ABAP w
wyniku akcji uytkownika, np. w momencie kliknicia przycisku. Atrybuty elementw s
rwnie dostpne z poziomu Screen Paintera w zakadce Element list (patrz Rys. 6.2).
Podstawy programowania w jzyku ABAP
- 39 -

Rys. 6.2. Lista elementw ekranu w narzdziu Screen Painter
Ostatnim elementem jest zawsze 20 znakowe pole typu OK, ktremu zwyczajowo nadaje si
nazw OK_CODE. Pole te jest uywane do przekazywania wartoci kodu funkcyjnego
elementw. Aby w programie mona byo odczyta zawarto pola, naley zdefiniowa
obiekt o takiej samej nazwie jak pole typu OK oraz o globalnym systemowym typie sy-
ucomm. Wwczas, np. kliknicie przycisku spowoduje przesanie wartoci jego FctCode do
obiektu OK_CODE w programie (o ile tak nazw nadano dla pola typu OK).
Oglnie, kady element, ktry umoliwia wprowadzanie danych jest zwizany z polem
ekranu (screen field). W programie musz zosta utworzone globalne obiekty o nazwach
odpowiadajcych nazwom elementw na ekranie
2
. Wartoci pl s automatycznie przesyane
do zmiennych globalnych w programie o tych samych nazwach. Dlatego nazwy elementw
ekranu wykorzystywanych do wprowadzania danych musz by unikalne w obrbie
programu.
Ekrany mog by wywoywane w programie ABAP poprzez wyraenie
CALL SCREEN nr.
Wwczas ekran o numerze nr staje si pierwszym ekranem nowej sekwencji. Jeeli w tej
sekwencji zostanie wywoany ekran o numerze 0, to sekwencja koczy swoje dziaanie, a

2
Obiekty musz rwnie mie odpowiedni typ. Zauwamy, ze dla liczb uamkowych typ f nie moe zosta
uyty.
Podstawy programowania w jzyku ABAP
- 40 -
sterowanie przechodzi do nastpnego wyraenia bezporednio za wyraeniem wywoujcym
sekwencj nr. W kadym przypadku wywoania ekranu poprzez CALL SCREEN bieca
sekwencja ekranw jest przerywana i nastpuje uruchomienie nowej sekwencji. W ten sposb
tworzy si stos wywoa sekwencji ekranw, ktry moe mie maksymalny rozmiar 50
wywoa. Jednak ze wzgldu na ekrany uruchamiane przez system (np. ekrany pomocy lub
komunikaty o bdach) w praktyce nie powinno si przekracza 40 zagniedonych wywoa.
Naley pamita, e zanurzone ekrany bd operowa na zmiennych globalnych caego
programu, dlatego naley zadba o to aby istotne dane nie zostay nadpisane. W szczeglnoci
tyczy si to kodu OK, ktry zazwyczaj pojawia si na zagniedonych ekranach. Dlatego w
praktyce w module PAI zazwyczaj pierwszym krokiem jest zapamitanie jego wartoci w
lokalnej zmiennej, a dopiero nastpnie przejcie do przetwarzania danych.
Innym sposobem wywoania ekranu jest uruchomienie transakcji zwizanej z ekranem. Aby
utworzy transakcje naley w narzdziu Object Nawigator wywoa menu kontekstowe na
lici obiektw i wybra Create->Transaction->Dialog Transaction. Wywoanie transakcji
powoduje zaadowanie programu i rozpoczci jego wykonania od pocztkowego ekranu
wskazanego w transakcji (dokadnie od jego zdarzenia PBO). Typowe zastosowanie wie si
ze zwizaniem transakcji z elementami interfejsu uytkownika, np. menu. Jednak transakcja
moe by rwnie wywoana z poziomu programu poprzez
CALL TRANSACTION kod_transakcji
LEAVE TO TRANSACTION kod_transakcji
przy czym druga opcja powoduje zakoczenie biecego programu i wywoanie transakcji.
Trzeci sposb wywoania ekranu wie si z atrybutem next screen ekranu. Gdy
przetwarzanie ekranu zostaje zakoczone (po zdarzeniu PAI) automatycznie wywoywany
jest nastpny ekran. Nastpny ekran jest definiowany w narzdziu Screen Painter, jednak
moe by rwnie definiowany dynamicznie w programie poprzez wyraenie (patrz Rys. 6.3)
SET SCREEN nr.
Ustawienie numeru ekranu na 0 oznacza zakoczenie programu po zakoczeniu
przetwarzania biecego ekranu. Moliwe jest rwnie zaptlenie ekranu poprzez ustawienie
numeru nastpnego ekranu jako numer biecego ekranu. Numer biecego ekranu moe by
zawsze odczytany poprzez pole systemowe sy-dynnr.
Zakoczenie przetwarzania ekranu nastpuje na kocu bloku obsugujcego zdarzenie PAI
lub w przypadku napotkania polecenia
LEAVE SCREEN.
lub
LEAVE TO SCREEN nr.
Pierwsze polecenie powoduje przejcie do nastpnego ekranu, drugie polecenie do ekranu o
numerze nr.
Podstawy programowania w jzyku ABAP
- 41 -

Rys. 6.3. Dynamiczna sekwencja ekranw. rdo: [ 4].
Logika przypywu sterowania przez ekran (screen flow logic) jest definiowana przez jzyk
programowania zbliony do ABAPu , ale skadajcy si jedynie z kilku sw kluczowych.
Logik definiuje si na zakadce Flow Logic w narzdziu Screen Painter. Nie ma tu jawnej
deklaracji obiektw, jednak s dostpne pola ekranu. Logika ekranu skada si z blokw
przetwarzania, definiowanych przez sowo kluczowe PROCESS. Moliwe jest zdefiniowane
czterech blokw:
PROCESS BEFORE OUTPUT.

PROCESS AFTER INPUT.

PROCESS ON HELP-REQUEST.

PROCESS ON VALUE-REQUEST.

Po utworzeniu ekranu domylnie s utworzone pierwsze z dwch blokw, ktre s
obowizkowe. Blok PBO (PROCESS BEFORE OUTPUT) jest wykonywany przed
wywietleniem ekranu i suy do przygotowania ekranu do wywietlenia. Blok PAI
(PROCESS AFTER INPUT) jest uruchamiany w wyniku akcji uytkownika na elementach z
ustawionym kodem funkcyjnym (function code) i suy do przetwarzania danych
wprowadzonych przez uytkownika. W odrnieniu od pozostaych blokw przetwarzania,
po bloku PAI uruchamiany jest nastpny ekran. Blok POH (PROCESS ON HELP-
REQUEST) jest uruchamiany, gdy uytkownik zada pomocy zwizanej z polem (przycisk
Podstawy programowania w jzyku ABAP
- 42 -
F1), a blok POV (PROCESS ON VALUE-REQUEST), gdy uytkownik zada pomocy
zwizanej z dopuszczalnymi wartociami (przycisk F4).
Kady z blokw przetwarzania ekranu suy jedynie do kontroli nad przesyem danych z
ekranu do obiektw ABAP oraz do wywoania odpowiednich moduw dialogowych w
programie. W tym celu mona wykorzysta wski zbir sw kluczowych. Najwaniejsze z
nich to:
MODULE powoduje uruchomienie moduu dialogowego w programie ABAP,
FIELD umoliwia kontrol przysania danych z pl ekranu do obiektw ABAP,
CHAIN/ENDCHAIN umoliwia grupowanie wywoa moduw dialogowych w
acuch przetwarzania,
CALL SUBSCREEN powoduje wywoanie podekranu.
Uruchomienie moduu odbywa si poprzez polecenie
MODULE mod.
Moduy dialogowe w programie ABAP s definiowane za pomoc nastpujcej skadni
3
:
MODULE pbo_mod OUTPUT

ENDMODULE.
MODULE pai_mod INPUT

ENDMODULE.
Moduy zadeklarowane jako OUTPUT mog by uruchamiane jedynie w zdarzeniu PBO, a
moduy INPUT w zdarzeniach PAI, POH, POV. Moduy dialogowe nie powinny raczej
zawiera deklaracji danych, gdy kada taka deklaracja jest deklaracj globaln obiektu.
Zaleca si stosowanie moduw jedynie do sprawdzenia danych i wywoania odpowiednich
procedur, ktre mog operowa na obiektach lokalnych. Modu nie jest sztywno zwizany z
adnym z ekranw, przy czym zawsze mona sprawdzi biecy ekran uywajc obiektu
systemowego sy-dynnr.
Transport danych pomidzy ekranem, a programem ABAP moe odbywa si automatycznie
na podstawie zgodnoci nazw pl ekranu oraz obiektw globalnych na pocztku obsugi
zdarzenia PAI. Transport danych moe odbywa si rwnie w sposb kontrolowany przez
programist. Jeeli w logice przepywu ekranu w zdarzeniu PAI wystpi wyraenie
FIELD pole.
to warto pola zostanie przesana do programu ABAP dopiero po napotkaniu tego wyraenia
(inne pola s przesyane na pocztku zdarzenia PAI). Wyraenie to jest przydatne z
wykorzystaniem innych wyrae warunkowych, np. wyraenie
FIELD pole MODULE modul ON REQUEST.
powoduje uruchomienie moduu modul tylko, jeeli warto pola pole zostaa zmieniona
przez uytkownika w stosunku do wartoci jak miao po zdarzeniu PBO. Zamiast ON

3
Nie naley myli skadni i znaczenia polecenia MODULE w jzyku ABAP oraz w logice przepywu ekranu.
Podstawy programowania w jzyku ABAP
- 43 -
REQUEST mona wykorzysta ON INPUT co oznacza wykonanie moduu, jeeli pole
zawiera warto rn od wartoci pocztkowej. Powysze warunki mog by grupowane za
pomoc wyraenia CHAIN, np.
CHAIN.
FIELD: pole1, pole2,
MODULE modul1 ON {CHAIN-INPUT|CHAIN-REQUEST}
FIELD: pole3, pole4,
MODULE modul2 ON {CHAIN-INPUT|CHAIN-REQUEST}
...
ENDCHAIN.
Moduy s uruchamiane jeeli cho jedno pole w wyraeniu FIELD spenia warunek.
Powysze rozwizania wietnie nadaj si do sprawdzania poprawnoci danych
wprowadzonych w poszczeglnych polach lub grupach pl. Jeeli w wywoanym module
zostanie wywietlony bd lub ostrzeenie, to pola staj si ponownie edytowalne dla
uytkownika (zdarzenie PAI nie koczy si przejciem do nastpnego ekranu).
Pole typu OK jest uywane do wyznaczania kodw funkcyjnych zwizanych z akacjami
uytkownika. Jednak, aby zapewni jednoznaczno wartoci tego pola w nastpnych
ekranach zaleca si na pocztku moduu PAI zapamitanie wartoci pola i natychmiastowej
jego wyczyszczenie. Typowy modu PAI moe wyglda nastpujco:
MODULE user_command_0100 INPUT.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN BACK
LEAVE TO SCREEN .
WHEN EXIT
LEAVE PROGRAM.
WHEN CANCEL
LEAVE SCREEN.
WHEN PRESS
CALL METHOD screen_100=>handle_push_button.
ENDCASE.
ENDMODULE.
Akcje uytkownika na ekranie wywouj zdarzenie PAI, gdy dotycz elementw z
okrelonym kodem funkcyjnym (rnego typu przyciski). W szczeglnoci wypenianie pl
tekstowych nie powoduje odpalenia zdarzenia PAI. Jednak istniej jeszcze moliwe interakcje
na innych elementach ekranu, takich jak menu (menu bar), belce standardowej, belce
aplikacji. Zalenie od typu ekranu s dostpne rne elementy interfejsu. Rys. 6.4 przedstawia
rozmieszczenie elementw interfejsu SAP dla typowego ekranu.
Podstawy programowania w jzyku ABAP
- 44 -

Rys. 6.4. Elementy interfejsu SAP. rdo: [ 4].
Elementy te (GUI statuses) definiuje si poprzez narzdzie Menu Painter (transakcja SE41).
W aplikacji Object Nawigator naley wywoa menu kontekstowe programu, a nastpnie
wybra Create->GUI Status. Aby zdefiniowa funkcj naley poda kod funkcyjny, tekst
funkcji oraz powizanie z elementem interaktywnym: np. menu, standardowa belka, belka
aplikacji oraz klawisze funkcyjne. Na szczegln uwag zasuguje klawisz funkcyjny F2,
ktry odpowiada dwuklikowi myszki, a wic funkcja przypisana dla klawisza F2 bdzie
rwnie uruchamiana poprzez dwuklik myszki.
Po zdefiniowaniu elementw typu GUI status naley je jeszcze powiza z ekranem w
module dialogowym uruchamiany w PBO poprzez polecenie
SET PF-STATUS status.
Powoduje to zwizanie status z biecym ekranem oraz nastpnymi ekranami w
sekwencji, a do napotkania nowej definicji.
Tytu ekranu okrela si poprzez wyraenie
SET TITLEBAR tytul.
6.3. Ekrany wyboru
Ekrany wyboru (selection screens), w odrnieniu od oglnych ekranw, s ekranami
generowanymi przez rodowisko ABAP Workbench. Programista nie projektuje wygldu
ekranu tak jak w narzdziu Screen Painter, ale definiuje komponenty ekranw za pomoc
wyrae ABAP. Chocia pen funkcjonalno mona uzyska stosujc oglne ekrany, to
ekrany wyboru mog by wygodnym narzdziem do szybkiego budowania prostych,
historycznie zwizanych z raportowaniem aplikacji. Programista nie musi uywa Screen
Paintera a rodowisko wykonuje cz pracy, jak musiaby wykona programista w
przypadku implementacji oglnych ekranw.
Ekrany wyboru s definiowane w czci globalnych deklaracji programu. Ekrany wyboru
cznie z deklaracjami pl s widoczne w zakresie caego programu. Kady program
wykonywalny ma predefiniowany ekran wyboru o numerze 1000, a wic adnemu innemu
ekranowi wyboru nie mona przypisa tego numeru. Definicje pl poprzez sowa kluczowe
PARAMETERS oraz SELECT-OPTIONS nie zawarte jawnie w definicji ekranu dotycz pl
zwizanych ze standardowym ekranem. Pozostae ekrany definiuje si za pomoc polece
Podstawy programowania w jzyku ABAP
- 45 -
SELECTION-SCREEN BEGIN OF SCREEN numer
[TITLE nazwa] [AS WINDOW].

SELECTION-SCREEN END OF SCREEN numer.
Definicja pl musi by zawarta pomidzy powyszymi poleceniami. Opcja AS WINDOW
powoduje utworzenie okna modalnego. Wyraenie SELECTION-SCREEN moe by rwnie
wykorzystywane do formatowania ekranu poprzez podanie po wyraeniu SELECTION-
SCREEN dodatkowych polece, z czego najwaniejsze to
ULINE /pos(len) uywane do podkrelania
COMMENT /pos(len) como [FOR field f] wywietlenie tekstu
SKIP n pusta linie
BEGIN OF LINE.

END OF LINE.
umieszczenie elementw w jednej linii
BEGIN OF BLOCK blok.
[WITH FRAME [TITLE tytul]].

END OF BLOCK blok.
utworzenie logicznego bloku.
PUSHBUTTON /pos(len} text
utworzenie przycisku.
Podstawowe komponenty, jakie mog pojawi si na ekranie wyboru to:
pola tekstowe i ramki,
pola do wprowadzania danych, w tym przyciski radio, checkboxy, pola do
wprowadzania zoonych danych,
przyciski,
podekrany (subscreens),
zakadki (tabs).
Pojedyncze pole jest definiowane za pomoc wyraenia PARAMETERS o nastpujcej skadni
PARAMETERS p
[(len)] {TYPE typ|LIKE obiekt} [DECIMALS Dec]
[DEFAULT def]
[LOWER CASE]
[OBLIGATORY]
Podstawy programowania w jzyku ABAP
- 46 -
[VALUE CHECK]
[AS CHECKBOX]
[RADIOBUTTON GROUP grupa]

Nazwa parametru nie moe by dusza ni 8 znakw. Z parametrem zwizany jest globalny
obiekt o tej samej nazwie. Do tego obiektu adowane s dane wprowadzone przez
uytkownika poprzez zwizane z nim pole. Definicja moe zawiera szereg dodatkowych
atrybutw. Najczciej uywane to:
DEFAULT do okrelenia pierwszej wartoci parametru,
LOWER CASE aby wymusi rozrnianie wielkich i maych liter,
OBLIGATORY do oznaczanie pola jako wymagane,
VALUE CHECK do automatycznego sprawdzania wartoci na podstawie definicji
obiektu obiekt w sowniku ABAP,
AS CHECKBOX do definiowania checkboxw,
RADIOBUTTON GROUP do grupowania przyciskw radio,
USER COMMAND kod.
Ostatni z atrybutw okrela kod funkcyjny (function code) zwracany przy zdarzeniach
zwizanych z polem.
Bardzo wan cech ekranw wyboru jest moliwo definiowania zoonych pl poprzez
wyraenie:
SELECT-OPTIONS nazwa FOR obiekt
Definicja powoduje utworzenie globalnej tablicy wewntrznej (internal table), ktrej typ
wiersza jest kopiowany z obiektu obiekt. W wyraeniu mona uywa wikszoci atrybutw
takich jak w wyraeniu PARAMETERS. Specyficzne atrybuty NO INTERVAL i NO-
EXTENSION pozwalaj na zawanie wyboru wartoci dla pl podczas gdy program jest
uruchomiony. Zoone pola s gwnie stosowane do okrelania warunkw dla zbiorw
danych jakie maj by raportowane. Typowe zastosowanie wie si z wykonaniem zapytania
SELECT wykorzystujcego dany podane przez uytkownika. Zazwyczaj w klauzuli WHERE
uywa si wtedy skadni
WHERE pole_tabeli IN pole_ekranu.
Wywoanie ekranu odbywa si poprzez wyraenie
CALL SELECTION-SCREEN numer
[STARTING AT x1 y1]
[ENDING AT x2 y2].
Z punktu widzenia programisty przetwarzanie danych dostarczanych poprzez ekran wyboru
jest uproszczone w stosunku do zwykych ekranw i polega na obsudze zdarze. W
rzeczywistoci interakcja ekranu z programem opiera si na takich samych zasadach jak w
przypadku oglnych ekranw, jednak to rodowisko automatyzuje transport danych ekranu do
zmiennych. Pole systemowe sy-dynnr umoliwia rozpoznanie, ktry ekran wywoa
zdarzenie.
Podstawy programowania w jzyku ABAP
- 47 -
Bloki obsugujce poszczeglne zdarzenia definiuje si za pomoc nastpujcych wyrae:
AT SELECTION-SCREEN OUTPUT
Zdarzenie jest wywoywane w modelu PBO przy kadym wywoaniu ekranu i
umoliwia m.in. dynamicznie modyfikacje ekranu.
AT SELECTION-SCREEN ON pole
Zdarzenie jest wywoywane w module PAI gdy pole jest przekazywane do programu
ABAP. Typowe zastosowanie to sprawdzenie poprawnoci danych wprowadzonych w
polu.
AT SELECTION-SCREEN ON END OF pole
Zdarzenie to (rwnie poprzednie zdarzenie) jest zwizane z edycj pl wielokrotnego
wyboru poprzez okna dialogowe.
AT SELECTION-SCREEN ON BLOCK blok
Zdarzenie jest wywoywane gdy wszystkie pole zwizane z blokiem s przekazywane
z ekranu do programu.
AT SELECTION-SCREEN ON RADIOBUTTON GROUP grupa
Zdarzenie jest zwizane z przekazywaniem z ekranu wartoci pl radio.
AT SELECTION-SCREEN
Jest to ostatnie zdarzenie wywoywane, gdy wszystkie dane z ekranu zostay
przekazane do programu.
AT SELECTION-SCREEN ON HELP-REQUEST FOR pole
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pole
Zdarzenia wywoywane, gdy uytkownik da pomocy lub listy wartoci (przyciski F1
i F4).
Ze polami dla ktrych okrelono kod funkcyjny, w bloku obsugujcym zdarzenie mona go
odczyta z tablicy SSCRFIELDS z komponentu UCOMM.
Dodatkowo istnieje moliwo zdefiniowania piciu przyciskw w belce narzdziowej okna.
Przyciski te maj przypisane kody funkcyjne FC01 do FC05, a napisy pojawiajcej si na
przyciskach definiuje si poprzez ustawienie komponentw SSCRFIELDS-FUNCTXT_01
do SSCRFIELDS-FUNCTXT_05. Aktywacja przyciskw dokonuje si poprzez wyraenie
SELECTION-SCREEN FUNCTION KEY n.
Podgld wygldu ekranu wyboru mona uzyska wywoujc Screen Painter dla ekranu,
jednake nie mona zmienia ekranu wyboru za pomoc Screen Paintera.
Przykadowy program definiujcy ekran wyboru oraz blok obsugujcy zdarzenie jest
przedstawiony na poniszym listingu. W bloku obsugi zdarzenia wykonywane jest zapytanie
do bazy z wykorzystaniem parametrw przekazanych przez ekran, a nastpnie na podstawie
wynikw moe by wywietlony komunikat.

REPORT s_selection_screen_check.

Podstawy programowania w jzyku ABAP
- 48 -
* dane globalne
DATA wa_sflight TYPE sflight.

* definicja ekranu wyboru
PARAMETERS: p_carrid TYPE sflight-carrid,
p_connid TYPE sflight-connid,
p_fldate TYPE sflight-fldate.

* blok obsugi zdarze
AT SELECTION SCREEN ON p_fldate.
SELECT SINGLE seatsocc seatsmax
FROM sflight
INTO (wa_sflight-seatsocc, wa_sflight-seatmax)
WHERE carrid = p_carrid AND
connid = p_connid.
IF wa_sflight-seatsocc > wa_sflight-seatsmax.
MESSAGE e888(sabapdocu) WITH text-030.
ENDIF.
6.4. Komunikaty
Komunikaty s krtkimi jednolinijkowymi wiadomociami tekstowymi dedykowanymi do
informowania uytkownika o przepywie programu, bdach i ostrzeeniach, itp. Komunikaty
s przechowywane w tabel systemowej T100 zawierajcej m.in. klas komunikatu, numer
komunikatu oraz tekst komunikatu. Komunikaty mona tworzy za pomoc narzdzia
Message Maintenance (transakcja SE91) wywoywanego z Object Navigatora poprzez menu
kontekstowe.
Wywoanie komunikatu odbywa si poprzez polecenie MESSAGE. Typowe skadnie
wywoania to:
MESSAGE tnnn(id).
MESSAGE ID id TYPE t NUMBER n.
gdzie t jest typem komunikatu, nnn numerem, a id klas komunikatu. Klasa komunikatu
moe zosta pominita jeeli wczeniej w programie zostaa podana domylna klasa poprzez
MESSAGE-ID id.
Jeeli tekst widomoci zawiera znaki &, to w tym miejscu mona da wstawienia tekstu
podanego w wywoaniu komunikatu z wyraeniem WITH, np. wywoanie
MESSAGE e888(sabapdocu) WITH text-030.
powoduje wywietlenie komunikatu typu e, o numerze 888, klasy sabapdocu o tekcie &
& & &. W efekcie wywietlana jest zawarto pola text-030.
Mona definiowa komunikaty o nastpujcych typach:
Podstawy programowania w jzyku ABAP
- 49 -
I lub S
Uywane do informowania o postpach programu. Typ I powoduje wywietlenie
komunikatu w oknie, a typ S w belce statusu ekranu.
E lub W
Uywane do informowania o bdach, nieprawidowych wartociach pl.
A lub X
Uywane do zakoczenia wykonywania programu. Typ A powoduje wywietlenie
komunikatu i jest uywany w przypadku kontrolowanego wyjcia z programu, np. w
przypadku braku autoryzacji. Typ X jest uywany w przypadku bdu wykonywania
programu i nie powoduje wywietlenia komunikatu, ale umieszczenie go w
utworzonym zrzucie kontrolnym.
6.5. Menu kontekstowe
Podczas dziaania programu ABAP menu kontekstowe jest wywoywane poprzez prawy
przycisk myszy. Standardowo z ekranem programu jest zwizane domylne menu
kontekstowe. Pola typu input oraz output, pola tekstowe, zakadki, obszary, podekrany mog
posiada wasne menu kontekstowe, jeeli ich atrybut ON_CTMENU_field zostanie
wypeniony. Warto atrybutu oznacza nazw procedury, ktra musi posiada parametr typu
CL_CTMENU, bdcy referencj do wywoywanego menu kontekstowego. Procedura jest
uruchamiana, gdy uytkownik wywoa menu kontekstowe i umoliwia dodanie pozycji w
menu poprzez metod add_function. W poniszym przykadzie do dowolnego obiektu, dla
ktrego atrybut ON_CTMENU_field ma warto ON_CTMENU_menu_kontekstowe
zostanie dodana pozycja menu PRESS.
FORM ON_CTMENU_menu_kontekstowe USING menu TYPE REF TO
cl_ctmenu.
CALL METHOD menu->add_function
EXPORTING fcode = PRESS
text = PRESS.
7. Zewntrzne rda danych
7.1. Wsppraca z baz danych
Niezaleno od systemu bazodanowego w systemie SAP jest osignita poprzez
wprowadzanie dodatkowej warstwy. Dostp do bazy danych odbywa si poprzez interfejs
bazodanowy SAP.
Definiowanie tabel
Tabele mona tworzy jedynie poprzez narzdzie ABAP Dictionary w ABAP Workbench. Gdy
tworzona jest tabela, najpierw tworzony jest w ABAP Dictionary typ strukturalny i dopiero na
jego podstawie tworzona jest tabela bazodanowa. Dlatego lista dostpnych tabel i widokw
jest widoczna w rodowisku ABAP Workbench w sowniku obiektw (Dictionary Objects), w
gaziach drzewa Database Tables oraz Views odpowiednio. Aby utworzy tabel naley na
elemencie poddrzewa Database Tables wywoa menu kontekstowe i wybra opcj Create.
Nazwa tabeli, tak jak nazwy innych obiektw tworzonych przez programist musi zaczyna
si od litery Y lub Z. Dane zwizane z definicj tabeli s rozmieszczone na zakadkach
Podstawy programowania w jzyku ABAP
- 50 -
widocznych na Rys. 7.1. Na pierwszej zakadce naley wypeni pola Short Description i
Delivery Class. Delivery Class zazwyczaj ustawia si na typ A co oznacza tabel na potrzeby
aplikacji (application Table). Koniecznie jest rwnie dokonanie ustawie dostpnych pod
przyciskiem Technical Settings, w szczeglnoci Data Class i Size Category. Szczeglnie
istotne jest rozsdne (nie za due) ustawienie atrybutu Size Category, gdy system rezerwuje
odpowiednie zasoby i atwo mona doprowadzi do ich wyczerpania.

Rys. 7.1. Ekran ABAP Workbench zawierajcy definicj tabeli w sowniku obiektw
Kolumny tabeli definiuje si na zakadce Fields. Kolumna Key pozwala na zaznaczenie, ktre
z kolumn maj wej do klucza gwnego. Zaznaczenie atrybutu Initial powoduje, e pole
nie moe by puste (odpowiednik NOT NULL w innych systemach bazodanowych). Typ pola
okrela si jako Data element i/albo DTyp po przeczeniu na wybr typw wbudowanych.
Przycisk Bulit-in type/Data element powoduje przeczanie pomidzy wprowadzaniem obu
pl. Przydatny moe by przycisk Graphic (drugi przycisk po lewej stronie przycisku
Technical Settings), ktry uruchamia narzdzie przedstawiajce w sposb graficzny tabel i
jej relacj z innymi tabelami.
Klucze obce definiuje si poprzez zaznaczenie pl (ktre wczeniej musiay zosta
zdefiniowane) i uruchomienie przycisku Foregin Keys na zakadce Fields. Zaznaczone
kolumny musz by zdefiniowane poprzez Data Element. W nowo otwartym okienku w polu
check table naley poda tabel, ktrej klucz pojawia si w biecej tabeli jako klucz obcy.
Nastpnie mona uy przycisku generate proposal, aby system sam wyszuka pasujcych
pl, ktre mog definiowa relacj.
Aby zobaczy zawarto tabeli naley wywoa menu kontekstowe na nazwie tabeli w
drzewie obiektw i wybra dispaly table contents.
Podstawy programowania w jzyku ABAP
- 51 -
Przetwarzanie danych zawartych w tabelach
Przetwarzanie danych odbywa si za pomoc jzyka zapyta Open SQL bdcego
podzbiorem standardu SQL w obszarze DML (DataManipulation Language) oraz czciowo
rozszerzajcym standard o nowe warianty wyrae.
Podstawowa forma zapytania pobierajcego dane z jednej bazy ma posta
SELECT FROM tab INTO WHERE
tab jest nazw tabeli lub widoku lub, jeeli jest ujty w nawiasy, jest obiektem
przechowujcym nazw tabeli lub widoku. Po INTO mog wystpi proste obiekty
wymienione w nawiasach, np. INTO (wa_cityfrom, wa_cityto) lub tabela
wewntrzna (internal table), przy czym najatwiej jest j zdefiniowa odwoujc si do typu
zwizanego z tabel. W systemie istnieje tabela systemowa spfli. Poniszy listing powoduje
odczytanie jej zawartoci przy warunkach okrelonym przez zmienn p_carrid.
DATA wa_spfli TYPE spfli.
SELECT * FROM spfli
INTO wa_spfli
WHERE carrid = p_carrid

ENDSELECT.
Inn uyteczn skadni jest INTO CORRESPONDING FIELDS OF wa_spfli, ktra
powoduje wypenienie tylko pl podanych po sowie SELECT. Jak wida polecenie SELECT
w istocie powoduje wykonanie ptli, w ktrej czytane s kolejne wiersze. Jednak, jeeli
zostanie uyte zapytanie pobierajce jeden wiersz poprzez SELECT SINGLE, to ptla nie
wystpuje i zapytania nie trzeba koczy poprzez ENDSELECT. W przypadku tabeli
wewntrznej wystpujcej po INTO mona da odczytania caej zawartoci od razu dodajc
po INTO sowo kluczowe TABLE. Wwczas rwnie SELECT nie tworzy ptli i nie trzeba
go koczy poprzez ENDSELECT. Zwarty sposb przeczytania wybranych kolumn dla
wszystkich wierszy moe wyglda nastpujco
SELECT cityform cityto
FROM spfli
INTO CORRESPONDING FIELDS OF TABLE wa_spfli
WHERE
Sowo kluczowe INTO mona zastpi poprzez APPENDING, aby doczy nowe rekordy do
tabeli.
W czci WHERE mog by uywane operatory porwniania =, <, >, <>, <=, >=, operatory
logiczne AND, OR, NOT, operator zawierania IN (np. WHERE miasto IN
(WARSZAWA, LONDYN, BERLIN)) oraz BETWEEN (np. WHERE a BETWEEN
10 AND 80) oraz operator LIKE. W operatorze LIKE znak % oznacza dowolny cig
znakw, a znak _ oznacza dokadnie jeden znak. Bezporednio przed WHERE moe wystpi
rozszerzenie FOR ALL ENTRIES tab. W tym wypadku tabela wewntrzna tab suy do
okrelenie warunkw dla pobieranych rekordw. Po WHERE mog rwnie wystpi
podzapytania z wykorzystaniem operatorw IN, EXISTS lub operatorw porwnania, np.
Podstawy programowania w jzyku ABAP
- 52 -
WHERE EXISTS ( SELECT * FORM ). Podzapytanie moe zwrci wiele wierszy,
wwczas w przypadku operatorw porwnania naley uy jednego z operatorw ALL, ANY
lub SOME, np. WHERE seatmax >= ALL (SELECT * FORM).
W czci FROM mog wystpi zczenia tabel za pomoc INNER JOIN, LEFT OUTER
JOIN. W czci SELECT mog wystpi funkcje agregujce MIN, MAX, COUNT, SUM, AVG.
Klauzula GROUP BY grupujca wiersze oraz klauzula HAVING definiujca warunki na
danych zagregowanych mog wystpi po czci WHERE. Wreszcie na kocu zapytania moe
zosta okrelone sortowanie poprzez klauzule ORDER BY.
Modyfikacje danych s dokonywane przez wyraenia INSERT, UPDATE, MODIFY,
DELETE. Wstawienie wielu wierszy jest moliwe za pomoc skadni
INSERT spfli
FROM TABEL spfli_tab.
W przypadku, gdy wiersz w wewntrznej tabeli spfli_tab ma klucz gwny ju
wystpujcy w tabeli spfli program zostanie przerwany, chyba e w zapytaniu zostanie
dodane na kocu wyraenie ACCEPTING DUPLICATE KEYS. Wwczas wiersze
powodujce duplikacj klucza nie zostan dodane. Liczb dodanych wierszy mona odczyta
z obiektu systemowego sy-dbcnt.
Oprcz klasycznej skadni wyraenia UPDATE moliwe jest zaktualizowanie caego wiersza
(wszystkich kolumn) za pomoc skadni
UPDATE sflight
FROM wa_sflight.
lub
UPDATE sflight
FROM TABLE sflight_tab.
dla wielu wierszy. Wyraenie MODIFY ma podobn skadnie do UPDATE, ale powoduje
wstawienie wiersza, jeeli w tabeli nie ma wiersza o zadanym kluczu, lub aktualizacj wiersza
jeeli jest ju taki w tabeli. Rwnie wyraenie DELETE oprcz standardowej skadni posiada
wersje z podobn skadni jak omwione powyej, do usuwania jednego lub wielu wierszy na
podstawie tabeli wewntrznej.
Spjno danych
Spjno danych jest zachowywana dziki dwm mechanizmom: LUW (Logical Unit of
Work) oraz blokad. LUW jest fragmentem kodu zmieniajcym spjny stan danych w inny
spjny stan danych. W trakcie trwania LUW chwilowy stan danych moe nie by spjny.
Kady fragment LUW koczy si potwierdzeniem (commit) lub wycofaniem wprowadzonych
zmian (rollback). Zarwno commit i rollback mog by uywane jawnie lub s wykonywane
niejawnie. Commit jest wykonywany niejawnie gdy:
koczy si pewien krok dialogu, np. otwierane jest nowe okno,
sterowanie jest przekazywane do moduu wywoywanego zdalnie (remotely-called
function module).
Rollback jest wykonywany niejawnie, gdy:
gdy wystpi bd w programie,
Podstawy programowania w jzyku ABAP
- 53 -
gdy program jest koczony poprzez wywoanie MESSAGE typu A lub X.
Jeden LUW moe obejmowa kilka ekranw (tzw. SAP LUW) jeeli operacje bazodanowe s
umieszczone w funkcji lub procedurze. Modu funkcyjny musi zosta zaznaczony jako tzw.
update module w narzdziu Function Builder. Wwczas wywoanie funkcji wyglda
nastpujco:
CALL FUNCTION IN UPDATE TASK.
Wywoanie procedury zwizanej z SAP LUW odbywa si w nastpujcy sposb:
PERFORM ON COMMIT.
Kod funkcji lub procedury jest wykonywany gdy nastpi zatwierdzenie zmian poprzez
COMMIT WORK.
lub nie jest wykonywany w przypadku odwoania zmian poprzez
ROLLBACK WORK.
7.2. Obsuga plikw
Z poziomu jzyka ABAP jest moliwy dostp do plikw zarwno po stronie serwera, jak i po
stronie klienta. Aby unikn problemw z rnymi konwencjami zapisu cieek dostpu
mona zapamita plik jako pewien logiczny obiekt, definiowany poprzez transakcje FILE.
Bieca cieka do tak zdefiniowanego pliku jest dostpna poprzez funkcje FILE-
GET_NAME.
Podstawowe operacje na pliku po stronie serwera:
Otwarcie pliku
OPEN DATASET plik FOR {OUTPUT|INPUT|APPENDING} IN
{BINARY|TEXT} MODE.
Zamknicie pliku
CLOSE DATASET plik.
Zapis
TRANSFER a TO plik.
W typowym zastosowaniu a jest wierszem tablicy.
Odczyt
READ DATASET plik INTO a.
W typowym zastosowaniu a jest tablic
Usunicie pliku
DELETE DATASET plik.
Do operacji na plikach po stronie klienta (serwera prezentacji) su funkcje, ktrych
wywoanie moe wyglda nastpujco:
CALL FUNCTION WS_DOWNLOAD
EXPORTING
filename = plik
Podstawy programowania w jzyku ABAP
- 54 -
filetype = typ
bin_filesize = rozmiar
TABLES
data_tab = tabela
EXCEPTIONS
file_open_error = 1
file_write_error = 2
invalid_filesize = 3
invalid_table_width = 4
invalid_type = 5
OTHERS = 6.
lub
CALL FUNCTION WS_UPLOAD
EXPORTING
filename = plik
filetype = typ
TABLES
data_tab = tabela
EXCEPTIONS
file_open_error = 1
file_write_error = 2
invalid_filesize = 3
invalid_table_width = 4
invalid_type = 5
OTHERS = 6.


Podstawy programowania w jzyku ABAP
- 55 -
Bibliografia
1. Adamczewski P., Zintegrowane Systemy Informatyczne w praktyce, wydanie IV
rozszerzone, MIKOM, 2004.
2. Kale V., SAP R/3, Helion, 2000.
3. Keller H., Kruger S., ABAP Objects: Introduction to Programming SAP Applications,
MIKOM, 2002.
4. BC ABAP Programming, dokumentacja techniczna ABAP, SAP, 1999.
5. http://help.sap.com, SAP Help Portal.

You might also like