Program for Sales Order by Customer, Date, Sales

Sales Order by Organisation, Customer - To create the Sales Order by More no of Date's

User's can easily take the Report from this by selecting Different kinds like Customer Specific [And/Or] Sales Organisation Specific [And/Or] duration of date but Here Date is Mandatory Fields user must have to give date as a selection criteria

In Second level this report will interact with user where they can select date to see the full Details of Sales Order
Selection
- Sales Organisation
- Date
- Customer this will be usefull when Selecting the Checkbox
Standard Variants
- Output
- Sales Order

Example
Date              SalesOrderNo   Material   Amount  Currency
10.01.2007   8530                  732         1000       INR

*&---------------------------------------------------------------------*
*& Report  ZCHE_SALES_ORDER                                            
*&--------Done by V.Chellavelu on 11.01.2007 
--------------------------*

REPORT  zche_sales_order                        .

****************************Declarations********************************
TABLES: vbkd,vepvg.",vbak,vbap,vbpa,vakpa, vapma.

DATA: BEGIN OF sal OCCURS 0,
      ch TYPE checkbox,
      vbeln LIKE vbak-vbeln, " sales document
      netwr LIKE vbak-netwr, "Net Value of the SalesOrder
      matnr LIKE vbap-matnr, "material no.
      waerk LIKE vbak-waerk, "curr.
      dat   LIKE vbak-erdat, "date.
      END OF sal.
DATA: newsal LIKE sal OCCURS 0 WITH HEADER LINE.

DATA: amount LIKE vbak-netwr, date2(15),date3(8),date4(1),
      date5(2),date6(2).

DATA: lin LIKE sy-curow VALUE 1,"Screens, vertical cursor position at
                                 "PAI available in SYST struc.
      checkbox        TYPE c               ,
      dat LIKE vbak-erdat.

*******************Selection**Screen**Design****************************
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
PARAMETERS: vkorg LIKE vepvg-vkorg,
            vtweg LIKE vepvg-vtweg,
            spart LIKE vepvg-spart.
SELECT-OPTIONS date FOR vbkd-bstdk DEFAULT sy-datum TO sy-datum
                                            OBLIGATORY.
SELECTION-SCREEN END OF BLOCK blk1.

SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-002.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 10.
PARAMETERS: chk1 AS CHECKBOX.
SELECTION-SCREEN POSITION 20.
PARAMETERS: kunnr1 LIKE vbpa-kunnr.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK blk2.

********************First**Level**Operation*****************************
IF chk1 <> 'X'.
  IF vkorg <> ''.
    PERFORM organisation.
  ELSE.
    PERFORM organisation_else.
  ENDIF.

ELSE.
  IF vkorg <> ''.
    PERFORM cus_orga.
  ELSE.
    PERFORM cus_orga_else.
  ENDIF.
ENDIF.


* Displaying the contents which is selected from table by
*  -selection conditions
SORT sal BY dat.

LOOP AT sal.
  ON CHANGE OF sal-dat.
*    FORMAT HOTSPOT ON.
    IF sy-tabix = 1.
      WRITE: sy-vline, sal-ch AS CHECKBOX,sal-dat .
      CLEAR amount.
    ELSE.
      WRITE:sy-vline, amount,/ sy-vline, sal-ch AS CHECKBOX,sal-dat.
      CLEAR amount.
    ENDIF.
  ENDON.
  amount = amount + sal-netwr.
  AT LAST.
    WRITE:sy-vline, amount.
    ULINE.
    SUM.
*    FORMAT HOTSPOT OFF.
    FORMAT COLOR = 3.
    WRITE:/ ' Total Amount:', sal-netwr UNDER amount.
  ENDAT.
ENDLOOP.

**********************Interaction with report**************************

SET PF-STATUS 'BANU'. " To create Application ToolBar for Display 
Button
*                          To verify Double click on BANU

AT USER-COMMAND. " This will execute after pressing Display Button
  CASE sy-ucomm.
    WHEN 'DISP'.
    free newsal.
      DO.
        READ LINE lin FIELD VALUE sal-ch INTO checkbox.
        IF sy-subrc NE 0. EXIT. ENDIF.
        IF checkbox = 'X'.
          PERFORM datecon.
          PERFORM process.
        ENDIF.
        lin = lin + 1.
      ENDDO.
      PERFORM selection.
  ENDCASE.

************************ SUB ROUTINE Area 
******************************
*This Process SubRoutine will assign the values from current
*   -InternalTable (sal) into other IT(newsal), by date which is
*         - selected by CheckBox
FORM process.
  LOOP AT sal WHERE dat = dat.
    newsal-ch    = 'X'.
    newsal-vbeln = sal-vbeln.
    newsal-netwr = sal-netwr.
    newsal-matnr = sal-matnr.
    newsal-waerk = sal-waerk.
    newsal-dat   = sal-dat.
    APPEND newsal.
  ENDLOOP.
ENDFORM.                    "process

*&---------This will display the values for selected dates from new --*
*---------------------internal Table (newsal)-------------------------*
*&      Form  SELECTION
*&--------------------------------------------------------------------*
*---------------------------------------------------------------------*
FORM selection.
  ULINE.
  FORMAT COLOR = 1.
  WRITE:sy-vline,'Date',AT 14 sy-vline, 'Order NO', AT 27 sy-vline,
'Order Material', AT 48 sy-vline,'Order Value(AMT) Currency  '.
  FORMAT COLOR OFF.
  ULINE.
  LOOP AT newsal.
    ON CHANGE OF newsal-dat.
      IF sy-tabix <> 1.
        WRITE:/ sy-vline, AT 14 sy-vline,AT 27 sy-vline,AT 48 sy-vline.
    WRITE:/ sy-vline,newsal-dat,sy-vline,AT 27 sy-vline,AT 48 sy-vline.
      ELSE.
     WRITE: sy-vline,newsal-dat,sy-vline,AT 27 sy-vline,AT 48 sy-vline.
      ENDIF.
    ENDON.
    WRITE:/ sy-vline, AT 14 sy-vline,newsal-vbeln,sy-vline,
      newsal-matnr, sy-vline, newsal-netwr, newsal-waerk.

    AT LAST.
      SUM.
      ULINE.  FORMAT COLOR = 3.
      WRITE:/ sy-vline, AT 15 'Total Amount for selected month:',
                    newsal-netwr UNDER newsal-netwr.
      FORMAT COLOR OFF.
      ULINE.
    ENDAT.
  ENDLOOP.
  lin = 1.
  FREE newsal.
ENDFORM.                    "SELECTION

* This Date convertion is must for pick the particular Date from the
*    -displayed line, and here we are reversing the Date like 
YYYY/MM/DD
*  -because to Check or assign the date we need to give in reverse 
order

*&--------------------------------------------------------------------*
*&      Form  DATECON
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM datecon.
  date2 = sy-lisel(17).
  SHIFT date2 LEFT BY 4 PLACES.
  WHILE date2 <> ''.
    SHIFT date2 RIGHT.
    date4 = date2+11.
    IF date4 <> '.'.
      CONCATENATE date4 date3 INTO date3.
    ENDIF.
  ENDWHILE.
  date5 = date3(2).
  date6 = date3+2.
  date3 = date3+4.
  CONCATENATE date3 date6 date5 INTO date3.
  dat = date3.
*  SORT dat BY dat.
*  DELETE ADJACENT DUPLICATES FROM dat COMPARING dat.
ENDFORM.                    "DATECON


* Here we are doing different kinds of selections by the EndUser's 
needs

*&---------When user selectiong an Sales Organisation-----------------*
*&      Form  ORGANISATION
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM organisation.
  SELECT f~vbeln p~matnr c~netwr c~waerk p~audat INTO (sal-vbeln,
sal-matnr, sal-netwr,sal-waerk, sal-dat) FROM ( vakpa AS f INNER JOIN
      vbak AS c ON f~vbeln = c~vbeln ) INNER JOIN vapma AS p ON
f~vbeln = p~vbeln WHERE  p~audat IN date AND p~vkorg = vkorg.
    APPEND sal.
  ENDSELECT.
ENDFORM.                    "ORGANISATION


*&---------Without Sales Organisation i.e All Organisation------------*
*&      Form  ORGANISATION_ELSE
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM organisation_else.
  SELECT f~vbeln p~matnr c~netwr c~waerk p~audat INTO (sal-vbeln,
sal-matnr, sal-netwr,sal-waerk, sal-dat) FROM ( vakpa AS f INNER JOIN
    vbak AS c ON f~vbeln = c~vbeln ) INNER JOIN vapma AS p ON
    f~vbeln = p~vbeln WHERE  p~audat IN date.

    APPEND sal.
  ENDSELECT.
ENDFORM.                    "ORGANISATION_ELSE

*&------------When Selecting Customer by choosing CheckBox------------*
*&      Form  CUS_ORGA
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM cus_orga.
  SELECT f~vbeln p~matnr c~netwr c~waerk p~audat INTO (sal-vbeln,
sal-matnr, sal-netwr,sal-waerk, sal-dat) FROM ( vakpa AS f INNER JOIN
        vbak AS c ON f~vbeln = c~vbeln ) INNER JOIN vapma AS p ON
       f~vbeln = p~vbeln WHERE p~audat IN date AND p~vkorg = vkorg AND
       p~kunnr = kunnr1.

    APPEND sal.
  ENDSELECT.
ENDFORM.                    "CUS_ORGA

*&------------Without Customer by without choosing CheckBox-----------*
*&      Form  CUS_ORGA_ELSE
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM cus_orga_else.
  SELECT f~vbeln p~matnr c~netwr c~waerk p~audat INTO (sal-vbeln,
sal-matnr, sal-netwr,sal-waerk, sal-dat) FROM ( vakpa AS f INNER JOIN
    vbak AS c ON f~vbeln = c~vbeln ) INNER JOIN vapma AS p ON
f~vbeln = p~vbeln WHERE p~audat IN date AND p~kunnr = kunnr1.

    APPEND sal.
  ENDSELECT.
By Chellavelu .V - chella.velu@gmail.com

Get help for your ABAP problems
Do you have a ABAP Question?

SAP Books
SAP Certification, Functional, Basis Administration and ABAP Programming Reference Books

ABAP Tips
ABAP Forum for Discussion and Samples Program Codes for Abapers

Best regards,
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.
All product names are trademarks of their respective companies.  The site www.erpgreat.com is in no way affiliated with SAP AG.
Every effort is made to ensure the content integrity.  Information used on this site is at your own risk.
 The content on this site may not be reproduced or redistributed without the express written permission of
www.erpgreat.com or the content authors.