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
Example
*&---------------------------------------------------------------------* *& 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
SAP Books
ABAP Tips
Best regards,
All the site contents are Copyright © www.erpgreat.com
and the content authors. All rights reserved.
|