禁用/启用工具栏上的按钮

2020-08-31 14:45发布

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

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


嗨,

我正在使用新的方法来制作ALV网格-我在工具栏上有一个自定义按钮,名为" DIRECT",但不知道如何禁用它,尝试使用CL_SALV_FUNCTIONS-> remove_function方法,但它会继续返回 例外,说明我使用了错误的呼叫

数据:gt_table类型对cl_salv_table的引用。
   数据:l_t100类型t100,
         l_save(10)。
   数据:gr_layout类型为cl_salv_layout的引用。
   数据:密钥类型salv_s_layout_key。
 
   尝试。
       cl_salv_table =>工厂(
         输入
           r_salv_table = gt_table
         改变
           t_table = it_boc_document)。
     捕捉cx_salv_msg。
   努力。
 
   gr_layout = gt_table-> get_layout()。
   键报告= sy-repid。
   gr_layout-> set_key(key)。
 
   gr_layout-> set_save_restriction(if_salv_c_layout => restrict_none)。
 
   "设置pf状态
   尝试。
       gt_table-> set_screen_status(
         pfstatus ='ALV_STATUS'
         报告= sy-repid
         set_functions = gt_table-> c_functions_all)。
     捕捉cx_salv_msg。
   努力。
 
   gt_table-> display()。

任何帮助将不胜感激。

非常感谢

Raj

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

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


嗨,

我正在使用新的方法来制作ALV网格-我在工具栏上有一个自定义按钮,名为" DIRECT",但不知道如何禁用它,尝试使用CL_SALV_FUNCTIONS-> remove_function方法,但它会继续返回 例外,说明我使用了错误的呼叫

数据:gt_table类型对cl_salv_table的引用。
   数据:l_t100类型t100,
         l_save(10)。
   数据:gr_layout类型为cl_salv_layout的引用。
   数据:密钥类型salv_s_layout_key。
 
   尝试。
       cl_salv_table =>工厂(
         输入
           r_salv_table = gt_table
         改变
           t_table = it_boc_document)。
     捕捉cx_salv_msg。
   努力。
 
   gr_layout = gt_table-> get_layout()。
   键报告= sy-repid。
   gr_layout-> set_key(key)。
 
   gr_layout-> set_save_restriction(if_salv_c_layout => restrict_none)。
 
   "设置pf状态
   尝试。
       gt_table-> set_screen_status(
         pfstatus ='ALV_STATUS'
         报告= sy-repid
         set_functions = gt_table-> c_functions_all)。
     捕捉cx_salv_msg。
   努力。
 
   gt_table-> display()。

任何帮助将不胜感激。

非常感谢

Raj

付费偷看设置
发送
4条回答
代楠1984
1楼 · 2020-08-31 14:59.采纳回答

您需要设置所需功能的"可见性"以将其隐藏。

赞:

   gr_table-> set_screen_status(
     pfstatus ='SALV_STANDARD'
     报告= gs_test-repid
     set_functions = gr_table-> c_functions_all)。

   数据:lo_functions类型参考cl_salv_functions,
         lt_func_list TYPE salv_t_ui_func,
         la_func_list与lt_func_list类似。

 *获取所有功能
   lo_functions = gr_table-> get_functions()。
   lt_func_list = lo_functions-> get_functions()。

 *现在隐藏MYFUNCTION
   循环至lt_func_list INTO la_func_list。
     如果la_func_list-r_function-> get_name()='MYFUNCTION'。
       la_func_list-r_function-> set_visible('')。
     万一。
   结局。
 

此致

Naimesh Patel

三十六小时_GS
2楼-- · 2020-08-31 14:57

嗨,专家

我需要禁用(而不是隐藏)应用程序工具栏中的按钮。 我也尝试过SET_ENABLE方法,但是它隐藏了按钮。

此致

Ashok

四川大学会员
3楼-- · 2020-08-31 15:19

嗨,拉吉,

ALV网格控件允许您添加自己的功能,这些功能由ALV工具栏上的按钮按下触发。 为此,我们主要利用两个ALV Grid事件。 我们使用事件TOOLBAR添加按钮,使用事件USER_COMMAND实现新功能。

在处理TOOLBAR事件的方法中,我们通过填充结构并将其附加到对象的表属性MT_TOOLBAR来定义新按钮,该对象可以通过事件的参数E_OBJECT引用到该对象。

您需要的结构字段将被禁用。

请参考以下代码:-

清除ls_toolbar。
 将" EXCH"移动到ls_toolbar-function。
 将2移动到ls_toolbar-butn_type。
 将icon_calculation移动到ls_toolbar-icon。
 将"以其他货币付款"(202)移动到ls_toolbar-quickinfo。
 移动到ls_toolbar文本。
 移动到ls_toolbar已禁用。
 附加ls_toolbar到i_object-> mt_toolbar。

致谢

Abhii

wang628962
4楼-- · 2020-08-31 15:08

嗨,

对于你们中的某些人来说,Naimesh建议的代码可能不起作用,因为您通过SE38(而不是SE41)访问状态来创建自定义按钮。 在这种情况下,ALV缓冲区被触击。 因此,请运行程序BALVBUFDEL清除缓冲区。 希望它能解决您的问题。

谢谢,
Nitin Shekhawat

一周热门 更多>