Report at选择屏幕输出VS on单选按钮组

Report at选择屏幕输出VS on单选按钮组,report,abap,Report,Abap,我正在写一份报告,其中有两个组“tab”的单选按钮。根据它们的值,我必须将一些屏幕字段设置为“无显示”,否则,请正确显示它们 通过在选择屏幕输出时使用事件,我可以使其完美工作。,但当在radiobutton group tab上的选择屏幕上使用时,它拒绝工作。为了测试一个,我注释掉另一个 这两个事件中的代码完全相同,所以有人能帮我理解这两个事件中的差异,让我明白为什么只有一个事件有效吗 在下面的事件中,只有第二个有效 at selection-screen on radiobutton grou

我正在写一份报告,其中有两个组“tab”的单选按钮。根据它们的值,我必须将一些屏幕字段设置为“无显示”,否则,请正确显示它们

通过在选择屏幕输出时使用事件
,我可以使其完美工作。
,但当在radiobutton group tab上的选择屏幕上使用
时,它拒绝工作。为了测试一个,我注释掉另一个

这两个事件中的代码完全相同,所以有人能帮我理解这两个事件中的差异,让我明白为什么只有一个事件有效吗

在下面的事件中,只有第二个有效

at selection-screen on radiobutton group tab.
  go_controller->modify_screen( ).


at selection-screen output.
  go_controller->modify_screen( ).
它们都调用相同的方法

  method modify_screen.

    loop at screen.

      case  screen-group1.

        when 'TAB'.

          if use_otab = abap_false.
            screen-invisible = 1.
            screen-active    = 0.
            screen-input     = 0.
            p_int            = abap_false.
            p_nat            = abap_false.
            free               p_table[].

          else.
            screen-active    = 1.
            screen-invisible = 0.
            screen-input     = 1.

          endif.

          modify screen.

      endcase.

    endloop.

  endmethod.

通过调试,我看到两个事件都正确到达,但是只有第二个事件有效。

因为它的设计是这样的:是一个“输入后处理”(PAI)事件。PAI旨在对用户操作作出反应。在PAI结束时,确定下一个dynpro(即使它可能与实际相同),然后处理dynpro的“输出前处理”(PBO)。这是为用户准备的屏幕元素。只有在PBO中,
屏幕
表的修改才会影响屏幕元素的可见性或可编辑性

at selection-screen on radiobutton group tab.
  go_controller->modify_screen( ).


at selection-screen output.
  go_controller->modify_screen( ).

因此,在报告中,您应该在选择屏幕输出时使用
来影响参数的可见性或可编辑性,并选择选项。

因为它是这样设计的:是一个“输入后处理”(PAI)事件。PAI旨在对用户操作作出反应。在PAI结束时,确定下一个dynpro(即使它可能与实际相同),然后处理dynpro的“输出前处理”(PBO)。这是为用户准备的屏幕元素。只有在PBO中,
屏幕
表的修改才会影响屏幕元素的可见性或可编辑性


因此,在报告中,您应该在选择屏幕输出时使用
来影响参数的可见性或可编辑性,并选择选项。

你好,rplantiko,太好了!谢谢你的解释,也谢谢桑德拉的文件!完全可以理解的是,只有一个事件(输入前事件)负责实际更新屏幕以“重新显示”它。非常感谢@官方名称是“输出前”(PBO)和“输入后”(PAI),而不是“输入前”;-)你好,rplantiko,太好了!谢谢你的解释,也谢谢桑德拉的文件!完全可以理解的是,只有一个事件(输入前事件)负责实际更新屏幕以“重新显示”它。非常感谢@官方名称是“输出前”(PBO)和“输入后”(PAI),而不是“输入前”;-)