假设我有一个带有两个参数的选择屏幕块。我想根据用户在第一个中输入的内容动态填充第二个参数,例如通过查询表来查找参数 1 中关键字段的预期值。
例如,假设我有一个程序对订单号 ( p_aufnr
) 和 WBS 元素 ( p_wbs
) 的组合执行某些操作。我可以从 AUFK 表上的 PSPEL 字段中确定其中一个,而不是要求用户提供两者。但是,我仍然想在用户输入订单号后向用户显示此字段,以便他可以验证 WBS 元素是否正确。
我已经设法通过使用AT SELECTION SCREEN ON p_aufnr
事件为p_wbs
. 当用户按下回车时处理此事件。但是,我只能让它工作一次。因此,如果用户输入一个订单号,从检索到的 WBS 元素中意识到他犯了一个错误并对其进行了更改,则第二个参数永远不会更改。即使AT SELECTION SCREEN
在调试器中处理了事件,参数也不会更新。
我不应该在我的场景中使用这个事件吗?如果是这样,我将如何实现这种动态选择屏幕?
忘记添加代码示例。以下报告说明了我的问题:在输入一个值p_netw
并按 Enter 后,p_wbs 将填充值 1。但是,如果您再次按 enter,AT SELECTION-SCREEN ON
例程将被处理,但 p_wbs 的值不会更新,lv_count
而是。
DATA: lv_count TYPE i.
SELECTION-SCREEN BEGIN OF BLOCK main.
PARAMETERS: p_netw TYPE aufnr OBLIGATORY MODIF ID auf.
PARAMETERS: p_wbs TYPE i MODIF ID psp.
SELECTION-SCREEN END OF BLOCK main.
AT SELECTION-SCREEN ON p_netw.
ADD 1 TO lv_count.
p_wbs = lv_count.
START-OF-SELECTION.
PERFORM main.
FORM main.
WRITE: 'The value reached ', lv_count.
ENDFORM.