Sap-abap-native-sql-overview
SAP ABAP-ネイティブSQLの概要
「ネイティブSQL」という用語は、データベースインターフェースのネイティブSQLインターフェースに静的に転送できるすべてのステートメントを指します。 ネイティブSQLステートメントは、ABAPの言語スコープに含まれず、ABAP構文に従いません。 ABAPには、ネイティブSQLステートメントをリストできるプログラムセクションを分離するためのステートメントが含まれているだけです。
ネイティブSQLでは、主にデータベース固有のSQLステートメントを使用できます。 これらは、ネイティブSQLインターフェイスからデータベースシステムに変更なしで転送され、実行されます。 関連するデータベースの完全なSQL言語スコープを使用でき、アドレス指定されたデータベーステーブルをABAPディクショナリで宣言する必要はありません。 ネイティブSQLインターフェースによって特定の方法で処理されるSAP固有のネイティブSQLステートメントの小さなセットもあります。
ネイティブSQLステートメントを使用するには、EXEC SQLステートメントを前に付けて、ENDEXECステートメントで終了する必要があります。
以下は構文です-
EXEC SQL PERFORMING <form>.
<Native SQL statement>
ENDEXEC.
これらのステートメントは、1つ以上のネイティブSQLステートメントをリストできるABAPプログラムの領域を定義します。 入力されたステートメントは、ネイティブSQLインターフェイスに渡され、次のように処理されます-
- アドレス指定されたデータベースシステムのプログラムインターフェイスに対して有効なすべてのSQLステートメント、特にDDL(データ定義言語)ステートメントをEXECとENDEXECの間にリストできます。
- これらのSQLステートメントは、ネイティブSQLインターフェイスからデータベースシステムにほとんど変更されずに渡されます。 構文規則、特にデータベースオブジェクトの大文字と小文字を区別する規則は、データベースシステムによって指定されます。
- 構文で個々のステートメントを区切ることができる場合、EXECとENDEXECの間に多くのネイティブSQLステートメントを含めることができます。
- SAP固有のネイティブSQL言語要素は、EXECとENDEXECの間に指定できます。 これらのステートメントは、ネイティブSQLインターフェースからデータベースに直接渡されませんが、適切に変換されます。
例
SPFLIは、フライトスケジュール情報を保存するために使用される標準SAPテーブルです。 これは、バージョンおよびリリースレベルに応じてR/3 SAPシステム内で使用できます。 SE11やSE80などの関連SAPトランザクションにテーブル名SPFLIを入力すると、この情報を表示できます。 これらの2つのトランザクションを使用して、このデータベーステーブルに含まれるデータを表示することもできます。
REPORT ZDEMONATIVE_SQL.
DATA: BEGIN OF wa,
connid TYPE SPFLI-connid,
cityfrom TYPE SPFLI-cityfrom,
cityto TYPE SPFLI-cityto,
END OF wa.
DATA c1 TYPE SPFLI-carrid VALUE 'LH'.
EXEC SQL PERFORMING loop_output.
SELECT connid, cityfrom, cityto
INTO :wa
FROM SPFLI
WHERE carrid = :c1
ENDEXEC.
FORM loop_output.
WRITE:/wa-connid, wa-cityfrom, wa-cityto.
ENDFORM.
上記のコードは、次の出力を生成します-
0400 FRANKFURT NEW YORK
2402 FRANKFURT BERLIN
0402 FRANKFURT NEW YORK