#1
|
|||
|
|||
An Interactive ALV Report
An Interactive ALV Report
*&---------------------------------------------------------------------* *& Report ZZ_22038_22098_002 * *& * *&---------------------------------------------------------------------* *& This is an Interactive ALV report, where on line slection we can see *& the secondry list *& *& * *&---------------------------------------------------------------------* REPORT ZZ_22038_22098_002 NO STANDARD PAGE HEADING LINE-SIZE 650 MESSAGE-ID ZZ_9838 . TYPE-POOLS: SLIS. *type declaration for values from ekko TYPES: BEGIN OF I_EKKO, EBELN LIKE EKKO-EBELN, AEDAT LIKE EKKO-AEDAT, BUKRS LIKE EKKO-BUKRS, BSART LIKE EKKO-BSART, LIFNR LIKE EKKO-LIFNR, END OF I_EKKO. DATA: IT_EKKO TYPE STANDARD TABLE OF I_EKKO INITIAL SIZE 0, WA_EKKO TYPE I_EKKO. *type declaration for values from ekpo TYPES: BEGIN OF I_EKPO, EBELN LIKE EKPO-EBELN, EBELP LIKE EKPO-EBELP, MATNR LIKE EKPO-MATNR, MENGE LIKE EKPO-MENGE, MEINS LIKE EKPO-MEINS, NETPR LIKE EKPO-NETPR, END OF I_EKPO. DATA: IT_EKPO TYPE STANDARD TABLE OF I_EKPO INITIAL SIZE 0, WA_EKPO TYPE I_EKPO . *variable for Report ID DATA: V_REPID LIKE SY-REPID . *declaration for fieldcatalog DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV. DATA: IT_LISTHEADER TYPE SLIS_T_LISTHEADER. * declaration for events table where user comand or set PF status will * be defined DATA: V_EVENTS TYPE SLIS_T_EVENT, WA_EVENT TYPE SLIS_ALV_EVENT. * declartion for layout DATA: ALV_LAYOUT TYPE SLIS_LAYOUT_ALV. * declaration for variant(type of display we want) DATA: I_VARIANT TYPE DISVARIANT, I_VARIANT1 TYPE DISVARIANT, I_SAVE(1) TYPE C. *PARAMETERS : p_var TYPE disvariant-variant. *Title displayed when the alv list is displayed DATA: I_TITLE_EKKO TYPE LVC_TITLE VALUE 'FIRST LIST DISPLAYED'. DATA: I_TITLE_EKPO TYPE LVC_TITLE VALUE 'SECONDRY LIST DISPLAYED'. INITIALIZATION. V_REPID = SY-REPID. PERFORM BUILD_FIELDCATLOG. PERFORM EVENT_CALL. PERFORM POPULATE_EVENT. START-OF-SELECTION. PERFORM DATA_RETRIEVAL. PERFORM BUILD_LISTHEADER USING IT_LISTHEADER. PERFORM DISPLAY_ALV_REPORT. *&--------------------------------------------------------------------* *& Form BUILD_FIELDCATLOG *&--------------------------------------------------------------------* * Fieldcatalog has all the field details from ekko *---------------------------------------------------------------------* FORM BUILD_FIELDCATLOG. WA_FIELDCAT-TABNAME = 'IT_EKKO'. WA_FIELDCAT-FIELDNAME = 'EBELN'. WA_FIELDCAT-SELTEXT_M = 'PO NO.'. APPEND WA_FIELDCAT TO I_FIELDCAT. CLEAR WA_FIELDCAT. WA_FIELDCAT-TABNAME = 'IT_EKKO'. WA_FIELDCAT-FIELDNAME = 'AEDAT'. WA_FIELDCAT-SELTEXT_M = 'DATE.'. APPEND WA_FIELDCAT TO I_FIELDCAT. CLEAR WA_FIELDCAT. WA_FIELDCAT-TABNAME = 'IT_EKKO'. WA_FIELDCAT-FIELDNAME = 'BUKRS'. WA_FIELDCAT-SELTEXT_M = 'COMPANY CODE'. APPEND WA_FIELDCAT TO I_FIELDCAT. CLEAR WA_FIELDCAT. WA_FIELDCAT-TABNAME = 'IT_EKKO'. WA_FIELDCAT-FIELDNAME = 'BUKRS'. WA_FIELDCAT-SELTEXT_M = 'DOCMENT TYPE'. APPEND WA_FIELDCAT TO I_FIELDCAT. CLEAR WA_FIELDCAT. WA_FIELDCAT-TABNAME = 'IT_EKKO'. WA_FIELDCAT-FIELDNAME = 'LIFNR'. WA_FIELDCAT-NO_OUT = 'X'. WA_FIELDCAT-SELTEXT_M = 'VENDOR CODE'. APPEND WA_FIELDCAT TO I_FIELDCAT. CLEAR WA_FIELDCAT. ENDFORM. "BUILD_FIELDCATLOG *&--------------------------------------------------------------------* *& Form EVENT_CALL *&--------------------------------------------------------------------* * we get all events - TOP OF PAGE or USER COMMAND in table v_events *---------------------------------------------------------------------* FORM EVENT_CALL. CALL FUNCTION 'REUSE_ALV_EVENTS_GET' EXPORTING I_LIST_TYPE = 0 IMPORTING ET_EVENTS = V_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. ENDFORM. "EVENT_CALL *&--------------------------------------------------------------------* *& Form POPULATE_EVENT *&--------------------------------------------------------------------* * Events populated for TOP OF PAGE & USER COMAND *---------------------------------------------------------------------* FORM POPULATE_EVENT. READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'. IF SY-SUBRC EQ 0. WA_EVENT-FORM = 'TOP_OF_PAGE'. MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME = WA_EVENT-FORM. ENDIF. READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'. IF SY-SUBRC EQ 0. WA_EVENT-FORM = 'USER_COMMAND'. MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME = WA_EVENT-NAME. ENDIF. ENDFORM. "POPULATE_EVENT *&--------------------------------------------------------------------* *& Form data_retrieval *&--------------------------------------------------------------------* * retreiving values from the database table ekko *---------------------------------------------------------------------* FORM DATA_RETRIEVAL. SELECT EBELN AEDAT BUKRS BSART LIFNR FROM EKKO INTO TABLE IT_EKKO. ENDFORM. "data_retrieval *&--------------------------------------------------------------------* *& Form bUild_listheader *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * -->I_LISTHEADEtext *---------------------------------------------------------------------* FORM BUILD_LISTHEADER USING I_LISTHEADER TYPE SLIS_T_LISTHEADER. DATA HLINE TYPE SLIS_LISTHEADER. HLINE-INFO = 'this is my first alv pgm'. HLINE-TYP = 'H'. ENDFORM. "build_listheader *&--------------------------------------------------------------------* *& Form display_alv_report *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* FORM DISPLAY_ALV_REPORT. V_REPID = SY-REPID. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = V_REPID * I_CALLBACK_PF_STATUS_SET = ' ' I_CALLBACK_USER_COMMAND = 'USER_COMMAND' I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE' I_GRID_TITLE = I_TITLE_EKKO * I_GRID_SETTINGS = * IS_LAYOUT = ALV_LAYOUT IT_FIELDCAT = I_FIELDCAT[] * IT_EXCLUDING = * IT_SPECIAL_GROUPS = * IT_SORT = * IT_FILTER = * IS_SEL_HIDE = * i_default = 'ZLAY1' I_SAVE = 'A' * is_variant = i_variant IT_EVENTS = V_EVENTS TABLES T_OUTTAB = IT_EKKO * EXCEPTIONS * PROGRAM_ERROR = 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. ENDFORM. "display_alv_report *&--------------------------------------------------------------------* *& Form TOP_OF_PAGE *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* FORM TOP_OF_PAGE. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING IT_LIST_COMMENTARY = IT_LISTHEADER * i_logo = * I_END_OF_LIST_GRID = . ENDFORM. "TOP_OF_PAGE *&--------------------------------------------------------------------* *& Form USER_COMMAND *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * -->R_UCOMM text * -->, text * -->RS_SLEFIELDtext *---------------------------------------------------------------------* FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM RS_SELFIELD TYPE SLIS_SELFIELD. CASE R_UCOMM. WHEN '&IC1'. READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TABINDEX. PERFORM BUILD_FIELDCATLOG_EKPO. PERFORM EVENT_CALL_EKPO. PERFORM POPULATE_EVENT_EKPO. PERFORM DATA_RETRIEVAL_EKPO. PERFORM BUILD_LISTHEADER_EKPO USING IT_LISTHEADER. PERFORM DISPLAY_ALV_EKPO. ENDCASE. ENDFORM. "user_command *&--------------------------------------------------------------------* *& Form BUILD_FIELDCATLOG_EKPO *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* FORM BUILD_FIELDCATLOG_EKPO. WA_FIELDCAT-TABNAME = 'IT_EKPO'. WA_FIELDCAT-FIELDNAME = 'EBELN'. WA_FIELDCAT-SELTEXT_M = 'PO NO.'. APPEND WA_FIELDCAT TO I_FIELDCAT. CLEAR WA_FIELDCAT. WA_FIELDCAT-TABNAME = 'IT_EKPO'. WA_FIELDCAT-FIELDNAME = 'EBELP'. WA_FIELDCAT-SELTEXT_M = 'LINE NO'. APPEND WA_FIELDCAT TO I_FIELDCAT. CLEAR WA_FIELDCAT. WA_FIELDCAT-TABNAME = 'I_EKPO'. WA_FIELDCAT-FIELDNAME = 'MATNR'. WA_FIELDCAT-SELTEXT_M = 'MATERIAL NO.'. APPEND WA_FIELDCAT TO I_FIELDCAT. CLEAR WA_FIELDCAT. WA_FIELDCAT-TABNAME = 'I_EKPO'. WA_FIELDCAT-FIELDNAME = 'MENGE'. WA_FIELDCAT-SELTEXT_M = 'QUANTITY'. APPEND WA_FIELDCAT TO I_FIELDCAT. CLEAR WA_FIELDCAT. WA_FIELDCAT-TABNAME = 'I_EKPO'. WA_FIELDCAT-FIELDNAME = 'MEINS'. WA_FIELDCAT-SELTEXT_M = 'UOM'. APPEND WA_FIELDCAT TO I_FIELDCAT. CLEAR WA_FIELDCAT. WA_FIELDCAT-TABNAME = 'I_EKPO'. WA_FIELDCAT-FIELDNAME = 'NETPR'. WA_FIELDCAT-SELTEXT_M = 'PRICE'. APPEND WA_FIELDCAT TO I_FIELDCAT. CLEAR WA_FIELDCAT. ENDFORM. "BUILD_FIELDCATLOG_EKPO *&--------------------------------------------------------------------* *& Form event_call_ekpo *&--------------------------------------------------------------------* * we get all events - TOP OF PAGE or USER COMMAND in table v_events *---------------------------------------------------------------------* FORM EVENT_CALL_EKPO. CALL FUNCTION 'REUSE_ALV_EVENTS_GET' EXPORTING I_LIST_TYPE = 0 IMPORTING ET_EVENTS = V_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. ENDFORM. "event_call_ekpo *&--------------------------------------------------------------------* *& Form POPULATE_EVENT *&--------------------------------------------------------------------* * Events populated for TOP OF PAGE & USER COMAND *---------------------------------------------------------------------* FORM POPULATE_EVENT_EKPO. READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'. IF SY-SUBRC EQ 0. WA_EVENT-FORM = 'TOP_OF_PAGE'. MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME = WA_EVENT-FORM. ENDIF. ENDFORM. "POPULATE_EVENT *&--------------------------------------------------------------------* *& Form TOP_OF_PAGE *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* FORM F_TOP_OF_PAGE. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING IT_LIST_COMMENTARY = IT_LISTHEADER * i_logo = * I_END_OF_LIST_GRID = . ENDFORM. "TOP_OF_PAGE *&--------------------------------------------------------------------* *& Form USER_COMMAND *&--------------------------------------------------------------------* * text *---------------------------------------------------------------------* * -->R_UCOMM text * -->, text * -->RS_SLEFIELDtext *---------------------------------------------------------------------* *retreiving values from the database table ekko FORM DATA_RETRIEVAL_EKPO. SELECT EBELN EBELP MATNR MENGE MEINS NETPR FROM EKPO INTO TABLE IT_EKPO. ENDFORM. FORM BUILD_LISTHEADER_EKPO USING I_LISTHEADER TYPE SLIS_T_LISTHEADER. DATA: HLINE1 TYPE SLIS_LISTHEADER. HLINE1-TYP = 'H'. HLINE1-INFO = 'CHECKING PGM'. ENDFORM. FORM DISPLAY_ALV_EKPO. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING * I_INTERFACE_CHECK = ' ' * I_BYPASSING_BUFFER = ' ' * I_BUFFER_ACTIVE = ' ' I_CALLBACK_PROGRAM = V_REPID * I_CALLBACK_PF_STATUS_SET = ' ' * I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND' I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE' * I_CALLBACK_HTML_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_END_OF_LIST = ' ' * I_STRUCTURE_NAME = * I_BACKGROUND_ID = ' ' I_GRID_TITLE = I_TITLE_EKPO * I_GRID_SETTINGS = * IS_LAYOUT = IT_FIELDCAT = I_FIELDCAT[] * IT_EXCLUDING = * IT_SPECIAL_GROUPS = * IT_SORT = * IT_FILTER = * IS_SEL_HIDE = * I_DEFAULT = I_SAVE = 'A' * IS_VARIANT = IT_EVENTS = V_EVENTS TABLES T_OUTTAB = IT_EKPO EXCEPTIONS PROGRAM_ERROR = 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. ENDFORM. |