REUSE_ALV_GRID_DISPLAY_LVC 的user_command

*&--------------------------------------------------------------------*
*&      Form  CALL_FUNCTION
*&--------------------------------------------------------------------*
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
  EXPORTING
    I_STRUCTURE_NAME         = 'ZMLPRTOPO'
    I_CALLBACK_PROGRAM       = SY-REPID
    IS_LAYOUT_LVC            = I_LAYOUT
    IT_FIELDCAT_LVC          = I_FIELDCAT
    I_CALLBACK_PF_STATUS_SET = 'F_SET_STATUS'     " FORM 名称
    I_CALLBACK_USER_COMMAND  = 'F_USER_COMMAND'   " FORM 名称
    I_SAVE                   = 'X'
    I_GRID_TITLE             = M_BUFFER
  TABLES
    T_OUTTAB                 = I_ZMLPRTOPO
  EXCEPTIONS
    PROGRAM_ERROR
    =1
    OTHERS                   = 2.

*&---------------------------------------------------------------------*
*&      Form  F_SET_STATUS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_EXTAB    text
*----------------------------------------------------------------------*
FORM F_SET_STATUS USING P_EXTAB TYPE SLIS_T_EXTAB.
  SET PF-STATUS  'Z_ALV_STATUS'.
ENDFORM.                    "F_SET_STATUS
*&--------------------------------------------------------------------*
*&      Form  F_USER_COMMAND
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
*      -->R_UCOMM    text
*      -->R_RS_SELFIEtext
*---------------------------------------------------------------------*
FORM F_USER_COMMAND USING R_UCOMM TYPE SY-UCOMM
                           R_RS_SELFIELD TYPE SLIS_SELFIELD.
*  BREAK LZH.
**将ALV显示数据更新进输出内表中
  DATA: LR_GRID TYPE  REF TO CL_GUI_ALV_GRID.
  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      E_GRID = LR_GRID.
  CALL METHOD LR_GRID->CHECK_CHANGED_DATA.
  R_RS_SELFIELD-REFRESH = 'X'.

*  R_UCOMM = SY-UCOMM.
  CASE R_UCOMM.

    WHEN '&IC1'.
      READ TABLE I_ZMLPRTOPO  INDEX R_RS_SELFIELD-TABINDEX.
      IF I_ZMLPRTOPO-EBELN IS NOT INITIAL.
        SET PARAMETER ID 'BES' FIELD I_ZMLPRTOPO-EBELN.
        CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
      ELSE.
        IF I_ZMLPRTOPO-BANFN IS NOT INITIAL.
          SET PARAMETER ID 'BAN' FIELD I_ZMLPRTOPO-BANFN.
          CALL TRANSACTION 'ME53N' AND SKIP FIRST SCREEN.
        ENDIF.
      ENDIF.
    WHEN '&SALL'.
      LOOP AT I_ZMLPRTOPO ASSIGNING <FS_TAB> WHERE SEL  = SPACE.
        <FS_TAB>-SEL = 'X'.
      ENDLOOP.
    WHEN '&DSAL'.
      LOOP AT I_ZMLPRTOPO ASSIGNING <FS_TAB> WHERE SEL  = 'X'.
        <FS_TAB>-SEL = SPACE.
      ENDLOOP.
*&20170314
    WHEN '&SAVE'.
      CALL FUNCTION 'POPUP_TO_CONFIRM'
        EXPORTING
          TITLEBAR              = '请确认!'
          TEXT_QUESTION         = '是否确认用选定数据创建PO?'
          TEXT_BUTTON_1         = ''
          TEXT_BUTTON_2         = ''
          DEFAULT_BUTTON        = '1'
          DISPLAY_CANCEL_BUTTON = ' '
          START_COLUMN          = 25
          START_ROW             = 1
          POPUP_TYPE            = 'ICON_MESSAGE_QUESTION'"?
        IMPORTING
          ANSWER                = G_ANSWER
        EXCEPTIONS
          TEXT_NOT_FOUND        = 1
          OTHERS                = 2.

      CHECK G_ANSWER EQ  '1'.
      CLEAR:G_ZTIME.
      G_ZTIME = SY-DATUM && SY-UZEIT.
      PERFORM FRM_GETALL_PR.
      PERFORM FRM_EXE_PO.

*&test
    WHEN '&DEL'.
*       PERFORM FRM_DEL_DATA.
      LOOP AT I_ZMLPRTOPO INTO GW_TAB_1 WHERE SEL = 'X'.
        DELETE I_ZMLPRTOPO INDEX SY-TABIX.
      ENDLOOP.

    WHEN 'BACK'.
      LEAVE TO SCREEN 0.
    WHEN 'EXIT' OR 'CANCEL'.
      LEAVE PROGRAM.
  ENDCASE.
*  R_RS_SELFIELD-REFRESH = 'X'.

ENDFORM.                    "F_USER_COMMAND
原文地址:https://www.cnblogs.com/rainysblog/p/6559805.html