我有一个程序,除其他外,它RESB
根据bdter
字段(DATS 类型)从表中检索数据。在选择屏幕上,用户要么指定一个范围,要么使用一个标准范围(月初-今天)。
但是,如果我尝试在未填写日期的情况下重新使用为日期创建的选择选项(用户未输入日期范围),则当我对此工作区所做的更改似乎无法识别时在我的选择语句中使用它。
相关代码段如下。经过一些测试,我得出结论:
如果
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
表格解决了这个问题,这是你一直应该做的吗?那么有没有办法重新使用未设置的选择选项来防止代码重复?