Składnia języka - podstawy



Podobne dokumenty
Tabela wewnętrzna - definicja

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

Podstawy projektowania aplikacji biznesowych w systemie SAP R/3

Krzysztof Kadowski. PL-E3579, PL-EA0312,

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Relacyjne bazy danych. Podstawy SQL

Wykład 5. SQL praca z tabelami 2

SQL (ang. Structured Query Language)

opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)

Bazy danych. dr inż. Arkadiusz Mirakowski

Autor: dr inż. Katarzyna Rudnik

Tworzenie bazy danych na przykładzie Access

Oracle11g: Wprowadzenie do SQL

Relacyjne bazy danych. Podstawy SQL

Bazy danych - wykład wstępny

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Instrukcja użytkownika

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

SIECI KOMPUTEROWE I BAZY DANYCH

Oracle PL/SQL. Paweł Rajba.

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Autor: Joanna Karwowska

Bazy danych Access KWERENDY

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

Systemy GIS Tworzenie zapytań w bazach danych

Zwróćmy uwagę w jakiej lokalizacji i pod jaką nazwą zostanie zapisana baza (plik z rozszerzeniem *.accdb). Nazywamy

Podstawowe zapytania SELECT (na jednej tabeli)

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Programowanie obiektów

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Narzędzia środowiska projektowego ABAP

I. Program II. Opis głównych funkcji programu... 19

Definiowanie filtrów IP

I. Interfejs użytkownika.

1 Podstawy c++ w pigułce.

ECDL/ICDL Użytkowanie baz danych Moduł S1 Sylabus - wersja 6.0

Wprowadzenie do baz danych

Bazy danych TERMINOLOGIA

Baza danych sql. 1. Wprowadzenie

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

Bazy danych. Polecenia SQL

Wykład 6. SQL praca z tabelami 3

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Część 3 - Konfiguracja

Podstawy technologii WWW

5. Bazy danych Base Okno bazy danych

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

WPROWADZENIE DO BAZ DANYCH

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

Projektowanie systemów baz danych

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

Konfiguracja parametrów pozycjonowania GPS /5

Oracle PL/SQL. Paweł Rajba.

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

Przestrzenne bazy danych Podstawy języka SQL

Wykład 4. SQL praca z tabelami 1

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Przykład powyżej pokazuje, że w zapytaniu można umieszczać funkcje zarówno zdefiniowane w ramach środowiska, jak również własne.

Instrukcja logowania i realizacji podstawowych transakcji w systemie bankowości internetowej dla klientów biznesowych BusinessPro.

Skanowanie OCR w aplikacji Kancelaria Komornika. Instrukcja dla użytkownika

Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz

Zasady transformacji modelu DOZ do projektu tabel bazy danych

Programowanie w języku Python. Grażyna Koba

Instrukcja obsługi Multiconverter 2.0

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

Projekt Hurtownia, realizacja skojarzeń dostawców i produktów

UONET+ - moduł Sekretariat. Jak wykorzystać wydruki list w formacie XLS do analizy danych uczniów?

Programowanie obiektowe

Umieszczanie kodu. kod skryptu

Sposób tworzenia tabeli przestawnej pokażę na przykładzie listy krajów z podstawowymi informacjami o nich.

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Dokumentacja użytkownika systemu

System imed24 Instrukcja Moduł Analizy i raporty

Ćwiczenie zapytań języka bazy danych PostgreSQL

Wprowadzenie do baz danych

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Zmiany funkcjonalne i lista obsłużonych zgłoszeń Comarch DMS , Comarch DMS i Comarch DMS

ECDL/ICDL Użytkowanie baz danych Moduł S1 Sylabus - wersja 5.0

,Aplikacja Okazje SMS

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Backoffice instrukcja użytkowania. Metryka dokumentu Wersja Data Zmiany Wersja inicjalna dokumentu

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

QUERY język zapytań do tworzenia raportów w AS/400

Informatyzacja Przedsiębiorstw

Metody numeryczne Laboratorium 2

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Bufor programu a roll area

Wymagane jest podłączenie serwera do Internetu (konieczne do zdalnego dostępu).

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

1. Zaczynamy! (9) 2. Edycja dokumentów (33)

TP1 - TABELE PRZESTAWNE od A do Z

Transkrypt:

Składnia języka - podstawy

Historia XX w. lata 70-te ABAP (Allgemainer Berichts-Aufbereitungs Prozessor) 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 Application Programming), 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 report zpab0001. write Hello world. każda instrukcja kończy się kropką instrukcje zazwyczaj zaczynają się od słowa kluczowego

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] * <s i > [AS <a i >] <agg>([distinct] <s j >) [AS <a j >] SINGLE wybór pojedynczej linii (brak kilka linii) DISTINCT bez zduplikowanych linii * wybór całego wiersza lub określonych kolumn s i, s j, <agg> - funkcja zagregowana dla określonej kolumny <a i > - 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 (<f 1 >,<f 2 >, ) Obszar docelowy może być: <wa> płaskim obszarem roboczym <itab> tabelą wewnętrzną <f i > 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 <s 1 > <s 2 > 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 <s 1 > [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

Roll Area Instrukcja SELECT schemat działania SAPGUI 1 Serwer aplikacji 2 3 4 Serwer BD ZPABTAB01 17 7 11 6 16 17 User context PGM Buffer tables zpabtab01 select * from zpabtab01 10write / zpabtab01-nazwisko. endselect. 5 ZPABTAB01 Work Area Kowalski Nowak 9 12 Virtual Page 8 1. 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

Roll Area SELECT następna strona listy SAPGUI 1 Serwer BD Serwer aplikacji 2 3 5 5 User context PGM Buffer tables zpabtab01 select * from zpabtab01 write / zpabtab01-nazwisko. endselect. 3 ZPABTAB01 Work Area 1. 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 ZPABTAB01 4 Kowalski Nowak... Waligóra Węglarz

Roll Area Koniec programu schemat działania SAPGUI 1 Serwer BD Serwer aplikacji 2 3 4 5 User context PGM Buffer tables zpabtab01 select * from zpabtab01 write / zpabtab01-nazwisko. endselect. 3 ZPABTAB01 Work Area 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 ZPABTAB01 Kowalski Nowak... Waligóra Węglarz

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ładnia DATA <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-REPID zawierająca nazwę programu Nie należy definiować struktury SYST (jest ona automatycznie dostępna w każdym programie ABAPowym)

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 - schemat Definicje typów Obiekty bazy danych Struktura tabela tabela bazy danych Element danych Typ tabeli Narzędzia Ekran F4 Dopuszczalne wartości

Informacje w ABAP Dictionary Tabele Perspektywy Typy Obiekty blokady Domeny Elementy danych Pomoc F1 i F4 dla pola

Integracja środowiska projektowego ABAP ABAP Tools Development environment Data Modeler Screen Painter ABAP Dictionary ABAP Interpreter Dialog Control Interfaces Screen Interpreter Runtime environment of the application

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 Tabela T1 p1 p2 p3 p4 Tabele bazy danych 1:1 Tabela T1 p1 p2 p3 p4

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 Tabela T1 pd pe Tabela T6 pm pn po Tabela T2 pf pg ph pi Tabela T3 pj pk pl Tabela T4 pq pr pt pu Tabela T7 pv pw Tabele bazy danych 1:n Tabela T0 pa pb pc

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 klastra powoduje odczyt odpowiednich wierszy ze wszystkich tabel klastra w jednej operacji we/wy

Tabela klastra - schemat Definicje tabel w DDIC Tabela T1 Tabela T2 Tabela T3 pa pd pe pa pf pa pg ph pi Tabele bazy danych 1:n Tabela T0 pa pb pc

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 Pola tabeli użytkownika telsta telfax telmob Elementy danych Ztelsta Etykieta: tel. stacjonarny Ztelfax Etykieta: fax Domena Ztelefon Typ: char Długość: 12 Ztelmob Etykieta: tel. komórkowy

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 Tabela ~STDNT (ZPABSTDNT) - zależna od mandanta 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

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 danych Typ 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 Wartość max w typach LCHAR i LRAW zależy od poprzedzającej je wartości INT2 C(1)

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 Dictionary niezależ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 Niezależne od BD definicje tabel w ABAP Dictionary Aktywacja i narzędzia BD BD Definicje tabel w BD T1 Tn T2 T3

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 maintenance allowed) Utilities Table contents Create entries / 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: Change Fields 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