標準ALV 數據修改與內表一致(一句話設定)

来源:互联网 发布:linux挂载文件夹 编辑:程序博客网 时间:2024/06/05 01:37

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_BACKGROUND_ID = 'SIWB_WALLPAPER'
I_CALLBACK_PROGRAM = I_REPID
       I_GRID_SETTINGS = LC_GLAY    -------------------------
I_CALLBACK_HTML_TOP_OF_PAGE = W_HTML_TOP_OF_PAGE
I_BUFFER_ACTIVE = 'X'
* I_STRUCTURE_NAME = ''
* I_DEFAULT = 'X'
* I_SAVE = 'A'
* IS_VARIANT = W_VARIANT
IS_LAYOUT = W_LAYOUT
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IT_FIELDCAT = GD_FIELDCAT
IT_EVENTS = I_EVENTS
IT_EVENT_EXIT = I_EVENT_EXIT
IT_EXCLUDING = I_EXCLUDING
IS_PRINT = W_PRINT
* i_screen_start_column = 1
* i_screen_start_line = 1
* i_screen_end_column = 70
* i_screen_end_line = 30
TABLES
T_OUTTAB = GT_OUT.

其中需要设置: --------------------------------------

LC_GLAY-EDT_CLL_CB = 'X'.

 

 

 

 

=====(2)

首先编辑ALV的CALLER_EXIT事件,在call back的subroutine中做如下处理
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      E_GRID = W_ALV_GRID.

 

最后调用 W_ALV_GRID->CHECK_CHANGED_DATA( ).

ALV GRID中编辑的值就可以更新到ALV内表中了

例子如下:

 PERFORM FM_EVENT_BUILD.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'"調用函數
    EXPORTING
      I_CALLBACK_PROGRAM       = SY-REPID
      I_DEFAULT                = 'X'
      I_SAVE                   = 'A'
     IT_FIELDCAT_LVC    = T_FIELDCAT
      IS_LAYOUT_LVC      = X_LAYOUT
      IT_EVENTS         = GV_EVENTS
      I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
    TABLES
      T_OUTTAB           = ITAB
    EXCEPTIONS
      PROGRAM_ERROR      = 1
      OTHERS             = 2.

 

---

 FORM FM_EVENT_BUILD.
  DATA LV_EVENT LIKE LINE OF GV_EVENTS.
  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
   EXPORTING
     I_LIST_TYPE           = 0
   IMPORTING
     ET_EVENTS             = GV_EVENTS
   EXCEPTIONS
     LIST_TYPE_WRONG       = 1
     OTHERS                = 2
            .
  IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
*  LV_EVENT-NAME = 'CALLER_EXIT'.
*  LV_EVENT-FORM = 'FM_BUTTON'.
*  APPEND LV_EVENT TO GV_EVENTS.
*  delete GV_EVENTS where name = 'USER_COMMAND'.
*  LV_EVENT-NAME = 'USER_COMMAND'.
*  LV_EVENT-FORM = 'USER_COMMAND'.
*  APPEND LV_EVENT TO GV_EVENTS.


  READ TABLE GV_EVENTS WITH KEY NAME = 'CALLER_EXIT' INTO LV_EVENT .
  IF SY-SUBRC = 0 .
    LV_EVENT-FORM = 'FM_BUTTON' .
    APPEND LV_EVENT TO GV_EVENTS . "add form 'TOP_OF_PAGE' to the events,
  ENDIF.                        "perform the FORM 'to_of_page' .

ENDFORM.

 

 FORM FM_BUTTON USING E_GRID TYPE SLIS_DATA_CALLER_EXIT.
DATA GV_GRID TYPE REF TO cl_gui_alv_grid.
  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
*   EXPORTING
*     IR_SALV_FULLSCREEN_ADAPTER       =
    IMPORTING
*     ET_EXCLUDING                     =
*     E_REPID                          =
*     E_CALLBACK_PROGRAM               =
*     E_CALLBACK_ROUTINE               =
      E_GRID                           = GV_GRID
*     ET_FIELDCAT_LVC                  =
*     ER_TRACE                         =
*     E_FLG_NO_HTML                    =
*     ES_LAYOUT_KKBLO                  =
*     ES_SEL_HIDE                      =
*     ET_EVENT_EXIT                    =
*     ER_FORM_TOL                      =
*     ER_FORM_EOL                      =
            .

  CREATE OBJECT GV_EVENT_RECEIVER.
  SET HANDLER GV_EVENT_RECEIVER->HANDLE_BUTTON_CLICK FOR GV_GRID.
ENDFORM.

原创粉丝点击