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