0

私はABAPの初心者で、ABAPの関数モジュールを学ぼうとしています。関数を作成し、 IMPORT と EXPORT,TABLES のパラメーターを指定します。また、ユーザーが望ましくないものを作成している間、ユーザーに例外を与えたいと考えています。

したがって、次の 2 つのインポート パラメータがあります。これらの行は、インポート フィールドとエクスポート フィールドの列項目です。

i_x TYPE xx
i_type TYPE char2

私は1つのテーブルパラメータを持っています:

et_xx_sorted LIKE xx 'this is an exception'

私は1つの例外行を持っています:

MAX_RECORD 'There is no record for this.'

私のソースコードは次のとおりです。

 SELECT * INTO TABLE et_xx_sorted[] FROM xx WHERE yy = i_x.

ユーザーが選択した境界線よりも最大の入力を i_x に与えるときに、例外行を使用したいと思います。1 から 30 までの数字があることを意味しますが、ユーザーが 1 から 20 を与えることができるようにしたいのです。20 から 30 を与えることはできません。また、20 から 30 への入力がある場合、プログラムは MAX_RECORD 例外を与えて言う必要があります。ユーザーに「これに関する記録はありません。」

私が使用した:

IF sy-subrc <> 0.
    MESSAGE 'No record' TYPE 'E' RAISING MAX_RECORD.
  ENDIF.

しかし、これは私が望むものではありません。20 ~ 30 の行があるため、このコード ブロックはボーダー アイテムでは機能しません。1 ~ 30 行ありますが、ユーザーは 1 ~ 20 行しか見ることができません。また、20 ~ 30 行を指定した場合、プログラムは、私が EXCEPTIONS フィールドに決定した例外を使用する必要があります。

4

1 に答える 1

2

あなたの発言から私が理解したのは、あなたはこのようなことをすることでそれを管理できると思います。

IF i_x LT 20.  "less than

   SELECT * INTO TABLE et_xx_sorted[] FROM xx WHERE yy = i_x.

ELSEIF i_x GT 20.  "greater than

   MESSAGE 'No record' TYPE 'E' RAISING MAX_RECORD.

ENDIF.

お役に立てば幸いです。

タルハ

于 2012-06-20T13:57:22.270 に答える