在SAP查询代码(SQ02)中调用方法set_table_for_first_display

2020-08-21 09:34发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我正在尝试在信息集的代码中...

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

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


嗨,

我正在尝试在信息集的代码中调用方法set_table_for_first_display。 我可以生成信息集,但是当我尝试使用信息集运行SAP Query时出现错误。

我尝试了CALL FUNCTION'REUSE_ALV_GRID_DISPLAY'并且它可以工作。 我将"调用功能模块"放在"开始选择代码"部分中。 我正在尝试在通话屏幕上执行相同操作,但无法正常工作。

你能告诉我这是否可行吗?

这是示例:

代码段:数据

CLASS cl_gui_column_tree定义负载。
CLASS cl_gui_cfw定义负载。
数据树1类型引用cl_gui_alv_tree_simple。
INCLUDE
INCLUDE bcalv_simple_event_receiver。 TYPERS mara数据类型:> ,"输出表
gt_fieldcatalog类型lvc_t_fcat,"字段目录
gt_sort类型lvc_t_sort,"排序表
ok_code像sy-ucomm。" OK代码

代码部分:选择开始

选择结束。
呼叫屏幕100。
*&----------------------------- ---------------------------------------- *
*&表格BUILD_FIELDCATALOG
*&----------------------------------------------- ---------------------- *
*此子例程用于为ALV列表构建字段目录
* ------ -------------------------------------------------- -------------- *
FORM build_fieldcatalog。
* get fieldcatalog
调用功能'LVC_FIELDCATALOG_MERGE'
导出
i_structure_name ='MARA'
更改
ct_fieldcat = gt_fieldcatalog。

ENDFORM。 " BUILD_FIELDCATALOG
*&------------------------------------------- -------------------------- *
*&表格BUILD_OUTTAB
*&----------- -------------------------------------------------- -------- *
*从表中检索数据并将其填充到ALV列表的输出表中
*
* ------------ -------------------------------------------------- -------- *
FORM build_outtab。
选择*从mara INTO表gt_mara。
ENDFORM。" BUILD_OUTTAB
*&------------ -------------------------------------------------- ------- *
*&模块PBO输出
*&----------------------------- ---------------------------------------- *
*此子例程用于 建立ALV树
* ------------------------------------------ ---------------------------- *
模块化pbo输出。
如果tree1是INITIAL。
执行init_tree。
ENDIF。
设置PF-STATUS'ZSTATUS'。
ENDMODULE。 " PBO输出
*&------------------------------------------ --------------------------- *
*&模块PAI INPUT
*&--------- -------------------------------------------------- ---------- *
*此子例程用于处理屏幕上的导航
* -------------------- -------------------------------------------------- *
模块化pai输入。
例ok_code。
当"退出"或"返回"或" CANC"时。
执行exit_program。
当其他时。
调用方法cl_gui_cfw =>
ENDCASE。
清除ok_code。
ENDMODULE。" PAI INPUT
*&------------------------ --------------------------------------------- *
* &表单exit_program
*&------------------------------------------ --------------------------- *
*自由对象并离开程序
* --------- -------------------------------------------------- ----------- *
FORM出口程序。
调用方法tree1->免费。
离开程序。
ENDFORM。 " exit_program
*&------------------------------------------- -------------------------- *
*&表格register_events
*&----------- -------------------------------------------------- -------- *
*处理后端ALV树控件中的事件
* ----------------------- ----------------------------------------------- *
FORM register_events。
*定义将传递到后端的事件
数据:lt_events TYPE cntl_simple_events,
l_event TYPE cntl_simple_event。
*定义将传递到后端的事件
> l_event-eventid = cl_gui_column_tree => eventid_node_context_menu_req。
APPEND l_event-eventid = cl_gui_column_tree => eventid_item_context_menu_req。
APPEND l_event_id = con> er_q = head> event_event_id = con>
附加l_event至lt_events。
l_event-eventid = cl_gui_column_tree => eventid_expand_no_children。
附加l_event至lt_events。
l_event-eventid = cl _gui_column_tree => eventid_header_click。
APPEND l_event到lt_events。
l_event-eventid = cl_gui_column_tree => eventid_item_keypress。
APPEND l_event到lt_events。
呼叫方法tree1-> set_registered_events << = lt_events
例外情况
cntl_error = 1
cntl_system_error = 2
invalid_event_combination =3。
*设置处理程序
数据:l_event_receiver TYPE REF到lcl_tree_event_receiver。
创建对象l_event。 br> SET HANDLER l_event_receiver-> on_add_hierarchy_node
FOR tree1。
ENDFORM。 " register_events
*&------------------------------------------- -------------------------- *
*&表格build_header
*&----------- -------------------------------------------------- -------- *
*标头的构建表
* ----------------------------- ----------------------------------------- **
FORM build_comment使用
pt_list_commentary TYPE slis_t_listheader
p_logo TYPE sdydo_value。
数据:ls_line TYPE slis_listheader。
*
*列表标题行:TYPE H
CLEAR ls_line。
ls_line-typ ='H
* LS_LINE-KEY:不用于此类型
ls_line-info ='用于站点启用的BoM TREE DEMO'。
将ls_line附加到pt_list_commentary。
p_logo ='ENJOYSAP_LOGO'。
ENDFORM。" build_comment
*&----------------------------------------- ---------------------------- *
*&表格init_tree
*&--------- -------------------------------------------------- ---------- *
*首次显示ALV树
* --------------------- --------------------------------- ---------------- *
FORM init_tree。
PERFORM build_fieldcatalog。
PERFORM build_outtab。

*为alv-tree创建容器
数据:l_tree_container_name(30)类型c,
l_custom_container类型参考cl_gui_custom_container。
l_tree_container_name ='TREE1'。
创建对象l_custom_container
导出
容器名称= L_tree > cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link =5。
*创建树控件
CREATE OBJECT tree1
导出
i_parent = cl_gui_container => screen0
i_node_selection_mode =
cl_gui_column_tree => node_sel_mode_multiple
i_item_selection ='X'
i_no_html_header =``
i_no_toolbar =''
异常<1>错误 br> cntl_system_error = 2
create_error = 3
生命周期错误= 4
非法节点选择模式= 5
失败= 6
非法列名称=7。
*为html标题创建信息表
>数据:lt_ list_commentary TYPE slis_t_listheader,
l_logo TYPE sdydo_value。
PERFORM build_comment使用
lt_list_commentary
l_logo。
*用于保存变量的repid
数据:ls_variant TYPE变量。
ls_variantre sy-repid。
*注册事件
执行PERFORM寄存器事件。
*创建层次结构
调用方法tree1-> set_table_for_first_display
导出
it_list_commentary = lt_list_commentary
i_logo = l_logo
i_background_id ='ALV_BACKGROUND'
i_save ='A'
is_variant = ls_variant
更改
it_sort = gt_sort
it_outtab = gt_mara
it_fieldcatalog = gt_fieldcatalog。
*扩展第一级< br>调用方法tree1-> expand_tree
导出
i_level =1。
*优化列宽
调用方法tree1-> column_optimize
EXPORTING
i_start_column = tree1-> c_hierarchy_column_name < br> i_end_column = tree1-> c_hierarchy_column_name。
ENDFORM。 " init_tree