Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer...
Transcript of Składnia języka - · PDF fileHistoria XX w. lata 70-te –ABAP (Allgemainer...
Składnia języka - podstawy
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
Program typu „Hello world”
każda instrukcja kończy się kropką
instrukcje zazwyczaj zaczynają się od
słowa kluczowego
report zpab0001.write ‘Hello world’.
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
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.
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
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
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
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
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
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
Instrukcja ENDSELECT
Znaczenie:
zamyka pętlę rozpoczętą instrukcją SELECT
Składnia:
ENDSELECT.
SELECT - przykład
report zpab0002.
tables zpabtab01.
select * from zpabtab01 into zpabtab01 order by nazwisko.
write /zpabtab01-nazwisko.
endselect.
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
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
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
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
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.
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ą
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.
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)
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
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.
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.
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
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.
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
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.
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
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.
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
Narzędzia środowiska projektowego ABAP
(ABAP Workbench Tools)
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
ABAP Dictionary - schematDefinicje typów Obiekty bazy danych
Narzędzia
Struktura
Element danychTyp tabeli
Dopuszczalne
wartości
Ekran
tabela
tabela bazy danych
F4
Informacje w ABAP Dictionary
Tabele
Perspektywy
Typy
Obiekty blokady
Domeny
Elementy danych
Pomoc F1 i F4 dla pola
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
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
Typy tabel słownikowych
Transparentne
Puli
Klastra
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.)
Tabela transparentna - schemat
Definicje
tabel
w DDIC
Tabele
bazy
danych
p1 p2 p3 p4
p1 p2 p3 p4
1:1
Tabela T1
Tabela T1
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
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
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
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
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
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)
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
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
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
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
Tworzenie tabeli
Dwa podejścia:
z dołu do góry – domeny, elementy danych,
tabela
z góry na dół – tabela, elementy danych,
domeny
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ą
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
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
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
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
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
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
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
Usuwanie domeny
Dopuszczalne, gdy nie jest używana
przez żaden z elementów danych
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
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
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
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)
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)
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
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ą
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
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
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
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
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
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
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