这个让我非常难过。
我对MB1B做了一个改进,我希望它的变化在MB1B和MI09上可见,这是有效的。但是,我试图阻止这些更改出现在不同的交易中(例如IH08,IE05,IQ09)。我所做的是用if语句包围我的所有增强代码,如下所示:
IF sy-tcode = 'MB1B' OR sy-tcode = 'MI09'.
INCLUDE z_pallet_selopt.
ENDIF.
然而,当我运行IH08时,调试器将到达这一点并继续包含z_pallet_selopt。
在第二个屏幕截图中,您可以看到相同的IF语句。如果我从那一点起F5,它将直接跳过(或者看起来如此),但是当程序完成执行并且选择屏幕显示时,选择字段仍然可见。我所做的唯一改变是这些IF语句,它们都是相同的,但有趣的是,它确实可以解决将S_PALLET标题更改为Pallet的代码块。
我尝试过的事情:
感谢您的时间。
在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。我的问题是尝试在选择屏幕区域中使用条件语句,这不起作用。
答案 0 :(得分:4)
选择屏幕中没有IF语句。发生的事情是include包括你的新SELECT-OPTION,并且你已经注意到忽略了IF。
您可以做的是在AT SELECTION-SCREEN OUTPUT事件中添加逻辑以禁止新添加的SELECT-OPTION。