You are on page 1of 6

ALV OOPS1 REPORT ZBT_ALV_OOPS1.

TYPES: BEGIN OF TY_EKPO, EBELN TYPE EKPO-EBELN, EBELP TYPE EKPO-EBELP, MATNR TYPE EKPO-MATNR, WERKS TYPE EKPO-WERKS, NETPR TYPE EKPO-NETPR, COLOR TYPE LVC_T_SCOL, STYLE TYPE LVC_T_STYL, END OF TY_EKPO. TYPES: TT_EKPO TYPE TABLE OF TY_EKPO. DATA : IT_EKPO TYPE TT_EKPO. DATA : WA_EKPO TYPE TY_EKPO. DATA : IT_FCAT TYPE LVC_T_FCAT. DATA : WA_FCAT TYPE LVC_S_FCAT. DATA : O_GRID TYPE REF TO CL_GUI_ALV_GRID. DATA : O_CUST TYPE REF TO CL_GUI_CUSTOM_CONTAINER. DATA OKCODE type SYUCOMM.. CLASS LCL_EVENTS DEFINITION. PUBLIC SECTION. CLASS-METHODS: BUTTON_CLICK FOR EVENT BUTTON_CLICK OF CL_GUI_ALV_GRID IMPORTING ES_ROW_NO, HOTSPOT_CLICK FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID IMPORTING E_COLUMN_ID ES_ROW_NO, TOOLBAR FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID IMPORTING E_OBJECT, MENU_BUTTON FOR EVENT MENU_BUTTON OF CL_GUI_ALV_GRID IMPORTING E_OBJECT, USER_COMMAND FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID IMPORTING E_UCOMM, CONTEXT_MENU_REQUEST FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID IMPORTING E_OBJECT. ENDCLASS. CLASS LCL_EVENTS IMPLEMENTATION. METHOD CONTEXT_MENU_REQUEST. DATA OBJ TYPE REF TO CL_CTMENU. CREATE OBJECT OBJ. CALL METHOD OBJ->ADD_FUNCTION EXPORTING FCODE = 'F2' TEXT = 'EDIT'. CALL METHOD OBJ->ADD_FUNCTION EXPORTING FCODE = 'F3' TEXT = 'Display'. CALL METHOD E_OBJECT->ADD_SUBMENU EXPORTING MENU = OBJ TEXT = 'SubMenu' * ICON = * DISABLED = * HIDDEN = Page 1

ALV OOPS1 * . ENDMETHOD. METHOD USER_COMMAND. DATA LV_READY TYPE INT4. CASE E_UCOMM. WHEN 'F2' OR 'F3'. *first know what is state of the field CALL METHOD O_GRID->IS_READY_FOR_INPUT * EXPORTING * I_ROW_ID = * IS_COL_ID = RECEIVING READY_FOR_INPUT = LV_READY . IF LV_READY IS NOT INITIAL and E_UCOMM = 'F3'. "Means editable LV_READY = 0. elseIF LV_READY IS INITIAL and E_UCOMM = 'F2'. . "Non Editable LV_READY = 1. endif. CALL METHOD o_grid->SET_READY_FOR_INPUT EXPORTING I_READY_FOR_INPUT = LV_READY . WHEN OTHERS. ENDCASE. ENDMETHOD. METHOD MENU_BUTTON. CALL METHOD E_OBJECT->ADD_FUNCTION EXPORTING FCODE = 'F2' TEXT = 'Change'. CALL METHOD E_OBJECT->ADD_FUNCTION EXPORTING FCODE = 'F3' TEXT = 'Display'. ENDMETHOD. METHOD TOOLBAR. DATA WA TYPE STB_BUTTON. WA-BUTN_TYPE = 0. "Normal Button WA-TEXT = 'SAVE'. APPEND WA TO E_OBJECT->MT_TOOLBAR. CLEAR WA. WA-BUTN_TYPE = 3. "Separator APPEND WA TO E_OBJECT->MT_TOOLBAR. CLEAR WA. WA-BUTN_TYPE = 2. "Menu Button WA-TEXT = 'TOGGLE'. APPEND WA TO E_OBJECT->MT_TOOLBAR. Page 2 ACCELERATOR =

ALV OOPS1 ENDMETHOD. METHOD BUTTON_CLICK. READ TABLE IT_EKPO INTO WA_EKPO INDEX ES_ROW_NO-ROW_ID. IF SY-SUBRC IS INITIAL. SET PARAMETER ID 'MAT' FIELD WA_EKPO-MATNR. SET PARAMETER ID 'MXX' FIELD 'K'. CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN. ENDIF. ENDMETHOD. METHOD HOTSPOT_CLICK. READ TABLE IT_EKPO INTO WA_EKPO INDEX ES_ROW_NO-ROW_ID. CASE E_COLUMN_ID-FIELDNAME. WHEN 'EBELN'. CALL FUNCTION 'ME_DISPLAY_PURCHASE_DOCUMENT' EXPORTING i_ebeln = WA_EKPO-EBELN i_enjoy = 'X' i_bstyp = 'F' EXCEPTIONS OTHERS = 1. WHEN OTHERS. ENDCASE. ENDMETHOD. ENDCLASS. START-OF-SELECTION. CALL SCREEN 9000. *&---------------------------------------------------------------------* *& Module STATUS_9000 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE STATUS_9000 OUTPUT. SET PF-STATUS '9000'. * SET TITLEBAR 'xxx'. ENDMODULE. " STATUS_9000 OUTPUT *&---------------------------------------------------------------------* *& Module PREPARE_CONTAINERS_9000 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE PREPARE_CONTAINERS_9000 OUTPUT. CHECK O_GRID IS NOT BOUND. " IS inITIAL *First create a container reference CL_GUI_CUSTOM_CONTAINER CREATE OBJECT O_CUST EXPORTING CONTAINER_NAME = 'CUST' EXCEPTIONS CNTL_ERROR = 1 CNTL_SYSTEM_ERROR = 2 CREATE_ERROR = 3 LIFETIME_ERROR = 4 LIFETIME_DYNPRO_DYNPRO_LINK = 5 Page 3

ALV OOPS1 others . IF SY-SUBRC IS INITIAL. = 6

*Create the Control class (CL_GUI_ALV_GRID) reference CREATE OBJECT O_GRID EXPORTING I_PARENT = o_cust EXCEPTIONS ERROR_CNTL_CREATE = 1 ERROR_CNTL_INIT = 2 ERROR_CNTL_LINK = 3 ERROR_DP_CREATE = 4 others = 5 . IF SY-SUBRC <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ENDIF.

ENDMODULE.

" PREPARE_CONTAINERS_9000

OUTPUT

MODULE DISPLAY_FINAL_DATA_9000 OUTPUT. DATA WA_COLOR TYPE LVC_S_SCOL. CHECK IT_EKPO IS INITIAL. SELECT * FROM EKPO INTO CORRESPONDING FIELDS OF TABLE IT_EKPO WHERE EBELN LIKE '414-%'. IF SY-SUBRC IS INITIAL. DATA WA_STYLE TYPE LVC_S_STYL. LOOP AT IT_EKPO INTO WA_EKPO. IF WA_EKPO-NETPR GT '1'. WA_COLOR-FNAME = 'EBELP'. WA_COLOR-COLOR-COL = '6'. WA_COLOR-COLOR-INT = 0. WA_COLOR-COLOR-INV = 1. APPEND WA_COLOR TO WA_EKPO-COLOR. WA_STYLE-FIELDNAME = 'NETPR'. WA_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_ENABLED. else. WA_COLOR-FNAME = 'EBELP'. WA_COLOR-COLOR-COL = '5'. WA_COLOR-COLOR-INT = 0. WA_COLOR-COLOR-INV = 1. APPEND WA_COLOR TO WA_EKPO-COLOR. WA_STYLE-FIELDNAME = 'NETPR'. WA_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED. endif. INSERT WA_STYLE INTO TABLE WA_EKPO-STYLE. CLEAR WA_STYLE. *Prepare the styles WA_STYLE-FIELDNAME = 'MATNR'. Page 4

ALV OOPS1 WA_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_BUTTON. INSERT WA_STYLE INTO TABLE WA_EKPO-STYLE. CLEAR WA_STYLE. MODIFY IT_EKPO FROM WA_EKPO TRANSPORTING COLOR CLEAR WA_COLOR. ENDLOOP. ENDIF. *pREPARE THE FIELDCAT MANUALLY. PERFORM F_PREPARE_FCAT USING: '1' '2' '3' '4' '5' DATA WA_LAYOUT TYPE LVC_S_LAYO. WA_lAYOUT-CTAB_FNAME = 'COLOR'. wa_layout-STYLEFNAME = 'STYLE'. DATA IT_SORT TYPE LVC_T_SORT. DATA WA_SORT TYPE LVC_S_SORT. WA_SORT-FIELDNAME = 'EBELN'. WA_SORT-SUBTOT = 'X'. APPEND WA_SORT TO IT_SORT. SET HANDLER LCL_EVENTS=>TOOLBAR FOR O_GRID. CALL METHOD O_GRID->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING IS_LAYOUT = WA_LAYOUT * IS_PRINT = * IT_SPECIAL_GROUPS = * * * * * IT_TOOLBAR_EXCLUDING = IT_HYPERLINK = IT_ALV_GRAPHICS = IT_EXCEPT_QINFO = IR_SALV_ADAPTER = CHANGING IT_OUTTAB = IT_EKPO IT_FIELDCATALOG = IT_FCAT IT_SORT = IT_SORT * IT_FILTER = EXCEPTIONS INVALID_PARAMETER_COMBINATION = 1 PROGRAM_ERROR = 2 TOO_MANY_LINES = 3 others = 4 . IF SY-SUBRC <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. SET HANDLER LCL_EVENTS=>BUTTON_CLICK LCL_EVENTS=>HOTSPOT_CLICK LCL_EVENTS=>MENU_BUTTON LCL_EVENTS=>USER_COMMAND LCL_EVENTS=>CONTEXT_MENU_REQUEST FOR O_GRID. ENDMODULE. " DISPLAY_FINAL_DATA_9000 Page 5 OUTPUT 'EBELN' 'EBELP' 'MATNR' 'WERKS' 'NETPR' 'Pur Doc' SPACE 'Pur Item' SPACE 'Material' SPACE 'Plant' SPACE 'Net Price' 'X' SPACE SPACE SPACE SPACE 'X' 'X', SPACE, SPACE, SPACE, SPACE. STYLE.

ALV OOPS1 *&---------------------------------------------------------------------* *& Form F_PREPARE_FCAT *&---------------------------------------------------------------------* FORM F_PREPARE_FCAT USING FP_COL_POS TYPE LVC_COLPOS FP_FIELDNAME TYPE LVC_FNAME FP_LABEL TYPE LVC_TXTCOL FP_EDIT FP_SUM FP_HOTSPOT.

CLEAR WA_FCAT. WA_FCAT-COL_POS = FP_COL_POS. WA_FCAT-FIELDNAME = FP_FIELDNAME. WA_FCAT-COLTEXT = FP_LABEL. WA_FCAT-EDIT = FP_EDIT. WA_FCAT-DO_SUM = FP_SUM. WA_FCAT-HOTSPOT = FP_HOTSPOT. APPEND WA_FCAT TO IT_FCAT. ENDFORM. " F_PREPARE_FCAT *&---------------------------------------------------------------------* *& Module USER_COMMAND_9000 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE USER_COMMAND_9000 INPUT. IF OKCODE = 'BACK'. LEAVE TO SCREEN 0. ENDIF. ENDMODULE. " USER_COMMAND_9000 INPUT

Page 6

You might also like