次の方法で共有


SAP の EXECQUERY ステートメントの構文

SAP GUI を使用してクエリを作成するには、クエリを実行するテーブル、結果セットに含める列と並べ替え順序などをグラフィカルに選択します。SAP 用データ プロバイダーを使用すると、ユーザーは、SAP システムで定義されたクエリを実行するために使用できる EXECQUERY 操作を提供することで、ADO.NET アプリケーションからこのようなクエリを実行できます。

DATA Provider for SAP は、カスタム RFC Z_EXECUTE_SAP_QUERYを使用して、SAP システムで定義済みのクエリを実行します。 カスタム RFC は、SAP システムで定義されている標準 RFC であるRSAQ_REMOTE_QUERY_CALLを実行します。 そのため、EXECQUERY 操作を使用する前に、クエリを実行する SAP システムにカスタム RFC をインストールする必要があります。 カスタム RFC をインストールする方法については、「 Data Provider for SAP のカスタム RFC をインストールする」を参照してください。

このトピックでは、EXECQUERY 操作の構文、および EXECQUERY 操作に関連するその他の有用な情報について説明します。

EXECQUERY ステートメントの構文

次のセクションでは、DATA Provider for SAP に対して EXECQUERY 操作を使用するための文法仕様について説明します。

EXECQUERY <QueryName> @USERGROUP='usergroup' [, @WORKSPACE='X'] [, @VARIANT='variant']   
[, @P1='<value 1>’] [, @P2='<value 2>'] ... [, @Pn = '<value n>'] [, @P1!='<value 3>'] [, @P1 > '<value 4>'] [, @P1 <= '<value 2>']   
[, NOT @P1 = '<value 2>'] [, NOT @P1 != '<value 2>'] [, NOT @P1 > '<value 2>']   
[, @P1 BETWEEN '<value 1>' AND '<value 2>'] [, NOT @P1 BETWEEN '<value 1>' AND '<value2>’]  
[OPTION 'USEORIGINALCOLUMNNAMES']  
  

各値の説明:

  • <QueryName> は、SAP システムで定義されているクエリの名前です。

  • USERGROUP は、クエリが定義されているユーザー グループを参照します。 これは必須パラメーターです。

  • WORKSPACE は、クエリが定義されているワークスペースを参照します。 SAP には、Standard と Global という 2 つのワークスペースがあります。 Standard ワークスペースを指定する空の領域を指定します。 を指定 X してグローバル ワークスペースを指定します。 既定値は空の領域です。

  • VARIANT は、SAP クエリの実行中に指定できる、保存された選択基準のセットを参照します。 たとえば、バリアントを使用してクエリの既定値を指定できます。

  • @Pn は、SAP クエリ定義の n番目 の選択フィールドを参照します。

  • USEORIGINALCOLUMNNAMES は、プロバイダーが SAP システムに存在する DataSet 内の元の列名を使用するかどうかを指定します。 既定では、プロバイダーは SAP クエリで定義されているフレンドリ名を使用します。 ただし、クエリ内のフレンドリ名が一意でない場合、ADO.NET クライアントは DataSet からデータを読み取っている間にエラーをスローします。 このようなシナリオでは、プロバイダーが DataSet で元の列名を使用することを示す USEORIGINALCOLUMNNAMES オプションを指定する必要があります。

    重要

    OPTION キーワード (keyword)の値は、常に単一引用符 ("USEORIGINALCOLUMNNAMES" など) 内で指定する必要があります。

注意

SAP クエリのパラメーターを EXECQUERY 構文に変換する方法については、「 SAP クエリ パラメーターを EXECQUERY コマンドに変換する」を参照してください。

EXECQUERY 構文のフレーミング

SAP クエリを実行するための EXECQUERY 操作のフレーミング構文は、SAP で定義されている各パラメーター値を含め、SAP システムでのクエリの定義方法によって異なります。 EXECQUERY 構文をフレーム化して SAP クエリを実行する方法については、「 SAP クエリ パラメーターを EXECQUERY コマンドに変換する」を参照してください。

EXECQUERY 操作の使用に関するその他の考慮事項

このセクションでは、DATA Provider for SAP で EXECQUERY ステートメントを使用する場合に留意する必要がある点の一覧を示します。

  • USERGROUP、WORKSPACE、および VARIANT に指定された値は、標準の SAP RFC RSAQ_REMOTE_QUERY_CALLにそのまま渡されます。 Data Provider for SAP では、これらのパラメーターに指定された値は検証されません。

  • EXECQUERY 操作によって返されるすべての値は、文字列型です。

  • クエリ名、ユーザー グループ、ワークスペース、バリアントのキーワードでは、大文字と小文字は区別されません。 ただし、パラメーター名は常に、 などの@P1@P2大文字にする必要があります。例えば:

    EXECQUERY xyz USERGROUP=’mygrp’, NOT @P1= 'somevalue'  
    

    上の例と下の例は同じものです。

    EXECQUERY xyz uSERgROUP=’mygrp’, NOT @P1= 'somevalue'  
    
  • EXECQUERY でサポートされる演算子は>、、、<>=、=、<=、!=、NOT、BETWEEN です。

  • ワイルドカード文字は EXECQUERY 操作ではサポートされていません。 たとえば、次のステートメントは、期待される出力を提供します。

    EXECQUERY ZTEST3 @USERGROUP='SYSTQV000024',  @P1 = '0000003262',@P2 = 'La Quinta Hotel & Towers'  
    

    ただし、ワイルドカード文字で実行した場合と同じクエリを実行すると、エラーが発生します。 @P2にワイルドカード文字が使用されていることに注意 してください

    EXECQUERY ZTEST3 @USERGROUP='SYSTQV000024',  @P1 = '0000003262',@P2 = '*&*'  
    

    この例では、データが見つからなかったことを示すエラーが表示される場合があります。 これは、クエリが 文字列として '*&*' を 検索し、アスタリスク (*) をワイルドカード文字として考慮しないためです。

  • 日付値は常に YYYYMMDD 形式で指定する必要があります。

  • SAP システムでバリアントが定義されているクエリを実行している場合は、コマンドの一部としてバリアントの名前を指定できます。 次に例を示します。

    EXECQUERY myquery @usergroup='mygroup',@variant = 'variant1'  
    

    注意

    SAP システムのクエリに対して既定のバリアントが定義されている場合は、バリアント名を指定する必要はありません。

参照

.NET Framework Data Provider for mySAP Business Suite の使用