繁体   English   中英

具有动态可见性的选择屏幕中的单选按钮运行时错误

[英]Radiobutton runtime error in selection screen with dynamic visibility

在设置具有控件动态可见性的选择屏幕时,我遇到了意外的运行时错误DYNP_TOO_MANY_RADIOBUTTONS_ON 将示例代码简化为以下可重现的示例:

REPORT ztest1.

SELECTION-SCREEN BEGIN OF BLOCK category.
PARAMETER:
  rb_cata   RADIOBUTTON GROUP cat USER-COMMAND selection_changed DEFAULT 'X',
  rb_catb   RADIOBUTTON GROUP cat.
SELECTION-SCREEN END OF BLOCK   category.
SELECTION-SCREEN BEGIN OF BLOCK action.
PARAMETER:
  rb_act1   RADIOBUTTON GROUP act USER-COMMAND selection_changed DEFAULT 'X' MODIF ID act,
  rb_act2   RADIOBUTTON GROUP act.
SELECTION-SCREEN END OF BLOCK   action.

AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    CASE screen-group1.
      WHEN 'ACT'.
        screen-invisible  = COND #( WHEN rb_cata = abap_true THEN 0 ELSE 1 ).
      WHEN OTHERS.
    ENDCASE.
    MODIFY SCREEN.
  ENDLOOP.

选择rb_catb然后重新选择第一个radiobution时,我将运行时error dynp_too_many_radiobuttons_on与注释:

在一组单选按钮中,必须只设置一个字段 - 这意味着必须具有值“X”。 如果不是这种情况,则会出现以下情况之一: - 同时设置了组的多个单选按钮。 此错误会导致应用程序终止并触发您当前正在阅读的短转储。

但我只是改变了按钮的可见性,为什么我会收到与实际活动状态相关的错误?

其原因是未能在MODIF ID按钮组中的所有按钮上设置完全相同的MODIF ID 虽然很难获得精确的屏幕处理逻辑,但似乎需要同时更改单选按钮组 (RBG) 中的所有元素以避免处理问题。 所以在上面的例子中:

rb_act1   RADIOBUTTON GROUP act USER-COMMAND selection_changed DEFAULT 'X' MODIF ID act,
rb_act2   RADIOBUTTON GROUP act MODIF ID act.

我最初怀疑ACTIVEINVISIBLE属性冲突的问题,但这些似乎无关。 如果无法查看可能隐藏在内核中的屏幕处理逻辑,这些控件需要在锁步中更改的实际原因是未知的。 请注意, MODIF ID必须完全相同,在单个 RBG 中这些 ID 的任何混合都将导致此运行时错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM