3

エラーチェックをしようとしています。ユーザーが存在しない航空会社コードを入力すると、ページにエラー メッセージが表示されます。問題は、BAPI_FLIGHT_GETLIST BAPI を使用していて、EXECUTE_BAPI_FLIGHT_GETLIST メソッドを実行して sy-subrc 値を取得しようとすると、常に 0 になるということです。私のコードは次のようになります。

...
 data lo_componentcontroller type ref to ig_componentcontroller .
    lo_componentcontroller =   wd_this->get_componentcontroller_ctr( ).

      lo_componentcontroller->execute_bapi_flight_getlist(
       airline = lv_query                          " bapisflkey-airlineid
*       destination_from =                  " bapisfldst
*       destination_to =                    " bapisfldst
*       max_rows =                          " bapisflaux-bapimaxrow
      ).

  if sy-subrc <> 0.
          wd_this->error_check(
          ).
  endif.

キャリア コー​​ドが存在しない場合でも、エラー メッセージは表示されません。メソッド error_check( ) も正常に動作しています。これは、呼び出しの前に if ステートメントを使用すると、メッセージが表示されるためです。私が自分自身を説明していることを願っています。ありがとうございました。

4

1 に答える 1

5

その BAPI は sy-subrc を設定しません。すべての BAPI と同様に、リターン テーブルを使用します。

これが BAPI 署名です。

    FUNCTION BAPI_FLIGHT_GETLIST.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"  IMPORTING
*"     VALUE(AIRLINE) LIKE  BAPISFLKEY-AIRLINEID OPTIONAL
*"     VALUE(DESTINATION_FROM) LIKE  BAPISFLDST STRUCTURE  BAPISFLDST
*"       OPTIONAL
*"     VALUE(DESTINATION_TO) LIKE  BAPISFLDST STRUCTURE  BAPISFLDST
*"       OPTIONAL
*"     VALUE(MAX_ROWS) LIKE  BAPISFLAUX-BAPIMAXROW OPTIONAL
*"  TABLES
*"      DATE_RANGE STRUCTURE  BAPISFLDRA OPTIONAL
*"      EXTENSION_IN STRUCTURE  BAPIPAREX OPTIONAL
*"      FLIGHT_LIST STRUCTURE  BAPISFLDAT OPTIONAL
*"      EXTENSION_OUT STRUCTURE  BAPIPAREX OPTIONAL
*"      RETURN STRUCTURE  BAPIRET2 OPTIONAL
*"----------------------------------------------------------------------

テーブルRETURNには、sy-subrc ではなく、成功またはエラーのメッセージが表示されます。

于 2012-09-05T19:10:13.163 に答える