Fro*_*aac 1 abap sap-selection-screens
我正在努力找出如何将选择屏幕上的必填字段更改为必填字段,但我希望它能够根据标记的复选框动态更改。
因此,对于上下文,我有一个程序,在选择屏幕中有两个选项。因此,当我选择第一个复选框时,我希望其中一个字段成为必填字段,当我为程序的其他选项选择另一个复选框时,我不希望该字段过时,因为程序不会使用无论如何,价值所以并不重要。
示例代码:
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: p_sel AS CHECKBOX,
p_num TYPE i.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.
PARAMETERS: p_del AS CHECKBOX,
p_num2 TYPE i.
SELECTION-SCREEN END OF BLOCK b2.
"I want to do something like
INITIALIZATION.
LOOP AT SCREEN.
IF SCREEN-name = p_del AND p_del = abap_true.
screen-required = 2.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用
因此,当我选择时p_del,我想p_num2成为义务。
先谢谢了。
我在我更改的行中添加了注释。
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: p_sel AS CHECKBOX USER-COMMAND uc01, " USER-COMMAND technicall necessary that SAP recognises the checkbox click
p_num TYPE i MODIF ID num. " MODIF ID 'NUM' will be used later
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.
PARAMETERS: p_del AS CHECKBOX,
p_num2 TYPE i.
SELECTION-SCREEN END OF BLOCK b2.
AT SELECTION-SCREEN OUTPUT. " Use this event (not INITIALIZATION)
LOOP AT SCREEN.
IF screen-group1 EQ 'NUM'. "MODIF ID used here to turn required on/off
IF p_sel EQ abap_true. " If checkbox is checked
screen-required = '1'.
ELSE.
screen-required = '0'.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
Run Code Online (Sandbox Code Playgroud)