SAP ABAP - Zmienne
Zmienne to nazwane obiekty danych używane do przechowywania wartości w przydzielonym obszarze pamięci programu. Jak sama nazwa wskazuje, użytkownicy mogą zmieniać zawartość zmiennych za pomocą instrukcji ABAP. Każda zmienna w ABAP ma określony typ, który określa rozmiar i układ pamięci zmiennej; zakres wartości, które mogą być przechowywane w tej pamięci; oraz zestaw operacji, które można zastosować do zmiennej.
Musisz zadeklarować wszystkie zmienne, zanim będą mogły zostać użyte. Podstawową formą deklaracji zmiennej jest -
DATA <f> TYPE <type> VALUE <val>.
Tutaj <f> określa nazwę zmiennej. Nazwa zmiennej może mieć maksymalnie 30 znaków. <typ> określa typ zmiennej. Każdy typ danych z w pełni określonymi atrybutami technicznymi jest znany jako <typ>. <val> określa początkową wartość zmiennej of <f>. W przypadku zdefiniowania podstawowej zmiennej o stałej długości instrukcja DATA automatycznie zapełnia wartość zmiennej wartością początkową specyficzną dla typu. Inne możliwe wartości dla <val> mogą być literałem, stałą lub jawną klauzulą, na przykład Is INITIAL.
Poniżej znajdują się prawidłowe przykłady deklaracji zmiennych.
DATA d1(2) TYPE C.
DATA d2 LIKE d1.
DATA minimum_value TYPE I VALUE 10.
W powyższym fragmencie kodu d1 to zmienna typu C, d2 to zmienna typu d1, a minimal_value to zmienna typu integer ABAP I.
W tym rozdziale wyjaśniono różne typy zmiennych dostępne w ABAP. W ABAP istnieją trzy rodzaje zmiennych -
- Zmienne statyczne
- Zmienne odniesienia
- Zmienne systemowe
Zmienne statyczne
Zmienne statyczne są deklarowane w podprogramach, modułach funkcyjnych i metodach statycznych.
Okres istnienia jest powiązany z kontekstem deklaracji.
Za pomocą instrukcji „CLASS-DATA” można deklarować zmienne w ramach klas.
Instrukcja „PARAMETERS” może służyć do deklarowania podstawowych obiektów danych, które są połączone z polami wejściowymi na ekranie wyboru.
Możesz również zadeklarować wewnętrzne tabele, które są połączone z polami wejściowymi na ekranie wyboru, używając instrukcji „SELECT-OPTIONS”.
Poniżej przedstawiono konwencje używane podczas nazywania zmiennej -
Do nazywania zmiennych nie można używać znaków specjalnych, takich jak „t” i „,”.
Nazw predefiniowanych obiektów danych nie można zmienić.
Nazwa zmiennej nie może być taka sama, jak żadnego słowa kluczowego lub klauzuli ABAP.
Nazwy zmiennych muszą przekazywać znaczenie zmiennej bez potrzeby dalszych komentarzy.
Łączniki są zarezerwowane do reprezentowania elementów konstrukcji. Dlatego należy unikać myślników w nazwach zmiennych.
Znaku podkreślenia można używać do oddzielania słów złożonych.
Ten program pokazuje, jak zadeklarować zmienną za pomocą instrukcji PARAMETERS -
REPORT ZTest123_01.
PARAMETERS: NAME(10) TYPE C,
CLASS TYPE I,
SCORE TYPE P DECIMALS 2,
CONNECT TYPE MARA-MATNR.
Tutaj NAME reprezentuje parametr składający się z 10 znaków, CLASS określa parametr typu integer z domyślnym rozmiarem w bajtach, SCORE reprezentuje parametr typu spakowanego z wartościami do dwóch miejsc po przecinku, a CONNECT odnosi się do typu MARA-MATNF słownika ABAP .
Powyższy kod daje następujące dane wyjściowe -
Zmienne odniesienia
Składnia deklarowania zmiennych referencyjnych to -
DATA <ref> TYPE REF TO <type> VALUE IS INITIAL.
Dodatek REF TO deklaruje zmienną referencyjną ref.
Specyfikacja po REF TO określa statyczny typ zmiennej odniesienia.
Typ statyczny ogranicza zestaw obiektów, do których <ref> może się odnosić.
Dynamiczny typ zmiennej referencyjnej to typ lub klasa danych, do których aktualnie się odnosi.
Typ statyczny jest zawsze bardziej ogólny lub taki sam jak typ dynamiczny.
Dodatek TYPE służy do tworzenia powiązanego typu odwołania i jako wartości początkowej, a po dodaniu VALUE można określić tylko IS INITIAL.
Przykład
CLASS C1 DEFINITION.
PUBLIC SECTION.
DATA Bl TYPE I VALUE 1.
ENDCLASS. DATA: Oref TYPE REF TO C1 ,
Dref1 LIKE REF TO Oref,
Dref2 TYPE REF TO I .
CREATE OBJECT Oref.
GET REFERENCE OF Oref INTO Dref1.
CREATE DATA Dref2.
Dref2→* = Dref1→*→Bl.
W powyższym fragmencie kodu zadeklarowano odwołanie do obiektu Oref i dwie zmienne odniesienia do danych Dref1 i Dref2.
Obie zmienne odniesienia do danych są w pełni wpisane i można je wyłuskać za pomocą operatora wyłuskiwania → * w pozycjach argumentów.
Zmienne systemowe
Zmienne systemowe ABAP są dostępne ze wszystkich programów ABAP.
Te pola są faktycznie wypełniane przez środowisko wykonawcze.
Wartości w tych polach wskazują stan systemu w dowolnym momencie.
Pełną listę zmiennych systemowych można znaleźć w tabeli SYST w SAP.
Dostęp do poszczególnych pól struktury SYST można uzyskać za pomocą „SYST-” lub „SY-”.
Przykład
REPORT Z_Test123_01.
WRITE:/'SY-ABCDE', SY-ABCDE,
/'SY-DATUM', SY-DATUM,
/'SY-DBSYS', SY-DBSYS,
/'SY-HOST ', SY-HOST,
/'SY-LANGU', SY-LANGU,
/'SY-MANDT', SY-MANDT,
/'SY-OPSYS', SY-OPSYS,
/'SY-SAPRL', SY-SAPRL,
/'SY-SYSID', SY-SYSID,
/'SY-TCODE', SY-TCODE,
/'SY-UNAME', SY-UNAME,
/'SY-UZEIT', SY-UZEIT.
Powyższy kod daje następujące dane wyjściowe -
SY-ABCDE ABCDEFGHIJKLMNOPQRSTUVWXYZ
SY-DATUM 12.09.2015
SY-DBSYS ORACLE
SY-HOST sapserver
SY-LANGU EN
SY-MANDT 800
SY-OPSYS Windows NT
SY-SAPRL 700
SY-SYSID DMO
SY-TCODE SE38
SY-UNAME SAPUSER
SY-UZEIT 14:25:48