欢迎来到萧静默的博客

书山有路勤为径,学海无涯苦作舟。

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 .
  DATAREF 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

posted @ 2022-04-12 11:43  萧静默  阅读(1520)  评论(0编辑  收藏  举报