SAPABAP-変数

変数は、プログラムの割り当てられたメモリ領域内に値を格納するために使用される名前付きデータオブジェクトです。名前が示すように、ユーザーはABAPステートメントを使用して変数の内容を変更できます。ABAPの各変数には特定のタイプがあり、変数のメモリのサイズとレイアウトを決定します。そのメモリ内に保存できる値の範囲。変数に適用できる一連の操作。

使用する前に、すべての変数を宣言する必要があります。変数宣言の基本的な形式は次のとおりです。

DATA <f> TYPE <type> VALUE <val>.

ここで、<f>は変数の名前を指定します。変数の名前は最大30文字です。<type>は、変数のタイプを指定します。完全に指定された技術属性を持つデータ型は、<type>と呼ばれます。<val>は、<f>変数の初期値を指定します。基本固定長変数を定義する場合、DATAステートメントは変数の値にタイプ固有の初期値を自動的に入力します。<val>の他の可能な値は、リテラル、定数、またはIsINITIALなどの明示的な句です。

以下は、変数宣言の有効な例です。

DATA d1(2) TYPE C.  
DATA d2 LIKE d1.  
DATA minimum_value TYPE I VALUE 10.

上記のコードスニペットでは、d1はCタイプの変数、d2はd1タイプの変数、minimum_valueはABAP整数タイプIの変数です。

この章では、ABAPで使用できるさまざまな変数タイプについて説明します。ABAPには3種類の変数があります-

  • 静的変数
  • 参照変数
  • システム変数

静的変数

  • 静的変数は、サブルーチン、汎用モジュール、および静的メソッドで宣言されます。

  • 存続期間は、宣言のコンテキストにリンクされています。

  • 'CLASS-DATA'ステートメントを使用すると、クラス内で変数を宣言できます。

  • 'PARAMETERS'ステートメントを使用して、選択画面の入力フィールドにリンクされている基本データオブジェクトを宣言できます。

  • 'SELECT-OPTIONS'ステートメントを使用して、選択画面の入力フィールドにリンクされている内部テーブルを宣言することもできます。

以下は、変数に名前を付けるときに使用される規則です。

  • 「t」や「、」などの特殊文字を使用して変数に名前を付けることはできません。

  • 事前定義されたデータオブジェクトの名前は変更できません。

  • 変数の名前は、ABAPキーワードまたは句と同じにすることはできません。

  • 変数の名前は、それ以上のコメントを必要とせずに、変数の意味を伝える必要があります。

  • ハイフンは、構造のコンポーネントを表すために予約されています。したがって、変数名にハイフンを使用しないようにする必要があります。

  • アンダースコア文字は、複合語を区切るために使用できます。

このプログラムは、PARAMETERSステートメントを使用して変数を宣言する方法を示しています-

REPORT ZTest123_01. 
PARAMETERS: NAME(10) TYPE C, 
CLASS TYPE I, 
SCORE TYPE P DECIMALS 2, 
CONNECT TYPE MARA-MATNR.

ここで、NAMEは10文字のパラメータを表し、CLASSはバイト単位のデフォルトサイズの整数型のパラメータを指定し、SCOREは小数点以下2桁までの値を持つパック型パラメータを表し、CONNECTはABAPディクショナリのMARA-MATNF型を参照します。 。

上記のコードは次の出力を生成します-

参照変数

参照変数を宣言するための構文は次のとおりです。

DATA <ref> TYPE REF TO <type> VALUE IS INITIAL.
  • REF TO加算は、参照変数refを宣言します。

  • REF TOの後の指定は、参照変数の静的タイプを指定します。

  • 静的タイプは、<ref>が参照できるオブジェクトのセットを制限します。

  • 参照変数の動的タイプは、現在参照しているデータ型またはクラスです。

  • 静的型は常により一般的であるか、動的型と同じです。

  • TYPE加算は、バインドされた参照型を作成するために、開始値として使用され、VALUE加算の後に指定できるのはISINITIALのみです。

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.
  • 上記のコードスニペットでは、オブジェクト参照Orefと2つのデータ参照変数Dref1およびDref2が宣言されています。

  • 両方のデータ参照変数は完全に型指定されており、オペランド位置で逆参照演算子→*を使用して逆参照できます。

システム変数

  • ABAPシステム変数には、すべてのABAPプログラムからアクセスできます。

  • これらのフィールドは、実際にはランタイム環境によって入力されます。

  • これらのフィールドの値は、任意の時点でのシステムの状態を示します。

  • システム変数の完全なリストは、SAPのSYSTテーブルにあります。

  • SYST構造の個々のフィールドには、「SYST-」または「SY-」のいずれかを使用してアクセスできます。

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.

上記のコードは次の出力を生成します-

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