Editable Alv for z Tables

Embed Size (px)

DESCRIPTION

Edit your z tables in sap

Citation preview

*&---------------------------------------------------------------------**& Report ZTEST_NP_EDIT_SALV*& Overcome the restriction of the SALV model using the power of the*& Object Oriented ABAP*&---------------------------------------------------------------------*REPORT ZTEST_NP_EDIT_SALV.*----------------------------------------------------------------------** Define the Local class inheriting from the CL_SALV_MODEL_LIST* to get an access of the model, controller and adapter which inturn* provides the Grid Object*----------------------------------------------------------------------*CLASS LCL_SALV_MODEL DEFINITION INHERITING FROM CL_SALV_MODEL_LIST. PUBLIC SECTION. DATA: O_CONTROL TYPE REF TO CL_SALV_CONTROLLER_MODEL, O_ADAPTER TYPE REF TO CL_SALV_ADAPTER. METHODS: GRABE_MODEL IMPORTING IO_MODEL TYPE REF TO CL_SALV_MODEL, GRABE_CONTROLLER, GRABE_ADAPTER. PRIVATE SECTION. DATA: LO_MODEL TYPE REF TO CL_SALV_MODEL.ENDCLASS. "LCL_SALV_MODEL DEFINITION*----------------------------------------------------------------------** Event handler for the added buttons*----------------------------------------------------------------------*CLASS LCL_EVENT_HANDLER DEFINITION. PUBLIC SECTION. METHODS: ON_USER_COMMAND FOR EVENT ADDED_FUNCTION OF CL_SALV_EVENTS IMPORTING E_SALV_FUNCTION.ENDCLASS. "lcl_event_handler DEFINITION*----------------------------------------------------------------------** Local Report class - Definition*----------------------------------------------------------------------*CLASS LCL_REPORT DEFINITION. PUBLIC SECTION. DATA: TABLENAME(15) TYPE C.* TABLENAME = 'ZUSAGE'. TYPES: ty_t_sflights TYPE STANDARD TABLE OF sflights.* TYPES: TY_T_SFLIGHTS TYPE STANDARD TABLE OF ZUSAGE. DATA: T_DATA TYPE TY_T_SFLIGHTS. DATA: O_SALV TYPE REF TO CL_SALV_TABLE. DATA: O_SALV_MODEL TYPE REF TO LCL_SALV_MODEL. METHODS: GET_DATA, GENERATE_OUTPUT.ENDCLASS. "lcl_report DEFINITION*----------------------------------------------------------------------** Global data*----------------------------------------------------------------------*DATA: LO_REPORT TYPE REF TO LCL_REPORT.*----------------------------------------------------------------------** Start of selection*----------------------------------------------------------------------*START-OF-SELECTION. CREATE OBJECT LO_REPORT. LO_REPORT->GET_DATA( ). LO_REPORT->GENERATE_OUTPUT( ).*----------------------------------------------------------------------** Local Report class - Implementation*----------------------------------------------------------------------*CLASS LCL_REPORT IMPLEMENTATION. METHOD GET_DATA.* test data SELECT * FROM Sflights INTO TABLE ME->T_DATA UP TO 30 ROWS. ENDMETHOD. "get_data METHOD GENERATE_OUTPUT.*...New ALV Instance ............................................... TRY. CL_SALV_TABLE=>FACTORY( EXPORTING* r_container = w_alv1 LIST_DISPLAY = ABAP_FALSE IMPORTING R_SALV_TABLE = O_SALV CHANGING T_TABLE = T_DATA ). CATCH CX_SALV_MSG. "#EC NO_HANDLER ENDTRY.*...PF Status.......................................................* Add MYFUNCTION from the report SALV_DEMO_TABLE_EVENTS O_SALV->SET_SCREEN_STATUS( PFSTATUS = 'SALV_STANDARD' REPORT = 'SALV_DEMO_TABLE_EVENTS' SET_FUNCTIONS = O_SALV->C_FUNCTIONS_ALL ).*...Event handler for the button..................................... DATA: LO_EVENTS TYPE REF TO CL_SALV_EVENTS_TABLE, LO_EVENT_H TYPE REF TO LCL_EVENT_HANDLER.* event object LO_EVENTS = O_SALV->GET_EVENT( ).* event handler CREATE OBJECT LO_EVENT_H.* setting up the event handler SET HANDLER LO_EVENT_H->ON_USER_COMMAND FOR LO_EVENTS.*...Get Model Object ............................................... DATA: LO_ALV_MOD TYPE REF TO CL_SALV_MODEL.* Narrow casting LO_ALV_MOD ?= O_SALV.* object for the local inherited class from the CL_SALV_MODEL_LIST CREATE OBJECT O_SALV_MODEL.* grabe model to use it later CALL METHOD O_SALV_MODEL->GRABE_MODEL EXPORTING IO_MODEL = LO_ALV_MOD.*...Generate ALV output ............................................... O_SALV->DISPLAY( ). ENDMETHOD. "generate_outputENDCLASS. "lcl_report IMPLEMENTATION*----------------------------------------------------------------------** LCL_SALV_MODEL implementation*----------------------------------------------------------------------*CLASS LCL_SALV_MODEL IMPLEMENTATION. METHOD GRABE_MODEL.* save the model LO_MODEL = IO_MODEL. ENDMETHOD. "grabe_model METHOD GRABE_CONTROLLER.* save the controller O_CONTROL = LO_MODEL->R_CONTROLLER. ENDMETHOD. "grabe_controller METHOD GRABE_ADAPTER.* save the adapter from controller O_ADAPTER ?= LO_MODEL->R_CONTROLLER->R_ADAPTER. ENDMETHOD. "grabe_adapterENDCLASS. "LCL_SALV_MODEL IMPLEMENTATION*----------------------------------------------------------------------** Event Handler for the SALV*----------------------------------------------------------------------*CLASS LCL_EVENT_HANDLER IMPLEMENTATION. METHOD ON_USER_COMMAND. DATA: LO_GRID TYPE REF TO CL_GUI_ALV_GRID, LO_FULL_ADAP TYPE REF TO CL_SALV_FULLSCREEN_ADAPTER. DATA: LS_LAYOUT TYPE LVC_S_LAYO. CASE E_SALV_FUNCTION.* Make ALV as Editable ALV WHEN 'MYFUNCTION'.* Contorller CALL METHOD LO_REPORT->O_SALV_MODEL->GRABE_CONTROLLER.* Adapter CALL METHOD LO_REPORT->O_SALV_MODEL->GRABE_ADAPTER.* Fullscreen Adapter (Down Casting) LO_FULL_ADAP ?= LO_REPORT->O_SALV_MODEL->O_ADAPTER.* Get the Grid LO_GRID = LO_FULL_ADAP->GET_GRID( ).* Got the Grid .. ? IF LO_GRID IS BOUND.* Editable ALV LS_LAYOUT-EDIT = 'X'.* Set the front layout of ALV CALL METHOD LO_GRID->SET_FRONTEND_LAYOUT EXPORTING IS_LAYOUT = LS_LAYOUT.* refresh the table CALL METHOD LO_GRID->REFRESH_TABLE_DISPLAY. ENDIF. ENDCASE. ENDMETHOD. "on_user_commandENDCLASS. "lcl_event_handler IMPLEMENTATION