とりわけ、フィールド、DATS タイプにRESB
基づいてテーブルからデータを取得するプログラムがあります。bdter
選択画面で、ユーザーは範囲を指定するか、標準範囲 (月初から今日) を使用します。
ただし、日付用に作成した選択オプションが入力されていない場合 (ユーザーが日付範囲を入力していない場合) に再利用しようとすると、この作業領域への変更が認識されないようです。私のselect文でそれを使用してください。
関連するコード セグメントが続きます。いくつかのテストの後、次のように結論付けました。
ユーザーによって変更されず、その後コードで設定されない場合
s_bdter
、レコードはフィルタリングされませんユーザーによって変更された場合
s_bdter
、レコードは正しくフィルタリングされますs_bdter
ユーザーによって変更され、その後コードで変更された場合、レコードは正しくフィルタリングされますSELECT-OPTIONS: s_bdter FOR ls_itab-bdter MODIF ID sbd. START-OF-SELECTION. " Set the interval. s_bdter-sign = 'I'. s_bdter-option = 'BT'. s_bdter-low = lc_bdter_start. s_bdter-high = sy-datum + 30. " This select doesn't filter on bdter unless the selection parameter was set by the user. SELECT r~aufnr p~psphi FROM resb AS r INNER JOIN afpo AS o ON o~aufnr = r~aufnr INNER JOIN prps AS p ON p~pspnr = o~projn INTO TABLE lt_resb_ss WHERE r~bdter IN s_bdter.
これは既知の文書化された動作ですか? 独自のRANGE
テーブルを作成して解決しましたが、これは常に行うべきことですか? コードの重複を防ぐために、未設定の選択オプションを再利用する方法はありませんか?