|
REPORT Z_LIST_MATERIALS. TYPE-POOLS: SLIS. TABLES:MARC, MARD, VBAP, LIPS, EKPO, VBFA, EKBE, MARM, VBBE, MARA, MBEW. SELECTION-SCREEN BEGIN OF BLOCK SEL WITH FRAME TITLE TEXT-001. SELECT-OPTIONS: S_WERKS FOR MARC-WERKS, " Plant S_MATNR FOR MARC-MATNR, " Material S_MTART FOR MARA-MTART. " Material Type SELECTION-SCREEN END OF BLOCK SEL. PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT. " ALV Variant CONSTANTS: FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. DATA: BEGIN OF INV OCCURS 100, WERKS LIKE MARD-WERKS, " Plant MATNR LIKE MARD-MATNR, " Material MTART LIKE MARA-MTART, " Material Type STPRS LIKE MBEW-STPRS, " Standard Price AVAIL LIKE MARD-LABST, " Available LABST LIKE MARD-LABST, " Unrestricted use INSME LIKE MARD-INSME, " Quality Inspection RETME LIKE MARD-RETME, " Returns TRANS LIKE MARC-UMLMC, " Stock in transit (calculated) UMLMC LIKE MARC-UMLMC, " Stock Transfer (plant) UMLME LIKE MARD-UMLME, " Transfer (SLoc) WESBS LIKE EKBE-WESBS, " GR Blocked Stock TRAME LIKE MARC-TRAME, " Stock in transit SPEME LIKE MARD-SPEME, " Blocked KWMENG LIKE VBAP-KWMENG, " Sales orders LFIMG LIKE LIPS-LFIMG, " Scheduled for Delivery MENGE LIKE EKPO-MENGE, " Open Purch. Orders VALUE LIKE MBEW-SALK3, " Stock Value (Calculated) MEINS LIKE MARA-MEINS, " Unit of measure END OF INV. DATA: FIELDTAB TYPE SLIS_T_FIELDCAT_ALV, HEADING TYPE SLIS_T_LISTHEADER, LAYOUT TYPE SLIS_LAYOUT_ALV, EVENTS TYPE SLIS_T_EVENT, REPNAME LIKE SY-REPID, F2CODE LIKE SY-UCOMM VALUE '&ETA', G_SAVE(1) TYPE C, G_EXIT(1) TYPE C, G_VARIANT LIKE DISVARIANT, GX_VARIANT LIKE DISVARIANT. INITIALIZATION. REPNAME = SY-REPID. PERFORM INITIALIZE_FIELDCAT USING FIELDTAB[]. PERFORM BUILD_EVENTTAB USING EVENTS[]. PERFORM BUILD_COMMENT USING HEADING[]. PERFORM INITIALIZE_VARIANT. AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI. PERFORM F4_FOR_VARIANT. AT SELECTION-SCREEN. PERFORM PAI_OF_SELECTION_SCREEN. START-OF-SELECTION. PERFORM GET_MARD. PERFORM GET_UNIT_OF_MEASURE. PERFORM GET_MARC. PERFORM GET_EKPO. PERFORM GET_LIPS. PERFORM GET_VBAP. PERFORM GET_OPEN. PERFORM GET_PRICE. END-OF-SELECTION. PERFORM BUILD_LAYOUT USING LAYOUT. PERFORM WRITE_OUTPUT. *&---------------------------------------------------------------------* *& Form INITIALIZE_FIELDCAT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_FIELDTAB[] text * *----------------------------------------------------------------------* FORM INITIALIZE_FIELDCAT USING P_FIELDTAB TYPE SLIS_T_FIELDCAT_ALV. DATA: L_FIELDCAT TYPE SLIS_FIELDCAT_ALV. * fixed columns (obligatory) CLEAR L_FIELDCAT. L_FIELDCAT-TABNAME = 'INV'. L_FIELDCAT-FIX_COLUMN = 'X'. L_FIELDCAT-NO_OUT = 'O'. L_FIELDCAT-FIELDNAME = 'WERKS'. APPEND L_FIELDCAT TO P_FIELDTAB. L_FIELDCAT-FIELDNAME = 'MATNR'. APPEND L_FIELDCAT TO P_FIELDTAB. * totalized columns CLEAR L_FIELDCAT. L_FIELDCAT-TABNAME = 'INV'. L_FIELDCAT-SP_GROUP = 'A'. L_FIELDCAT-DO_SUM = 'X'. L_FIELDCAT-FIELDNAME = 'LABST'. APPEND L_FIELDCAT TO P_FIELDTAB. L_FIELDCAT-FIELDNAME = 'INSME'. APPEND L_FIELDCAT TO P_FIELDTAB. L_FIELDCAT-FIELDNAME = 'RETME'. APPEND L_FIELDCAT TO P_FIELDTAB. L_FIELDCAT-FIELDNAME = 'UMLME'. APPEND L_FIELDCAT TO P_FIELDTAB. L_FIELDCAT-FIELDNAME = 'WESBS'. APPEND L_FIELDCAT TO P_FIELDTAB. L_FIELDCAT-FIELDNAME = 'SPEME'. APPEND L_FIELDCAT TO P_FIELDTAB. * columns with different description L_FIELDCAT-FIELDNAME = 'KWMENG'. L_FIELDCAT-SELTEXT_M = 'Sales Orders'. L_FIELDCAT-SELTEXT_S = 'Sales Or'. L_FIELDCAT-SELTEXT_L = 'Sales Orders Qty'. APPEND L_FIELDCAT TO P_FIELDTAB. L_FIELDCAT-FIELDNAME = 'LFIMG'. L_FIELDCAT-SELTEXT_M = 'Sched. Delivery'. L_FIELDCAT-SELTEXT_S = 'Schd. Del'. L_FIELDCAT-SELTEXT_L = 'Scheduled for Delivery'. APPEND L_FIELDCAT TO P_FIELDTAB. L_FIELDCAT-FIELDNAME = 'TRANS'. L_FIELDCAT-SELTEXT_M = 'Stk. in transit'. L_FIELDCAT-SELTEXT_S = 'Stk. trns'. L_FIELDCAT-SELTEXT_L = 'Stock in transit (sum)'. APPEND L_FIELDCAT TO P_FIELDTAB. L_FIELDCAT-FIELDNAME = 'AVAIL'. L_FIELDCAT-SELTEXT_M = 'Available'. L_FIELDCAT-SELTEXT_S = 'Avail.'. L_FIELDCAT-SELTEXT_L = 'Stock Available'. APPEND L_FIELDCAT TO P_FIELDTAB. L_FIELDCAT-FIELDNAME = 'MENGE'. L_FIELDCAT-SELTEXT_M = 'Open Orders'. L_FIELDCAT-SELTEXT_S = 'Open Ord'. L_FIELDCAT-SELTEXT_L = 'Open Purchase Orders'. APPEND L_FIELDCAT TO P_FIELDTAB. * columns not displayed CLEAR L_FIELDCAT. L_FIELDCAT-TABNAME = 'INV'. L_FIELDCAT-SP_GROUP = 'A'. L_FIELDCAT-NO_OUT = 'X'. L_FIELDCAT-FIELDNAME = 'MEINS'. APPEND L_FIELDCAT TO P_FIELDTAB. L_FIELDCAT-FIELDNAME = 'UMLMC'. APPEND L_FIELDCAT TO P_FIELDTAB. L_FIELDCAT-FIELDNAME = 'TRAME'. APPEND L_FIELDCAT TO P_FIELDTAB. L_FIELDCAT-FIELDNAME = 'STPRS'. APPEND L_FIELDCAT TO P_FIELDTAB. L_FIELDCAT-FIELDNAME = 'VALUE'. APPEND L_FIELDCAT TO P_FIELDTAB. ENDFORM. " INITIALIZE_FIELDCAT *&---------------------------------------------------------------------* *& Form BUILD_EVENTTAB *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_EVENTS[] text * *----------------------------------------------------------------------* FORM BUILD_EVENTTAB USING P_EVENTS TYPE SLIS_T_EVENT. DATA: LS_EVENT TYPE SLIS_ALV_EVENT. CALL FUNCTION 'REUSE_ALV_EVENTS_GET' EXPORTING I_LIST_TYPE = 0 IMPORTING ET_EVENTS = P_EVENTS. READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE INTO LS_EVENT. IF SY-SUBRC = 0. MOVE FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM. APPEND LS_EVENT TO P_EVENTS. ENDIF. ENDFORM. " BUILD_EVENTTAB *&---------------------------------------------------------------------* *& Form BUILD_COMMENT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_HEADING[] text * *----------------------------------------------------------------------* FORM BUILD_COMMENT USING P_HEADING TYPE SLIS_T_LISTHEADER. DATA: HLINE TYPE SLIS_LISTHEADER, TEXT(60) TYPE C, SEP(20) TYPE C. CLEAR: HLINE, TEXT. HLINE-TYP = 'H'. WRITE: TEXT-101 TO TEXT+23. HLINE-INFO = TEXT. APPEND HLINE TO P_HEADING. CLEAR TEXT. WRITE: 'User: ' TO TEXT, SY-UNAME TO TEXT+6, 'Date: ' TO TEXT+25, SY-DATUM TO TEXT+31, 'Page: ' TO TEXT+50, SY-PAGNO TO TEXT+56. HLINE-INFO = TEXT. APPEND HLINE TO P_HEADING. ENDFORM. " BUILD_COMMENT *---------------------------------------------------------------------* * FORM TOP_OF_PAGE * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* FORM TOP_OF_PAGE. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING IT_LIST_COMMENTARY = HEADING. ENDFORM. *&---------------------------------------------------------------------* *& Form INITIALIZE_VARIANT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM INITIALIZE_VARIANT. G_SAVE = 'A'. CLEAR G_VARIANT. G_VARIANT-REPORT = REPNAME. GX_VARIANT = G_VARIANT. CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET' EXPORTING I_SAVE = G_SAVE CHANGING CS_VARIANT = GX_VARIANT EXCEPTIONS NOT_FOUND = 2. IF SY-SUBRC = 0. P_VARI = GX_VARIANT-VARIANT. ENDIF. ENDFORM. " INITIALIZE_VARIANT *&---------------------------------------------------------------------* *& Form F4_FOR_VARIANT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM F4_FOR_VARIANT. CALL FUNCTION 'REUSE_ALV_VARIANT_F4' EXPORTING IS_VARIANT = G_VARIANT I_SAVE = G_SAVE IMPORTING E_EXIT = G_EXIT ES_VARIANT = GX_VARIANT EXCEPTIONS NOT_FOUND = 2. IF SY-SUBRC = 2. MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ELSE. IF G_EXIT = SPACE. P_VARI = GX_VARIANT-VARIANT. ENDIF. ENDIF. ENDFORM. " F4_FOR_VARIANT *&---------------------------------------------------------------------* *& Form PAI_OF_SELECTION_SCREEN *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM PAI_OF_SELECTION_SCREEN. * IF NOT P_VARI IS INITIAL. MOVE G_VARIANT TO GX_VARIANT. MOVE P_VARI TO GX_VARIANT-VARIANT. CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE' EXPORTING I_SAVE = G_SAVE CHANGING CS_VARIANT = GX_VARIANT. G_VARIANT = GX_VARIANT. ELSE. PERFORM INITIALIZE_VARIANT. ENDIF. ENDFORM. " PAI_OF_SELECTION_SCREEN *&---------------------------------------------------------------------* *& Form GET_MARD *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM GET_MARD. SELECT MATNR WERKS LABST INSME RETME UMLME SPEME FROM MARD INTO CORRESPONDING FIELDS OF INV WHERE MATNR IN S_MATNR AND WERKS IN S_WERKS. COLLECT INV. ENDSELECT. PERFORM FILTER_BY_MATERIAL_TYPE. ENDFORM. " GET_MARD *&---------------------------------------------------------------------* *& Form FILTER_BY_MATERIAL_TYPE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM FILTER_BY_MATERIAL_TYPE. LOOP AT INV. CLEAR INV-MTART. SELECT SINGLE MTART INTO INV-MTART FROM MARA WHERE MATNR EQ INV-MATNR AND MTART IN S_MTART. IF SY-SUBRC EQ 0. MODIFY INV. ELSE. DELETE INV. ENDIF. ENDLOOP. ENDFORM. " FILTER_BY_MATERIAL_TYPE *&---------------------------------------------------------------------* *& Form GET_MARC *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM GET_MARC. LOOP AT INV. SELECT SINGLE UMLMC TRAME FROM MARC INTO CORRESPONDING FIELDS OF INV WHERE MATNR EQ INV-MATNR AND WERKS EQ INV-WERKS. IF SY-SUBRC EQ 0. INV-TRANS = INV-UMLMC + INV-TRAME. MODIFY INV. ENDIF. ENDLOOP. ENDFORM. " GET_MARC *&---------------------------------------------------------------------* *& Form GET_EKPO *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM GET_EKPO. DATA: WESBS LIKE INV-WESBS, SHKZG LIKE EKBE-SHKZG, MEINS LIKE EKPO-MEINS, LMEIN LIKE EKPO-LMEIN. LOOP AT INV. CLEAR: WESBS, SHKZG, MEINS, LMEIN. SELECT YWESBS YSHKZG XMEINS XLMEIN INTO (WESBS, SHKZG, MEINS, LMEIN) FROM EKPO AS X JOIN EKBE AS Y ON XEBELN = YEBELN AND XEBELP = YEBELP WHERE XMATNR EQ INV-MATNR AND XWERKS EQ INV-WERKS AND XLOEKZ NE 'L'. IF SHKZG EQ 'H'. MULTIPLY WESBS BY -1. ENDIF. IF MEINS NE LMEIN. PERFORM CONVERT_UNIT_OF_MEASURE CHANGING INV-MATNR MEINS WESBS. ENDIF. ADD WESBS TO INV-WESBS. ENDSELECT. MODIFY INV. ENDLOOP. ENDFORM. " GET_EKPO *&---------------------------------------------------------------------* *& Form GET_LIPS *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM GET_LIPS. DATA: LFIMG LIKE INV-LFIMG. LOOP AT INV. CLEAR: LFIMG, INV-LFIMG. SELECT OMENG INTO LFIMG FROM VBBE WHERE MATNR EQ INV-MATNR AND WERKS EQ INV-WERKS AND VBTYP EQ 'J'. ADD LFIMG TO INV-LFIMG. ENDSELECT. MODIFY INV. ENDLOOP. ENDFORM. " GET_LIPS *&---------------------------------------------------------------------* *& Form GET_VBAP *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM GET_VBAP. DATA: KWMENG LIKE INV-KWMENG. LOOP AT INV. CLEAR: KWMENG, INV-KWMENG. SELECT OMENG INTO KWMENG FROM VBBE WHERE MATNR EQ INV-MATNR AND WERKS EQ INV-WERKS AND VBTYP EQ 'C'. ADD KWMENG TO INV-KWMENG. ENDSELECT. INV-AVAIL = INV-LABST - INV-INSME - INV-KWMENG - INV-LFIMG. MODIFY INV. ENDLOOP. ENDFORM. " GET_VBAP *&---------------------------------------------------------------------* *& Form GET_UNIT_OF_MEASURE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM GET_UNIT_OF_MEASURE. LOOP AT INV. SELECT SINGLE MEINS FROM MARA INTO INV-MEINS WHERE MATNR EQ INV-MATNR. MODIFY INV. ENDLOOP. ENDFORM. " GET_UNIT_OF_MEASURE *&---------------------------------------------------------------------* *& Form GET_OPEN *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM GET_OPEN. DATA: BEGIN OF XTAB OCCURS 10, " Open orders table WERKS LIKE EKPO-WERKS, LGORT LIKE EKPO-LGORT, MATNR LIKE EKPO-MATNR, MENGE LIKE EKPO-MENGE, MENGK LIKE EKPO-MENGE, END OF XTAB. RANGES: L_WERKS FOR MARD-WERKS. LOOP AT INV. REFRESH XTAB. CLEAR: XTAB, L_WERKS. MOVE INV-WERKS TO L_WERKS-LOW. CALL FUNCTION 'MB_ADD_PURCHASE_ORDER_QUANTITY' EXPORTING X_MATNR = INV-MATNR X_MEINS = INV-MEINS X_ELIKZ = SPACE X_LOEKZ = SPACE TABLES XTAB = XTAB XWERKS = L_WERKS. MOVE XTAB-MENGE TO INV-MENGE. MODIFY INV. ENDLOOP. ENDFORM. " GET_OPEN *&---------------------------------------------------------------------* *& Form GET_PRICE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM GET_PRICE. LOOP AT INV. SELECT SINGLE STPRS FROM MBEW INTO INV-STPRS WHERE MATNR EQ INV-MATNR AND BWKEY EQ INV-WERKS AND BWTAR EQ SPACE. IF SY-SUBRC EQ 0. INV-VALUE = INV-STPRS * ( INV-LABST + INV-INSME + INV-TRANS + INV-SPEME ). MODIFY INV. ENDIF. ENDLOOP. ENDFORM. " GET_PRICE *---------------------------------------------------------------------* * FORM CONVERT_UNIT_OF_MEASURE * *---------------------------------------------------------------------* * text * *---------------------------------------------------------------------* * --> P_MATNR * * --> P_VRKME * * --> P_QUANT * *---------------------------------------------------------------------* FORM CONVERT_UNIT_OF_MEASURE USING P_MATNR P_VRKME P_QUANT. DATA: UMREZ LIKE MARM-UMREZ, UMREN LIKE MARM-UMREN. SELECT SINGLE UMREZ UMREN INTO (UMREZ, UMREN) FROM MARM WHERE MATNR EQ P_MATNR AND MEINH EQ P_VRKME. IF SY-SUBRC EQ 0. COMPUTE P_QUANT = ( P_QUANT * UMREZ ) / UMREN. ENDIF. ENDFORM. *&---------------------------------------------------------------------* *& Form BUILD_LAYOUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_LAYOUT text * *----------------------------------------------------------------------* FORM BUILD_LAYOUT USING P_LAYOUT TYPE SLIS_LAYOUT_ALV. P_LAYOUT-F2CODE = F2CODE. P_LAYOUT-ZEBRA = 'X'. P_LAYOUT-DETAIL_POPUP = 'X'. ENDFORM. " BUILD_LAYOUT *&---------------------------------------------------------------------* *& Form WRITE_OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM WRITE_OUTPUT. SORT INV BY WERKS MATNR. CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING I_PROGRAM_NAME = REPNAME I_INTERNAL_TABNAME = 'INV' I_INCLNAME = REPNAME CHANGING CT_FIELDCAT = FIELDTAB. IF SY-SUBRC <> 0. WRITE: 'SY-SUBRC: ', SY-SUBRC, 'REUSE_ALV_FIELDCATALOG_MERGE'. ENDIF. CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = REPNAME I_STRUCTURE_NAME = 'INV' IS_LAYOUT = LAYOUT IT_FIELDCAT = FIELDTAB I_DEFAULT = 'A' I_SAVE = G_SAVE IS_VARIANT = G_VARIANT IT_EVENTS = EVENTS[] TABLES T_OUTTAB = INV. IF SY-SUBRC <> 0. WRITE: 'SY-SUBRC: ', SY-SUBRC, 'REUSE_ALV_LIST_DISPLAY'. ENDIF. ENDFORM. " WRITE_OUTPUTABAP Tips by: Ravindra Nikam |
|
Related ABAP Topics:
Get help for your ABAP problems
More ABAP Tips
BDC Programming Tips - Sapscripts Tips - Smartforms Tips SAP Basis, ABAP Programming and Other IMG Stuff http://www.erpgreat.com All the site contents are Copyright © www.erpgreat.com
and the content authors. All rights reserved.
|