REPORT ZTEST1234_ALV_TOP MESSAGE-ID ZZ . DATA: G_GRID TYPE REF TO CL_GUI_ALV_GRID. DATA: L_VALID TYPE C, V_FLAG, V_DATA_CHANGE, V_ROW TYPE LVC_S_ROW, V_COLUMN TYPE LVC_S_COL, V_ROW_NUM TYPE LVC_S_ROID. DATA: DG_DYNDOC_ID TYPE REF TO CL_DD_DOCUMENT, DG_SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER, DG_PARENT_GRID TYPE REF TO CL_GUI_CONTAINER, DG_HTML_CNTRL TYPE REF TO CL_GUI_HTML_VIEWER, DG_PARENT_HTML TYPE REF TO CL_GUI_CONTAINER. *---------------------------------------------------------------------* * CLASS lcl_event_handler DEFINITION *---------------------------------------------------------------------* CLASS LCL_EVENT_HANDLER DEFINITION . PUBLIC SECTION . METHODS: HANDLE_HOTSPOT_CLICK FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO, HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID IMPORTING E_ROW E_COLUMN ES_ROW_NO, TOP_OF_PAGE FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID IMPORTING E_DYNDOC_ID. ENDCLASS. "lcl_event_handler DEFINITION *---------------------------------------------------------------------* * CLASS lcl_event_handler IMPLEMENTATION *---------------------------------------------------------------------* CLASS LCL_EVENT_HANDLER IMPLEMENTATION. METHOD HANDLE_HOTSPOT_CLICK . CLEAR: V_ROW,V_COLUMN,V_ROW_NUM. V_ROW = E_ROW_ID. V_COLUMN = E_COLUMN_ID. V_ROW_NUM = ES_ROW_NO. MESSAGE I000 WITH V_ROW 'clicked'. ENDMETHOD. METHOD HANDLE_DOUBLE_CLICK. ENDMETHOD. METHOD TOP_OF_PAGE. "implementation PERFORM EVENT_TOP_OF_PAGE USING DG_DYNDOC_ID. ENDMETHOD. "top_of_page ENDCLASS. "LCL_EVENT_HANDLER IMPLEMENTATION *&---------------------------------------------------------------------* *& Global Definitions *&---------------------------------------------------------------------* DATA: G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,"Container1 G_HANDLER TYPE REF TO LCL_EVENT_HANDLER. "handler DATA: OK_CODE LIKE SY-UCOMM, SAVE_OK LIKE SY-UCOMM, G_CONTAINER1 TYPE SCRFNAME VALUE 'TEST', GS_LAYOUT TYPE LVC_S_LAYO. DATA: IT_FIELDCAT TYPE LVC_T_FCAT, X_FIELDCAT TYPE LVC_S_FCAT, LS_VARI TYPE DISVARIANT. parameters: p_matnr like mara-matnr. *--------------------------------------------------------------------- * START-OF_SELECTION *--------------------------------------------------------------------- START-OF-SELECTION. DATA:BEGIN OF ITAB OCCURS 0, VBELN LIKE LIKP-VBELN, POSNR LIKE LIPS-POSNR, CELLCOLOR TYPE LVC_T_SCOL, "required for color DROP(10), END OF ITAB. SELECT VBELN POSNR FROM LIPS UP TO 20 ROWS INTO CORRESPONDING FIELDS OF TABLE ITAB. END-OF-SELECTION. IF NOT ITAB[] IS INITIAL. CALL SCREEN 100. ELSE. MESSAGE I002 WITH 'NO DATA FOR THE SELECTION'(004). ENDIF. *&---------------------------------------------------------------------* *& Form CREATE_AND_INIT_ALV *&---------------------------------------------------------------------* FORM CREATE_AND_INIT_ALV . DATA: LT_EXCLUDE TYPE UI_FUNCTIONS. CREATE OBJECT G_CUSTOM_CONTAINER EXPORTING CONTAINER_NAME = G_CONTAINER1. "this is for top of page CREATE OBJECT DG_DYNDOC_ID EXPORTING STYLE = 'ALV_GRID'. CREATE OBJECT DG_SPLITTER EXPORTING PARENT = G_CUSTOM_CONTAINER ROWS = 2 COLUMNS = 1. CALL METHOD DG_SPLITTER->GET_CONTAINER EXPORTING ROW = 1 COLUMN = 1 RECEIVING CONTAINER = DG_PARENT_HTML. CALL METHOD DG_SPLITTER->GET_CONTAINER EXPORTING ROW = 2 COLUMN = 1 RECEIVING CONTAINER = DG_PARENT_GRID. CALL METHOD DG_SPLITTER->SET_ROW_HEIGHT EXPORTING ID = 1 HEIGHT = 5. CREATE OBJECT G_GRID EXPORTING I_PARENT = DG_PARENT_GRID. CLEAR GS_LAYOUT. GS_LAYOUT-GRID_TITLE = TEXT-003. GS_LAYOUT-ZEBRA = SPACE. GS_LAYOUT-CWIDTH_OPT = 'X'. GS_LAYOUT-NO_ROWMARK = 'X'. GS_LAYOUT-CTAB_FNAME = 'CELLCOLOR'. CALL METHOD G_GRID->REGISTER_EDIT_EVENT EXPORTING I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER. CREATE OBJECT G_HANDLER. SET HANDLER G_HANDLER->HANDLE_DOUBLE_CLICK FOR G_GRID. SET HANDLER G_HANDLER->HANDLE_HOTSPOT_CLICK FOR G_GRID. SET HANDLER G_HANDLER->TOP_OF_PAGE FOR G_GRID. DATA: LS_CELLCOLOR TYPE LVC_S_SCOL. DATA: L_INDEX TYPE SY-TABIX. LOOP AT ITAB. L_INDEX = SY-TABIX. IF L_INDEX = 1 OR L_INDEX = 5 OR L_INDEX = 10. LS_CELLCOLOR-FNAME = 'VBELN'. LS_CELLCOLOR-COLOR-COL = '6'. LS_CELLCOLOR-COLOR-INT = '0'. LS_CELLCOLOR-COLOR-INV = '1'. APPEND LS_CELLCOLOR TO ITAB-CELLCOLOR. MODIFY ITAB INDEX L_INDEX TRANSPORTING CELLCOLOR. LS_CELLCOLOR-FNAME = 'POSNR'. LS_CELLCOLOR-COLOR-COL = '6'. LS_CELLCOLOR-COLOR-INT = '0'. LS_CELLCOLOR-COLOR-INV = '1'. APPEND LS_CELLCOLOR TO ITAB-CELLCOLOR. MODIFY ITAB INDEX L_INDEX TRANSPORTING CELLCOLOR. ENDIF. ENDLOOP. CALL METHOD CL_GUI_CONTROL=>SET_FOCUS EXPORTING CONTROL = G_GRID. PERFORM BUILD_FIELDCAT. PERFORM SET_DRDN_TABLE. PERFORM EXCLUDE_TB_FUNCTIONS CHANGING LT_EXCLUDE. LS_VARI-REPORT = SY-REPID. LS_VARI-HANDLE = SPACE. LS_VARI-LOG_GROUP = SPACE. LS_VARI-USERNAME = SPACE. LS_VARI-VARIANT = SPACE. LS_VARI-TEXT = SPACE. LS_VARI-DEPENDVARS = SPACE. CALL METHOD G_GRID->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING IT_TOOLBAR_EXCLUDING = LT_EXCLUDE IS_VARIANT = LS_VARI IS_LAYOUT = GS_LAYOUT I_SAVE = 'A' CHANGING IT_FIELDCATALOG = IT_FIELDCAT IT_OUTTAB = ITAB[]. CALL METHOD DG_DYNDOC_ID->INITIALIZE_DOCUMENT. CALL METHOD G_GRID->LIST_PROCESSING_EVENTS EXPORTING I_EVENT_NAME = 'TOP_OF_PAGE' I_DYNDOC_ID = DG_DYNDOC_ID. CALL METHOD G_GRID->SET_READY_FOR_INPUT EXPORTING I_READY_FOR_INPUT = 1. ENDFORM. "CREATE_AND_INIT_ALV *&---------------------------------------------------------------------* *& Form EXCLUDE_TB_FUNCTIONS *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->PT_EXCLUDE text *----------------------------------------------------------------------* FORM EXCLUDE_TB_FUNCTIONS CHANGING PT_EXCLUDE TYPE UI_FUNCTIONS. DATA LS_EXCLUDE TYPE UI_FUNC. LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY_ROW. APPEND LS_EXCLUDE TO PT_EXCLUDE. LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW. APPEND LS_EXCLUDE TO PT_EXCLUDE. LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_APPEND_ROW. APPEND LS_EXCLUDE TO PT_EXCLUDE. LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_INSERT_ROW. APPEND LS_EXCLUDE TO PT_EXCLUDE. LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_MOVE_ROW. APPEND LS_EXCLUDE TO PT_EXCLUDE. LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY. APPEND LS_EXCLUDE TO PT_EXCLUDE. LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_CUT. APPEND LS_EXCLUDE TO PT_EXCLUDE. LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE. APPEND LS_EXCLUDE TO PT_EXCLUDE. LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE_NEW_ROW. APPEND LS_EXCLUDE TO PT_EXCLUDE. LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_UNDO. APPEND LS_EXCLUDE TO PT_EXCLUDE. ENDFORM. " EXCLUDE_TB_FUNCTIONS *&---------------------------------------------------------------------* *& Form build_fieldcat *&---------------------------------------------------------------------* * Fieldcatalog *----------------------------------------------------------------------* FORM BUILD_FIELDCAT . DATA: L_POS TYPE I. L_POS = L_POS + 1. X_FIELDCAT-SCRTEXT_M = 'Delivery'(024). X_FIELDCAT-FIELDNAME = 'VBELN'. X_FIELDCAT-TABNAME = 'IT_FINAL'. X_FIELDCAT-COL_POS = L_POS. X_FIELDCAT-NO_ZERO = 'X'. X_FIELDCAT-OUTPUTLEN = '10'. X_FIELDCAT-HOTSPOT = 'X'. APPEND X_FIELDCAT TO IT_FIELDCAT. CLEAR X_FIELDCAT. L_POS = L_POS + 1. X_FIELDCAT-SCRTEXT_M = 'Item'(025). X_FIELDCAT-FIELDNAME = 'POSNR'. X_FIELDCAT-TABNAME = 'IT_FINAL'. X_FIELDCAT-COL_POS = L_POS. X_FIELDCAT-OUTPUTLEN = '5'. APPEND X_FIELDCAT TO IT_FIELDCAT. CLEAR X_FIELDCAT. L_POS = L_POS + 1. X_FIELDCAT-SCRTEXT_M = 'Drop'(025). X_FIELDCAT-FIELDNAME = 'DROP'. X_FIELDCAT-TABNAME = 'IT_FINAL'. X_FIELDCAT-COL_POS = L_POS. X_FIELDCAT-OUTPUTLEN = '5'. X_FIELDCAT-EDIT = 'X'. X_FIELDCAT-DRDN_HNDL = '1'. X_FIELDCAT-DRDN_ALIAS = 'X'. APPEND X_FIELDCAT TO IT_FIELDCAT. CLEAR X_FIELDCAT. ENDFORM. " build_fieldcat *&---------------------------------------------------------------------* *& Module STATUS_0100 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE STATUS_0100 OUTPUT. SET PF-STATUS 'MAIN100'. SET TITLEBAR 'MAIN100'. IF G_CUSTOM_CONTAINER IS INITIAL. PERFORM CREATE_AND_INIT_ALV. ENDIF. ENDMODULE. " STATUS_0100 OUTPUT *&---------------------------------------------------------------------* *& Module USER_COMMAND_0100 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE USER_COMMAND_0100 INPUT. CASE SY-UCOMM. WHEN 'BACK'. LEAVE TO SCREEN 0. ENDCASE. ENDMODULE. " USER_COMMAND_0100 INPUT *&---------------------------------------------------------------------* *& Form SET_DRDN_TABLE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM SET_DRDN_TABLE. DATA:LT_DRAL TYPE LVC_T_DRAL, LS_DRAL TYPE LVC_S_DRAL. LOOP AT ITAB . IF SY-INDEX = 1. LS_DRAL-HANDLE = '1'. LS_DRAL-VALUE = ' '. LS_DRAL-INT_VALUE = ' '. ELSE. LS_DRAL-HANDLE = '1'. LS_DRAL-VALUE = ITAB-POSNR. LS_DRAL-INT_VALUE = ITAB-POSNR. ENDIF. APPEND LS_DRAL TO LT_DRAL. ENDLOOP. CALL METHOD G_GRID->SET_DROP_DOWN_TABLE EXPORTING IT_DROP_DOWN_ALIAS = LT_DRAL. ENDFORM. " set_drdn_table *&---------------------------------------------------------------------* *& Form EVENT_TOP_OF_PAGE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->DG_DYNDOC_ID text *----------------------------------------------------------------------* FORM EVENT_TOP_OF_PAGE USING DG_DYNDOC_ID TYPE REF TO CL_DD_DOCUMENT. DATA : DL_TEXT(255) TYPE C. "Text CALL METHOD DG_DYNDOC_ID->ADD_TEXT EXPORTING TEXT = 'Test Report' SAP_STYLE = CL_DD_AREA=>HEADING. CALL METHOD DG_DYNDOC_ID->NEW_LINE. CLEAR : DL_TEXT. CONCATENATE 'Program Name :' SY-REPID INTO DL_TEXT SEPARATED BY SPACE. PERFORM ADD_TEXT USING DL_TEXT. CALL METHOD DG_DYNDOC_ID->NEW_LINE. CLEAR : DL_TEXT. CONCATENATE 'MATNR :' P_MATNR INTO DL_TEXT SEPARATED BY SPACE. PERFORM ADD_TEXT USING DL_TEXT. CALL METHOD DG_DYNDOC_ID->NEW_LINE. CLEAR : DL_TEXT. CONCATENATE 'User ID :' SY-UNAME INTO DL_TEXT SEPARATED BY SPACE . PERFORM ADD_TEXT USING DL_TEXT. CALL METHOD DG_DYNDOC_ID->NEW_LINE. CLEAR : DL_TEXT. CONCATENATE 'Client :' SY-MANDT INTO DL_TEXT SEPARATED BY SPACE. PERFORM ADD_TEXT USING DL_TEXT. CALL METHOD DG_DYNDOC_ID->NEW_LINE. CLEAR : DL_TEXT. WRITE SY-DATUM TO DL_TEXT. CONCATENATE 'Date :' DL_TEXT INTO DL_TEXT SEPARATED BY SPACE. PERFORM ADD_TEXT USING DL_TEXT. CALL METHOD DG_DYNDOC_ID->NEW_LINE. CLEAR : DL_TEXT. WRITE SY-UZEIT TO DL_TEXT. CONCATENATE 'Time :' DL_TEXT INTO DL_TEXT SEPARATED BY SPACE. PERFORM ADD_TEXT USING DL_TEXT. CALL METHOD DG_DYNDOC_ID->NEW_LINE. PERFORM HTML. ENDFORM. " EVENT_TOP_OF_PAGE *&---------------------------------------------------------------------* *& Form ADD_TEXT *&---------------------------------------------------------------------* * To add Text *----------------------------------------------------------------------* FORM ADD_TEXT USING P_TEXT TYPE SDYDO_TEXT_ELEMENT. * Adding text CALL METHOD DG_DYNDOC_ID->ADD_TEXT EXPORTING TEXT = P_TEXT SAP_EMPHASIS = CL_DD_AREA=>HEADING. ENDFORM. " ADD_TEXT *&---------------------------------------------------------------------* *& Form HTML *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM HTML. DATA : DL_LENGTH TYPE I, " Length DL_BACKGROUND_ID TYPE SDYDO_KEY VALUE SPACE. " Background_id IF DG_HTML_CNTRL IS INITIAL. CREATE OBJECT DG_HTML_CNTRL EXPORTING PARENT = DG_PARENT_HTML. ENDIF. CALL FUNCTION 'REUSE_ALV_GRID_COMMENTARY_SET' EXPORTING DOCUMENT = DG_DYNDOC_ID BOTTOM = SPACE IMPORTING LENGTH = DL_LENGTH. CALL METHOD DG_DYNDOC_ID->MERGE_DOCUMENT. CALL METHOD DG_DYNDOC_ID->SET_DOCUMENT_BACKGROUND EXPORTING PICTURE_ID = DL_BACKGROUND_ID. DG_DYNDOC_ID->HTML_CONTROL = DG_HTML_CNTRL. CALL METHOD DG_DYNDOC_ID->DISPLAY_DOCUMENT EXPORTING REUSE_CONTROL = 'X' PARENT = DG_PARENT_HTML EXCEPTIONS HTML_DISPLAY_ERROR = 1. IF SY-SUBRC NE 0. MESSAGE I999 WITH 'Error in displaying top-of-page'(036). ENDIF. ENDFORM. " HTML