我希望在单击单选按钮时打开选择选项

2020-08-15 00:28发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


选择屏幕上有2个单选按钮。 然后选择出现的选项,我将输入信息并在ALV上显示。 我希望为两个按钮打开不同的选择选项。

定义:

参数:p_rad1 RADIOBUTTON GROUP rad1默认'X'用户命令密码,
              p_rad2 RADIOBUTTON GROUP rad1。

 SELECT-OPTIONS:so_lifnr for lfa1-lifnr没有间隔,没有扩展,
                 so_kunnr FOR kna1-kunnr没有间隔,没有扩展,
                 so_bkr_l for lfb1-bukrs没有间隔,没有扩展,
                 so_bkr_k for knb1-bukrs无间隔,无扩展。

我要 p_rad1 SO_KUNNR SO_KUNNR SO_LIFNR SO_BKR_L p_rad2 。 我这样写:

在屏幕上环视。
     IF屏幕名称CS'SO_LIFNR'。
        如果不是p_rad1是INITIAL。
          屏幕激活= 1。
        其他。
          屏幕有效= 0。
        万一。
        修改屏幕。
     ELSEIF屏幕名称CS'SO_BKR_L'。
        如果不是p_rad1是INITIAL。
          屏幕激活= 1。
        其他。
          屏幕有效= 0。
        万一。
        修改屏幕。
     ELSEIF屏幕名称CS'SO_KUNNR'。
        如果不是p_rad2是INITIAL。
          屏幕激活= 1。
        其他。
          屏幕有效= 0。
        万一。
        修改屏幕。
     ELSEIF屏幕名称CS'SO_BKR_K'。
        如果不是p_rad2是INITIAL。
          屏幕激活= 1。
        其他。
          屏幕有效= 0。
        万一。
        修改屏幕。
     万一。
   ENDLOOP。

但是它给了我这样的输出。 它可以正常工作,但是此屏幕是错误的:

我希望它看起来像这个例子一样分开。 两个单选按钮分别显示图像。

对于p_rad1:

对于p_rad2:

我该怎么做?

(58.2 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


选择屏幕上有2个单选按钮。 然后选择出现的选项,我将输入信息并在ALV上显示。 我希望为两个按钮打开不同的选择选项。

定义:

参数:p_rad1 RADIOBUTTON GROUP rad1默认'X'用户命令密码,
              p_rad2 RADIOBUTTON GROUP rad1。

 SELECT-OPTIONS:so_lifnr for lfa1-lifnr没有间隔,没有扩展,
                 so_kunnr FOR kna1-kunnr没有间隔,没有扩展,
                 so_bkr_l for lfb1-bukrs没有间隔,没有扩展,
                 so_bkr_k for knb1-bukrs无间隔,无扩展。

我要 p_rad1 SO_KUNNR SO_KUNNR SO_LIFNR SO_BKR_L p_rad2 。 我这样写:

在屏幕上环视。
     IF屏幕名称CS'SO_LIFNR'。
        如果不是p_rad1是INITIAL。
          屏幕激活= 1。
        其他。
          屏幕有效= 0。
        万一。
        修改屏幕。
     ELSEIF屏幕名称CS'SO_BKR_L'。
        如果不是p_rad1是INITIAL。
          屏幕激活= 1。
        其他。
          屏幕有效= 0。
        万一。
        修改屏幕。
     ELSEIF屏幕名称CS'SO_KUNNR'。
        如果不是p_rad2是INITIAL。
          屏幕激活= 1。
        其他。
          屏幕有效= 0。
        万一。
        修改屏幕。
     ELSEIF屏幕名称CS'SO_BKR_K'。
        如果不是p_rad2是INITIAL。
          屏幕激活= 1。
        其他。
          屏幕有效= 0。
        万一。
        修改屏幕。
     万一。
   ENDLOOP。

但是它给了我这样的输出。 它可以正常工作,但是此屏幕是错误的:

我希望它看起来像这个例子一样分开。 两个单选按钮分别显示图像。

对于p_rad1:

对于p_rad2:

我该怎么做?

(58.2 kB)
付费偷看设置
发送
9条回答
一只江湖小虾
1楼 · 2020-08-15 01:05.采纳回答

根据最新评论和提供的完整代码,总结问题的解决方案( https://answers .sap.com/answers/13097369/view.html ):

问题是:

  • 在执行自定义程序时,
  • (1)ALV 1立即显示,而不是选择屏幕,
  • (2),离开ALV +选择ALV 2时,出现短暂的转储GETWA_NOT_ASSIGNED

原因是 :

  • (1)由于在选择屏幕(AT SELECTION-SCREEN OUTPUT)的PBO中定义了ALV显示的代码,因此会立即显示ALV 1
  • ( 2)之所以发生短转储,是因为在尝试显示ALV 2时,没有清除ALV 1的字段目录,因此ALV显示无法在内部表中找到字段。

解决方法是:

  • (1)仅在显示选择屏幕之后,并且在按F8(执行)之后,通过将ALV代码移动到偶数内,才显示ALV。 t START-OF-SELECTION。
  • (2)在向其添加行之前清除ALV字段目录(CLEAR IT_FCAT)。
大道至简
2楼-- · 2020-08-15 01:10

如果您使用真实姓名而不是诸如" concultant grl "之类的匿名名称(以及拼写错误),则可以提供更多帮助。

huskylover
3楼-- · 2020-08-15 01:04

嗨,

尝试下面的代码

"在屏幕上环绕"。

 如果p_rad1 EQ'X'。
     如果屏幕名称='SO_KUNNR'或屏幕名称='SO_BKR_K'。
 屏幕激活= 1。
             其他。
                 屏幕激活= 0。
 万一。
      修改屏幕。
 ELSEIF P_RAD2 EQ'X'。
     如果屏幕名称='SO_LIFNR'或屏幕名称='SO_BKR_L'。
 屏幕激活= 1。
             其他。
                 屏幕激活= 0。
 万一。
      修改屏幕。


 万一。
            
 结局。
 
SAP德到
4楼-- · 2020-08-15 01:09

对不起,但是您的代码在我的系统上可以运行:

参数:p_rad1 RADIOBUTTON GROUP rad1默认'X'用户命令设置,
              p_rad2 RADIOBUTTON GROUP rad1。
 桌子吓人。
 SELECT-OPTIONS:so_lifnr适用于疤痕较深的NO INTERVALS NO-EXTENSION,
                 so_kunnr用于疤痕累累的无间隔无延期,
                 so_bkr_l适用于疤痕较尖的NO INTERVALS NO-EXTENSION,
                 so_bkr_k用于疤痕累累的无间隔无延期。


 选择屏幕输出时。
   环视屏幕。
     IF屏幕名称CS'SO_LIFNR'。
       如果不是p_rad1是INITIAL。
         屏幕激活= 1。
       其他。
         屏幕有效= 0。
       万一。
       修改屏幕。
     ELSEIF屏幕名称CS'SO_BKR_L'。
       如果不是p_rad1是INITIAL。
         屏幕激活= 1。
       其他。
         屏幕有效= 0。
       万一。
       修改屏幕。
     ELSEIF屏幕名称CS'SO_KUNNR'。
       如果不是p_rad2是INITIAL。
         屏幕激活= 1。
       其他。
         屏幕有效= 0。
       万一。
       修改屏幕。
     ELSEIF屏幕名称CS'SO_BKR_K'。
       如果不是p_rad2是INITIAL。
         屏幕激活= 1。
       其他。
         屏幕有效= 0。
       万一。
       修改屏幕。
     万一。
   ENDLOOP。
三十六小时_GS
5楼-- · 2020-08-15 01:05

使用group4代替名称。

参数:P_RAD1 RADIOBUTTON GROUP RAD1默认'X'用户命令密码," 000
              P_RAD2 RADIOBUTTON GROUP RAD1。  " 001


 选择选项:LFA1-LIFNR的SO_LIFNR无间隔无扩展名," 002
                 SO_KUNNR用于KNA1-KUNNR,无间隔,无扩展," 003
                 SO_BKR_L FOR LFB1-BUKRS NO INTERVALS NO-EXTENSION," 004
                 SO_BKR_K用于KNB1-BUKRS无间隔无扩展。  " 005


 选择屏幕输出时。
   如果P_RAD1 EQ ABAP_ON。


     环视屏幕。
       如果是SCREEN-GROUP4 EQ'003'或SCREEN-GROUP4 EQ'005'。
         屏幕输入= 0。
         屏幕不可见= 1。
         修改屏幕。
       万一。
     结局。


   万一。


   如果P_RAD2 EQ ABAP_ON。


     环视屏幕。
       如果是SCREEN-GROUP4 EQ'002'或SCREEN-GROUP4 EQ'004'。
         屏幕输入= 0。
         屏幕不可见= 1。
         修改屏幕。
       万一。
     结局。


   万一。
 
Climb_Ma
6楼-- · 2020-08-15 01:11

我尝试过,但结果相同。

感谢重播。

当学会了学习
7楼-- · 2020-08-15 00:55

Sandra Rossi 是的, 它的工作原理是这样,但是我为两个单选按钮填充了两个不同的ALV表。 默认情况下选中的单选按钮首先会正常运行。 当我选择其他单选按钮时,会出现错误。 我想先看到选择屏幕,然后单击任何单选按钮,然后转到列表屏幕。 仅仅此代码还不够。

感谢回复。

一周热门 更多>