!--a11y-->

オープン SQL は、R/3 システムのセントラルデータベースでの操作を実行する一連の ABAP 命令で構成されます。操作結果およびエラーメッセージは、使用中のデータベースシステムには依存しません。オープン SQL はこのように、SAP がサポートするすべてのデータベースシステムに対して同一の構文および意味を提供します。オープン SQL 命令だけを使用する ABAP プログラムは、使用しているデータベースシステムに関係なく R/3 システムで動作します。オープン SQL 命令は、ABAP ディクショナリで登録されたデータベーステーブルにのみ有効です。ABAP ディクショナリでは、異なるデータベーステーブルの列をデータベースビュー ( または省略ビュー) で組み合わせることができます。オープン SQL 命令では、ビューはデータベーステーブルの場合とまったく同じ方法で処理されます。以下のセクションに示したデータベーステーブルへの参照は、同じようにビューに適用できます。
オープン SQL には、以下のキーワードが含まれています。
|
キーワード |
機能 |
|
SELECT |
データベーステーブルからのデータの読込 |
|
INSERT |
データベーステーブルへの行の追加 |
|
UPDATE |
データベーステーブルの行コンテンツの変更 |
|
MODIFY |
データベーステーブルへの行の追加、または既存行のコンテンツの変更 |
|
DELETE |
データベーステーブルからの行の削除 |
|
OPEN CURSOR, |
カーソルによるデータベーステーブルからの行の読込 |
すべてのオープン SQL 命令により、以下の 2 つのシステム項目にリターンコードが入力されます。
キ SY-SUBRC
すべての オープンSQL 命令後、操作が成功した場合はシステム項目SY-SUBRC に値 0 が入力され、成功しなかった場合は 0 以外の値になります。
キ SY-DBCNT
オープン SQL 命令後、システム項目 SY-DBCNT には処理されたデータベース行の数が入力されます。
単一の R/3 システムで、複数の異なる事業領域( 支店など) に対するアプリケーションデータを管理できます。R/3 システムにおける商業的に区分されたこれらの各領域はクライアントと呼ばれ、1 つの番号が付けられます。ユーザが R/3 システムにログオンする際に、クライアントを指定します。それぞれのデータベーステーブルの、アプリケーションデータを含む最初の列はクライアント項目です (MANDT 、クライアントを意味するドイツ語) 。これはテーブルキーの最初の項目でもあります。一般システムテーブルだけがクライアント非依存であり、これらにはクライアント名は含まれません。
デフォルトでは、オープン SQL 命令は自動クライアント処理を使用します。クライアント依存のアプリケーションテーブルにアクセスする命令は、現在のクライアントのデータだけを使用します。オープン SQL 命令の WHERE 句でクライアント項目に対して条件を指定することはできません。この方法で条件を指定すると、構文チェック時にエラーが戻されるか、実行時エラーが発生します。オープン SQL 命令を使用してデータベースの MANDT 項目を上書きすることはできません。作業領域の異なるクライアントを指定すると、それ以上のオープン SQL 命令を処理する前に、ABAP 実行時関連処理によって MANDT 項目が現在の項目に自動的に上書きされます。
オープン SQL 命令でクライアントを指定する必要がある場合は、次のオプションを使用します。
... CLIENT SPECIFIED ....
このオプションはデータベーステーブル名の直後に入力します。このオプションによって自動クライアント処理が無効になり、項目 MANDT を WHERE 句およびテーブル作業領域の両方で使用できるようになります。