如何在选择选项中排除值

2020-08-17 03:07发布

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

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


我想在选择选项中排除一些值。目前,我使用的是标准选择选项。

 select-options:s_type FOR bkpf-blart。  

如果我想排除s_type中的值,例如'KF'和'KI',以便用户不能选择这两个值。 怎么做? 谢谢。

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

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


我想在选择选项中排除一些值。目前,我使用的是标准选择选项。

 select-options:s_type FOR bkpf-blart。  

如果我想排除s_type中的值,例如'KF'和'KI',以便用户不能选择这两个值。 怎么做? 谢谢。

付费偷看设置
发送
3条回答
ZJXianG
1楼 · 2020-08-17 03:55.采纳回答

如果只想使报表明确排除那些值,则主要有两种可能性(请参阅B1。排除背景中的值和B2。排除值并向用户提供反馈)。 范围是功能强大的选择对象,例如 模式和"从-到"选项,因此您不能简单地检查是否明确包含了" KI"或" KF"值,还必须检查是否隐含了" KI"或" KF"值(例如CP K *或BT K和L )

(A)仅显示在F4帮助下对用户可用的值,与(B)仅"处理"对用户可用的值之间也有区别 在您的报告中。

A。 仅显示F4用户可用的值

,因此,如果您还想排除F4值帮助中的值,则(A1。)都必须使用以下命令创建自定义值帮助 编码,并将其与matchcode-object分配给您的s_type,或者(A2。),您可以使用事件在SELECT_SCREEN ON VALUE-REQUEST上为s_type-low(以及s_type- 高)。 对于该事件,您可以将可能的值传递给FM F4IF_INT_TABLE_VALUE_REQUEST,这将为用户打开F4-Help弹出窗口,使他只能选择程序选择的内容。 即使F4帮助不会显示"禁止"值,用户仍然可以输入这些值,这就是为什么您还需要一些B1或B2中所述的实现的原因。

B1。 在后台排除值

在执行报表时将这些值的排除项添加到范围对象中(a),或者您明确不想选择它们,例如 在执行期间从数据库中选择(b)。

这样,报表将不会选择/处理这些值,但用户对此一无所知。

" a) 向范围对象添加值排除
 选择选项:s_type FOR bkpf-blart。
 " ...

 选择结束。  "或"选择开始"
   s_type-sign ='E'。
   s_type-option ='EQ'。
   s_type-low ='KF'。
   清除s_type-high。
   追加s_type。
   s_type-low ='KI'。
   追加s_type。
 " ... 
" b)从数据库选择中明确排除值
 选择选项:s_type FOR bkpf-blart。
 " ...

 选择结束。  "或"选择开始"
   " ...
   选择*从bkpf到表mytable
     在......我的限制
       AND blart IN s_type
       并且不加入('KF','KI')。
   " ... 

B2。排除值并向用户提供反馈

您还可以提醒用户不要使用值'KF'和'KI'。

 select-options:s_type FOR bkpf-blart。
 " ...

 在选择屏幕上。
   如果s_type为'KF'或s_type为'KI'。
     消息"不要在S_TYPE中使用KF和KI" TYPE" I"。
     您也可以遍历s_type来搜索包含这两个内容的范围表达式
     "(如果包含),则将其明确删除,并使其显示在选择屏幕中
     "使用FM DYNP_VALUES_UPDATE

   万一。

 选择结束。  "或"选择开始"
   如果s_type为'KF'或s_type为'KI'。
     按照B1 a)或b)所述退出或添加排除项
     " ...
   万一。
   " ... 

让我们知道您的具体要求,以防万一您仍然不确定如何实现它。

空代码
2楼-- · 2020-08-17 03:52

在他的回答中,迈克尔 建议下面的代码。是您需要的还是您的问题不同?

 SELECT * FROM bkpf INTO TABLE mytable
     在......我的限制
       AND blart IN s_type
       并且不加入('KF','KI')。  
木偶小白
3楼-- · 2020-08-17 04:02

ricky luo ,

您必须使用NOT IN关键字,下面的代码供参考。

 SELECT *
 来自vbak
 插入表@DATA(lt_vbak)
 vbeln不在@s_vbeln中。

您还可以要求用户直接在Select-option中输入要排除的值,如下面的屏幕快照所示。 您无需为此明确编写任何代码,系统将直接使用。

此致

在这种情况下,可以像往常一样使用IN,但用负值填充SELECT-OPTIONS变量( SIGN = E)。

亲切的问候,
Mateusz

一周热门 更多>