Introducing ABAP Syntax

Objectives

After completing this lesson, you will be able to:
  • ABAP 構文の基本についての説明
  • データ型、変数、定数とリテラル、および連鎖命令の定義

ABAP 構文の基本

Overview

このモジュールの終わりまでに、初心者のプログラマは、データ型、変数、定数、リテラルなどの ABAP 構文の基本、連鎖命令、ソースコードへのコメントの追加、算術計算の実行、システム情報の使用、プログラムのデバッグ、ABAP 一覧の登録、および ABAP 言語を使用した文字列の処理を行います。

ABAP 言語の基本機能

ABAP 言語は、個別の文 (命令) で構成されます。ABAP 命令について留意すべき重要な点は以下のとおりです。

  • ABAP コードは個別の命令で構成されます。
  • 命令の最初の語は ABAP キーワードと呼ばれます。
  • 各命令はピリオドで終わります。
  • スペースは 2 つの単語を区切る必要があります
  • 命令をインデントして、コードの読みやすさを向上させることができます。
  • オプションとオペランド (使用するキーワードによって異なる) が含まれる場合があります。
  • 複数行にまたがることができます。
  • キーワード、オプション、およびオペランドには大文字または小文字を使用できます。
  • ABAP 実行システムでは、ケースが区別されません。キーワードとそのオプションは大文字で、オペランドは小文字で記述するのが慣例です。

ABAP のデータオブジェクト

変数、定数、およびリテラル

ABAP では、変数、定数、およびリテラルの 3 つのデータ型のデータオブジェクトが認識されます。

ABAP コードのデータオブジェクトは、プログラムメモリの予約済セクションを表します。ABAP では、変数、定数、およびリテラルの 3 つのデータ型のデータオブジェクトが認識されます。

変数
変数は、実行時に変更可能なコンテンツを含むデータオブジェクトです。変数は名前で識別されます。この名称は、実行時にデータオブジェクトをアドレス指定するためにも使用されます。ABAP 変数の開始値は明確に定義されています。
定数
定数は変数に似ています。ただし、変数とは異なり、値はソースコードでハードコーディングされており、実行時に変更することはできません。変数と同様に、定数にも再利用できる名前があります。
リテラル

リテラルの値も、ソースコードでハードコーディングされます。定数とは異なり、リテラルには名称がありません。そのため、リテラルを再利用することはできません。リテラルのみを使用して、定数の値と変数の開始値を指定します。

ABAP データオブジェクトは常に型指定されます。すべてのデータオブジェクトは、格納可能な情報を決定するデータ型に基づいています。ABAP データオブジェクトのデータ型は、プログラムの実行中は同じままです。

変数の宣言

変数は、DATA、TYPE、およびオプションで VALUE キーワードを使用して宣言されます。

ABAP コードの変数は、キーワード DATA で宣言されます。

DATA 命令は、以下の部分で構成されます。

データ

キーワード DATA の後に変数名が続きます。変数名は、30 文字まで可能です。文字 A-Z、数字 0 ~ 9、およびアンダースコア文字を含めることができます。名前は文字またはアンダースコアで始まる必要があります。

TYPE
変数のデータ型は、TYPE オプションの後に指定します。この例では、組込型 I (整数の場合) と文字列 (可変長文字列) が使用されています。
VALUE
オプション VALUE はオプションであり、これを使用して変数の開始値を指定することができます。VALUE がない場合、変数は変数の技術データ型に依存する初期値で登録されます。

データ型の使用

ABAP では、TYPES キーワードまたは ABAP ディクショナリを使用した 13 の組込データ型またはユーザ定義データ型がサポートされています。

ABAP では、以下のデータ型のソースが提供されます。

ABAP 組込 (事前定義 ABAP データ型)

ABAP には、単純な数値、文字型、およびバイナリデータオブジェクトに対して 13 個のデータ型が事前定義されています。

TYPES 命令

命令 TYPES を使用すると、事前定義されたデータ型を定義し、定義の場所に応じて異なる場所で再利用することができます。

ABAP ディクショナリ
ABAP ディクショナリは、ABAP リポジトリの一部です。特に、システム全体で使用可能なグローバルデータ型を管理します。ABAP ディクショナリデータ型は、技術プロパティを定義するだけでなく、ラベルなどのセマンティック情報も追加します。ユーザインタフェースを実装する場合は、ABAP ディクショナリデータ型が特に有用です。

ABAP 組込 (事前定義 ABAP データ型)

組込データ型の例

重要な標準 ABAP データ型 (組込データ型) の一部を図に示します。ABAP データ型は、完全または不完全なデータ型として分類されます。完全なデータ型には、データ型固有の固定長指定がすでに含まれています。不完全なデータ型にはデフォルトの長さがありますが、異なる長さを指定することができます。タイプ P の場合は、小数点以下桁数を指定することもできます。 

完全な ABAP データ型

TYPE STRING

文字列型の項目は、可変長の文字型項目です。ABAP 実行システムでは、文字列変数の管理を最適化するためにメモリの割当と解放が行われます。この動作を直接行うことはできません。文字列の最大長はシステム管理者の設定によって制御されます。ただし、実際には長さに制限のない文字列を取り上げます。

TYPE I

I 型のフィールドは、整数を含む数値フィールドです。このような項目には、-2^31 から +2^31 までの値を許可する 4 バイト (32 ビット) が割り当てられます。

タイプ D

D 型のフィールドは日付を表します。ABAP では、日付の書式は常に YYYYMMDD (区切記号なし) になります。この書式は、現在のロケールに応じて変換され、ユーザインタフェースに表示されます。同様に、ユーザが日付を入力すると、処理を開始する前にその日付が ABAP 書式に変換されます。

タイプ T

タイプ T の項目は時間を表します。ABAP では、この書式は HHMMSS (24 時間形式の区切記号なし) です。現在のロケールで 12 時間形式が使用されている場合は、値が自動的に変換されます。

不完全 ABAP データ型

タイプ C
データ型 C の項目は、特定の長さの文字型項目です。長さを文字単位で指定します。ランタイムシステムでは、フィールドを格納するためにバイト数の 2 倍が割り当てられます。このタイプは、固定長が重要である場合に使用します。
タイプ N

N 型のフィールドは、数字のみを含む特定の長さの文字フィールドです。この項目には、数値として考慮せず、従業員番号や原価センタなどの計算を実行する一連の桁を含める必要があります。

タイプ P

タイプ P の項目 ('パック数値' の P) は、指定された桁数と小数点以下桁数の数値を含む項目です。小数点以下桁数のある数値、または値範囲タイプ I が不十分な場合は、このデータ型を使用します。

ローカルデータ型の使用

ユーザ定義データ型は、TYPES キーワードを使用して定義されます。

Code Snippet
12
TYPES my_type TYPE p LENGTH 3 DECIMALS 2. DATA my_var TYPE my_type.

DATA 命令で直接組込データ型を使用する代わりに、TYPES 命令を使用して最初にデータ型を定義することができます。 TYPE オプションの後に DATA 命令でデータ型を使用することができます。

グローバルデータ型の使用 - ABAP ディクショナリ

ABAP ディクショナリのユーザ定義データ型の例

SAP システムには、国コード、プラント、品目コード、会計年度、原価センタなど、数千のビジネスエンティティがあります。すべてのプログラムでこれらのエンティティを定義することは、先ほど説明した組込 ABAP データ型を使用して技術的に可能です。ただし、非常に手間のかかる上、エラーが発生しやすくなります。代わりに、SAP は ABAP ディクショナリ、重要なデータ型のセントラルストア、およびデータベーステーブルの登録に使用するツールを提供しています。

ABAP ディクショナリでは、単一エンティティがデータエレメントによって記述されます。変数の例では、変数空港のデータ型はデータエレメント /DMO/AIRPORT_ID です。

F2 キーを押してデータ型の詳細を表示すると、技術的に、このデータ型は長さ 3 の文字であることがわかります。さらに、データエレメントにはテキスト "フライト参照シナリオ: 空港 ID" および長さが異なる 4 つの項目ラベルが提供されます。

F3 キーを押してデータ型の定義にナビゲートすると、新しいビューが開き、データエレメントのエディタが表示されます。

定数とリテラル

定数の宣言

定数を定義するには、CONSTANTS キーワードを使用します。

定数

定数は、ハードコーディングされた値を持つデータオブジェクトであり、実行時に変更することはできません。定数への書込アクセスを行うと、構文エラーが発生します。

ABAP では、キーワード CONSTANTS を使用して定数を宣言します。CONSTANT 命令は、DATA 命令と同じ部分で構成されます。唯一の違いは、VALUE オプションが必須であることです。

定数の値をデータ型固有の初期値にする必要がある場合は、特殊な書式 VALUE IS INITIAL で VALUE オプションを使用することができます。通常、初期値は数値型ではゼロで、文字型ではスペースです。ABAP に Null 値はありません。

リテラルの宣言

ABAP では、数値、テキスト、および文字列リテラルがサポートされています。

リテラル

リテラルは、ハードコーディングされた値を持つ匿名データオブジェクトです。リテラルは、定数の非初期値と変数の非初期開始値を定義するために頻繁に使用されます。

技術的には、リテラルはコード内の任意の場所で使用することができます。読みやすさと保守性をサポートするには、定数の定義と使用をおすすめします。

ABAP には、以下の 3 つのデータ型のリテラルがあります。

  • 数値リテラルは、符号あり/なしの整数です。通常、数値リテラルのデータ型は I です。値がデータ型 I に対して大きすぎる場合は、データ型 p が十分な長さで、小数点以下桁数なしで使用されます。
  • テキストリテラルは、一重引用符 ( ' ) のペア内の文字タイプです。
  • 文字列リテラルは STRING 型で、逆引用符 ( ` ) で囲まれています。これらは、文字列型データオブジェクトの値を提供するために使用します。

チェーン命令

連鎖 TYPES 命令の例

TYPES 命令を使用して、ABAP コードに構造化データ型を定義することもできます。構造定義は TYPES BEGIN OF <structure type name>.命令で始まり、TYPES END OF <structure type name>. で終わります。その間に、各コンポーネントに名称を付け、そのデータ型を追加の TYPES 命令で指定します。

コンパクトフォームでは、キーワード TYPES が 1 回だけ使用され、その後にコロン ( : ) が続きます。BEGIN OF オプション、END OF オプション、およびその間のコンポーネント定義は、カンマで区切られます。

これは、チェーン文と呼ばれます。

注記

これまで、チェーン命令は ABAP で多く使用されていました。最近では、緊密に属する命令を組み合わせることのみが推奨されています。

ABAP のコメント

星記号を使用したコメントの例

コメントは、他のユーザによるコードの理解に役立つようにプログラムに追加される説明です。コメントは、コンパイラまたはインタプリタによって無視されるソースコードの一部です。

ABAP では、ソースコードの一部をコメントとして定義する方法が 2 つあります。

  • 最初の列の星記号 (*) は、行全体をコメントとして識別します。
  • 二重引用符 (") は、行の残りの部分、つまり右側のコードをコメントとして識別します。