最近无事对REUSE_ALV_GRID_DISPLAY函数代码又进行了一次阅读,发现该函数使用了堆栈进行嵌套调用的控制。sap使用全局内表gt_grid作为堆栈,每次调用REUSE_ALV_GRID_DISPLAY函数都会调用globals_push子过程进行入栈处理,返回时globals_pop会调用做出站处理。这样就保证了屏幕之间的切换的准确性。
代码摘抄如下,参见红色标记
function reuse_alv_grid_display. "#EC *
*"----------------------------------------------------------------------
*"*"Globale Schnittstelle:
*" IMPORTING
*" REFERENCE(I_INTERFACE_CHECK) DEFAULT SPACE
*" VALUE(I_BYPASSING_BUFFER) TYPE CHAR01 DEFAULT SPACE
*" VALUE(I_BUFFER_ACTIVE) DEFAULT SPACE
*" REFERENCE(I_CALLBACK_PROGRAM) LIKE SY-REPID DEFAULT SPACE
*" REFERENCE(I_CALLBACK_PF_STATUS_SET) TYPE SLIS_FORMNAME DEFAULT
*" SPACE
*" REFERENCE(I_CALLBACK_USER_COMMAND) TYPE SLIS_FORMNAME DEFAULT
*" SPACE
*" REFERENCE(I_CALLBACK_TOP_OF_PAGE) TYPE SLIS_FORMNAME DEFAULT
*" SPACE
*" REFERENCE(I_CALLBACK_HTML_TOP_OF_PAGE) TYPE SLIS_FORMNAME
*" DEFAULT SPACE
*" REFERENCE(I_CALLBACK_HTML_END_OF_LIST) TYPE SLIS_FORMNAME
*" DEFAULT SPACE
*" REFERENCE(I_STRUCTURE_NAME) LIKE DD02L-TABNAME OPTIONAL
*" REFERENCE(I_BACKGROUND_ID) TYPE SDYDO_KEY DEFAULT SPACE
*" REFERENCE(I_GRID_TITLE) TYPE LVC_TITLE OPTIONAL
*" REFERENCE(I_GRID_SETTINGS) TYPE LVC_S_GLAY OPTIONAL
*" REFERENCE(IS_LAYOUT) TYPE SLIS_LAYOUT_ALV OPTIONAL
*" REFERENCE(IT_FIELDCAT) TYPE SLIS_T_FIELDCAT_ALV OPTIONAL
*" REFERENCE(IT_EXCLUDING) TYPE SLIS_T_EXTAB OPTIONAL
*" REFERENCE(IT_SPECIAL_GROUPS) TYPE SLIS_T_SP_GROUP_ALV OPTIONAL
*" REFERENCE(IT_SORT) TYPE SLIS_T_SORTINFO_ALV OPTIONAL
*" REFERENCE(IT_FILTER) TYPE SLIS_T_FILTER_ALV OPTIONAL
*" REFERENCE(IS_SEL_HIDE) TYPE SLIS_SEL_HIDE_ALV OPTIONAL
*" REFERENCE(I_DEFAULT) DEFAULT 'X'
*" REFERENCE(I_SAVE) DEFAULT SPACE
*" REFERENCE(IS_VARIANT) LIKE DISVARIANT STRUCTURE DISVARIANT
*" OPTIONAL
*" REFERENCE(IT_EVENTS) TYPE SLIS_T_EVENT OPTIONAL
*" REFERENCE(IT_EVENT_EXIT) TYPE SLIS_T_EVENT_EXIT OPTIONAL
*" REFERENCE(IS_PRINT) TYPE SLIS_PRINT_ALV OPTIONAL
*" REFERENCE(IS_REPREP_ID) TYPE SLIS_REPREP_ID OPTIONAL
*" REFERENCE(I_SCREEN_START_COLUMN) DEFAULT 0
*" REFERENCE(I_SCREEN_START_LINE) DEFAULT 0
*" REFERENCE(I_SCREEN_END_COLUMN) DEFAULT 0
*" REFERENCE(I_SCREEN_END_LINE) DEFAULT 0
*" REFERENCE(IT_ALV_GRAPHICS) TYPE DTC_T_TC OPTIONAL
*" REFERENCE(IT_HYPERLINK) TYPE LVC_T_HYPE OPTIONAL
*" REFERENCE(IT_ADD_FIELDCAT) TYPE SLIS_T_ADD_FIELDCAT OPTIONAL
*" REFERENCE(IT_EXCEPT_QINFO) TYPE SLIS_T_QINFO_ALV OPTIONAL
*" REFERENCE(I_HTML_HEIGHT_TOP) TYPE I OPTIONAL
*" REFERENCE(I_HTML_HEIGHT_END) TYPE I OPTIONAL
*" EXPORTING
*" REFERENCE(E_EXIT_CAUSED_BY_CALLER)
*" REFERENCE(ES_EXIT_CAUSED_BY_USER) TYPE SLIS_EXIT_BY_USER
*" TABLES
*" T_OUTTAB
*" EXCEPTIONS
*" PROGRAM_ERROR
*"----------------------------------------------------------------------
clear e_exit_caused_by_caller.
clear es_exit_caused_by_user.
*... Trace?
if ( cl_alv_trace=>is_trace_on( ) eq 1 ).
create object mr_trace.
call method mr_trace->add_trace_item
exporting
i_trace_item = 'REUSE_ALV_GRID_DISPLAY'
is_vari_slis = is_variant
is_layo_slis = is_layout
is_prnt_slis = is_print
it_fcat_slis = it_fieldcat
it_sort_slis = it_sort
it_filt_slis = it_filter.
endif.
free memory id 'DYNDOS_FOR_ALV'.
perform globals_push.
gt_grid-flg_first_time = 'X'.
perform reprep_check.
g_repid = sy-repid.
if i_screen_start_column is initial and
i_screen_start_line is initial and
i_screen_start_column is initial and
i_screen_end_line is initial.
gt_grid-flg_popup = space.
call screen 500.
else.
gt_grid-flg_popup = 'X'.
call screen 700
starting at i_screen_start_column i_screen_start_line
ending at i_screen_end_column i_screen_end_line.
endif.
perform globals_pop.
clear g_repid.
endfunction.
分享到:
相关推荐
ABAP ALV总结,ALV格式,REUSE_ALV_GRID_DISPLAY_LVC函数使用
程序dump,报错为 The ABAP program lines are wider than the internal table.此文档有解决方法
sap 的abap编程 实现alv的多层输出 调用系统方法
ABAP官方教程系列---BC400_EN_46D_FV ABAP Workbench: Foundations and Concepts
详细介绍了SAP ABAP 高级编程技术
SAP HR人事主数据批量导入,可以根据不同的信息类型来进行自动判断导入。 SAP ABAP开发
webdypro abap test tool
SAP方丈-ABAP-SAP增强应用实例
SAP中文教材全系列之:ABAP中文标准教材-BC400_ZH_Col63_FV_Part_A4 陆续更新中。
ABAP
SAP开发,abap编程中ALV报表的显示
[SAP ABAP开发技术总结]ALV详解(Fuction ALV 和OO ALV) 图文并茂,详细介绍了Fuction ALV 和OO ALV的相关开发 [SAP ABAP开发技术总结]ALV详解:Function ALV(一) [SAP ABAP开发技术总结]ALV详解:Function ALV...
ABAP - Keyword Documentation This documentation describes the syntax and meaning of the keywords of the ABAP language and its object-oriented part ABAP Objects. Alongside this, language frameworks ...
ABAP_ALV_知识整理ABAP_ALV_知识整理ABAP_ALV_知识整理ABAP_ALV_知识整理ABAP_ALV_知识整理ABAP_ALV_知识整理ABAP_ALV_知识整理ABAP_ALV_知识整理ABAP_ALV_知识整理ABAP_ALV_知识整理
SAP ABAP-Dictionary_查询表结构和内容 实战技术
ABAP开发基础教程,SAP开发基本教程
ABAP官方教程--- BC400_EN_Col32:Introduction to the ABAP Workbench
SAP方丈-ABAP-SAP增强应用实例.docx
SAP-ABAP-OO-实现-CL-SALV-TABLE
简单来讲,SAPLINK就是用来导入和导出ABAP程序,等开发对象的一个开源分享项目的产物. 1.上载前置工具程序 导入SAPLINK需要使用ZSAPLINK_INSTALLER程序进行导入. TCode:SE38,新建名为ZSAPLINK_INSTALLER的程序. 2....