IF sy-tcode = 'MB1B' 语句在选择中被巧妙地忽略
IF sy-tcode = 'MB1B' statement being subtly ignored in selection
这个让我很困惑。
我对 MB1B 进行了增强,我希望它的更改在 MB1B 和 MI09 上可见,并且它正在运行。然而,我试图阻止这些变化出现在不同的交易中(例如 IH08、IE05、IQ09)。我所做的是用 if 语句包围我所有的增强代码,如下所示:
IF sy-tcode = 'MB1B' OR sy-tcode = 'MI09'.
INCLUDE z_pallet_selopt.
ENDIF.
然而,当我 运行 IH08 时,调试器将到达这一点并继续并包括 z_pallet_selopt。
所以我会在这里,然后按 F5...
你瞧,它直接跳到这里。
在第二个屏幕截图中,您可以看到相同的 IF 语句。如果我从那个点按 F5,它会直接跳出(或者看起来是这样),但是当程序完成执行并显示选择屏幕时,选择字段仍然可见。我所做的唯一更改是这些 IF 语句,它们都是相同的,但有趣的是,它确实围绕将 S_PALLET 的标题更改为 Pallet 的代码块工作。
我尝试过的事情:
- 如果我注释掉这些 IF 语句中的所有内容,该字段将
不在那里,所以我知道它不知何故进入那里。
- 完全退出 SAP GUI 和 re-entering(以防缓存错误)。
感谢您的宝贵时间。
以下解决了我的问题:
在AT SELECTION-SCREEN OUTPUT.之后的增强点中,我插入了以下代码:
" If I'm not being executed from MB1B and MI09, hide myself
IF sy-tcode <> 'MB1B' AND sy-tcode <> 'MI09'.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'PLT'.
SCREEN-ACTIVE = '0'.
MODIFY SCREEN.
CONTINUE.
ENDIF.
ENDLOOP.
ENDIF.
对于我希望隐藏的特定选择屏幕选项:
s_pallet for ausp-atwrt MODIF ID PLT.
感谢 Gert Beukema 和 this helpful thread。我的问题是尝试在选择屏幕区域中使用条件语句,但这不起作用。
选择屏幕中没有 IF 语句之类的东西。发生的事情是 include 包含了你的新 SELECT-OPTION 并且你已经注意到 IF 被忽略了。
你可以做的是在 AT SELECTION-SCREEN OUTPUT 事件中添加逻辑来抑制你新添加的 SELECT-OPTION。
这个让我很困惑。
我对 MB1B 进行了增强,我希望它的更改在 MB1B 和 MI09 上可见,并且它正在运行。然而,我试图阻止这些变化出现在不同的交易中(例如 IH08、IE05、IQ09)。我所做的是用 if 语句包围我所有的增强代码,如下所示:
IF sy-tcode = 'MB1B' OR sy-tcode = 'MI09'.
INCLUDE z_pallet_selopt.
ENDIF.
然而,当我 运行 IH08 时,调试器将到达这一点并继续并包括 z_pallet_selopt。
所以我会在这里,然后按 F5...
你瞧,它直接跳到这里。
在第二个屏幕截图中,您可以看到相同的 IF 语句。如果我从那个点按 F5,它会直接跳出(或者看起来是这样),但是当程序完成执行并显示选择屏幕时,选择字段仍然可见。我所做的唯一更改是这些 IF 语句,它们都是相同的,但有趣的是,它确实围绕将 S_PALLET 的标题更改为 Pallet 的代码块工作。
我尝试过的事情:
- 如果我注释掉这些 IF 语句中的所有内容,该字段将 不在那里,所以我知道它不知何故进入那里。
- 完全退出 SAP GUI 和 re-entering(以防缓存错误)。
感谢您的宝贵时间。
以下解决了我的问题:
在AT SELECTION-SCREEN OUTPUT.之后的增强点中,我插入了以下代码:
" If I'm not being executed from MB1B and MI09, hide myself
IF sy-tcode <> 'MB1B' AND sy-tcode <> 'MI09'.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'PLT'.
SCREEN-ACTIVE = '0'.
MODIFY SCREEN.
CONTINUE.
ENDIF.
ENDLOOP.
ENDIF.
对于我希望隐藏的特定选择屏幕选项:
s_pallet for ausp-atwrt MODIF ID PLT.
感谢 Gert Beukema 和 this helpful thread。我的问题是尝试在选择屏幕区域中使用条件语句,但这不起作用。
选择屏幕中没有 IF 语句之类的东西。发生的事情是 include 包含了你的新 SELECT-OPTION 并且你已经注意到 IF 被忽略了。
你可以做的是在 AT SELECTION-SCREEN OUTPUT 事件中添加逻辑来抑制你新添加的 SELECT-OPTION。