如何在cl_salv_table中实现F4搜索

2020-09-24 22:31发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好。 我有一个程序,显示由c...

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

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


大家好。 我有一个程序,显示由cl_salv_table显示的列表。 如果我尝试在其中一个字段中使用F4搜索,则不会发生任何事情。

我在论坛上找到了一种解决方案,可以在其上进行F4活动:

数据:P_DDIC类型SALV_S_DDIC_REFERENCE,
       IR_COLUMNS类型参考CL_SALV_COLUMNS_TABLE,
       IR_COLUMN类型参考CL_SALV_COLUMN_TABLE,
       EX_MSG类型参考CX_SALV_NOT_FOUND。
 P_DDIC-TABLE ='TVRO'。
 P_DDIC-FIELD ='VSART'。
 尝试。
   IR_COLUMN?= IR_COLUMNS-> GET_COLUMN(P_DDIC-FIELD)。
   IR_COLUMN-> SET_DDIC_REFERENCE(P_DDIC)。
   IR_COLUMN-> SET_F4(IF_SALV_C_BOOL_SAP => TRUE)。
   将CX_SALV_NOT_FOUND捕获到EX_MSG中。
     MESSAGE EX_MSG类型" I"。
 ENDTRY。
 

但是问题是,您必须对表中的每个字段都使用此代码,但我不喜欢它。 有人知道在cl_salv_table中同时对所有字段使用F4搜索的方法吗? 谢谢。

5条回答
派大星 ヾ
2020-09-24 22:49

如果您输入的数据定义了默认域或搜索帮助,则应自动使用它们。 至少这是我的想法,并且可以肯定它曾经这样工作。 但是,在我当前的(7.5)系统上,行为不是基于域而是基于结构。

示例:

选择*从t000到表@DATA(itab1)。
     cl_salv_table =>工厂(正在导入r_salv_table = DATA(alv)
                              更改t_table = itab1)。
     alv-> display()。  "货币,日期等对搜索有帮助

     选择多行文字,从t000更改为TABLE @DATA(itab2)。
     cl_salv_table =>工厂(正在导入r_salv_table = data(alv2)
                              更改t_table = itab2)。
     alv2-> display()。  "图标,但没有搜索帮助
 

第一个显示具有日期下拉菜单,第二个没有显示日期。

臭虫? 至少,提供下拉图标而不提供功能是一个错误。 我很确定这适用于7.0/1/2,也许有人可以验证这一点?

编辑:我将示例更改为使用更改日期(类型D),因为此表中的货币不是基于WAERS。 但是,您可以使用具有域值列表的任何数据元素来重现它。

一周热门 更多>