Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer...

74
Składnia języka - podstawy

Transcript of Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer...

Page 1: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Składnia języka - podstawy

Page 2: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Historia

XX w. lata 70-te – ABAP (Allgemainer Berichts-AufbereitungsProzessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie do generowania raportów

XX w. połowa lat 80-tych – ABAP przekształca się w język interpretowany stanowiący główny składnik systemu R/2 umożliwiający pisanie aplikacji biznesowych a w szczególności transakcji dialogowych

XX w. początek lat 90-tych – wraz z pojawieniem się systemu R/3 ABAP zostaje przekształcony w język czwartej generacji i zmienia nazwę na ABAP/4 (Advanced Business ApplicationProgramming), cały system (moduły, Basis, środowisko projektowe) poza jądrem (język C) napisany w ABAP/4

początek XXI w. – ABAP/4 przechodzi w ABAP Objects, który stanowi obiektowe (enkapsulacja, dziedziczenie, polimorfizm) rozszerzenie języka ABAP/4

Page 3: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Program typu „Hello world”

każda instrukcja kończy się kropką

instrukcje zazwyczaj zaczynają się od

słowa kluczowego

report zpab0001.write ‘Hello world’.

Page 4: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Tabele i struktury w R/3

Tabela składa się ze zbioru wierszy, a te z kolei ze zbioru kolumn (zazwyczaj liczba kolumn jest identyczna w każdym wierszu)

Nazwy tabel muszą być unikalne w całym systemie

Widok tabeli w DDIC odpowiada opisowi tabeli w bazie danych, a nie bezpośredniemu widokowi bazy danych

Struktura – opis grupy pól (nazwa, kolejność, typy danych i długość)

Nazwy struktur muszą być unikalne w całym systemie i nie mogą być takie same jak nazwy tabel w programie używane do przydzielenia pamięci grupie pól

w tabeli używane do opisu zbioru pól

Zasadnicza różnica pomiędzy tabelą i strukturą jest taka, że: tabela jest opisem układu pól odpowiedniej fizycznej tabeli bazy danych

struktura jest opisem układu pól, który nie ma odpowiednika w bazie danych

Page 5: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Instrukcja SELECT

Odczyt danych z bazy danych

Składnia:

SELECT <result> INTO <target> FROM <source> [WHERE <condition>] [GROUP BY <fields>] [HAVING <cond>] [ORDER BY <fields>]

[other ABAP/4 statement]

ENDSELECT.

Page 6: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Instrukcja SELECT – klauzula SELECT

Znaczenie: definiuje strukturę wyboru

Składnia:SELECT [SINGLE]|[DISTINCT]

*|<si> [AS <ai>] … <agg>([DISTINCT] <sj>) [AS <aj>]

SINGLE – wybór pojedynczej linii (brak – kilka linii)

DISTINCT – bez zduplikowanych linii

* – wybór całego wiersza lub określonych kolumn si, sj, …

<agg> - funkcja zagregowana dla określonej kolumny

<ai> - alternatywna nazwa kolumny

Page 7: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Instrukcja SELECT – klauzula INTO

Znaczenie: określenie obszaru, do którego zostaną zapisane wyniki

Składnia:… INTO [CORRESPONDING FIELDS OF] <wa>

| INTO|APPENDING [CORRESPONDING FIELDS OF] TABLE <itab> [PACKAGE SIZE <n>]

| INTO (<f1>,<f2>,…)

Obszar docelowy może być:○ <wa> – płaskim obszarem roboczym

○ <itab> – tabelą wewnętrzną

○ <fi> – listą pól

CORRESPONDING FIELDS – wybierane są tylko dane z pól, które mają nazwę taką samą jak nazwa pola w obszarze docelowym

APPENDING (zamiast INTO) – dopisanie (zamiast nadpisania) danych do tabeli wewnętrznej

PACKAGE SIZE – umożliwia nadpisanie lub rozszerzenie tabeli wewnętrznej serią n pakietów

Uwaga! Typ danych w obszarze docelowym musi być odpowiedni dla wyboru z klauzuli SELECT

Page 8: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Instrukcja SELECT – klauzula FROM

Znaczenie: określa tabele bazy danych, z których będą odczytywane

dane

Składnia:… FROM [<tab> [INNER]|LEFT[OUTER] JOIN] <dbtab> [AS <alias>] [ON <cond>] [CLIENT SPECIFIED] [BYPASSING BUFFER] [UP TO <n> ROWS]

tabele można łączyć na zasadach inner join i outer join z warunkiem <cond>, gdzie <tab> jest pojedynczą tabelą lub warunkiem połączenia

CLIENT SPECIFIED – wyłączenie automatycznej obsługi mandanta

BYPASSING BUFFER – pominięcie buforowania

UP TO <n> ROWS – ograniczenie do n liczby odczytanych wierszy

Page 9: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Instrukcja SELECT – klauzula WHERE

Znaczenie: ograniczenie zakresu wyboru

Składnia:… [FOR ALL ENTRIES IN <itab>] WHERE <cond>

○ warunek <cond> może zawierać jedno lub więcej: porównań, testów przynależności do przedziałów lub zbiorów, podzapytań itp. połączonych operatorami logicznymi AND, OR, NOT

○ FOR ALL ENTRIES – warunek <cond> jest sprawdzany dla każdej linii tabeli wewnętrznej <itab> tak długo jak <cond> zawiera pole tabeli wewnętrznej jako operand –dla każdej linii tabeli wewnętrznej system wybiera z tabeli bazy danych te wiersze które spełniają warunek

Page 10: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Instrukcja SELECT –

– klauzule GROUP BY oraz HAVING

GROUP BY Znaczenie:

○ grupuje wybrane linie wg tej samej zawartości w określonych kolumnach

Składnia:

… GROUP BY <s1> <s2> … Kolumny nieujęte w klauzuli GROUP BY muszą być ujęte w funkcji

agregującej

HAVING Znaczenie:

○ Ogranicza zakres wybranych grup linii

Składnia:

… HAVING <cond> działa podobnie jak klauzula WHERE lecz w odniesieniu do grup

linii, zatem musi być stosowane w połączeniu z klauzulą GROUP BY

Page 11: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Instrukcja SELECT – klauzula ORDER BY

Znaczenie:

sortuje wybrane linie

Składnia:

… ORDER BY PRIMARY KEY |… <s1> [ASCENDING|DESCENDING] …

○ Sortowanie wybranych linii rosnąco lub

malejąco według klucza głównego lub

zawartości wybranych pól

Page 12: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Instrukcja ENDSELECT

Znaczenie:

zamyka pętlę rozpoczętą instrukcją SELECT

Składnia:

ENDSELECT.

Page 13: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

SELECT - przykład

report zpab0002.

tables zpabtab01.

select * from zpabtab01 into zpabtab01 order by nazwisko.

write /zpabtab01-nazwisko.

endselect.

Page 14: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Instrukcja TABLES

Znaczenie:

deklaruje strukturę zwaną obszarem roboczym o takim samym typie danych i nazwie jak odpowiadająca mu tabela, perspektywa lub struktura

Składnia:

TABLES <dbtab>.

Obszary robocze programu głównego i

podprogramów zajmują wspólny obszar danych

Page 15: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Instrukcja SELECT – schemat działania

User context

tables zpabtab01select * from zpabtab01 … write / zpabtab01-nazwisko.endselect.

PGM Buffer

ZPABTAB01 Work Area

Kowalski

Nowak

Virtual PageR

oll

Are

a

SAPGUI1. SAPGUI wysyła do dispatchera żądania wykonania raportu

2. Żądanie przekazane pierwszemu wolnemu WP

3. Roll-in obszaru user context do obszaru roboczego

4. Pobranie programu z bazy danych

5. WP przydziela obszar roll area na potrzeby zmiennych,

bieżącego wskaźnika do programu, przydziału pamięci

prywatnej.

6. Program jest interpretowany przez WP i zaczyna od linii 3

7. Linia 3 powoduje odczytanie z tabeli ZPABTAB01 jednego

wiersza i umieszczenie go w obszarze roboczym ZPABTAB01

8. Pierwsze wykonanie linii 4 powoduje przydzielenie strony

wirtualnej dla listy

9. Wykonanie linii 4 powoduje zapisanie pola Nazwisko z

obszaru roboczego ZPABTAB01 do strony wirtualnej

10.ENDSELECT powoduje powrót do początku pętli

11.Odczytanie kolejnego wiersza z tabeli i nadpisanie nim w

obszarze roboczym poprzedniego wiersza

12.Zapisanie pola Nazwisko z obszaru roboczego w następnej

linii strony wirtualnej

13.Powtarzanie kroków 9-11 dla kolejnych wierszy z tabeli

14.Automatyczne zakończenie pętli po odczytaniu ostatniego

wiersza z tabeli

15.Zakończenie programu, ale obszar roll area ze stroną

wirtualną pozostaje nadal przydzielony

16.WP określa ile linii jest w stanie wyświetlić ekran użytkownika i

wysyła ze strony wirtualnej do serwera prezentacji tyle samo

linii jako pierwszą stronę listy

17.Roll-out z WP obszarów roll area i user context

1

2 3

Serwer aplikacji

ZPABTAB01

Serwer BD

4

5

6

7

8

9

10

11

12

16

17

17

Page 16: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

SELECT – następna strona listy1. Wybranie następnej strony listy (opcja, ikona, PgDn…)

powoduje wysłanie z GUI do dispatchera żądania wyświetlenia

następnej strony

2. Żądanie jest przydzielane pierwszemu wolnemu WP

3. Roll-in obszarów user context i roll area do WP

4. WP wysyła do GUI następną stronę listy

5. Roll-out obszarów user context i roll area

User context

tables zpabtab01select * from zpabtab01 … write / zpabtab01-nazwisko.endselect.

PGM Buffer

ZPABTAB01 Work Area

Kowalski

Nowak

.

.

.

Waligóra

Węglarz

Roll

Are

a

SAPGUI

1

2 3

Serwer aplikacji

ZPABTAB01

Serwer BD3

4

5

5

Page 17: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Koniec programu – schemat działania

User context

tables zpabtab01select * from zpabtab01 … write / zpabtab01-nazwisko.endselect.

PGM Buffer

ZPABTAB01 Work Area

Kowalski

Nowak

.

.

.

Waligóra

Węglarz

Roll

Are

a

SAPGUI

1

2 3

Serwer aplikacji

ZPABTAB01

Serwer BD3

4

5

1. Wysłanie z GUI do dispatchera żądania zakończenia

raportu

2. Żądanie jest przydzielane pierwszemu wolnemu WP

3. Roll-in obszarów user context i roll area do WP

4. zwolnienie obszaru roll area

5. Roll-out obszaru user context

Page 18: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Obszar roboczy tabeli

Klauzula …INTO <work_area>… w instrukcji SELECT jest opcjonalna – jej pominięcie spowoduje automatyczne utworzenie domyślnego obszaru roboczego tabeli o takiej samej nazwie jak tabela.

Instrukcja TABLES służy do tworzenia obszarów roboczych.

W niektórych przypadkach konieczne jest stworzenie dodatkowego obszaru roboczego tabeli (np. gdy konieczny jest jednoczesny dostęp do oryginalnej i zmodyfikowanej wersji rekordu).

Do tworzenia dodatkowych obszarów roboczych można zastosować instrukcję DATA.

Page 19: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Instrukcja DATA z referencją

do znanego typu danych

Znaczenie: deklaracja zmiennej znanego typu

SkładniaDATA <x> … [TYPE <type>|LIKE <obj>] … [VALUE <val>]

○ Deklaracja zmiennej x: typu zdefiniowanego jako <type>

lub jako dana tego samego typu co inny obiekt <obj>

○ <type>: jeden z typów predefiniowanych D,F,I,T …

typ użytkownika zdefiniowany przy użyciu składni TYPES

typ ze słownika danych

○ <obj>: obiekt danych

linia tabeli wewnętrznej

○ VALUE – określa wartość początkową

Page 20: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Przykład stosowania obszarów roboczych

report zpab0003.tables zpabtab01.select * from zpabtab01 order by Nazwisko.

write / zpabtab01-Nazwisko.endselect.

report zpab0004.tables zpabtab01.data obszar_roboczy like zpabtab01.select * from zpabtab01 into obszar_roboczy order

by Nazwisko.write / obszar_roboczy-Nazwisko.

endselect.

Page 21: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Zmienne systemowe

Zmienne systemowe są zawsze dostępne w programach ABAP-owych

Nie wymagają deklaracji

System automatycznie modyfikuje ich wartości w zależności od kontekstu

Nazwy wszystkich zmiennych systemowych rozpoczynają się od prefiksu SY- a ich typ od prefiksu SYST-

Nazywane są sy fields (sigh fields)

Zdefiniowane w strukturze DDIC o nazwie SYST jedyny wyjątek stanowi predefiniowana stała SY-REPIDzawierająca nazwę programu

Nie należy definiować struktury SYST (jest ona automatycznie dostępna w każdym programie ABAP-owym)

Page 22: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

SY-SUBRC oraz SY-DBCNT

SY-SUBRC typ: INT4 (4 bajtowy całkowity)

długość: 10 znaków

zastosowanie: kod powrotu z instrukcji ABAP-a

opis: zwraca wartość po wykonaniu instrukcji ABAP-a

aby sprawdzić, jakie wartości może dla danej instrukcji przyjąć zmienna SY-SUBRC można skorzystać z pomocy F1 dla tej instrukcji

SY-DBCNT typ: INT4

długość: 10 znaków

zastosowanie: podczas dostępu do bazy danych

opis: liczba przetworzonych wierszy tabeli bazy danych

Page 23: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

SY-SUBRC w instrukcji SELECT

Wartość 0, gdy SELECT znalazło jakiś

wiersz, 4 w przeciwnym przypadku

Sprawdzenie wartości SY-SUBRC musi

nastąpić po ENDSELECT, ponieważ w

przypadku, gdy nie zostanie znaleziony

żaden rekord instrukcje wewnątrz pętli

SELECT nie zostaną nigdy wykonane.

Page 24: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

SELECT i SY-SUBRC – przykład

report zpab0005.

tables zpabtab01.

select * from zpabtab01 where Nazwisko > ‘Z’ order by Nazwisko.

write / zpabtab01-Nazwisko.

endselect.

if sy-subrc <> 0.

write / ‘Nie znaleziono żadnego rekordu’.

endif.

Page 25: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

SY-DBCNT w instrukcji SELECT

SY-DBCNT zwraca liczbę wierszy

wybranych przez instrukcję SELECT

Aby otrzymać liczbę wszystkich

odczytanych wierszy SY-DBCNT stosuje

się po ENDSELECT

Stosowanie SY-DBCNT wewnątrz pętli

SELECT stanowi licznik iteracji

Page 26: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

SELECT i SY-DBCNT – przykład

report zpab0006.

tables zpabtab01.

select * from zpabtab01 order by Nazwisko.

write / sy-dbcnt.

write zpabtab01-Nazwisko.

endselect.

write / ‘Liczba znalezionych rekordów: ’

write sy-dbcnt.

Page 27: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Operator „:”

Zastosowanie:

łączenie linii kodu rozpoczynających się

takim samym słowem lub takim samym

ciągiem słów

wspólna część na początku, potem

dwukropek, potem pozostałe części

oddzielone przecinkami

podczas generowania kodu taka łączna

instrukcja zastępowana jest pojedynczymi

rozdzielnymi instrukcjami

Page 28: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Operator „:” - przykład

report zpab0007.

tables: zpabtab01, zpabtab02.

select * from zpabtab01 order by Nazwisko.

write: / sy-dbcnt, zpabtab01-Nazwisko.

endselect.

write / ‘Liczba rekordów: ’, sy-dbcnt.

Page 29: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

SELECT SINGLE …– zastosowanie

Pobiera z bazy danych tylko jeden rekord

Nie rozpoczyna pętli, dlatego nie stosuje się na końcu instrukcja ENDSELECT (błąd składniowy)

Konstrukcja znacznie szybsza niż konstrukcja SELECT … ENDSELECT

Zalecane jest podanie w klauzuli WHERE wszystkich pól klucza głównego (inaczej pojawi się ostrzeżenie)

Nieuzasadnione jest stosowanie klauzul ORDER BY, GROUP BY i HAVING

Page 30: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

SELECT SINGLE … – przykład

report zpab0008.tables zpabtab01.select * from zpabtab01 where PESEL =

‘70102001234’.if sy-subrc = 0.

write: / zpabtab01-PESEL, zpabtab01-Nazwisko.else.

write / ‘Nie znaleziono rekordu.’endif.

Page 31: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Komentarze

Dwa rodzaje komentarzy: * – na początku linii oznacza, że cała linia jest

komentarzem (* musi wystąpić w pierwszej kolumnie)

” – w dowolnym miejscu linii oznacza, że komentarz występuje od tego miejsca do końca linii

Nie ma znacznika końca komentarza, komentarz kończy się z końcem linii

Nie ma możliwości kontynuowania kodu w tej samej linii po komentarzu

Dodatkowe informacje o tworzonym obiekcie można umieścić w dokumentacji do tego obiektu

Page 32: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Narzędzia środowiska projektowego ABAP

(ABAP Workbench Tools)

Page 33: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

ABAP Dictionary

Narzędzie środowiska projektowego ABAP całkowicie z nim zintegrowane

Jest centralnym punktem w systemie służącym do tworzenia i zarządzania wszystkimi definicjami danych (metadane) używanych w systemie: typy użytkownika – elementy danych, struktury, typy tabel

obiekty bazy danych (logiczna struktura) – tabele, indeksy, perspektywy

narzędzia do edycji elementów ekranu – np. pomoc F1 i F4

Inne narzędzia środowiska projektowego ABAP mogą korzystać z definicji znajdujących się w ABAP Dictionary, ponieważ nowe, bądź zmodyfikowane informacje są automatycznie dostarczane do wszystkich komponentów systemu.

Centralny opis danych zapewnia integrację, spójność i bezpieczeństwo tych danych

Page 34: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

ABAP Dictionary - schematDefinicje typów Obiekty bazy danych

Narzędzia

Struktura

Element danychTyp tabeli

Dopuszczalne

wartości

Ekran

tabela

tabela bazy danych

F4

Page 35: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Informacje w ABAP Dictionary

Tabele

Perspektywy

Typy

Obiekty blokady

Domeny

Elementy danych

Pomoc F1 i F4 dla pola

Page 36: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Integracja środowiska projektowego ABAP

Development environment

Runtime environment of the application

ABAP

Tools

Data

Modeler

Screen

Painter

ABAP

Dictionary

ABAP

Interpreter

Dialog

ControlInterfaces

Screen

Interpreter

Page 37: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Aktywacja

Obiekty słownikowe mogą mieć dwie wersje aktywną i nieaktywną w tym samym czasie

Obiekty mogą być wielokrotnie modyfikowane bez konieczności aktywacji, co nie ma najmniejszego wpływu na działające składniki systemu

Obiekty nieaktywne nie mają żadnego wpływu na środowisko wykonawcze

Obiekty słownikowe przed użyciem należy aktywować: po utworzeniu

po zmianach

Aktywacja jednego obiektu pociąga za sobą reaktywację wszystkich obiektów zależnych (np. domena elementy danych, tabele)

Przed aktywacją należy upewnić się, czy wprowadzone zmiany są sensowne we wszystkich obiektach zależnych, w tym celu można skorzystać z opcji „lista użycia”

To czy aktywacja jest konieczna, czy nie zależy od znaczników czasowych odpowiednich wersji obiektu

Page 38: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Typy tabel słownikowych

Transparentne

Puli

Klastra

Page 39: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Tabele transparentne

najczęściej stosowane

relacja 1 do 1 z tabelą bazy danych

struktura odpowiada strukturze tabeli bazy

danych

z każdą definicją transparentnej tabeli

słownikowej związana jest jedna tabela w bazie

danych

obydwie tabele mają tę samą nazwę, tę samą

liczbę pól i takie same nazwy tych pól

używane do przechowywania danych aplikacji

(np. dane podstawowe klientów, materiałów itp.)

Page 40: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Tabela transparentna - schemat

Definicje

tabel

w DDIC

Tabele

bazy

danych

p1 p2 p3 p4

p1 p2 p3 p4

1:1

Tabela T1

Tabela T1

Page 41: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Pule tabel i tabele puli

Cechy tabel puli: bardzo dużo tabel w słowniku – jedna tabela w bazie danych

tabele różnią się nazwami, liczbą i nazwami pól

tabele mogą ale nie muszą mieć wspólnego klucza głównego,

są przechowywane we wspólnej tabeli bazy danych tzw. puli tabel

stosowane do przechowywania danych z konfiguracji systemu

Pula tabel: jest tabelą bazy danych o specjalnej strukturze umożliwiającej przechowywanie

wielu tabel

może przechowywać tylko tabele puli

na ogół służy do przechowywania dużej liczby (dziesiątek do tysięcy) bardzo małych tabel (ok. 10-100 wierszy)

redukuje liczbę zasobów bazy danych niezbędnych do jednoczesnego otworzenia wielu małych tabel

jest pomysłem firmy SAP

system R/3 używa ich do danych systemowych

Implementacja: definicja puli tabel

aktywacja – utworzenie tabeli (puli tabel) w bazie danych

definicje tabel puli

powiązanie tabel puli z pulą tabel

Page 42: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Tabela puli - schemat

Definicje

tabel

w DDIC

Tabele

bazy

danych

1:n

Tabela T1

Tabela T0

Tabela T6

Tabela T7

pf pg ph pi

Tabela T2 Tabela T3

pq pr pt pu

Tabela T4

pa pb pc

pd pe

pv pw

pj pk pl

pm pn po

Page 43: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Klastry tabel i tabele klastra

Tabela klastra: kilka tabel w słowniku – tylko jedna w bazie danych

różne nazwy tabel, liczby oraz nazwy pól (poza kluczem głównym)

tabele muszą mieć co najmniej jedno pole klucza głównego wspólne

tabele zazwyczaj odczytywane są jednocześnie

Klaster tabel: podobny do puli tabel

jest pomysłem firmy SAP

wiersze tej tabeli powstają przez połączenie wierszy takim samym kluczu głównym z tabel klastra

redukcja obciążenia - odczytanie wiersza klastrapowoduje odczyt odpowiednich wierszy ze wszystkich tabel klastra w jednej operacji we/wy

Page 44: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Tabela klastra - schemat

Definicje

tabel

w DDIC

Tabele

bazy

danych

1:n

Tabela T2

Tabela T0

Tabela T1

pa pg ph pi

Tabela T3

pa pb pc

pa pfpa pd pe

Page 45: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Tabele puli i klastra - ograniczenia

Nie można stworzyć indeksu wtórnego

Nie można stosować konstrukcji SELECT DISTINCT oraz GROUP BY

Nie można stosować Nativ SQL-a

Nie można podać nazwy pola po klauzuli ORDER BY, jedyną dopuszczalną możliwością klucz główny ORDER BY PRIMARY KEY

Kłopotliwe jest stosowanie generatorów raportów innych producentów, które bezpośrednio odczytują zawartość bazy danych

Page 46: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Składniki tabel

Pole

Element danych: zawiera etykietę pola, która będzie wyświetlona

obok pola

zawiera dokumentację pola (F1 help)

wymaga zdefiniowania domeny

może być użyty dla więcej niż jednego pola

Domena: zawiera techniczną charakterystykę pola

(długość, typ danych itp.)

może być użyta wielokrotnie dla różnych elementów danych (także z różnych tabel)

Page 47: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Składniki tabel - przykład

telsta

telfax

telmob

Ztelsta

Etykieta: tel. stacjonarny

Ztelfax

Etykieta: fax

Ztelmob

Etykieta: tel. komórkowy

Ztelefon

Typ: char

Długość: 12

Pola tabeli

użytkownika

Elementy danych Domena

Page 48: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Składniki tabel – kolejność postępowania

Stworzyć domenę: nazwa

typ danych

rozmiar

Stworzyć elementy danych: nazwa

domena

etykiety

dokumentacja

Stworzyć tabelę: pola

powiązać pola z elementami danych

Określić ustawienia techniczne tabeli klasa

rozmiar tabeli

Aktywować wszystkie stworzone obiekty

Page 49: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Tabele – konwencje nazewnicze

Typ obiektu Max dł. nazwy Zestaw znaków Pierwszy znak

Tabela 10 litery, cyfry, _ Y lub Z

Element danych 10 litery, cyfry, _ Y lub Z

Domena 10 litery, cyfry, _ Y lub Z

Pole 16 litery, cyfry, _ dowolny

Ograniczenia: słowa zastrzeżone – tabela TRESE

Page 50: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Tabela - przykład

Pole Klucz gł. El. danych Domena Typ Długość

mandt mandt

nralbumu ~nralbumu ~nralbumu NUMC 5

nazwisko ~nazwisko ~nazwisko CHAR 30

imie ~imie ~imie CHAR 25

wydzial ~wydzial ~wydzial CHAR 5

kierunek ~kierunek ~kierunek CHAR 5

specj ~specj ~specj CHAR 5

Tabela ~STDNT (ZPABSTDNT) - zależna od mandanta

Page 51: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Tworzenie tabeli

Dwa podejścia:

z dołu do góry – domeny, elementy danych,

tabela

z góry na dół – tabela, elementy danych,

domeny

Page 52: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Domena

Domena definiuje zakres wartości

Domena jest powiązana z elementem danych

Wszystkie pola tabeli i komponentów struktur, których typem jest określony element danych mają ten sam zakres wartości co odpowiadająca mu domena

Zmiana zakresu wartości w domenie pociąga za sobą zmiany w powiązanych z nią elementach danych oraz odpowiednich polach tabeli i komponentach struktur

Zakres wartości domeny określony jest przez typ danych i długość (liczba miejsc dziesiętnych – dla typów liczbowych)

Zakres wartości może być ograniczony do wartości stałych lub tabeli wartości

Domena może być powiązana z podprogramem konwersji, który konwertuje wartości z formatu w jakim są wyświetlane na wewnętrzny format dla pól powiązanych z tą domeną

Page 53: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Tworzenie domeny

1. Typ obiektu – Domains; nazwa domeny; Create

2. Short text – opis domeny

3. Typ danych, długość, (liczba miejsc dziesiętnych – typy DEC, FLTP, QUAN, CURR)

4. Jeśli tylko niektóre wartości są dopuszczalne dla domeny to można je wprowadzić jako wartości stałe lub tabelę wartości

5. Zapis (podać klasę projektową)

6. Aktywacja

Page 54: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Tworzenie domeny – opcje dodatkowe

Dokumentacja techniczna domeny – Goto Documentation

Ograniczenie długości pola – (standardowo obliczana automatycznie)

Rozróżnianie wielkich i małych liter (typy CHAR i LCHAR) – wybrać Lowercase, jeśli tekst ma być umieszczony w BD tak jak został wprowadzony (automatycznie konwertowany do wielkich liter)

Przydzielenie podprogramu konwersji – jeśli dane wejściowe i/lub wyjściowe są wyświetlane w innej postaci niż przechowywane w bazie danych

Wyświetlanie liczb ze znakiem (typy DEC, FLTP, QUAN, CURR) – flaga Sign musi być zaznaczona jeśli wartość może być ujemna

Page 55: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Słownikowe typy danychTyp słownikowy Opis Max długość n Typ ABAP-owy

DEC Wartości dziesiętne 1-31 P((n+1)/2)

INT1, INT2, INT4 Całkowite 1,2,4-bajtowe 3,5,10 wewnętrzne / INT4 I

CURR Wartość pieniężna 1-17 P((n+1)/2)

CUKY Oznaczenie waluty 5 C(5)

QUAN Ilość 1-17 P((n+1)/2)

UNIT Jednostka miary 2-3 C(n)

PREC Dokładność 16 wewnętrzne

NUMC Tekst numeryczny 1-255 N(n)

FLTP Liczba zmiennoprzecinkowa 16 F(8)

CHAR, LCHAR Typ znakowy/ typ znakowy długi 1-255 / 256-max C(n)

STRING Łańcuch znakowy o zmiennej długości 1-max STRING

RAWSTRING Ciąg bajtów o zmiennej długości 1-max XSTRING

DATS Data 8 D

ACCP Okres rozrachunkowy RRRRMM 6 N(6)

TIMS Czas HHMMSS 6 T

RAW, LRAW Ciąg bajtów / Ciąg bajtów długi 1-255 / 256-max X(n)

CLNT Numer mandanta 3 C(3)

LANG Symbol języka 1 w słowniku, 2 na

ekranie

C(1)

Wartość max w typach LCHAR i LRAW zależy od poprzedzającej je wartości INT2

Page 56: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Domena – wartości stałe

Typy: CHAR, NUMC, DEC, INT1, INT2, INT4

Pojedyncze wartości lub/i przedziały wartości (można je połączyć z tekstem)

Służą do sprawdzenia poprawności wprowadzanych danych, a w przypadku gdy nie ma zdefiniowanych innych opcji pojawiają się w pomocy wyszukiwania F4

Przykład: ~wydzial – tylko następujące wartości mogą być

wprowadzone: WA, WBiIŚ, WBMiZ, WEiT, WE, WFT, WIiZ, WMRiT, WTCh

Page 57: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Domena – tabela wartości

Wprowadzane wartości są sprawdzane

na podstawie zawartości pewnej tabeli

Konieczne jest zdefiniowanie klucza

obcego

Podczas definiowania klucza obcego dla

pola tabeli lub komponentu struktury

system automatycznie proponuje

utworzenie tabeli wartości

Page 58: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Tworzenie domeny - błędy

Nie wybrano opcji Create

Nazwa domeny nie zaczyna się od litery

y lub z

Domena o podanej nazwie już istnieje

Błędna długość pola

Przypisano nieistniejącą tabelę wartości

Page 59: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Zmiana domeny

Może być bardzo czasochłonna i może prowadzić do niespójności klucza obcego w tabelach i strukturach

Przed zmianami należy sprawdzić, w których tabelach nastąpią zmiany

Zmiana typu danych, długości i ew. liczby miejsc dziesiętnych – może pociągać za sobą konwersję danych w odpowiednich tabelach

Zmiana atrybutów wyjściowych – może wpływać na wygląd odpowiednich ekranów

Zmiana tabeli wartości – może wpłynąć na zmiany klucza obcego w odpowiednich tabelach

Page 60: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Usuwanie domeny

Dopuszczalne, gdy nie jest używana

przez żaden z elementów danych

Page 61: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Element danych

Znaczenie: Opisuje albo typ podstawowy albo typ referencyjny

○ Typ podstawowy zdefiniowany (samodzielnie lub w definicji domeny) przez: wbudowany typ danych

długość (+ ew. liczba miejsc dziesiętnych)

○ Typ referencyjny (zmienne zawierają wskaźniki do obiektów lub interfejsów) zdefiniowany przez: podanie istniejącej klasy lub istniejącego interfejsu

ogólną referencję do obiektów lub obiektów danych

Zastosowanie: definicje typu: pola tabeli, komponentu struktury, typu wiersza w

typie tabeli

w programach ABAP-owych może wystąpić w instrukcji TYPE (w konsekwencji zmienne tego typu)

przechowywanie informacji na temat pola tabeli (komponentu struktury) oraz informacji o sposobie edycji odpowiadającemu polu ekranowemu

przechowywanie dla pola ekranowego pomocy F1

Page 62: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Tworzenie elementu danych

1. Typ obiektu – Data type; nazwa elementu danych; Create

2. W okienku dialogowym wybrać element danych

3. Short text – opis elementu danych (pojawi się w pomocy F1 dla pola odwołującego się do tego elementu danych)

4. Zakładka Definition: dla Direct type entry – podać typ danych i długość (+ ew. liczba

miejsc dziesiętnych – typy DEC, FLTP, QUAN, CURR)

lub dla Domain – podać nazwę domeny

lub dla Reference type – podać albo nazwę klasy lub interfejsu, albo OBJECT lub DATA (w przypadku referencji ogólnej)

5. Zakładka Field label (opcja): informacje tekstowe (krótka, średnia i długa etykieta oraz

nagłówek)

6. Zapis (podać klasę projektową)

7. Aktywacja

Page 63: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Tworzenie elementu danych –

opcje dodatkowe Documentation – treść pomocy F1, jaka pojawi się dla pól

odwołujących się do elementu danych

Goto Documentation Status – status dokumentacji F1: Object should be documented (domyślnie)

Object is not used in any screen

Object is explained sufficiently by the short text

Documantation postponed

Przydzielenie pomocy F4

Przydzielenie parametru ID – automatyczne wypełnianie pola wartością domyślną zawartą w Parametrze ID elementu danych (pod warunkiem, że zostało ono dozwolone w Malarzu Ekranów)

Przydział domyślnej nazwy komponentu odnoszącego się do elementu danych

Zaznaczenie, czy zmiany wartości w polach odpowiadających elementowi danych są na tyle istotne, ze powinny być umieszczane w logu zmian

Page 64: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Tworzenie elementu danych -

błędy Nie wybrano opcji Create

Nazwa elementu danych nie zaczyna się od litery y lub z

Element danych o podanej nazwie już istnieje

Element danych odwołuje się do nieistniejącej bądź nieaktywnej domeny

Podano błędną nazwę domeny

Nie podano treści etykiet

Podana długość etykiet różni się od długości tekstu podanego jako etykieta

Etykiety nie pojawiają się na ekranie (odznaczono checkbox)

Page 65: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Tabele transparentne

Tabele mogą być definiowane w ABAP Dictionaryniezależnie od BD (pola o niezależnych od BD typach i długościach)

Aktywacja tabeli powoduje utworzenie w BD fizycznej tabeli na podstawie definicji z ABAP Dictionary, która podlega translacji na definicję konkretnej BD

Składowe definicji tabeli w ABAP Dictionary: pola tabeli (nazwa, typ, długość)

klucze obce (relacja pomiędzy tabelą a innymi tabelami)

ustawienia techniczne (dotyczą tworzenia tabeli w BD)

indeksy

Możliwe jest modyfikowanie tabel systemu (należy zastosować odpowiednie mechanizmy, inaczej zmiany zostaną utracone podczas upgrade’u systemu)

Page 66: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Definicje tabel - schemat

T1 T2 T3 Tn…

Aktywacja

i narzędzia BD

Niezależne od BD definicje

tabel w ABAP Dictionary

BD

T1T2

T3Tn

Definicje tabel w BD

Page 67: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Pola tabeli

Należy wyspecyfikować: nazwę pola - do 16 znaków (litery, cyfry, _ - musi zaczynać się literą)

znacznik przynależności pola do klucza głównego

typ pola

długość pola

ew. liczbę miejsc dziesiętnych

krótki opis – odpowiadający znaczeniu pola

Jeśli pole zostało powiązane z elementem danych odpowiednie wartości zostaną przepisane z elementu danych

Istnieje możliwość włączenia do definicji tabeli pól struktury (nazwy takich pól muszą spełniać reguły dla pól tabeli)

Opcje dodatkowe: sprawdzanie wprowadzanych wartości

przydzielenie pomocy F4

dla pól typu QUAN i CURR należy podać pole tabeli z odpowiednią jednostką miary lub walutą

Page 68: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Tworzenie tabeli transparentnej

1. Typ obiektu – Database table; nazwa tabeli; Create

2. Short text – niewidoczny dla użytkownika końcowego opis tabeli

3. Zakładka Attributes: Table maintenance allowed:

○ zaznaczone – użytkownicy o odpowiednich prawach mogą zmieniać dane w tabeli za pośrednictwem Data Browser (SM16)

○ odznaczone – dane tabeli mogą być tylko z poziomu programów i transakcji SM30

4. Zakładka Fields – wprowadzić wszystkie pola tabeli: nazwa

zaznaczyć Key, jeśli trzeba

podać nazwę elementu danych (może być niezdefiniowany) lub zaznaczyć Data element/Direct type i podać typ, długość + ew. liczbę miejsc dziesiętnych

5. Zakładka Currency/quantity (tylko dla typów CURR i QUAN) – podać pole z nazwą waluty lub jednostką miary

6. Goto Technical settings –

7. Określenie klucza obcego (jeśli wymagane)

8. Stworzenie indeksów wtórnych (jeśli wymagane) Goto Indexes

9. Zapis (podać klasę projektową)

10. Aktywacja

Page 69: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Tworzenie tabeli – opcje dodatkowe

Pomoc F4 dla pola – Goto Search help For field

Pomoc F4 dla tabeli – Goto Search help For table

Dokumentacja tabeli – Goto Documentation

Przydzielenie typu aktywacji (tylko dla tabel środowiska wykonawczego) – Extras Activation

Wprowadzanie / wyświetlanie danych (tylko dla tabel z zaznaczonym Table maintenanceallowed) – Utilities Table contents Createentries / Utilities Table contents Display

Page 70: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Tworzenie tabeli – ograniczenia

Wszystkie pola kluczowe muszą być umieszczone razem na początku tabeli

Dopuszczalne jest max 16 pól kluczowych o łącznej długości klucza 255

Przy długości klucza >120 ograniczenia przy transporcie danych

Max 249 pól o łącznej długości 1962 (bez uwzględniania pól typu LRAW i LCHR)

Pola typu LRAW lub LCHR muszą się znajdować na końcu tabeli

Tylko jedno pole typu LRAW lub LCHR jest dopuszczalne w tabeli i musi być ono bezpośrednio poprzedzone polem INT2, w którym interfejs BD przechowuje bieżącą długość pola

Page 71: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Tabela – ustawienia techniczne

Określają sposób obsługi tabeli w BD

Parametry: Data class – definiuje fizyczny obszar (tablespace) BD, w którym

będzie utworzona tabela:○ APPL0 – dane podstawowe (rzadko zmieniane)

○ APPL1 – dane transakcyjne (często zmieniane)

○ APPL2 – dane organizacyjne (dane konfiguracji – rzadko zmieniane)

○ USR, USR1 – dane projektowe użytkownika

Size category – definiuje rozmiar tzw. ekstensji tabeli: 0 – 4

Buffering permision – określa czy tabela ma być buforowana

Buffering type – jeśli tabela może być buforowana, to określa typ buforowania (liczbę rekordów ładowanych do bufora): full, single-record, generic

Logging – jeśli ustawione, to każda zmiana w tabeli będzie odnotowana w tabeli logu

Convert to transparent table – znacznik konwersji

Page 72: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Tworzenie tabeli – błędy

Nazwa tabeli nie zaczyna się od Y lub Z

Tabela o podanej nazwie już istnieje

Element danych lub domena nie zostały utworzone lub aktywowane

Wprowadzono niewłaściwą nazwę elementu danych lub domeny

Nie wprowadzono lub nie zapisano ustawień technicznych

Zastosowano w ustawieniach technicznych niewłaściwą klasę danych lub rozmiar kategorii

Pola klucza nie występuje na początku tabeli

Pola klucza nie sąsiadują ze sobą

Próbowano w niewłaściwy sposób usunąć pole tabeli

Page 73: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Modyfikowanie tabel

Kopiowanie

Usuwanie

Dodawanie pól do tabeli

wstawianie

dołączanie

Usuwanie pól z tabeli

Zmiana pól wewnątrz tabeli

zmiana typu lub długości

Page 74: Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) zaimplementowany jako makroasembler w systemie R/2, przeznaczony głównie

Dostęp do danych

Operacje: wyszukiwanie i wyświetlanie danych wg kryterium wyboru

dodawanie wierszy

modyfikowanie zawartości wierszy

usuwanie wierszy

Narzędzia: Z poziomu ekranu słownika z definicją tabeli – Utilities

Create Entries

Z poziomu ekranu słownika Table/Structure: ChangeFields – Utilities Table Contents (SE16)

SM30 (i jego starsza mniej funkcjonalna wersja SM31)

SE17 (większe możliwości wyszukiwania i sortowania niż SE16, ale może być stosowana jedynie do wyszukiwania)

Proste raporty z instrukcjami SELECT i WRITE