要求:单击菜单栏相关按钮,实现对透明表的增删改
代码部分
*&---------------------------------------------------------------------*
*& Report ZLJH1009
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZLJH1009.
TABLES:ZLJH0920.
DATA GS_LAYOUT TYPE SLIS_LAYOUT_ALV.
TYPES:BEGIN OF TYP_01,
MATNR TYPE MARA-MATNR,
CBOX TYPE C,
END OF TYP_01.
DATA GT_OUT TYPE STANDARD TABLE OF TYP_01.
DATA GS_OUT TYPE TYP_01.
DATA GS_GRID TYPE LVC_S_GLAY.
GS_GRID-EDT_CLL_CB = 'X'.
GS_LAYOUT-EDIT = 'X'.
GS_LAYOUT-BOX_FIELDNAME = 'CBOX'.
SELECT *
FROM ZLJH0920
INTO CORRESPONDING FIELDS OF TABLE GT_OUT.
call function 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = SY-CPROG
I_CALLBACK_PF_STATUS_SET = 'FRM_STATUS'
I_CALLBACK_USER_COMMAND = 'FRM_USERCOMM'
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME = 'ZLJH0920'
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
I_GRID_SETTINGS = GS_GRID
IS_LAYOUT = GS_LAYOUT
* IT_FIELDCAT =
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
tables
t_outtab = GT_OUT
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
if sy-subrc <> 0.
* Implement suitable error handling here
endif.
FORM FRM_STATUS USING EXTAB.
SET PF-STATUS 'MENU'.
ENDFORM.
FORM FRM_USERCOMM USING P_UCOMM TYPE SYUCOMM
CHANGING SEL TYPE SLIS_SELFIELD.
DATA LT_OUT TYPE STANDARD TABLE OF ZLJH0920.
DATA LS_OUT TYPE ZLJH0920.
CASE P_UCOMM.
WHEN 'INS'.
CLEAR:LT_OUT,LS_OUT.
APPEND INITIAL LINE TO GT_OUT.
WHEN 'DEL'.
LOOP AT GT_OUT INTO GS_OUT WHERE CBOX = 'X'.
MOVE-CORRESPONDING GS_OUT TO LS_OUT.
APPEND LS_OUT TO LT_OUT.
ENDLOOP.
DELETE GT_OUT WHERE CBOX = 'X'.
DELETE ZLJH0920 FROM TABLE LT_OUT.
WHEN 'MOD'.
LOOP AT GT_OUT INTO GS_OUT.
MOVE-CORRESPONDING GS_OUT TO LS_OUT.
APPEND LS_OUT TO LT_OUT.
ENDLOOP.
MODIFY ZLJH0920 FROM TABLE LT_OUT.
WHEN 'SAVE'.
LOOP AT GT_OUT INTO GS_OUT.
MOVE-CORRESPONDING GS_OUT TO LS_OUT.
APPEND LS_OUT TO LT_OUT.
ENDLOOP.
INSERT ZLJH0920 FROM TABLE LT_OUT ACCEPTING DUPLICATE KEYS.
ENDCASE.
SEL-REFRESH = 'X'.
ENDFORM.
运行结果
