ABAP--SAP是如何控制REUSE_ALV_GRID_DISPLAY函数嵌套调用的返回控制
来源:互联网 发布:ps4刷windows 编辑:程序博客网 时间:2024/05/21 07:08
最近无事对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--SAP是如何控制REUSE_ALV_GRID_DISPLAY函数嵌套调用的返回控制
- SAP-ABAP中强大的循环控制
- ABAP--REUSE_ALV_GRID_DISPLAY的i_callback_user_command的调用跟踪摘抄
- ABAP--REUSE_ALV_GRID_DISPLAY的i_callback_user_command的调用跟踪摘抄
- abap字符串控制函数
- ABAP字符串控制函数
- ABAP--如何将REUSE_ALV_GRID_DISPLAY的题头自适应居中显示
- ABAP--如何将REUSE_ALV_GRID_DISPLAY的题头自适应居中显示
- SAP ABAP控制单元格是否可编辑
- SAP abap程序里面权限控制代码
- ABAP--SAP是如何回写CL_GUI_ALV_GRID_BASE的MT_MODIFIED_CELLS的
- ABAP--SAP是如何回写CL_GUI_ALV_GRID_BASE的MT_MODIFIED_CELLS的
- ABAP--调用SAP的单位转换函数进行单位转换
- ABAP--调用SAP的单位转换函数进行单位转换
- ABAP--调用SAP的单位转换函数进行单位转换
- C++调用函数是如何返回临时对象的
- ABAP--如何使用REUSE_ALV_GRID_DISPLAY函数删除内表数据(样例代码,感谢依风提供)
- ABAP--如何使用REUSE_ALV_GRID_DISPLAY函数删除内表数据(样例代码,感谢依风提供)
- cmd命令行操作ftp上传
- typedef 知识
- 使iframe里面引用页透明,显示主页面的背景图片
- GetModuleFileName
- stl string的COW问题
- ABAP--SAP是如何控制REUSE_ALV_GRID_DISPLAY函数嵌套调用的返回控制
- 基于DS18B20的数字温度计的毕业设计
- Tomcat 在配置完 SSL 后,IE 浏览器访问时Socket error caused by remote host异常错误信息的解决办法
- Oracle的分页查询语句
- C# 类型基础
- C++中不常用的关键字
- 验证textbox输入的是否是数字,包括小数
- 文档数据库与关系数据库的比较
- 有关AVG Anti-Spyware的一些说明