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

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

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