Sap-abap-variables

提供:Dev Guides
移動先:案内検索

SAP ABAP-変数

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

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

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

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

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

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型を表します。

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

ABAP辞書

参照変数

参照変数を宣言するための構文は-

DATA <ref> TYPE REF TO <type> VALUE IS INITIAL.
  • REF TOオプションは、参照変数refを宣言します。
  • REF TOの後の指定は、参照変数の静的型を指定します。
  • 静的型は、<ref>が参照できるオブジェクトのセットを制限します。
  • 参照変数の動的型は、現在参照しているデータ型またはクラスです。
  • 静的タイプは常により一般的であるか、動的タイプと同じです。
  • TYPEオプションは、バインドされた参照タイプを作成するために開始値として使用され、VALUE追加後に指定できるのはIS INITIALのみです。

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