在某个字段的值发生更改后,如何将某个字段更改为必填字段?

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成为义务。

先谢谢了。

Józ*_*zai 5

我在我更改的行中添加了注释。

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)