SAPABAP-ネイティブ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 / 3SAPシステム内で使用できます。この情報は、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