一、一次创建,多次调用
当使用OOALV开发平台,存在点击不同位置,跳转到一个ALV,除ALV内容不一致以外,其他都一样。
常规方法,即跳转到多少个ALV,就创建多少个SCREEN。而屏幕对应的输入输出流,事件,fieldcat,ALV等等出现大量相似代码。
那么是否可以创建一个SCREEN,多次调用,修改调用时的fieldcat和展示ALV的GT_ALV内表。
二、解决方法
博客频遭盗窃,要看全文,请移步公众号“斌将军”,输入关键字“不同ALV调用相同屏幕”查看
"-----------------------------------------@斌将军--------------------------------------------
DATA:g_grid_9001 TYPE REF TO cl_gui_alv_grid, "ALV容器的实例
g_container_9001 TYPE REF TO cl_gui_docking_container, "ALV容器 不用画屏幕容器 cl_gui_custom_container, "ALV container容器 需要画屏幕容器
gt_exclude_9001 TYPE ui_functions, " 用于去掉不要的菜单栏
gs_layout_9001 TYPE lvc_s_layo, "ALV 控制: 布局结构
gt_fieldcat_9001 TYPE lvc_t_fcat.
"-----------------------------------------@斌将军--------------------------------------------
每次离开第二层的上一个ALV时,调用析构函数,清理两个对象。(此处9000和9001调用的PAI都是user_command_9000)代码如下
调用9001SCREEN时,重新调用方法,再清理并实例化这两个对象
"-----------------------------------------@斌将军--------------------------------------------
MODULE display_alv_9001 OUTPUT.
FREE:g_container_9001,g_grid_9001.
PERFORM frm_create_container_9000.
PERFORM frm_alv_sort_9000.
PERFORM frm_alv_fieldcat_9001.
PERFORM frm_alv_layout_9000.
PERFORM frm_alv_btn_exclude_9000.
CASE gv_9001name.
WHEN 'ZCGPS'."采购计划评审
display_alv g_grid_9001 gs_layout_9000 gt_exclude_9000 gt_fieldcat_9001 gt_cgpsalv.
WHEN 'ZSCPS'."生产计划评审
display_alv g_grid_9001 gs_layout_9000 gt_exclude_9000 gt_fieldcat_9001 gt_scpsalv.
WHEN OTHERS.
ENDCASE.
ENDMODULE.
"-----------------------------------------@斌将军--------------------------------------------