ABAP-ALV中调用按钮显示另外一张ALV报表时候回退到前一ALV
背景:ALV报表查询时候在展示的界面再根据某个条件去过滤或者汇总时候,点击按钮再展示出新的ALV结果,后退可以回到原明细表。可以有如下2种做法。
1、定义两张内表(这个很重要,不然实现不了后退功能)。
定义两个ALV展示函数,分别展示两张内表。
在例程种调用一个REUSE_ALV_GRID_DISPLAY_LVC函数展示一张内表,在这个函数里的command事件里调用另外一个REUSE_ALV_GRID_DISPLAY_LVC函数展示另外一张内表,
这样点击标准后退按钮时候可以继续调用前一张内表展示。
2、定义两张内表(这个很重要,不然实现不了后退功能)。
定义一个ALV展示函数(如果需要展示的字段不一样,这个要综合考虑),采用传入参数形式,分别展示两张内表。
在例程种调用一个REUSE_ALV_GRID_DISPLAY_LVC函数展示一张内表(使用参数传入),在这个函数里的command事件里仍旧调用前面的函数展示另外一张内表,使用参数传入,
这样点击标准后退按钮时候可以继续调用前一张内表展示。
START-OF-SELECTION.
PERFORM GET_DETAIL.
PERFORM PRINT_ALV2 USING IT_ZTSD035[]. “将表作为参数传入
FORM FRM_USER_COMMAND1 USING R_UCOMM LIKE SY-UCOMM RS_SELFIELD TYPE SLIS_SELFIELD .
DATA: REF TYPE REF TO CL_GUI_ALV_GRID.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_REPID = SY-CPROG "网上代码没有这个,这个是必须的!!!!*
E_GRID = REF.
CALL METHOD REF->CHECK_CHANGED_DATA.
RS_SELFIELD-REFRESH = 'X'.
"响应事件
CASE R_UCOMM.
WHEN '&COMPLETE'."只查OA审批完成的
REFRESH IT_035ALV_SUM.
IT_035ALV_SUM = IT_035ALV.
* REFRESH IT_035ALV.
LOOP AT IT_035ALV_SUM INTO DATA(LS_035).
“这里可以处理内表
ENDLOOP.
PERFORM PRINT_ALV2 USING IT_035ALV_SUM[]."这里调用ALV时使用参数,并且不清空两个内表的值
* WHEN '&F03'.
* LEAVE TO SCREEN 0.
ENDCASE.
"刷新ALV
RS_SELFIELD-ROW_STABLE = 'X'.
RS_SELFIELD-COL_STABLE = 'X'.
RS_SELFIELD-REFRESH = 'X'.
ENDFORM. "FRM_USER_COMMAND