Shared Top Border

Enterprise Resource
Planning Portal

 

Advertise | Founder BLOG

ERPGenie.COM ABAP Tips and Tricks Database

THE ultimate
ERP website

 

Forums | Vote for us |

Google    Other Search Options

Login

Login to view more content!!!





Lost Password?
No account yet? Register

Registered Access

Poll

What area of ABAP are you interested in?
 
Home arrow Sample Code arrow ABAP Reports arrow Order status report
Order status report PDF Print E-mail
User Rating: / 3
PoorBest 
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:

 
< Prev   Next >

Google Search

Statistics

Contribution Activity
Utilities: 38
Tips and Tricks: 332
Sample Code: 164
Total Contributions: 548

Member Activity
Members: 6081 since 2/1/2007!
New: 7 since yesterday!
Visitors: 964872
We have 5 guests online

Newest Members

Welcome our newest members:

Google Ads

Shared Bottom Border

Contact Us | Polls | Add URL | Contribute | Privacy | Terms | Feedback

Discussion Forum | BLOG | Consultants: Post your resume | Companies: Advertise on ERPGenie.COM | Post Job
Financials Consultant | Consultant Review | Gallia Consulting | Supply Chain Project | SAP Financials Forum
GenieHoldings.COM, Inc. | Genie Press | WorkflowGenie | ESAGenie | ERPTopSites | ABAP Tips and Tricks | SAP Solutions Database

EDIGenie | Searching Survivor