2020-08-17 03:07发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我想在选择选项中排除一些值。目前,我使用的是标准选择选项。
select-options:s_type FOR bkpf-blart。
如果我想排除s_type中的值,例如'KF'和'KI',以便用户不能选择这两个值。 怎么做? 谢谢。
如果只想使报表明确排除那些值,则主要有两种可能性(请参阅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)所述退出或添加排除项 " ... 万一。 " ...
让我们知道您的具体要求,以防万一您仍然不确定如何实现它。
在他的回答中,迈克尔 建议下面的代码。是您需要的还是您的问题不同?
SELECT * FROM bkpf INTO TABLE mytable 在......我的限制 AND blart IN s_type 并且不加入('KF','KI')。
ricky luo ,
您必须使用NOT IN关键字,下面的代码供参考。
SELECT * 来自vbak 插入表@DATA(lt_vbak) vbeln不在@s_vbeln中。
您还可以要求用户直接在Select-option中输入要排除的值,如下面的屏幕快照所示。 您无需为此明确编写任何代码,系统将直接使用。
此致我建议不要使用NOT IN关键字,因为它会使逻辑更加复杂,因此我建议不要使用NOT IN关键字。 如果可能的话,请始终使用正条件,因为这样会使读取代码变得更加容易。
在这种情况下,可以像往常一样使用IN,但用负值填充SELECT-OPTIONS变量( SIGN = E)。
最多设置5个标签!
如果只想使报表明确排除那些值,则主要有两种可能性(请参阅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)。
这样,报表将不会选择/处理这些值,但用户对此一无所知。
B2。排除值并向用户提供反馈
您还可以提醒用户不要使用值'KF'和'KI'。
让我们知道您的具体要求,以防万一您仍然不确定如何实现它。
在他的回答中,迈克尔 建议下面的代码。是您需要的还是您的问题不同?
ricky luo ,
您必须使用NOT IN关键字,下面的代码供参考。
您还可以要求用户直接在Select-option中输入要排除的值,如下面的屏幕快照所示。 您无需为此明确编写任何代码,系统将直接使用。
此致我建议不要使用NOT IN关键字,因为它会使逻辑更加复杂,因此我建议不要使用NOT IN关键字。 如果可能的话,请始终使用正条件,因为这样会使读取代码变得更加容易。
在这种情况下,可以像往常一样使用IN,但用负值填充SELECT-OPTIONS变量( SIGN = E)。
亲切的问候,Mateusz
一周热门 更多>