Tabela zewnętrzna w SAP ABAP
W ABAP obiekty lokalne (struktury, tabele, typy i inne) różnią się od obiektów globalnych (zewnętrznych) zakresem działania i dostępnością w systemie - globalne są dostępne w całym serwerze, w każdej aplikacji, dosłownie w całym systemie SAP i mogą być używane przez różne aplikacje oraz obiekty.
Przydatne linki
Spis treści
- Tworzenie data - elementów będących odpowiednikami kolumn.
- Tworzenie struktury - globalny typ struktury.
- Tworzenie tabeli globalnej.
TWORZENIE ELEMENTÓW
Temat tworzenia elementów będę rozwijać na podstawie zadania projektowego z artykułu “Struktura i tabela wewnętrzna”:
Struktura i tabela wewnętrzna w SAP ABAP


W tym momencie warto wspomnieć, że oprócz typów wyróżniamy także inne niż elementy typów - domenę.
W hierarchii typów w ABAP, domena (domain) znajduje się na niższym poziomie niż element danych (data element) i jest podstawowym budulcem typów elementarnych. Domena definiuje techniczne właściwości typu danych, takie jak
- typ,
- długość,
- zakres wartości oraz
- reguły walidacji (np. ograniczenia długości, domyślne wartości, lista dopuszczalnych wartości).
Rola domeny w ABAP
-
Domena określa format i ograniczenia dla pól danych (np. długość pola tekstowego, typ liczbowy, zakres wartości).
-
Domena nie może być używana bezpośrednio w programie, tylko poprzez element danych, który odwołuje się do domeny.
-
Przykład: domena typu CHAR(10) definiuje pole tekstowe o długości 10 znaków, które może być wykorzystane w wielu elementach danych.
Hierarchia typów
-
Najniższy poziom: domena (określa techniczne właściwości typu danych).
-
Wyżej: element danych (nadaje domenie znaczenie biznesowe, np. “Numer klienta”).
-
Następnie: pola w tabelach lub strukturach, które używają elementów danych.
Domena jest więc fundamentem typów elementarnych w ABAP, ale sama w sobie nie jest typem danych, który można używać bezpośrednio w programie - służy do budowania elementów danych, które są już używane w strukturach, tabelach i programach.
W moim zadaniu projektowym nie będę korzystać z domeny - skorzystam z opcji - Predefined Type, z kolei Data type wybieramy CHAR - ponieważ będę korzystać z bazowego typu CHAR10.
Klikam aktywację:

Następnie dodaję kolejny element: WORK_DATE




Dodaję ostatni element - hours_work


INT4 , ponieważ jest to 4‑bajtowa liczba całkowita ze znakiem, zakres mniej więcej od ok. -2 miliardów do +2 miliardów, co w praktyce w 100% wystarcza na liczbę godzin, ilości, identyfikatory itp. Jest to domyślny i najczęściej używany typ liczb całkowitych w ABAP (np. dla liczników, indeksów, ilości).

TWORZENIE GLOBALNEJ STRUKTURY





Podsumowując:
I. Utworzyłam elementy, które są odpowiednikami zapisów:

III. Przede mną utworzenie typu tabelarycznego, czyli odpowiednika deklaracji z linii 14 w zadaniu projektowym w temacie struktury i tabeli wewnętrznej:

Tworzę typ tabelaryczny na podstawie struktury:


Nazewnictwo typów tabelarycznych w ABAP nie jest sztywno narzucone przez SAP, ale istnieją dość powszechne konwencje projektowe, które warto stosować dla czytelności i spójności kodu.
Typy tabel w DDIC (SE11)
-
Dla globalnych typów tabel (Table Types w słowniku) często stosuje się prefiks
ZTY_lub podobny (projektowy), np.ZTY_EMPLOYEE, zgodnie z wewnętrznymi wytycznymi projektu lub firmy. -
Nazwa powinna:
- zaczynać się od
Z/Ydla obiektów własnych, - zawierać skrót obszaru biznesowego oraz informację, że jest to typ tabeli, np.
ZTY_HR_EMP.
- zaczynać się od
Lokalne / globalne typy w kodzie
-
Dla typów definiowanych instrukcją
TYPESw klasie/raporcie spotyka się konwencję:- typ wiersza:
ty_..., np.ty_employee - typ tabeli:
tt_...lubty_t_..., np.tt_employee.
- typ wiersza:
-
Dla samych zmiennych (obiektów danych):
- tabela globalna:
gt_..., - tabela lokalna:
lt_..., zgodnie z popularnymi guideline’ami ABAP.
- tabela globalna:
Moja nazwa zatem to: ZTY_TT_HOURS_WORK


w polu linia wskazuję nazwę mojej struktury czyli ZVC_STR_HOURS_WORK





TWORZENIE TABELI WEWNĘTRZNEJ
Tworzę tabelę wewnętrzną dla przechowywania danych



Definicję tabeli przekopiowuję z definicji struktury:




Wracam do programu z zadania projektowego z artykułu “Struktura i tabela wewnętrzna” i klikamy copy:



Kasuję część kodu i zostawiam tylko tyle:

Zmieniam w kodzie zapis, aby nasza struktura programu bazowała na naszej globalnej strukturze:

dopisujemy modfiy zvc_ czyli naszą globalną tabelę:
MODIFY zvc_working_hour from table lt_hours_work.

Aktywuję:

Wracam do tabeli globalnej i klikam Open with: Data preview:

Oto efekt, że dane do tabeli zostały wstawione poprawnie.