Abap 如果使用选项卡式块,则忽略强制字段检查

Abap 如果使用选项卡式块,则忽略强制字段检查,abap,Abap,我有以下程序 REPORT zz_tab_strip_obligatory. SELECTION-SCREEN BEGIN OF TABBED BLOCK tab FOR 20 LINES. SELECTION-SCREEN TAB (54) tab1 USER-COMMAND tab1 DEFAULT SCREEN 100. SELECTION-SCREEN TAB (54) tab2 USER-COMMAND tab2 DEFAULT SCREEN 200. SELECTION-SCREE

我有以下程序

REPORT zz_tab_strip_obligatory.

SELECTION-SCREEN BEGIN OF TABBED BLOCK tab FOR 20 LINES.
SELECTION-SCREEN TAB (54) tab1 USER-COMMAND tab1 DEFAULT SCREEN 100.
SELECTION-SCREEN TAB (54) tab2 USER-COMMAND tab2 DEFAULT SCREEN 200.
SELECTION-SCREEN END OF BLOCK tab.

SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.
PARAMETERS:
  p1 TYPE i.
SELECTION-SCREEN END OF SCREEN 100.

SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.
PARAMETERS:
  p2 TYPE i OBLIGATORY.
SELECTION-SCREEN END OF SCREEN 200.

INITIALIZATION.
  tab1 = 'Tab1'.
  tab2 = 'Tab2'.
第一个选项卡没有必填字段。另一方面,第二个是

我遇到的问题是,如果用户不转到第二个选项卡,而不是用F8立即启动程序,则根本不会执行参数
p2
的强制检查。看起来所有的事件,如选择屏幕上的
,都只对显示的子屏幕的当前选项卡ergo执行


有没有办法解决这个问题?我目前的解决方案是可悲地摆脱
强制
关键字,并在
开始选择后进行检查(我真正的程序有许多选项卡)。

我认为没有直接解决选择屏幕强制问题的方法。这是一个类似的话题。但是,可以将所有必需参数存储在内部表中。在选择开始时,循环浏览并检查它们

DATA: BEGIN OF gt_obl_fields OCCURS 0,
    fname TYPE char10,
    ftext type char50,
END OF gt_obl_fields.

INITIALIZATION.
 tab1 = 'Tab1'.
 tab2 = 'Tab2'.

 gt_obl_fields-fname = 'P2'.
 gt_obl_fields-ftext = text-001.
 APPEND gt_obl_fields.
 "...
START-OF-SELECTION.
  LOOP AT gt_obl_fields .
    ASSIGN (gt_obl_fields-fname) TO FIELD-SYMBOL(<fs_field>).
    IF <fs_field> IS ASSIGNED AND <fs_field> IS INITIAL..
      CONCATENATE gt_obl_fields-ftext 'field must be filled!' INTO data(lv_message).
      MESSAGE lv_message TYPE 'E'.
    ENDIF.
  ENDLOOP.
数据:gt_obl_字段的开始出现在0,
fname类型char10,
ftext类型char50,
gt_obl_字段结束。
初始化。
tab1=‘tab1’。
tab2='tab2'。
gt_obl_fields-fname='P2'。
gt_obl_fields-ftext=text-001。
追加gt_obl_字段。
"...
开始选择。
循环gt_obl_字段。
将(gt_obl_fields-fname)分配给FIELD-SYMBOL()。
如果已分配且为首字母。。
将gt_obl_fields-ftext“必须填写字段!”连接到数据中(lv_消息)。
消息lv_消息类型“E”。
恩迪夫。
结束循环。

谢谢你的回答,但这正是我作为一个解决办法实际正在做的。很难相信,如果不去除
强制性的
标记,就无法以其他更整洁的方式处理这一问题。