|
|
|
5 Most Popular Contributions
|
|
|
|
|
|
|
|
Written by David Chavez
|
|
Wednesday, 07 March 2007 |
This report displays sales order information with or without subsequent documents. The user is able to drill down into a sales order and view multiple tracking numbers. If the order is type RE(return), item values are treated as negative by this report, thus arriving at a true sales order net value. The net value reflects (item price*qty) - discounts + surcharge Tax is not part of the net value of the order.
REPORT ZGI_ORDERTRACKING LINE-SIZE 170 MESSAGE-ID Z0. *----------------------------------------------------------------------* * Description: * * This report displays sales order information with or without * * subsequent documents. The user is able to drill down into a * * sales order and view multiple tracking numbers. If the order is* * type RE(return), item values are treated as negative by this * * report, thus arriving at a true sales order net value. * * The net value reflects (item price*qty) - discounts + surcharge* * Tax is not part of the net value of the order. * *----------------------------------------------------------------------* * Table Decalarations * *----------------------------------------------------------------------* TABLES: VBAKUK, "Sales Document Header and Status Data VBAP, "Sales Document: Item Data VBUP, "Sales Document: Item Status VBFA, "Sales Document Flow KNA1, "General Data in Customer Master MARA, "Material Master KONH, "Pricing Conditions Header KONP, "Pricing Conditions Item VBKD, "Sales Document: Business Data MAKT, "Material Texts ADRC, "Addresses (central address admin.) VBPA, "Sales Document: Partner LIKP, "SD Document: Delivery Header Data CEPCT. "Texts for Profit Center Master Data
*----------------------------------------------------------------------* * Internal Table Declarations * *----------------------------------------------------------------------* DATA: BEGIN OF T_SHEAD OCCURS 0, VBELN LIKE VBAKUK-VBELN, "Sales Document ERDAT LIKE VBAKUK-ERDAT, "Order creation date AUART LIKE VBAKUK-AUART, "Order Type BNAME LIKE VBAKUK-BNAME, "Name of orderer KUNNR LIKE VBAKUK-KUNNR, "Sold-to customer ABSTK LIKE VBAKUK-ABSTK, "Overall rejection status BSTNK LIKE VBAKUK-BSTNK, "Confirmation status END OF T_SHEAD.
DATA: BEGIN OF T_SITEM OCCURS 0, VBELN LIKE VBAP-VBELN, "Sales order number POSNR LIKE VBAP-POSNR, "Sales item number MATNR LIKE VBAP-MATNR, "Material number KWMENG LIKE VBAP-KWMENG, "Quantity ordered KBMENG LIKE VBAP-KBMENG, "Quantity confirmed NETPR LIKE VBAP-NETPR, "Net price per item NETWR LIKE VBAP-NETPR, "Net value per item PRCTR LIKE VBAP-PRCTR, "Profit center END OF T_SITEM.
DATA: BEGIN OF T_DFLOW OCCURS 0, VBELV LIKE VBFA-VBELV, "Preceding sales doc POSNV LIKE VBFA-POSNV, "Preceding doc item VBELN LIKE VBFA-VBELN, "Subsequent doc POSNN LIKE VBFA-POSNN, "Subsequent doc item VBTYP_N LIKE VBFA-VBTYP_N, "Subsequent doc type RFMNG LIKE VBFA-RFMNG, "Reference quantity MATNR LIKE VBFA-MATNR, "Material number END OF T_DFLOW.
DATA: BEGIN OF T_DELIV OCCURS 0, VBELN LIKE LIKP-VBELN, "Delivery doc number VSTEL LIKE LIKP-VSTEL, "Shipping point LFDAT LIKE LIKP-LFDAT, "Delivery date KODAT LIKE LIKP-KODAT, "Picking date KUNNR LIKE LIKP-KUNNR, "Ship-to BOLNR LIKE LIKP-BOLNR, "Bill of lading WADAT_IST LIKE LIKP-WADAT_IST, "Actual GI date END OF T_DELIV. *----------------------------------------------------------------------* * Constant Declarations * *----------------------------------------------------------------------* CONSTANTS: C_NEG1 TYPE I VALUE '1-'. *----------------------------------------------------------------------* * Variable declarations * *----------------------------------------------------------------------* DATA: W_NET_TOTAL LIKE VBAP-NETPR, W_ORDER_COUNT TYPE I, W_VALUEKEY LIKE KONH-VAKEY VALUE '001010'. *----------------------------------------------------------------------* * Selection Screen Formatting * *----------------------------------------------------------------------* SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-099. SELECT-OPTIONS: S_ORDER FOR VBAKUK-VBELN, S_DATE FOR VBAKUK-ERDAT, S_SOLDT FOR VBAKUK-KUNNR, S_PURCH FOR VBAKUK-BSTNK, S_REGIO FOR VBKD-J_1AREGIO. SELECTION-SCREEN END OF BLOCK B1. SELECTION-SCREEN BEGIN OF BLOCK C1 WITH FRAME TITLE TEXT-101. PARAMETERS: P_ALL RADIOBUTTON GROUP S1, P_SIMP RADIOBUTTON GROUP S1. SELECTION-SCREEN END OF BLOCK C1. *----------------------------------------------------------------------* * Initialization * *----------------------------------------------------------------------* INITIALIZATION. PERFORM F0_DEAFULTS. *----------------------------------------------------------------------* * Main program start * *----------------------------------------------------------------------* START-OF-SELECTION. * Only show this gui status if program is run on-line in SAP IF SY-SUBTY = 4. SET PF-STATUS 'GH1'. ENDIF. * Read sales order header data SELECT VBELN ERDAT AUART BNAME KUNNR ABSTK BSTNK INTO (T_SHEAD-VBELN, T_SHEAD-ERDAT, T_SHEAD-AUART, T_SHEAD-BNAME, T_SHEAD-KUNNR, T_SHEAD-ABSTK, T_SHEAD-BSTNK) FROM VBAKUK WHERE VBELN IN S_ORDER AND ERDAT IN S_DATE AND KUNNR IN S_SOLDT AND BSTNK IN S_PURCH. * Get sold-to customer's state SELECT SINGLE ADRNR FROM VBPA INTO (VBPA-ADRNR) WHERE VBELN = T_SHEAD-VBELN AND POSNR = '000000' AND PARVW = 'AG'. SELECT REGION FROM ADRC INTO (ADRC-REGION) WHERE ADDRNUMBER = VBPA-ADRNR. ENDSELECT. IF SY-SUBRC NE 0. CLEAR ADRC-REGION. ENDIF. * Make sure state is in selection criteria CHECK ADRC-REGION IN S_REGIO. SELECT SINGLE NAME1 INTO (KNA1-NAME1) FROM KNA1 WHERE KUNNR EQ T_SHEAD-KUNNR. FORMAT COLOR COL_TOTAL. WRITE:/ T_SHEAD-VBELN, 16 T_SHEAD-ERDAT, 30 T_SHEAD-KUNNR, 41 KNA1-NAME1, 92 ADRC-REGION. * Translate rejection status PERFORM F0_TRANSLATE_REJECTION. * Hide sales document number to enable drilldown HIDE: T_SHEAD-VBELN. * Read sales order item information SELECT VBELN POSNR MATNR KWMENG KBMENG NETWR NETPR PRCTR INTO (T_SITEM-VBELN, T_SITEM-POSNR, T_SITEM-MATNR, T_SITEM-KWMENG, T_SITEM-KBMENG, T_SITEM-NETWR, T_SITEM-NETPR, T_SITEM-PRCTR) FROM VBAP WHERE VBELN EQ T_SHEAD-VBELN. * Obtain sales order pricing date SELECT SINGLE PRSDT FROM VBKD INTO (VBKD-PRSDT) WHERE VBELN = T_SITEM-VBELN AND POSNR = '000000'. * Look up retail price based on SO pricing date MOVE T_SITEM-MATNR TO W_VALUEKEY+6. SELECT KNUMH FROM KONH INTO (KONH-KNUMH) WHERE KSCHL = 'PR00' AND VAKEY = W_VALUEKEY AND DATAB LE VBKD-PRSDT AND DATBI GE VBKD-PRSDT. ENDSELECT. IF SY-SUBRC NE 0. CLEAR KONH-KNUMH. ENDIF. SELECT SINGLE KBETR FROM KONP INTO (KONP-KBETR) WHERE KNUMH = KONH-KNUMH AND KOPOS = '01'. IF SY-SUBRC NE 0. CLEAR KONP-KBETR. ENDIF. * Read itemn status SELECT SINGLE ABSTA INTO (VBUP-ABSTA) FROM VBUP WHERE VBELN EQ T_SITEM-VBELN AND POSNR EQ T_SITEM-POSNR. IF T_SHEAD-AUART EQ 'RE' AND VBUP-ABSTA NE 'X'. MULTIPLY T_SITEM-NETWR BY C_NEG1. ELSEIF VBUP-ABSTA EQ 'X'. T_SITEM-NETWR = 0. ENDIF. CHECK SY-SUBRC = 0. * Cumulate Total net value of sales (excl. tax) ADD T_SITEM-NETWR TO W_NET_TOTAL. FORMAT COLOR COL_NORMAL. * Read profit center text SELECT SINGLE KTEXT INTO (CEPCT-KTEXT) FROM CEPCT WHERE SPRAS = SY-LANGU AND PRCTR = T_SITEM-PRCTR AND DATBI GE T_SHEAD-ERDAT AND KOKRS = '0010'. WRITE: /5 T_SITEM-POSNR, 14 T_SITEM-MATNR, 32 T_SITEM-KWMENG, 52 T_SITEM-KBMENG, 73 KONP-KBETR, 91 T_SITEM-NETPR, 109 T_SITEM-NETWR, 127 CEPCT-KTEXT(10). * Read material data SELECT SINGLE BISMT INTO (MARA-BISMT) FROM MARA WHERE MATNR EQ T_SITEM-MATNR. SELECT SINGLE MAKTX INTO (MAKT-MAKTX) FROM MAKT WHERE MATNR EQ T_SITEM-MATNR AND SPRAS EQ SY-LANGU. WRITE: 139 MARA-BISMT(10), 150 MAKT-MAKTX. HIDE: T_SHEAD-VBELN. * Only display subsequent documents if p_all is flagged IF P_ALL EQ 'X'. PERFORM F0_GET_SUBSEQUENT_DOCS. ENDIF. ENDSELECT. ULINE. ADD 1 TO W_ORDER_COUNT. ENDSELECT. * If no orders were retrieved from vbak, give message IF SY-SUBRC NE 0. MESSAGE I000 WITH 'No matches. Please make another selection.'. ENDIF. SKIP. ULINE. FORMAT COLOR COL_KEY. WRITE: / 'Total orders:', W_ORDER_COUNT, 'Total net value:', W_NET_TOTAL. CLEAR T_SHEAD.
END-OF-SELECTION. *----------------------------------------------------------------------* * Process drill-down/interactive features * *----------------------------------------------------------------------* AT USER-COMMAND. IF T_SHEAD IS INITIAL. MESSAGE E000 WITH 'Please place cursor on valid line.'. ENDIF. CASE SY-UCOMM. * If the user presses, the tracking # button, display tracking numbers WHEN 'UPS'. SUBMIT ZTRACKING AND RETURN WITH BELNR = T_SHEAD-VBELN. * If the user presses display, drill-down into the sales order WHEN 'DIS'. CALL FUNCTION 'RV_CALL_DISPLAY_TRANSACTION' EXPORTING VBELN = T_SHEAD-VBELN. ENDCASE. CLEAR T_SHEAD. *&---------------------------------------------------------------------* *& Form F0_DEAFULTS *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM F0_DEAFULTS. WRITE: 105 T_SHEAD-BSTNK. * Default date range MOVE 'I' TO S_DATE-SIGN. MOVE 'BT' TO S_DATE-OPTION. MOVE SY-DATUM TO S_DATE-HIGH. SUBTRACT 7 FROM SY-DATUM. MOVE SY-DATUM TO S_DATE-LOW. APPEND S_DATE.
* Fill report header variables WRITE SY-DATUM TO SY-TVAR0. SY-TVAR1 = SY-MANDT. SY-TVAR2 = SY-SYSID. ENDFORM. " F0_DEAFULTS *&---------------------------------------------------------------------* *& Form F0_TRANSLATE_REJECTION *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM F0_TRANSLATE_REJECTION. CASE T_SHEAD-ABSTK. WHEN 'A'. WRITE: 73 'All items OK'. WHEN 'B'. FORMAT COLOR 3. WRITE: 73 'Partially cancelled'. FORMAT RESET. WHEN 'C'. FORMAT COLOR 6. WRITE: 73 'Completely cancelled'. FORMAT RESET. ENDCASE.
ENDFORM. " F0_TRANSLATE_REJECTION *&---------------------------------------------------------------------* *& Form F0_GET_SUBSEQUENT_DOCS *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM F0_GET_SUBSEQUENT_DOCS. * Read subsequent docs from vbfa for each sales order SELECT VBELV POSNV VBELN POSNN VBTYP_N RFMNG MATNR INTO (T_DFLOW-VBELV, T_DFLOW-POSNV, T_DFLOW-VBELN, T_DFLOW-POSNN, T_DFLOW-VBTYP_N, T_DFLOW-RFMNG, T_DFLOW-MATNR) FROM VBFA WHERE VBELV EQ T_SITEM-VBELN AND POSNV EQ T_SITEM-POSNR. FORMAT COLOR COL_GROUP. WRITE: /10 T_DFLOW-VBELN, 22 T_DFLOW-POSNN. HIDE: T_SHEAD-VBELN. * Translate the subsuquent document type CASE T_DFLOW-VBTYP_N. WHEN 'A'. WRITE: 30 TEXT-000. WHEN 'B'. WRITE: 30 TEXT-001. WHEN 'C'. WRITE: 30 TEXT-002. WHEN 'D'. WRITE: 30 TEXT-003. WHEN 'E'. WRITE: 30 TEXT-004. WHEN 'F'. WRITE: 30 TEXT-005. WHEN 'G'. WRITE: 30 TEXT-006. WHEN 'H'. WRITE: 30 TEXT-007. WHEN 'I'. WRITE: 30 TEXT-008. WHEN 'J'. * If the item is a delivery, get the picking status SELECT SINGLE KOSTA FROM VBUP INTO (VBUP-KOSTA) WHERE VBELN = T_DFLOW-VBELN AND POSNR = T_DFLOW-POSNN. WRITE: 30 TEXT-009. IF VBUP-KOSTA EQ 'C'. WRITE: 44 'Picked'. ENDIF. WHEN 'K'. WRITE: 30 TEXT-010. WHEN 'L'. WRITE: 30 TEXT-011. WHEN 'M'. WRITE: 30 TEXT-012. WHEN 'N'. WRITE: 30 TEXT-013. WHEN 'O'. WRITE: 30 TEXT-014. WHEN 'P'. WRITE: 30 TEXT-015. WHEN 'Q'. WRITE: 30 TEXT-016. WHEN 'R'. WRITE: 30 TEXT-017. WHEN 'S'. WRITE: 30 TEXT-018. WHEN 'T'. WRITE: 30 TEXT-019. WHEN 'U'. WRITE: 30 TEXT-020. WHEN 'V'. WRITE: 30 TEXT-021. WHEN 'W'. WRITE: 30 TEXT-022. WHEN 'X'. WRITE: 30 TEXT-023. WHEN '0'. WRITE: 30 TEXT-024. WHEN '1'. WRITE: 30 TEXT-025. WHEN '2'. WRITE: 30 TEXT-026. WHEN '3'. WRITE: 30 TEXT-027. WHEN '4'. WRITE: 30 TEXT-028. WHEN '5'. WRITE: 30 TEXT-029. WHEN '6'. WRITE: 30 TEXT-030. WHEN '7'. WRITE: 30 TEXT-031. WHEN '8'. WRITE: 30 TEXT-032. WHEN 'a'. WRITE: 30 TEXT-033. WHEN 'g'. WRITE: 30 TEXT-034. WHEN 'h'. WRITE: 30 TEXT-035. WHEN 'i'. WRITE: 30 TEXT-036. WHEN 'j'. WRITE: 30 TEXT-037. ENDCASE. WRITE: 50 T_DFLOW-RFMNG. HIDE: T_SHEAD-VBELN. * If the item is a delivery, read delivery data from likp IF T_DFLOW-VBTYP_N = 'J'. SELECT VBELN VSTEL LFDAT KODAT KUNNR BOLNR WADAT_IST INTO (T_DELIV-VBELN, T_DELIV-VSTEL, T_DELIV-LFDAT, T_DELIV-KODAT, T_DELIV-KUNNR, T_DELIV-BOLNR, T_DELIV-WADAT_IST) FROM LIKP WHERE VBELN EQ T_DFLOW-VBELN. FORMAT COLOR COL_KEY. SELECT SINGLE NAME1 INTO (KNA1-NAME1) FROM KNA1 WHERE KUNNR EQ T_DELIV-KUNNR. WRITE: /15 T_DELIV-LFDAT, 28 T_DELIV-KODAT, 40 T_DELIV-KUNNR, 50 KNA1-NAME1, 68 T_DELIV-WADAT_IST, 80 T_DELIV-BOLNR. HIDE: T_SHEAD-VBELN. ENDSELECT. ENDIF. ENDSELECT.
ENDFORM. " F0_GET_SUBSEQUENT_DOCS
Related Items:
|
|
|
Statistics
Contribution ActivityUtilities: 38
Tips and Tricks: 332
Sample Code: 164
Total Contributions: 548
Member ActivityMembers: 6081 since 2/1/2007!
New: 7 since yesterday!
Visitors: 964872
We have 5 guests online
Newest Members
Welcome our newest members: - Giftseat (Gift)
- donnav (Donna Verbonac)
- pwagner23 (Paul Wagner)
- niteshfjain (Nitesh)
- 1audit (Vince)
Google Ads
|