`
touchinsert
  • 浏览: 1331437 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

ABAP--SAP是如何控制REUSE_ALV_GRID_DISPLAY函数嵌套调用的返回控制

阅读更多

最近无事对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.rar_ABAP系统ALV_abap_abap开发alv

    描述中提到“ABAP ALV总结,ALV格式,REUSE_ALV_GRID_DISPLAY_LVC函数使用”,这表明我们将重点关注ALV的基本概念、数据格式以及如何通过REUSE_ALV_GRID_DISPLAY_LVC函数来实现ALV的显示。 ALV格式通常涉及如何组织...

    REUSE_ALV_GRID_DISPLAY超详细讲解

    REUSE_ALV_GRID_DISPLAY是一个功能强大的ABAP函数模块,主要用于在ABAP程序中显示ALV网格控件。该函数模块提供了大量的参数和事件,使得开发者可以根据需要自定义ALV网格控件的外观和行为。 功能模块的调用: CALL...

    SAP ABAP ALV分页显示

    3. **ALV调用**:通过调用函数`REUSE_ALV_GRID_DISPLAY`来显示`IT_ZZP2`中的数据。此函数接收多个参数,包括字段目录(`IT_FIELDCAT`)、回调程序ID(`GD_REPID`)以及输出表(`T_OUTTAB`)等。 4. **分页控制**:使用`SET...

    ABAP开发ALV中自定义按钮实现

    首先,我们需要定义一个报表程序,例如`ZMMR3009`,并在其中调用`REUSE_ALV_GRID_DISPLAY`函数来显示ALV。该函数接受一系列参数,如`I_CALLBACK_PROGRAM`用于指定当前程序,`I_LAYOUT`用于传递布局信息,`IT_...

    ABAP_ALV_知识整理

    - **调用REUSE_ALV_GRID_DISPLAY**: 使用此函数模块来创建标准ALV网格显示。 - **设置列属性**: 设置列的标题、宽度、对齐方式等。 - **设置数据源**: 指定数据源表。 - **设置排序**: 可以设置默认排序规则。 **...

    ALV EDIT_MASK字段的使用.rar_ABAP EDIT_MASK_ALV EDIT_MASK字段的使用_ALVEDIT

    这通常通过在`CALL REPORT`或`CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'`等语句中使用`SET_EDIT_MASK`方法来实现。例如: ``` DATA: ls_edit_mask TYPE lvc_s_fdef, lv_fieldname LIKE LINE OF it_fieldname. ls...

    SAP-ABAP-OO-实现-CL-SALV-TABLE

    传统的 ALV 显示通常采用的是面向过程的方式,即通过函数模块 `REUSE_ALV_GRID_DISPLAY` 来实现。但是随着 ABAP 面向对象技术的发展,现在可以通过面向对象的方式来实现 ALV 的显示。 面向对象的 ALV 显示主要依赖...

    【SAP ABAP开发】 ALV报表开发教程

    最后一步是在`start-of-selection`事件处理器中调用`REUSE_ALV_GRID_DISPLAY`函数模块,这将触发ALV网格的显示。在调用时,需要传递之前设置好的参数以及数据源。 - `CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'` - `...

    abap_alv工具栏修改

    - **步骤**: 在调用`REUSE_ALV_GRID_DISPLAY`函数模块时,需要传递参数`I_CALLBACK_PF_STATUS_SET`,并将其设置为你在上一步创建的GUI状态的名称。 - **代码示例**: ```abap * Form set_pf_status FORM set_pf_...

    SAP ABAP ALV 详解

    REUSE_ALV_GRID_DISPLAY 函数用于输出 GRID 型列表,REUSE_ALV_GRID_DISPLAY_LVC 函数用于输出 GRID 型列表。 此外,ALV 还提供了一些预定义的功能,例如筛选、汇总等,用户也可以根据需要增加新的功能。例如,使用...

    SAP ALV功能总结

    本文将重点介绍`REUSE_ALV_GRID_DISPLAY`函数,并结合具体示例来探讨其在SAP ABAP编程中的应用。 #### 二、`REUSE_ALV_GRID_DISPLAY`函数详解 `REUSE_ALV_GRID_DISPLAY`是SAP ALV的一个核心函数模块,用于展示表格...

    SAP_ABAP_ALV技术

    4. **初始化ALV**:调用REUSE_ALV_GRID_DISPLAY或相关函数模块,传入数据结构和其他参数,初始化ALV控件。 5. **设置交互性**:注册事件处理程序,如用户点击列头进行排序,或单击行进行详细信息查看。 6. **显示ALV...

    sap alv 去掉多余按钮

    在SAP系统中,ALV(Application List Viewer)是一种用于展示和处理大量数据的强大工具,它不仅能够以列表形式展示数据,还提供了多种交互功能,如排序、筛选、分组等。然而,在某些应用场景下,ALV界面中预设的一些...

    [ABAP]Function实现ALV Table 二:ALV的弹出窗口形式

    接下来,调用`REUSE_ALV_GRID_DISPLAY`或`REUSE_ALV_LIST_DISPLAY`函数。这两个函数的主要参数包括: 1. **I_PROGRAM_NAME**: 调用该Function的程序名。 2. **I_WINDOW**: 窗口号,对于弹出窗口,通常设置为0。 3. ...

    ABAP向在线用户发送系统消息(自动刷新ALV)

    - `DISPLAY_ALV`过程中的`REUSE_ALV_GRID_DISPLAY`函数调用,是实现ALV显示的核心,通过传递参数控制ALV的布局、字段目录和数据源。 - 整个报告通过多个内部表、常量、数据类型和类型池的定义,构建了一个完整的框架...

    SAP系统中ALV报表

    `REUSE_ALV_GRID_DISPLAY`是创建ALV报表时经常调用的一个函数模块,它负责初始化ALV控件并显示数据。此函数模块提供了多个入口参数,以便开发者根据实际需求进行配置。以下是一些常用的参数及其用法: - **i_...

    SAP ALV 教程

    5. DISPLAY_ALV_GRID部分负责调用REUSE_ALV_GRID_DISPLAY函数来实际显示ALV表格。在此过程中,可以设置列宽优化选项,并指定要显示的数据结构、字段目录、布局设置以及内部表。同时,可以通过回调函数SET_PF_STATUS...

    sap abap oo实现ALV

    传统的ALV实现方式通常采用面向过程的方法,通过调用标准函数`REUSE_ALV_GRID_DISPLAY`来创建和展示列表。然而,随着面向对象编程(OO)概念在SAP中的推广,ABAP也引入了一系列面向对象的ALV实现机制。这种方式不仅...

Global site tag (gtag.js) - Google Analytics