Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

i want to search the table according to these requirement

Former Member
0 Kudos

1. Fields on selection screen (input screen) : Plant Code From to , Distributional Channel from to , Division from to , Customer Code from to , Period From to , Material Code (can be used using *) .

2. Field in the output List : Exc. Invoice No, Customer Code , Customer Name , Material Code , Material Description , Invoice Qty, Pack/Forward , Basic Price

1 REPLY 1

Former Member
0 Kudos

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


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.

Reward points if it is usefull ......

Girish