Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 2878

Alv report is take lot of time in processing in production server

$
0
0

hi

 

can any one help. i have created this report it is working fine in development server but it's take lot of time while processing in production server.

 

 


REPORT  zh_sd_total_ord_stat.

TABLES: vbak, vbap,  covp, setheader, ekbe,likp.
DATA cxroot TYPEREFTO cx_root.
DATA indx TYPEi.

DATA :  lv_knumv LIKE vbak-knumv.
DATA : v_vbeln LIKE vbfa-vbeln, v_posnr LIKE  vbfa-posnv  ,
        v_netpr TYPE vbap-netpr,
        v_vbrkknumv  TYPE vbrk-knumv,
        vbeln1  TYPE lips-vbeln ,
        vbeln2  TYPE lips-vbeln .

DATA : vbilled TYPEi, vinorder TYPEi,
        netpr1 TYPE  vbap-netpr, lfimg1 TYPE   lips-lfimg,

        v_fkimg TYPE vbrp-fkimg .

TYPE-POOLS:slis.
DATA: it_fcat TYPE slis_t_fieldcat_alv,
        wa_fcat TYPE slis_fieldcat_alv.
DATA: it_fcat1 TYPE slis_t_fieldcat_alv,
        wa_fcat1 TYPE slis_fieldcat_alv,
        wa_fieldlayout  TYPE    slis_layout_alv.
wa_fieldlayout-colwidth_optimize = 'X'.


TYPES :
BEGINOF type_s_likp,
vbeln TYPE likp-vbeln, " Delivery
lfdat TYPE likp-lfdat, " Delivery Date
kunnr TYPE likp-kunnr, " Ship-to party
ENDOF type_s_likp.


TYPES :
BEGINOF type_s_vbkd,
vbeln TYPE vbkd-vbeln, "
posnr TYPE vbkd-posnr, "
bstkd TYPE vbkd-bstkd ," PO
ENDOF type_s_vbkd.



*"---------------------------------------------------------------------------------------*
* Type declaration of the structure to hold specified delivery item  data      *
*"---------------------------------------------------------------------------------------*


TYPES :
BEGINOF type_s_konv,

vbeln TYPE vbak-vbeln, "Order No
knumv  TYPE vbak-knumv, "Number of the document condition
posnr TYPE vbap-posnr,
exfactory TYPE konv-kwert, "EX FACTORY

ENDOF  type_s_konv.


TYPES :
BEGINOF type_s_lips,
vbeln TYPE lips-vbeln, " Delivery
posnr TYPE lips-posnr, " Delivery Item
vgbel TYPE lips-vgbel, " Document number of the  reference document
vgpos TYPE lips-vgpos, " Item number of the reference  item
lfimg TYPE lips-lfimg, " Actual quantity delivered (insales units)
vrkme TYPE lips-vrkme, " Sales unit
ENDOF type_s_lips.
*"--------------------------------------------------------------------------------------*
* Type declaration of the structure to hold specified data in Customer Master *
*"---------------------------------------------------------------------------------------*
TYPES :
BEGINOF type_s_kna1,
kunnr TYPE kna1-kunnr, " Customer Number 1
name1 TYPE kna1-name1,                                      " Name 1
ENDOF type_s_kna1.
*" Type declarations..........................................................................
*"------------------------------------------------------------------------------------------------*
* Type declaration of the structure to hold specified sales document  header data *
*"------------------------------------------------------------------------------------------------*
TYPES :
BEGINOF type_s_vbak,
  vkorg TYPE vbak-vkorg,  "Company
vkbur TYPE  vbak-vkbur , "Sales office
kunnr1 TYPE vbak-kunnr , " "Customer ID

vbeln TYPE vbak-vbeln, " Sales Document
erdat TYPE vbak-erdat, " Date on Which Record Was  Created
aufnr TYPE vbak-aufnr, " Order Number
knumv  TYPE vbak-knumv, "Number of the document condition


ENDOF type_s_vbak.
*"----------------------------------------------------------------------------------------------*
* Type declaration of the structure to hold specified sales document   item data *
*"---------------------------------------------------------------------------------------------*
TYPES :
BEGINOF type_s_vbap,
vbeln TYPE vbak-vbeln, " Sales Document
posnr TYPE vbap-posnr, " Sales Document Item
matnr TYPE vbap-matnr, " Material Number
arktx TYPE vbap-arktx, " Short text for sales orderitem
kwmeng TYPE vbap-kwmeng, " Cumulative Order Quantity in sales Units
vrkme TYPE vbap-vrkme, " Sales unit
knumv TYPE konv-knumv,
ENDOF type_s_vbap.
*"--------------------------------------------------------------------------------------------*
* Type declaration of the structure to hold specified billing item  data                *
*"--------------------------------------------------------------------------------------------*
TYPES :
BEGINOF type_s_vbrp,
vbeln TYPE vbrp-vbeln, " Billing Document
posnr TYPE vbrp-posnr, " Billing item
vgbel TYPE vbrp-vgbel, " Document number of the reference document
vgpos TYPE vbrp-vgpos, " Item number of the reference item
fklmg TYPE vbrp-fklmg, " Billing quantity in stockkeeping unit
vrkme TYPE vbrp-vrkme, " Sales unit
ENDOF type_s_vbrp.
*"-------------------------------------------------------------------------------------------*
* Type declaration of the structure to hold specified sales socument               *
* header,sales document item data,delivery item data,billing item data            *
*"-------------------------------------------------------------------------------------------*
TYPES:
BEGINOF type_s_order,

vkorg TYPE vbak-vkorg,  "Company
vkbur TYPE  vbak-vkbur , "Sales office
kunnr1 TYPE vbak-kunnr , " "Customer ID
bstkd  TYPE vbkd-bstkd , "  PO NO.

vbeln TYPE vbap-vbeln, " Sales Document
posnr TYPE vbap-posnr, " Sales Document Item
erdat TYPE vbak-erdat, " Date on Which Record Was Created
kunnr TYPE likp-kunnr, " Sold-to party
name1 TYPE kna1-name1,                                      " Name 1
aufnr TYPE vbak-aufnr, " Order Number
matnr TYPE vbap-matnr, " Material Number
arktx TYPE vbap-arktx, " Short text for sales orderitem
kwmeng TYPE vbap-kwmeng, " Cumulative Order Quantity in sales Units
vrkme TYPE vbap-vrkme, " Sales unit
vbeln1 TYPE lips-vbeln, " Delivery
posnr1 TYPE lips-posnr, " Delivery Item
lfimg TYPE lips-lfimg, " Actual quantity delivered in sales units
vrkme1 TYPE lips-vrkme, " Sales unit
vbeln2 TYPE vbrp-vbeln, " Billing Document
posnr2 TYPE vbrp-posnr, " Billing item
fklmg TYPE vbrp-fklmg, " Billing quantity in stockkeeping unit
vrkme2 TYPE vbrp-vrkme, " Sales unit
exfactory TYPE konv-kwert,
ENDOF type_s_order.

TYPES:
   tt_vbap TYPESTANDARDTABLEOF type_s_vbap
     WITHKEY vbeln posnr.
*    WITH NON-UNIQUE  KEY matnr_werks COMPONENTS matnr werks.
*"------------------------------------------------------------------------------------------*
* Field string variable to hold sales socument header,sales document              *
* item data,delivery item data,billing item data,fieldcatalog,layout  record       *
*"-------------------------------------------------------------------- --------------------*
DATA :
fs_kna1 TYPE type_s_kna1, " Holds Customer master record
fs_vbak TYPE type_s_vbak, " Holds sales header record
fs_vbap TYPE type_s_vbap, " Holds sales item record
fs_likp TYPE type_s_likp, " Holds delivery header record
fs_lips TYPE type_s_lips, " Holds delivery item record
fs_vbrp TYPE type_s_vbrp, " Holds billing item record
fs_order TYPE type_s_order, " Holds sales order record
fs_cat TYPE lvc_s_fcat, " Holds fieldcatalog record
fs_lay TYPE lvc_s_layo, " Holds layout record
fs_vbkd TYPE type_s_vbkd, " FOR PO NUMBER
fs_konv TYPE type_s_konv.

**"-----------------------------------------------------------------------------------------*
** Internal Table to hold hold sales socument header,sales document              *
* item data,delivery item data,billing item data,fieldcatalog,layout  records       *
**"-------------------------------------------------------------------------------------------*
DATA :
t_kna1 LIKE
STANDARDTABLE
OF fs_kna1, " Internal table to hold customer master records
t_vbak LIKE
STANDARDTABLE
OF fs_vbak, " Internal table to hold sales header records

*t_vbap type tt_vbap

t_vbap LIKESORTEDTABLEOF  fs_vbap
WITH NON-UNIQUEKEY vbeln posnr WITHHEADERLINE


, " Internal table to hold sales  item records
t_likp LIKE
STANDARDTABLE
OF fs_likp, " Internal table to hold delivery header records

t_lips LIKE
SORTEDTABLE
OF fs_lips
WITH NON-UNIQUEKEY
vbeln posnr WITHHEADERLINE
, " Internal table to hold delivery item records
t_vbrp LIKE
STANDARDTABLE
OF fs_vbrp, " Internal table to hold billing  item records
t_order LIKE
STANDARDTABLE
OF fs_order, " Internal table to hold sales order records
t_vbkd LIKESTANDARDTABLEOF fs_vbkd,
t_konv LIKESTANDARDTABLEOF fs_konv,

t_cat TYPE lvc_t_fcat. " Internal table to hold field
" catalog records

**************************DONT DELETE ***************************

SELECTION-SCREENBEGINOFSCREEN100AS SUBSCREEN.

SELECTION-SCREENBEGINOFBLOCK b1 WITHFRAME." TITLE text-000.

PARAMETERS s_vkorg TYPE vbak-vkorg OBLIGATORY  DEFAULT'2000'."Company

SELECT-OPTIONS:
  s_vkbur FOR vbak-vkbur   ,"Sales office
  s_audat FOR vbak-audat , " ORDER DATE
  s_vbeln FOR vbak-vbeln MATCHCODE OBJECT VMVA," DEFAULT '10000028' ,            " Sales ORDER NO
  s_kunnr FOR vbak-kunnr ."DEFAULT '300038'  .             "Customer

SELECTION-SCREENENDOFBLOCK b1.

SELECTION-SCREENBEGINOFBLOCK b2 WITHFRAMETITLEtext-001.
PARAMETERS:
  p_ord RADIOBUTTONGROUP radi, "Order Wise
  p_itm RADIOBUTTONGROUP radi, "Item Wise
  p_cst RADIOBUTTONGROUP radi, "Customer Wise
  p_rec  RADIOBUTTONGROUP radi. "Expense Reconciliation
SELECTION-SCREENENDOFBLOCK b2.
SELECTION-SCREENENDOFSCREEN100.

SELECTION-SCREEN: BEGINOF TABBED BLOCK mytab FOR13LINES,
                   TAB (20) button1 USER-COMMAND push1,
                   ENDOFBLOCK mytab.
INITIALIZATION.
   button1 = 'Selection'.
   mytab-prog = sy-repid.
   mytab-dynnr = 100.
   mytab-activetab = 'BUTTON1'.


**************************************DONT DELETE***************
DATA: BEGINOF str_tab ,
               vkorg TYPE vbak-vkorg,  "Company
               vkbur TYPE vbak-vkbur,  "Sales office
               kunnr TYPE vbak-kunnr,  "Customer ID
               name1 TYPE  kna1-name1,  "Customer Name
               po TYPE vbkd-bstkd, "PO #"
               vbeln TYPE  vbak-vbeln, " Sales ORDER NO
               audat TYPE vbak-audat,   " Sales ORDER DATE
               posnr  TYPE vbap-posnr ,  " Sales Document Item no
               matnr TYPE vbap-matnr , " Material Number (Item No.)
               arktx TYPE vbap-arktx, " Short text for sales order item (Material Desc.)
               vrkme TYPE vbap-vrkme,   "   UOM
               kwmeng  TYPE vbap-kwmeng,   " Cumulative Order Quantity in Sales Units
               knumv  TYPE vbak-knumv, "Number of the document condition
               rate TYPE konv-kbetr,    "Unit Rate without any condition
               amount TYPE  kbetr ,     " Amount  =  Rate *  Qty
               disprice TYPE konv-kbetr,      "Discount Price
               disamountperitem TYPE kbetr , " Disc Amount Per Item"
               amountafterdiscount TYPE kbetr , " Amount After Discount  Per Item
               discperc TYPE kbetr , "Discount Percentage"
               netpr TYPE vbap-netpr  , "net Item rate after all conditions
               netamountitem TYPE kbetr, " Net Item Sale Amount = qty * rate
               frrateperitem  TYPE konv-kbetr,      "Freight rate per item
               htrateperitem  TYPE konv-kbetr,      "Hosting rate per item
               framountperitem  TYPE konv-kbetr,      "Freight amount per item
               htamountitem  TYPE konv-kbetr,      "Hosting amount per item
               lfimg TYPE lips-lfimg, "QUAN  13  3 Actual quantity delivered (in sales units)
               totaldispatchamount TYPE kbetr, "  Total Dispatch amount
               returnedqty TYPE kwmeng, " Returned Qty
               retdamountitem TYPE kbetr, "  returned amount per item
               fkimg TYPE  vbrp-fkimg,"  Actual Invoiced Quantity
               invamount TYPE kbetr, "  Invoiced Amount
               discinv  TYPE kbetr, " Discount Amount (Inv)
               vbrkknumv  TYPE vbrk-knumv,
               netamountinv TYPE kbetr,   " Net sale in Invoice
ENDOF str_tab.

*----------------------
DATA: BEGINOF str_order ,
vkorg  TYPE vbak-vkorg,  "Company
vkbur TYPE vbak-vkbur,  "Sales office
kunnr TYPE vbak-kunnr,  "Customer ID
name1 TYPE  kna1-name1,  "Customer Name
bstkd TYPE vbkd-bstkd , "Purchase Order No
vbeln TYPE  vbak-vbeln, " Sales ORDER NO
audat TYPE vbak-audat,   " Sales ORDER DATE
kwert TYPE  konv-kwert ,     " Ex.Fatory AMOUNT OF ORDER
knumv  TYPE vbak-knumv, "Number of the document condition
kwmeng TYPE   vbap-kwmeng, " Cumulative Order Quantity in Sales Units
netpr TYPE   vbap-netpr, " Net Rate per Item
netwr TYPE vbak-netwr, "TOTAL ORDER
disc1   TYPE konv-kbetr, " Discount SALES ORDER
netpr1 TYPE  vbap-netpr,"  Temp use
lfimg1 TYPE  lips-lfimg, "  Temp use
totaldispatch TYPE kbetr, " Ex factory amount  from Invoices.
expenses TYPE kbetr,
totalreturn TYPE kbetr,
discinvamountinv TYPE kbetr, " Discount amount from Invoice
netsales TYPE kbetr,
*diccountamount type kbetr,
*discount2 type kbetr,
receipts TYPE kbetr,
balance TYPE kbetr,
*remarks type c length 30,
overallst TYPE  c LENGTH 30, " Sale Order Over All Status
delst TYPEc LENGTH 30, " Delivery Status
billst TYPEc LENGTH 30, " Billing Status

expen2   TYPE kbetr, "Expense Incurred (FI )
diffexp  TYPE kbetr , "Difference of Expense
bdisc    TYPE  kbetr, " Booking Time Discount %
adisc    TYPE kbetr , "   Actual Time Discount %
diffdisc TYPE  kbetr ," Difference of Discount %

totaldoamount TYPE kbetr, " AMOUNT OF THE ITEMS WHICH  HAVE BEEN SENT THROUGH DO on paper Price
totaldoamountnet TYPE kbetr, " AMOUNT OF THE ITEMS WHICH  HAVE BEEN SENT THROUGH DO on Net Price


ENDOF   str_order .
*----------------------
DATA: dt_tab LIKE  TABLEOF  str_tab WITHHEADERLINE.


DATA : wa_tab LIKE  str_tab,
        v_price TYPE kbetr,
        v_exfact TYPE kbetr,
        v_deducat TYPE kbetr,
* TEMP VARIABLES----
        v_vgpos TYPE lips-vgpos,
        v_knumv TYPE konv-knumv,
        v_vbeln4   TYPE lips-vgbel ,
        vbrkvbeln TYPE vbrk-vbeln,
        v_fklmg TYPE  vbrp-fklmg,
        v_fkart TYPE vbrk-fkart,
        v_netwr TYPE vbrp-netwr ,
        v_p_net_amount TYPE tcj_positions-p_net_amount.

*   TEMP VARIABLES-----


DATA: dt_tab2 LIKE  TABLEOF  str_order WITHHEADERLINE.
DATA: dt_tabcst LIKE  TABLEOF  str_order WITHHEADERLINE." Cust. WIse Report.

START-OF-SELECTION.




   IF  p_ord EQ'X'"Order wise
     PERFORM setalvfieldsord.
     PERFORM setcolumnsord.
     PERFORM display_alvord.
   ENDIF.



   IF  p_cst EQ'X'"Customer wise
*    MESSAGE 'In Progress ! Please use other options.' TYPE 'S'.
     PERFORM setalvfieldsord.  "  FIRST  GET ORDER WISE DATA THEN SUM IT UP CUSTOMER WISE.
     PERFORM setalvfieldscst.
   ENDIF.


   IF  p_itm EQ'X'"Item wise
     PERFORM setalvfieldsitem.
     PERFORM display_alvcstitem.
   ENDIF.


  "  10-06-2014

   IF  p_rec EQ'X'"Expense Reconciliation
     PERFORM setalvfieldser.
     PERFORM display_alver.
   ENDIF.

*----------------------
FORM setcolumnsord.
*-----------set alv fields

   SORT dt_tab2  BY vbeln.


   wa_fcat-fieldname = 'VKORG'.
   wa_fcat-col_pos = 1.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Company'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'VKBUR'.
   wa_fcat-col_pos = 2.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Sales office'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.


   wa_fcat-fieldname = 'KUNNR'.
   wa_fcat-col_pos = 3.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Cst.ID'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'NAME1'.
   wa_fcat-col_pos = 4.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Cst.Name'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'BSTKD'.
   wa_fcat-col_pos = 5.
   wa_fcat-tabname = 'DT_TAB'.
   wa_fcat-seltext_m = 'PO. No'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.


   wa_fcat-fieldname = 'VBELN'.
   wa_fcat-col_pos = 6.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Order No'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'AUDAT'.
   wa_fcat-col_pos = 7.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Order Date'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'KWERT'.
   wa_fcat-col_pos = 8.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Ex.Fact.'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'NETWR'.
   wa_fcat-col_pos = 9.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Total Order'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'DISC1'.
   wa_fcat-col_pos = 10.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Discount'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.



   wa_fcat-fieldname = 'TOTALDOAMOUNT'. " from Delivery ex factory amount of an order
   wa_fcat-col_pos = 11.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Total Desp(Ex.Fct) '.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'TOTALDOAMOUNTNET'. "From Delivery Net amount of an order
   wa_fcat-col_pos = 12.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Total Desp(Net) '.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.


   wa_fcat-fieldname = 'TOTALDISPATCH'" Invoice amount , Ex factory based
   wa_fcat-col_pos = 13.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Total Inv(Ex.Fct)'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.



   wa_fcat-fieldname = 'TOTALRETURN'.
   wa_fcat-col_pos = 14.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Total Return'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'DISCINVAMOUNTINV'.
   wa_fcat-col_pos = 15.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Discount(Inv)'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'NETSALES'.
   wa_fcat-col_pos = 16.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Net Sales(Inv)'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'EXPENSES'.
   wa_fcat-col_pos = 17.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Expenses(FI)'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'RECEIPTS'.
   wa_fcat-col_pos = 18.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Receipts(FI)'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.


   wa_fcat-fieldname = 'BALANCE'.
   wa_fcat-col_pos = 19.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Balance'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.



   wa_fcat-fieldname = 'DELST'.
   wa_fcat-col_pos = 20.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Delivery Status'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'BILLST'.
   wa_fcat-col_pos = 21.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Billing Status'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

ENDFORM.                    "SETCOLUMNSORD


*&---------------------------------------------------------------------*
*&      Form  setalvfieldsER
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM setalvfieldser."Expense Reconciliation
" 10-06-2014

   CLEAR dt_tab2.
   SELECT
     DISTINCT
   vbak~vkorg  "Company
   vbak~vkbur "Sales office
   vbak~kunnr  " "Customer ID
   kna1~name1  "Customer Name
   vbkd~bstkd " PO
   vbak~vbeln " Sales ORDER NO
   vbak~audat  " Sales ORDER DATE
   vbak~knumv  "Number of the document condition (Plz dont remove it)
   vbak~netwr  "TOTAL ORDER
*  vbap~posnr " Sales Document Item no
*  vbap~matnr  " Material Number (Item No.)
*  vbap~arktx  " Short text for sales order item (Material Desc.)
*  vbap~vrkme  " UOM
   INTO  CORRESPONDING FIELDSOFTABLE  dt_tab2
FROM vbak
INNER JOIN kna1 ON
vbak~kunnr = kna1~kunnr
INNER JOIN vbkd ON
vbak~vbeln =   vbkd~vbeln
WHERE
vkorg = s_vkorg AND
vkbur IN  s_vkbur  AND
vbak~vbeln IN s_vbeln AND
vbak~audat IN s_audat  AND
vbak~kunnr IN s_kunnr.



*--------------------------
   LOOPAT dt_tab2.
**-------EX. FACTORY AMOUNT OF ORDER
     v_price = 0.
     SELECT   kwert  FROM konv INTO dt_tab2-kwert
                           WHERE knumv =  dt_tab2-knumv
                             AND kwert  NE' '
                              AND kschl IN ('ZPR0', 'ZPR1', 'ZPR2', 'ZBTH').
       v_price = v_price + dt_tab2-kwert.
     ENDSELECT.
     dt_tab2-kwert = v_price.


* **------Actual quantity despatched
*on Net price of an item .
*Note that PGI Should be done.
     v_price = 0.
     CLEAR: v_vbeln ,  v_posnr,v_netpr.
     SELECT
          vbap~vbeln  vbap~posnr  vbap~netpr
       INTO      (v_vbeln , v_posnr , v_netpr )
       FROM vbap
       WHERE   vbap~vbeln EQ dt_tab2-vbeln.
       "--Now  get delivered qty. PGI shud be done
       dt_tab2-lfimg1 = 0.
       SELECT
       SUM( lips~lfimg )  AS lfimg1
        INTO dt_tab2-lfimg1
        FROM  lips  INNER JOIN mkpf ON
        lips~vbeln EQ  mkpf~le_vbeln
        WHERE
        lips~vgbel EQ dt_tab2-vbeln
        AND lips~vgpos EQ v_posnr.
       v_price = v_price + ( v_netpr  *  dt_tab2-lfimg1 ).
     ENDSELECT.
     DT_TAB2-TOTALDOAMOUNTNET = V_PRICE.


*----------dt_tab-NetAmountInv to be paid by customer-----------
     dt_tab2-netsales = 0.
     v_price = 0.
     v_netwr  = 0.
     v_fkart = 0.


SELECT   vbrp~netwr  vbrk~fkart
    INTO  (v_netwr , v_fkart)
      FROM
    lips INNER JOIN vbrp
    ON
    lips~vbeln EQ vbrp~vgbel  AND
    lips~posnr EQ vbrp~vgpos
    INNER JOIN vbrk ON
    vbrk~vbeln EQ vbrp~vbeln
    WHERE lips~vgbel EQ  dt_tab2-vbeln.

       IF sy-subrc EQ0.
         IF v_fkart EQ'S1'."IF S1 then it is the cancellation of previous invoice so dont add the amount but deducat the double amount .
           v_price =  v_price - (  v_netwr ).
         ELSE.
           v_price =  v_price + (  v_netwr ).
         ENDIF.
       ENDIF.

     ENDSELECT.
     DT_TAB2-NETSALES = V_PRICE.

*----Now Expenses(Order)--- FREIGHT + HOSTING--------
     v_price = 0.
     SELECT  kwert FROM konv INTO dt_tab2-expenses
                          WHERE knumv = dt_tab2-knumv
                            AND kwert NE' '
                            AND kposn  > 0
                            AND kschl IN ('ZSHF', 'ZEXW','ZSHF' ,'ZHOS' ,'ZHST','ZFRG' ).

     V_PRICE = V_PRICE + DT_TAB2-EXPENSES.
     ENDSELECT.
     DT_TAB2-EXPENSES  =  V_PRICE.


**-----------Expenses in the FBCJ FI input form against an order-------------------------
     CLEAR v_p_net_amount.
     SELECTSUM( p_net_amount ) INTO   v_p_net_amount
     FROM tcj_positions  WHERE
     kdauf  "  Order no used  in FBCJ
     EQ dt_tab2-vbeln AND
     transact_number  EQ4"  4  is for (expense FROM CUSTOMER). Open TCJ_TRANS_NAMES  table to see the  catalogue
     DT_TAB2-EXPEN2  =   V_P_NET_AMOUNT.

**-----•         Difference of Expense --------------
     DT_TAB2-DIFFEXP  = ABS( DT_TAB2-EXPENSES )  -  ABS( DT_TAB2-EXPEN2 ) .


*    * ------------ DISCOUNT IN ORDER
     v_price = 0.
     SELECT kwert FROM konv INTO dt_tab2-disc1
                      WHERE knumv =  dt_tab2-knumv
                         AND kwert NE' '
                         AND kposn > 0
                         AND kschl IN ('ZDC4','ZDC1','ZLSD').
       v_price =    v_price + dt_tab2-disc1.
     ENDSELECT.
     dt_tab2-disc1 = v_price.



*------------------" Discount Amount (Inv)
*First get knumv  from VBRK
     v_price = 0.
     v_vbrkknumv = 0.
     SELECT  DISTINCT vbrk~knumv vbrk~fkart  INTO (v_vbrkknumv ,  v_fkart )
                              FROM  vbrk
                              INNER JOIN   vbrp ON
                              vbrk~vbeln = vbrp~vbeln
                              INNER JOIN lips ON
                              lips~vbeln = vbrp~vgbel AND
                              lips~vgbel =  dt_tab2-vbeln  .

       IF sy-subrc EQ0.
         dt_tab2-discinvamountinv = 0.
         SELECT kwert  INTO dt_tab2-discinvamountinv
                               FROM konv
                          WHERE knumv =  v_vbrkknumv
                             AND kwert NE' '
                             AND kposn  > 0
                             AND kschl IN ('ZDC4','ZDC1', 'ZLSD').

           IF v_fkart EQ'S1'."IF S1 then it is the cancellation of previous invoice so dont add the amount but deducat amount .
             v_price =    v_price - dt_tab2-discinvamountinv.
           ELSE.

             v_price =    v_price + dt_tab2-discinvamountinv.
           ENDIF.

         ENDSELECT.
       ENDIF.

     ENDSELECT.
     dt_tab2-discinvamountinv = v_price.


*  --------------Difference of Discount ------
     DT_TAB2-DIFFDISC = ABS( DT_TAB2-DISC1 ) - ABS( DT_TAB2-DISCINVAMOUNTINV ).
*  ------------------
     SHIFT dt_tab2-vbeln LEFT DELETING LEADING'0'."remove leading zeros
     SHIFT dt_tab2-kunnr LEFT DELETING LEADING'0'."remove leading zeros
     MODIFY  dt_tab2.
   ENDLOOP.

*-----------set alv fields

   SORT dt_tab2  BY vbeln.
" 10-06-2014

   wa_fcat-fieldname = 'VBELN'.
   wa_fcat-col_pos = 1.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Order No'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.


   wa_fcat-fieldname = 'BSTKD'.
   wa_fcat-col_pos = 2.
   wa_fcat-tabname = 'DT_TAB'.
   wa_fcat-seltext_m = 'PO.No'. "Purchase Order no
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.
*
*
   wa_fcat-fieldname = 'KWERT'.
   wa_fcat-col_pos = 3.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Ex.Factory Amount'. "Ex- factory Price(Sale Order)
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.
*
*
   wa_fcat-fieldname = 'NETWR'.
   wa_fcat-col_pos = 4.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Total Order'. "Total Order( Net Value in Sale Order)
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.
*
*
   wa_fcat-fieldname = 'TOTALDOAMOUNTNET'.
   wa_fcat-col_pos = 5.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Total Dispatch(Net)'. "Total Dispatch(invoice)
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

*
   wa_fcat-fieldname = 'NETSALES'.
   wa_fcat-col_pos = 6.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Invoiced(Net)'. "Invoiced ( Net Value in invoice)
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.


   wa_fcat-fieldname = 'EXPENSES'.
   wa_fcat-col_pos = 7.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Expense Charged'. "Expense Charged (Order expense)
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.
*
   wa_fcat-fieldname = 'EXPEN2'.
   wa_fcat-col_pos = 8.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Expense Incurred'. "Expense Incurred (FI )
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.
*

   wa_fcat-fieldname = 'DIFFEXP'.
   wa_fcat-col_pos = 9.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Diff.of Expense'. "Difference of Expense
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.
*

   wa_fcat-fieldname = 'DISC1'.
   wa_fcat-col_pos = 10  .
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Booking Time Discount'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.
*
   wa_fcat-fieldname = 'DISCINVAMOUNTINV'.
   wa_fcat-col_pos = 11.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Actual Time Discount'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.
*
*
   wa_fcat-fieldname = 'DIFFDISC'.
   wa_fcat-col_pos = 12.
   wa_fcat-tabname = 'DT_TAB2'.
   wa_fcat-seltext_m = 'Diff.of Discount'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.




ENDFORM.                    "setalvfieldsER

*&---------------------------------------------------------------------*
*&      Form  display_alvER
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM display_alver."Expense Reconciliation

   CALLFUNCTION'REUSE_ALV_GRID_DISPLAY'
     EXPORTING
       i_callback_program      = sy-repid
       i_callback_user_command = 'USER_COMMAND'
       i_callback_top_of_page  = 'TOP-OF-PAGE'"see FORM
       it_fieldcat             = it_fcat
       is_layout               = wa_fieldlayout
     TABLES
       t_outtab                = dt_tab2.


ENDFORM.                    "display_alvER


*&---------------------------------------------------------------------*
*&      Form  display_alvcstitem
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM display_alvcstitem.

   wa_fcat-fieldname = 'VKORG'.
   wa_fcat-col_pos = 1.
   wa_fcat-tabname = 'T_ORDER'.
   wa_fcat-seltext_m = 'Company'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'VKBUR'.
   wa_fcat-col_pos = 2.
   wa_fcat-tabname = 'T_ORDER'.
   wa_fcat-seltext_m = 'Sales office'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'KUNNR1'.
   wa_fcat-col_pos = 3.
   wa_fcat-tabname = 'T_ORDER'.
   wa_fcat-seltext_m = 'Cst.ID'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'NAME1'.
   wa_fcat-col_pos = 4.
   wa_fcat-tabname = 'T_ORDER'.
   wa_fcat-seltext_m = 'Cst.Name'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'VBELN'.
   wa_fcat-col_pos = 5.
   wa_fcat-tabname = 'T_ORDER'.
   wa_fcat-seltext_m = 'Order No'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.


   wa_fcat-fieldname = 'BSTKD'.
   wa_fcat-col_pos = 6.
   wa_fcat-tabname = 'T_ORDER'.
   wa_fcat-seltext_m = 'PO No'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'POSNR'.
   wa_fcat-col_pos = 7.
   wa_fcat-tabname = 'T_ORDER'.
   wa_fcat-seltext_m = 'Item'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'ERDAT'.
   wa_fcat-col_pos = 8.
   wa_fcat-tabname = 'T_ORDER'.
   wa_fcat-seltext_m = 'Date'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'MATNR' .
   wa_fcat-col_pos = 9.
   wa_fcat-tabname = 'T_ORDER'.
   wa_fcat-seltext_m = 'Material'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.


   wa_fcat-fieldname =  'ARKTX' .
   wa_fcat-col_pos = 10.
   wa_fcat-tabname = 'T_ORDER'.
   wa_fcat-seltext_m = 'Material Description' .
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'KWMENG' .
   wa_fcat-col_pos = 11.
   wa_fcat-tabname = 'T_ORDER'.
   wa_fcat-seltext_m =  'Ordered Quantity'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'VRKME' .
   wa_fcat-col_pos = 12.
   wa_fcat-tabname = 'T_ORDER'.
   wa_fcat-seltext_m = 'Sales Unit'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.


   wa_fcat-fieldname = 'EXFACTORY'.
   wa_fcat-col_pos = 13.
   wa_fcat-tabname = 'T_ORDER'.
   wa_fcat-seltext_m = 'Ex Factory' .
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.


   wa_fcat-fieldname = 'VBELN1' .
   wa_fcat-col_pos = 14.
   wa_fcat-tabname = 'T_ORDER'.
   wa_fcat-seltext_m = 'Delivery Doc. No.' .
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'POSNR1' .
   wa_fcat-col_pos = 15.
   wa_fcat-tabname = 'T_ORDER'.
   wa_fcat-seltext_m =  'Delivery Item '  .
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'LFIMG' .
   wa_fcat-col_pos = 16.
   wa_fcat-tabname = 'T_ORDER'.
   wa_fcat-seltext_m = 'Delivery Quantity' .
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'VRKME1' .
   wa_fcat-col_pos = 17.
   wa_fcat-tabname = 'T_ORDER'.
   wa_fcat-seltext_m =  'Sales Unit' .
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'VBELN2' .
   wa_fcat-col_pos = 18.
   wa_fcat-tabname = 'T_ORDER'.
   wa_fcat-seltext_m = 'Billing doc. No.' .
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname ='POSNR2' .
   wa_fcat-col_pos = 19.
   wa_fcat-tabname = 'T_ORDER'.
   wa_fcat-seltext_m = 'Billing Item'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname =  'FKLMG' .
   wa_fcat-col_pos = 20.
   wa_fcat-tabname = 'T_ORDER'.
   wa_fcat-seltext_m =  'Billing Quantity' .
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'VRKME2'.
   wa_fcat-col_pos = 21.
   wa_fcat-tabname = 'T_ORDER'.
   wa_fcat-seltext_m = 'Sales Unit' .
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.




   CALLFUNCTION'REUSE_ALV_GRID_DISPLAY'
     EXPORTING
       i_callback_program      = sy-repid
       i_callback_user_command = 'USER_COMMAND'
       i_callback_top_of_page  = 'TOP-OF-PAGE'"see FORM
       it_fieldcat             = it_fcat
       is_layout               = wa_fieldlayout " It will show full heading name
     TABLES
       t_outtab                = t_order.
ENDFORM.                    "setalvfields

*&---------------------------------------------------------------------*
*&      Form  setalvfieldsitem
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM setalvfieldsitem.
* Get sales document number ,created date,purchase order number from
* sales header table
   REFRESH  t_vbak[].
   SELECT
    vkorg  "Company
    vkbur "Sales office
    kunnr AS kunnr1  " "Customer ID
     vbeln " Sales Document
      erdat " Date on Which Record Was
      " Created
      aufnr " Order Number
      knumv   "Number of the document condition
      FROM vbak
      INTOTABLE t_vbak
      WHERE
      vkorg = s_vkorg AND
      vkbur IN  s_vkbur  AND
      vbeln IN s_vbeln
      AND audat IN s_audat  AND
      vbak~kunnr IN s_kunnr.

   IF sy-subrc EQ0.
*Get Customer name for customer numbers from Customer master table


     REFRESH t_kna1[].
     SELECT kunnr " Customer Number 1
     name1                                                   " Name 1
     FROM kna1
     INTOTABLE t_kna1
     FORALL ENTRIES IN t_vbak
     WHERE kunnr EQ t_vbak-kunnr1.

* Get sales document number,item number,material,material description,
* ordered quantity from sales item table

     SORT t_vbak BY vbeln.
     DELETEADJACENTDUPLICATESFROM t_vbak COMPARING vbeln.

     REFRESH  t_vbap[].
     SELECT vbeln " Sales Document
     posnr " Sales Document Item
     matnr " Material Number
     arktx " Short text for sales order
     " item
     kwmeng " Cumulative Order Quantity
     vrkme " Sales unit
     FROM vbap
     INTOTABLE t_vbap
     FORALL ENTRIES IN t_vbak
     WHERE vbeln EQ t_vbak-vbeln.


     IF sy-subrc EQ0.

       SELECT  vbeln bstkd FROM vbkd
         INTO CORRESPONDING FIELDSOFTABLE
          t_vbkd "  gET PO NO
       FORALL ENTRIES IN t_vbap
       WHERE vbeln EQ t_vbap-vbeln.

*Get delivery item number,sales document number,sales item number,
*Delivery quantity from delivery item table


*      sort t_vbap by vbeln posnr.
       DELETEADJACENTDUPLICATESFROM t_vbap COMPARING vbeln posnr.

       REFRESH  t_lips[].
       SELECT vbeln " Delivery
       posnr " Delivery Item
       vgbel " Document number of
       vgpos " Item number of reference item
       lfimg " Actual quantity delivered
       vrkme " Sales unit
       FROM lips
       INTOTABLE t_lips
       FORALL ENTRIES IN t_vbap
       WHERE lips~vgbel EQ t_vbap-vbeln AND
       lips~vgpos EQ t_vbap-posnr.

       .
       IF sy-subrc EQ0.

         "GET BILLING DOCUMENT NUMBER,BILLING ITEM,REFERENCE DELIVERY DOCUMENT
         "number,delivery item number,billing item from billing item table

*        sort t_lips by vbeln posnr.
         DELETEADJACENTDUPLICATESFROM t_lips COMPARING vbeln posnr.

         REFRESH t_vbrp[].
         SELECT vbeln " Billing Document
         posnr " Billing item
         vgbel " Document number of the reference document
         vgpos " Item number of the reference item
         fklmg " Billing quantity in
         vrkme " Sales unit
         FROM vbrp
         INTOTABLE t_vbrp
         FORALL ENTRIES IN t_lips
         WHERE vgbel EQ t_lips-vbeln
         AND vgpos EQ t_lips-posnr.


*
*        IF sy-subrc NE 0.
*          MESSAGE 'No Billing  Items found' TYPE 'I'.
*        ENDIF.

       ELSE.
         "* Display message if records are not found for entered values
*        MESSAGE 'No Delivery  Items found' TYPE 'I'.
       ENDIF.
     ELSE.
       "* Display message if records are not found for entered values
       MESSAGE'No Sales Order Items found'TYPE'I'.
       EXIT.
     ENDIF.
   ELSE.
     "* Display message if records are not found for entered values
     MESSAGE'No Sales Order Found'TYPE'I'.
     EXIT.
   ENDIF.
*/////////////////////////              Now do other data
   LOOPAT t_vbap INTO fs_vbap.
*   * Get sales document number,item number,ordered quantity for delivery
* document number,item number from sales item internal table

     READTABLE t_vbak WITHKEY vbeln = fs_vbap-vbeln
     INTO fs_vbak.
*   ** Get customer name for customer number from customer master internal
*** table
     READTABLE t_kna1 WITHKEY kunnr = fs_vbak-kunnr1
     INTO fs_kna1.
*      GET PO  NO
     READTABLE t_vbkd WITHKEY vbeln = fs_vbap-vbeln
       INTO
     fs_vbkd.

     "* Get billing document number,billing item,billing quantity for delivery
     "* document number,delivery item number from billing item internal table
     READTABLE t_lips WITHKEY vgbel = fs_vbap-vbeln
     vgpos = fs_vbap-posnr INTO
     fs_lips.
*          * Get billing document number,billing item,billing quantity for delivery
*           * document number,delivery item number from billing item internal table
     READTABLE t_vbrp WITHKEY vgbel = fs_lips-vbeln
     vgpos = fs_lips-posnr INTO
     fs_vbrp.


*--------Get Ex factory --

*----Now Expenses--- FREIGHT + HOSTING--------
     v_price = 0.
     SELECT kwert FROM konv INTO fs_konv-exfactory
                          WHERE knumv = fs_vbak-knumv
                            AND kwert NE' '
                            AND kposn  EQ fs_vbap-posnr
                            AND kschl IN ('ZPR0', 'ZPR1', 'ZPR2', 'ZBTH').

       v_price = v_price + fs_konv-exfactory.
     ENDSELECT.
     fs_konv-exfactory  =  v_price.

*    ==================


     "* Assign sales,delivery,billing fields into respective fields of sales
     "* order internal table

     fs_order-vkorg = fs_vbak-vkorg.
     fs_order-kunnr1 = fs_vbak-kunnr1.
     fs_order-vkbur = fs_vbak-vkbur.
     fs_order-bstkd = fs_vbkd-bstkd.
     fs_order-vbeln = fs_vbap-vbeln.
     fs_order-posnr = fs_vbap-posnr.
     fs_order-erdat = fs_vbak-erdat.
     fs_order-kunnr = fs_likp-kunnr.
     fs_order-name1 = fs_kna1-name1.
     fs_order-aufnr = fs_vbak-aufnr.
     fs_order-matnr =  fs_vbap-matnr.
     fs_order-arktx = fs_vbap-arktx.
     fs_order-kwmeng = fs_vbap-kwmeng.
     fs_order-vrkme = fs_vbap-vrkme.
     fs_order-vbeln1 = fs_lips-vbeln.
     fs_order-posnr1 = fs_lips-posnr.
     fs_order-lfimg = fs_lips-lfimg.";;;;;;; delivered qty
     fs_order-vrkme1 = fs_lips-vrkme.
     fs_order-vbeln2 = fs_vbrp-vbeln.
     fs_order-posnr2 = fs_vbrp-posnr.
     fs_order-fklmg = fs_vbrp-fklmg.
     fs_order-vrkme2 = fs_vbrp-vrkme.
     fs_order-exfactory  = fs_konv-exfactory .

*    -------------------- Remove leading zeros
     SHIFT fs_order-kunnr1 LEFT DELETING LEADING'0'."Cst ID
     SHIFT fs_order-vbeln LEFT DELETING LEADING'0'."Order No
     SHIFT fs_order-matnr LEFT DELETING LEADING'0'."Material Number
     SHIFT fs_order-vbeln1 LEFT DELETING LEADING'0'."Delivery document
     SHIFT fs_order-vbeln2 LEFT DELETING LEADING'0'." Billing Document




     APPEND fs_order TO t_order.
     CLEAR fs_order.
     CLEAR fs_vbrp.
     CLEAR fs_lips.
     CLEAR fs_vbak.
     CLEAR fs_kna1.
     CLEAR fs_vbkd.
   ENDLOOP.
*   * Check if the final table is initia
   IF t_order ISINITIAL.
     MESSAGE'Error'TYPE'I'.
     EXIT.
   ELSE.
* Calling screen to display the sales order records
   ENDIF. " IF T_ORDER IS INITIAL
ENDFORM. " DATA_SELECTION

*-----------------------
                                                             " 1187
*&---------------------------------------------------------------------*
*&      Form  setalvfieldsord
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM setalvfieldsord.
   REFRESH  dt_tab2[].
   SELECT
     DISTINCT
   vbak~vkorg  "Company
   vbak~vkbur "Sales office
   vbak~kunnr  " "Customer ID
   kna1~name1  "Customer Name
   vbkd~bstkd " PO
   vbak~vbeln " Sales ORDER NO
   vbak~audat  " Sales ORDER DATE
   vbak~knumv  "Number of the document condition (Plz dont remove it)
   vbak~netwr  "TOTAL ORDER
*  vbap~posnr " Sales Document Item no
*  vbap~matnr  " Material Number (Item No.)
*  vbap~arktx  " Short text for sales order item (Material Desc.)
*  vbap~vrkme  " UOM
   INTO  CORRESPONDING FIELDSOFTABLE  dt_tab2
FROM vbak
INNER JOIN kna1 ON
vbak~kunnr = kna1~kunnr
INNER JOIN vbkd ON
vbak~vbeln =   vbkd~vbeln
WHERE
vkorg = s_vkorg AND
vkbur IN  s_vkbur  AND
vbak~vbeln IN s_vbeln AND
vbak~audat IN s_audat  AND
vbak~kunnr IN s_kunnr.
*--------------------------

   SORT dt_tab2 BY vbeln.
   LOOPAT dt_tab2.
**-------EX. FACTORY AMOUNT OF ORDER
     v_price = 0.
     SELECT   kwert  FROM konv INTO dt_tab2-kwert
                           WHERE knumv =  dt_tab2-knumv
                             AND kwert  NE' '
                              AND kschl IN ('ZPR0', 'ZPR1', 'ZPR2', 'ZBTH').
       v_price = v_price + dt_tab2-kwert.
     ENDSELECT.
     dt_tab2-kwert = v_price.
* ------------ DISCOUNT IN ORDER
     v_price = 0.
     SELECT kwert FROM konv INTO dt_tab2-disc1
                      WHERE knumv =  dt_tab2-knumv
                         AND kwert NE' '
                         AND kposn > 0
                         AND kschl IN ('ZDC4','ZDC1','ZLSD').
       v_price =    v_price + dt_tab2-disc1.
     ENDSELECT.
     dt_tab2-disc1 = v_price.


*   1198
*  **------Actual quantity Invoiced in the Invoice on ex factory price

     CLEAR :
        v_vgpos,
        v_knumv ,
        v_vbeln4 ,
        v_fklmg,
        v_exfact,
        v_fkart,
        vbrkvbeln,
        v_deducat,
        v_price .

*------------------------ khurram -------------------------*
*    SELECT SINGLE lips~vgbel vbrk~knumv  vbrp~fklmg vbrp~vgpos vbrk~vbeln vbrk~fkart
*    INTO  (v_vbeln4 ,  v_knumv ,   v_fklmg,   v_vgpos,  vbrkvbeln ,v_fkart)
*      FROM
*    lips INNER JOIN vbrp
*    ON
*    lips~vbeln EQ vbrp~vgbel  AND
*    lips~posnr EQ vbrp~vgpos
*    INNER JOIN vbrk ON
*    vbrk~vbeln EQ vbrp~vbeln
*    WHERE lips~vgbel EQ  dt_tab2-vbeln.
*-----------------------------------------------------------------*
SELECTSINGLE
   lips~vgbel
   vbrk~knumv
   vbrp~fklmg
   vbrp~vgpos
   vbrk~vbeln
   vbrk~fkart
       INTO (v_vbeln4 ,v_knumv ,v_fklmg,v_vgpos,vbrkvbeln ,v_fkart)
       FROM
     lips INNER JOIN vbrp
     ON
     lips~vbeln EQ vbrp~vgbel  AND
     lips~posnr EQ vbrp~vgpos
     INNER JOIN vbrk ON
     vbrk~vbeln EQ vbrp~vbeln
     WHERE lips~vgbel EQ  dt_tab2-vbeln.

       IF sy-subrc EQ0" NOW GET EX FACTORY PRICE

         SELECTSINGLE  kbetr  FROM konv INTO v_exfact
         WHERE knumv =  v_knumv
           AND kposn EQ v_vgpos
         AND kbetr  NE' '
         AND kschl IN ('ZPR0', 'ZPR1', 'ZPR2', 'ZBTH').

         IF v_fkart EQ'S1'."IF S1 then it is the cancellation of previous invoice so dont add the amount but deducat the double amount .
           v_price =  v_price - (  v_exfact * v_fklmg ).
         ELSE.
           v_price =  v_price + (  v_exfact * v_fklmg ).
         ENDIF.
       ENDIF.
     "ENDSELECT.
*----------------------------end-------------------*
     dt_tab2-totaldispatch  =  v_price.

* **------Actual quantity delivered (in sales units)
*on ex factory price .Note that PGI Should be done.

     v_price = 0.

     SELECT lips~vgpos AS v_vgpos
       SUM( lips~lfimg )  AS lfimg1
        INTO (v_vgpos
        ,dt_tab2-lfimg1 )
        FROM  lips  INNER JOIN mkpf ON
        lips~vbeln EQ  mkpf~le_vbeln
        WHERE
        lips~vgbel EQ dt_tab2-vbeln
       GROUPBY lips~vgpos.
       v_exfact = 0.
       SELECT  SINGLE kbetr  FROM konv INTO v_exfact
                          WHERE knumv =  dt_tab2-knumv
                           AND kposn EQ v_vgpos
                           AND kbetr  NE' '
                           AND kschl IN ('ZPR0', 'ZPR1', 'ZPR2', 'ZBTH').
       v_price = v_price + ( v_exfact  *  dt_tab2-lfimg1 ).
     ENDSELECT.
     dt_tab2-totaldoamount  =  v_price.

                                                             "1320
* **------Actual quantity despatched
*on Net price of an item .
*Note that PGI Should be done.
     v_price = 0.
     CLEAR: v_vbeln ,  v_posnr,v_netpr.
     SELECT
          vbap~vbeln  vbap~posnr  vbap~netpr
       INTO      (v_vbeln , v_posnr , v_netpr )
       FROM vbap
       WHERE   vbap~vbeln EQ dt_tab2-vbeln.
       "--Now  get delivered qty. PGI shud be done
       dt_tab2-lfimg1 = 0.
       SELECT
       SUM( lips~lfimg )  AS lfimg1
        INTO dt_tab2-lfimg1
        FROM  lips  INNER JOIN mkpf ON
        lips~vbeln EQ  mkpf~le_vbeln
        WHERE
        lips~vgbel EQ dt_tab2-vbeln
        AND lips~vgpos EQ v_posnr.
       v_price = v_price + ( v_netpr  *  dt_tab2-lfimg1 ).
     ENDSELECT.
     dt_tab2-totaldoamountnet = v_price.



**-----------Expenses in the FBCJ FI input form against an order-------------------------
     v_price = 0.
     SELECTSUM( p_net_amount ) INTO v_price
     FROM tcj_positions  WHERE
     kdauf                     "  ORDER NO USED  IN FBCJ
     EQ dt_tab2-vbeln AND
     transact_number  EQ4"  4  IS FOR EXPENSES. OPEN TCJ_TRANS_NAMES  TABLE TO SEE THE  CATALOGUE. freight and Hosting is also added in the expenses.
     dt_tab2-expenses  =  v_price.
*    v_price = 0.
*    SELECT  kwert FROM konv INTO dt_tab2-expenses
*                         WHERE knumv = dt_tab2-knumv
*                           AND kwert NE ' '
*                           AND kposn  > 0
*                           AND kschl IN ('ZSHF', 'ZEXW','ZSHF' ,'ZHOS' ,'ZHST','ZFRG' ).
*
*      v_price = v_price + dt_tab2-expenses.
*    ENDSELECT.
*    dt_tab2-expenses  =  v_price.
*-----Returned AMOUNT-----See ZRHN_SD_SALE_ORDR_DO_SCR Line 185 for reference
     v_price = 0.
     CLEAR: v_vbeln ,  v_posnr.
     SELECT
          vbfa~vbeln  vbfa~posnv  vbap~netpr
       INTO      (v_vbeln , v_posnr , v_netpr )
       FROM vbfa
       INNER JOIN vbap ON vbap~vbeln = vbfa~vbeln AND vbap~posnr = vbfa~posnv
       WHERE   vbfa~vbelv EQ dt_tab2-vbeln
       AND   pstyv EQ'REN' .
       dt_tab2-totalreturn = 0.
       SELECTSINGLESUM( lfimg  ) INTO dt_tab2-totalreturn
       FROM lips
       WHERE vgpos EQ v_posnr
       AND   vgbel EQ v_vbeln.
       v_price = v_price + ( v_netpr * dt_tab2-totalreturn )                             .
     ENDSELECT.
     dt_tab2-totalreturn =  v_price.
*------------------" Discount Amount (Inv)
*First get knumv  from VBRK
     v_price = 0.
     v_vbrkknumv = 0.
     SELECT  DISTINCT vbrk~knumv vbrk~fkart  INTO (v_vbrkknumv ,  v_fkart )
                              FROM  vbrk
                              INNER JOIN   vbrp ON
                              vbrk~vbeln = vbrp~vbeln
                              INNER JOIN lips ON
                              lips~vbeln = vbrp~vgbel AND
                              lips~vgbel =  dt_tab2-vbeln  .

       IF sy-subrc EQ0.
         dt_tab2-discinvamountinv = 0.
         SELECT kwert  INTO dt_tab2-discinvamountinv
                               FROM konv
                          WHERE knumv =  v_vbrkknumv
                             AND kwert NE' '
                             AND kposn  > 0
                             AND kschl IN ('ZDC4','ZDC1', 'ZLSD').

           IF v_fkart EQ'S1'."IF S1 then it is the cancellation of previous invoice so dont add the amount but deducat amount .
             v_price =    v_price - dt_tab2-discinvamountinv.
           ELSE.

             v_price =    v_price + dt_tab2-discinvamountinv.
           ENDIF.

         ENDSELECT.
       ENDIF.

     ENDSELECT.
     dt_tab2-discinvamountinv = v_price.
*    *----------dt_tab-NetAmountInv to be paid by customer-----------
*    SELECT SINGLE  SUM(  vbrp~netwr ) INTO dt_tab2-netsales
*     FROM vbrp INNER JOIN
*     lips ON
*     lips~vbeln = vbrp~vgbel AND
*     lips~posnr = vbrp~vgpos
*     AND
*     lips~vgbel = dt_tab2-vbeln.

*      777777777777777777777777
     dt_tab2-netsales = 0.
     v_price = 0.
     v_netwr  = 0.
     v_fkart = 0.


     SELECT   vbrp~netwr  vbrk~fkart
    INTO  (v_netwr , v_fkart)
      FROM
    lips INNER JOIN vbrp
    ON
    lips~vbeln EQ vbrp~vgbel  AND
    lips~posnr EQ vbrp~vgpos
    INNER JOIN vbrk ON
    vbrk~vbeln EQ vbrp~vbeln
    WHERE lips~vgbel EQ  dt_tab2-vbeln.



       IF sy-subrc EQ0.
         IF v_fkart EQ'S1'."IF S1 then it is the cancellation of previous invoice so dont add the amount but deducat the double amount .
           v_price =  v_price - (  v_netwr ).
         ELSE.
           v_price =  v_price + (  v_netwr ).
         ENDIF.
       ENDIF.

     ENDSELECT.
     dt_tab2-netsales = v_price.

*          777777777777777777777777


**-----------Reciepts in the FBCJ FI input form against an order-------------------------
     CLEAR v_p_net_amount.
     SELECTSUM( p_net_amount ) INTO   v_p_net_amount
     FROM tcj_positions  WHERE
     kdauf  "  Order no used  in FBCJ
     EQ dt_tab2-vbeln AND
     transact_number  EQ5"  5  is for (RECEIPT FROM CUSTOMER). Open TCJ_TRANS_NAMES  table to see the  catalogue
     dt_tab2-receipts  =   v_p_net_amount.

*    SELECT  vbrp~aupos SUM( vbrp~fkimg )
*      INTO (v_posnr, v_fkimg )
*      FROM vbrp
*      WHERE  vbrp~aubel = dt_tab2-vbeln
*      GROUP BY vbrp~aupos    .
*
*      SELECT SINGLE vbap~netpr AS netpr1
*       INTO (dt_tab2-netpr1 )
*       FROM  vbap
*       WHERE vbap~posnr EQ  v_posnr
*       AND  vbap~vbeln  EQ dt_tab2-vbeln.
*      v_price =  v_price +  ( dt_tab2-netpr1 * v_fkimg ) .
*    ENDSELECT.

*---------------Billing Status---------------


*-------------BALANCE----------------
     dt_tab2-balance = dt_tab2-netsales - dt_tab2-receipts.
*-------------- Order Status (No Need) ----------------
*    SELECT SINGLE  vbuk~gbstk FROM  vbuk
*    INTO    dt_tab2-overallst
*    WHERE vbuk~vbeln =  dt_tab2-vbeln.
*    CASE  dt_tab2-overallst.
*      WHEN 'A'.
*        dt_tab2-overallst ='Open'.
*      WHEN 'C'.
*        dt_tab2-overallst = 'Completed'.
*      WHEN 'B'.
*        dt_tab2-overallst = 'Being Processed'.
*    ENDCASE.


* ------ Delivery Status --------

     IF dt_tab2-kwert EQ0.
       dt_tab2-delst  ='-'.
     ELSEIF dt_tab2-totaldoamount EQ0 .
       dt_tab2-delst  ='Not delivered'.
     ELSEIF dt_tab2-totaldoamount EQ dt_tab2-kwert AND dt_tab2-kwert NE0. " ORDER SHOULD NOT BE ZERO. THERE SHUD BE SOMETHING ORDERD.
       dt_tab2-delst  = 'Fully delivered'.
     ELSEIF dt_tab2-totaldoamount LT dt_tab2-kwert . " oRTDERD SHOULD NOT BE ZERO. THERE SHUD BE SOMETHING ORDERD.
       dt_tab2-delst  = 'Partially delivered'.

     ENDIF.


*    SELECT SINGLE  vbuk~lfstk FROM  vbuk
*    INTO    dt_tab2-delst
*    WHERE vbuk~vbeln =  dt_tab2-vbeln.
*
*    CASE  dt_tab2-delst .
*      WHEN 'A'.
*        dt_tab2-delst  ='Not delivered'.
*      WHEN 'C'.
*        dt_tab2-delst  = 'Fully delivered'.
*      WHEN 'B'.
*        dt_tab2-delst  = 'Partially delivered'.
*    ENDCASE.





* --------- " Billing Status  BillSt
**Refre https://scn.sap.com/thread/1708139
*    CLEAR: vbilled, vinorder .
*    SELECT COUNT( DISTINCT wb2_v_vbrk_vbrp2~aupos_i  )  FROM wb2_v_vbrk_vbrp2
*      INTO vbilled   WHERE
*      wb2_v_vbrk_vbrp2~aubel_i  =   dt_tab2-vbeln
*      .  "and wb2_v_vbrk_vbrp2~aupos_i  =    dt_tab-posnr.


*    IF vbilled > 0.
*      SELECT COUNT( * )  FROM vbap
*       INTO vinorder    WHERE
*       vbeln  =   dt_tab2-vbeln .
*      IF vinorder = vbilled.
*        dt_tab2-billst  = ''."'Fully Invoiced'.
*      ELSEIF vinorder > vbilled .
*        dt_tab2-billst  = ''."'Partially Invoiced'.
*      ELSE.
*        dt_tab2-billst  =''." 'Not Invoiced'.
*      ENDIF.
*
*    ELSE.
*      dt_tab2-billst  =''." 'Not Invoiced'.
*    ENDIF.



     IF dt_tab2-totaldoamountnet EQ0AND  dt_tab2-netsales EQ  0.
       dt_tab2-billst  = '-'.
     ELSEIF dt_tab2-totaldoamountnet > 0AND  dt_tab2-netsales = 0.
       dt_tab2-billst  = 'Not Invoiced'.
     ELSEIF dt_tab2-netsales GE dt_tab2-totaldoamountnet .
       dt_tab2-billst  = 'Fully Invoiced'.
     ELSEIF dt_tab2-totaldoamountnet > dt_tab2-netsales.
       dt_tab2-billst  = 'Partially Invoiced'.
     ENDIF.

*-----Remove leading zeros

     SHIFT dt_tab2-kunnr LEFT DELETING LEADING'0'."Cst ID
     SHIFT dt_tab2-vbeln LEFT DELETING LEADING'0'." Sales ORDER NO



     MODIFY  dt_tab2.
   ENDLOOP.

*
**-----------set alv fields
*
*  SORT dt_tab2  BY vbeln.
*
*
*  wa_fcat-fieldname = 'VKORG'.
*  wa_fcat-col_pos = 1.
*  wa_fcat-tabname = 'DT_TAB2'.
*  wa_fcat-seltext_m = 'Company'.
*  APPEND wa_fcat TO it_fcat.
*  CLEAR wa_fcat.
*
*  wa_fcat-fieldname = 'VKBUR'.
*  wa_fcat-col_pos = 2.
*  wa_fcat-tabname = 'DT_TAB2'.
*  wa_fcat-seltext_m = 'Sales office'.
*  APPEND wa_fcat TO it_fcat.
*  CLEAR wa_fcat.
*
*
*  wa_fcat-fieldname = 'KUNNR'.
*  wa_fcat-col_pos = 3.
*  wa_fcat-tabname = 'DT_TAB2'.
*  wa_fcat-seltext_m = 'Cst.ID'.
*  APPEND wa_fcat TO it_fcat.
*  CLEAR wa_fcat.
*
*  wa_fcat-fieldname = 'NAME1'.
*  wa_fcat-col_pos = 4.
*  wa_fcat-tabname = 'DT_TAB2'.
*  wa_fcat-seltext_m = 'Cst.Name'.
*  APPEND wa_fcat TO it_fcat.
*  CLEAR wa_fcat.
*
*  wa_fcat-fieldname = 'BSTKD'.
*  wa_fcat-col_pos = 5.
*  wa_fcat-tabname = 'DT_TAB'.
*  wa_fcat-seltext_m = 'PO. No'.
*  APPEND wa_fcat TO it_fcat.
*  CLEAR wa_fcat.
*
*
*  wa_fcat-fieldname = 'VBELN'.
*  wa_fcat-col_pos = 6.
*  wa_fcat-tabname = 'DT_TAB2'.
*  wa_fcat-seltext_m = 'Order No'.
*  APPEND wa_fcat TO it_fcat.
*  CLEAR wa_fcat.
*
*  wa_fcat-fieldname = 'AUDAT'.
*  wa_fcat-col_pos = 7.
*  wa_fcat-tabname = 'DT_TAB2'.
*  wa_fcat-seltext_m = 'Order Date'.
*  APPEND wa_fcat TO it_fcat.
*  CLEAR wa_fcat.
*
*  wa_fcat-fieldname = 'KWERT'.
*  wa_fcat-col_pos = 8.
*  wa_fcat-tabname = 'DT_TAB2'.
*  wa_fcat-seltext_m = 'EX.Fact.'.
*  APPEND wa_fcat TO it_fcat.
*  CLEAR wa_fcat.
*
*  wa_fcat-fieldname = 'NETWR'.
*  wa_fcat-col_pos = 9.
*  wa_fcat-tabname = 'DT_TAB2'.
*  wa_fcat-seltext_m = 'Total Order'.
*  APPEND wa_fcat TO it_fcat.
*  CLEAR wa_fcat.
*
*  wa_fcat-fieldname = 'DISC1'.
*  wa_fcat-col_pos = 10.
*  wa_fcat-tabname = 'DT_TAB2'.
*  wa_fcat-seltext_m = 'Discount'.
*  APPEND wa_fcat TO it_fcat.
*  CLEAR wa_fcat.
*
*
*
*  wa_fcat-fieldname = 'TOTALDOAMOUNT'. " from Delivery ex factory amount of an order
*  wa_fcat-col_pos = 11.
*  wa_fcat-tabname = 'DT_TAB2'.
*  wa_fcat-seltext_m = 'Total Desp(Ex.Fct) '.
*  APPEND wa_fcat TO it_fcat.
*  CLEAR wa_fcat.
*
*  wa_fcat-fieldname = 'TOTALDOAMOUNTNET'. "From Delivery Net amount of an order
*  wa_fcat-col_pos = 12.
*  wa_fcat-tabname = 'DT_TAB2'.
*  wa_fcat-seltext_m = 'Total Desp(Net) '.
*  APPEND wa_fcat TO it_fcat.
*  CLEAR wa_fcat.
*
*
*  wa_fcat-fieldname = 'TOTALDISPATCH'.  " Invoice amount , Ex factory based
*  wa_fcat-col_pos = 13.
*  wa_fcat-tabname = 'DT_TAB2'.
*  wa_fcat-seltext_m = 'Total Inv(Ex.Fct)'.
*  APPEND wa_fcat TO it_fcat.
*  CLEAR wa_fcat.
*
*
*
*  wa_fcat-fieldname = 'TOTALRETURN'.
*  wa_fcat-col_pos = 14.
*  wa_fcat-tabname = 'DT_TAB2'.
*  wa_fcat-seltext_m = 'Total Return'.
*  APPEND wa_fcat TO it_fcat.
*  CLEAR wa_fcat.
*
*  wa_fcat-fieldname = 'DISCINVAMOUNTINV'.
*  wa_fcat-col_pos = 15.
*  wa_fcat-tabname = 'DT_TAB2'.
*  wa_fcat-seltext_m = 'Discount(Inv)'.
*  APPEND wa_fcat TO it_fcat.
*  CLEAR wa_fcat.
*
*  wa_fcat-fieldname = 'NETSALES'.
*  wa_fcat-col_pos = 16.
*  wa_fcat-tabname = 'DT_TAB2'.
*  wa_fcat-seltext_m = 'Net Sales(Inv)'.
*  APPEND wa_fcat TO it_fcat.
*  CLEAR wa_fcat.
*
*  wa_fcat-fieldname = 'EXPENSES'.
*  wa_fcat-col_pos = 17.
*  wa_fcat-tabname = 'DT_TAB2'.
*  wa_fcat-seltext_m = 'Expenses(FI)'.
*  APPEND wa_fcat TO it_fcat.
*  CLEAR wa_fcat.
*
*  wa_fcat-fieldname = 'RECEIPTS'.
*  wa_fcat-col_pos = 18.
*  wa_fcat-tabname = 'DT_TAB2'.
*  wa_fcat-seltext_m = 'Receipts(FI)'.
*  APPEND wa_fcat TO it_fcat.
*  CLEAR wa_fcat.
*
*
*  wa_fcat-fieldname = 'BALANCE'.
*  wa_fcat-col_pos = 19.
*  wa_fcat-tabname = 'DT_TAB2'.
*  wa_fcat-seltext_m = 'Balance'.
*  APPEND wa_fcat TO it_fcat.
*  CLEAR wa_fcat.
*
*
*
*  wa_fcat-fieldname = 'DELST'.
*  wa_fcat-col_pos = 20.
*  wa_fcat-tabname = 'DT_TAB2'.
*  wa_fcat-seltext_m = 'Delivery Status'.
*  APPEND wa_fcat TO it_fcat.
*  CLEAR wa_fcat.
*
*  wa_fcat-fieldname = 'BILLST'.
*  wa_fcat-col_pos = 21.
*  wa_fcat-tabname = 'DT_TAB2'.
*  wa_fcat-seltext_m = 'Billing Status'.
*  APPEND wa_fcat TO it_fcat.
*  CLEAR wa_fcat.

ENDFORM.                    "setalvfieldsOrd
*-------------------------------

FORM   display_alvord.
   CALLFUNCTION'REUSE_ALV_GRID_DISPLAY'
     EXPORTING
       i_callback_program      = sy-repid
       i_callback_top_of_page  = 'TOP-OF-PAGE'"see FORM
       i_callback_user_command = 'USER_COMMAND'
       it_fieldcat             = it_fcat
       is_layout               = wa_fieldlayout
     TABLES
       t_outtab                = dt_tab2.
ENDFORM.                    "display_alvOrd

*&---------------------------------------------------------------------*
*&      Form  TOP-OF-PAGE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM top-of-page.
*ALV Header declarations
   DATA: t_header TYPE   slis_t_listheader,
   wa_header TYPE  slis_listheader,

   t_line LIKE wa_header-info,
   ld_lines TYPEi,
   ld_linesc(10) TYPEc.
*TITLE
   wa_header-typ = 'H'.
   wa_header-info = 'Total Order Position'.
   APPEND wa_header TO t_header.
   CLEAR wa_header.
*DATE
   wa_header-typ = 'S'.
   wa_header-key = 'Date: '.
   CONCATENATE sy-datum+6(2) '.'
   sy-datum+4(2) '.'
   sy-datum(4) INTO wa_header-info. "todays date
   APPEND wa_header TO t_header.
   CLEAR: wa_header.



*TOTAL NO. OF RECORDS SELECTED
   IF  p_itm EQ'X'"Item wise
     DESCRIBETABLE t_order LINES ld_lines.

   ELSEIF  p_cst EQ'X'"Customer wise
     DESCRIBETABLE  dt_tabcst LINES ld_lines.

   ELSE.
     DESCRIBETABLE dt_tab2 LINES ld_lines.
   ENDIF.
   ld_linesc = ld_lines.
   CONCATENATE'Total No. of Records Selected: ' ld_linesc

   INTO t_line SEPARATEDBY space.

   wa_header-typ = 'A'.
   wa_header-info = t_line.
   APPEND wa_header TO t_header.
   CLEAR: wa_header, t_line.

*------------
*WA_HEADER-TYP = 'A'.
*WA_HEADER-INFO = '**Double click to open order window'.
*APPEND WA_HEADER TO T_HEADER.
*CLEAR: WA_HEADER, T_LINE.




   CALLFUNCTION'REUSE_ALV_COMMENTARY_WRITE'
     EXPORTING
       it_list_commentary = t_header
       i_logo             = 'LOGO13'.
*    I_LOGO = 'ENJOYSAP_LOGO'
ENDFORM.                    "APPLICATION_SERVER


*&---------------------------------------------------------------------*
*&      Form  USER_COMMAND
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->RS_UCOMM     text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------*
FORM user_command USING rs_ucomm TYPE sy-ucomm
                        rs_selfield TYPE slis_selfield.
   DATA: wa1 LIKE   str_order .



   IF  p_ord EQ'X'"Order wise

     CASE rs_ucomm.
       WHEN'&IC1'.
*    IF rs_selfield-fieldname = 'VBELN'.
*    Read data table, using index of row user clicked on
         READTABLE dt_tab2 INTO wa1 INDEX rs_selfield-tabindex.
*    Set parameter ID for transaction screen field
         SETPARAMETERID'AUN'FIELD wa1-vbeln.
*    Sxecute transaction ME23N, and skip initial data entry screen
         CALLTRANSACTION'VA03'ANDSKIPFIRSTSCREEN.
*    ENDIF.
     ENDCASE.
   ENDIF.



   IF  p_itm EQ'X'"Item wise
     CASE rs_ucomm.
       WHEN'&IC1'.
*    IF rs_selfield-fieldname = 'VBELN'.
*    Read data table, using index of row user clicked on
         READTABLE t_order INTO fs_order INDEX rs_selfield-tabindex.
*    Set parameter ID for transaction screen field
         SETPARAMETERID'AUN'FIELD fs_order-vbeln.
*    Sxecute transaction ME23N, and skip initial data entry screen
         CALLTRANSACTION'VA03'ANDSKIPFIRSTSCREEN.
*    ENDIF.
     ENDCASE.
   ENDIF.


   IF  p_rec EQ'X'"Expense Reconciliation

     CASE rs_ucomm.
       WHEN'&IC1'.
*    IF rs_selfield-fieldname = 'VBELN'.
*    Read data table, using index of row user clicked on
         READTABLE dt_tab2 INTO wa1 INDEX rs_selfield-tabindex.
*    Set parameter ID for transaction screen field
         SETPARAMETERID'AUN'FIELD wa1-vbeln.
*    Sxecute transaction ME23N, and skip initial data entry screen
         CALLTRANSACTION'VA03'ANDSKIPFIRSTSCREEN.
*    ENDIF.
     ENDCASE.



   ENDIF.



ENDFORM.                    "user_command

*&---------------------------------------------------------------------*
*&      Form  setalvfieldscst
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM   setalvfieldscst.
                                                             " 356
   CLEAR   dt_tabcst[].
   DATA oldkunnr LIKE vbak-kunnr.


   IF dt_tab2  IS  INITIAL. "  when no data found
     MESSAGE  'No data found.'TYPE'I'.
     EXIT.
   ENDIF.


   oldkunnr = ''.
   indx = 0.
   SORT dt_tab2 BY  kunnr.

   LOOPAT dt_tab2.

     IF dt_tab2-kunnr <> oldkunnr .
       indx = indx + 1.
       dt_tabcst-kunnr =  dt_tab2-kunnr.
       dt_tabcst-name1 =  dt_tab2-name1.



       dt_tabcst-kwert = 0.
       dt_tabcst-netwr = 0.
       dt_tabcst-disc1 = 0.
       dt_tabcst-totaldoamount = 0.
       dt_tabcst-totaldoamountnet = 0.
       dt_tabcst-totaldispatch = 0.
       dt_tabcst-totalreturn = 0.
       dt_tabcst-discinvamountinv = 0.
       dt_tabcst-netsales = 0.
       dt_tabcst-expenses = 0.
       dt_tabcst-receipts = 0.
       dt_tabcst-balance = 0.


       APPEND dt_tabcst.
     ENDIF.
*--------------data put
     dt_tabcst-kwert = dt_tabcst-kwert +  dt_tab2-kwert.
     dt_tabcst-netwr = dt_tabcst-netwr +  dt_tab2-netwr.
     dt_tabcst-disc1 = dt_tabcst-disc1 +  dt_tab2-disc1.
     dt_tabcst-totaldoamount = dt_tabcst-totaldoamount +  dt_tab2-totaldoamount.
     dt_tabcst-totaldoamountnet = dt_tabcst-totaldoamountnet +  dt_tab2-totaldoamountnet.
     dt_tabcst-totaldispatch = dt_tabcst-totaldispatch +  dt_tab2-totaldispatch.
     dt_tabcst-totalreturn = dt_tabcst-totalreturn +  dt_tab2-totalreturn.
     dt_tabcst-discinvamountinv = dt_tabcst-discinvamountinv +  dt_tab2-discinvamountinv.
     dt_tabcst-netsales = dt_tabcst-netsales +  dt_tab2-netsales .
     dt_tabcst-expenses = dt_tabcst-expenses +  dt_tab2-expenses .
     dt_tabcst-receipts = dt_tabcst-receipts +  dt_tab2-receipts .
     dt_tabcst-balance = dt_tabcst-balance +  dt_tab2-balance .



     MODIFY dt_tabcst INDEX indx.
     oldkunnr  = dt_tab2-kunnr.
   ENDLOOP.

*==================Now set status=====================================

   LOOPAT dt_tabcst.
     IF dt_tabcst-kwert EQ0.
       dt_tabcst-delst  ='-'.
     ELSEIF dt_tabcst-totaldoamount EQ0 .
       dt_tabcst-delst  ='Not delivered'.
     ELSEIF dt_tabcst-totaldoamount EQ dt_tabcst-kwert AND dt_tabcst-kwert NE0. " ORDER SHOULD NOT BE ZERO. THERE SHUD BE SOMETHING ORDERD.
       dt_tabcst-delst  = 'Fully delivered'.
     ELSEIF dt_tabcst-totaldoamount LT dt_tabcst-kwert . " oRTDERD SHOULD NOT BE ZERO. THERE SHUD BE SOMETHING ORDERD.
       dt_tabcst-delst  = 'Partially delivered'.

     ENDIF.


     IF dt_tabcst-totaldoamountnet EQ0AND  dt_tabcst-netsales EQ  0.
       dt_tabcst-billst  = '-'.
     ELSEIF dt_tabcst-totaldoamountnet > 0AND  dt_tabcst-netsales = 0.
       dt_tabcst-billst  = 'Not Invoiced'.
     ELSEIF dt_tabcst-netsales GE dt_tabcst-totaldoamountnet .
       dt_tabcst-billst  = 'Fully Invoiced'.
     ELSEIF dt_tabcst-totaldoamountnet > dt_tabcst-netsales.
       dt_tabcst-billst  = 'Partially Invoiced'.
     ENDIF.



     MODIFY dt_tabcst.
   ENDLOOP.

* ===================SET COLUMNS

   SORT dt_tabcst BY name1.

   wa_fcat-fieldname = 'KUNNR'.
   wa_fcat-col_pos = 1.
   wa_fcat-tabname = 'DT_TABCST'.
   wa_fcat-seltext_m = 'CST ID'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'NAME1'.
   wa_fcat-col_pos = 2.
   wa_fcat-tabname = 'DT_TABCST'.
   wa_fcat-seltext_m = 'Cst.Name'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'KWERT'.
   wa_fcat-col_pos = 3.
   wa_fcat-tabname = 'DT_TABCST'.
   wa_fcat-seltext_m = 'Ex.Fact.'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'NETWR'.
   wa_fcat-col_pos = 4.
   wa_fcat-tabname = 'DT_TABCST'.
   wa_fcat-seltext_m = 'Total Order'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'DISC1'.
   wa_fcat-col_pos = 5.
   wa_fcat-tabname = 'DT_TABCST'.
   wa_fcat-seltext_m = 'Discount'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.


   wa_fcat-fieldname = 'TOTALDOAMOUNT'. " from Delivery ex factory amount of an order
   wa_fcat-col_pos = 6.
   wa_fcat-tabname = 'DT_TABCST'.
   wa_fcat-seltext_m = 'Total Desp(Ex.Fct) '.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.



   wa_fcat-fieldname = 'TOTALDOAMOUNTNET'. "From Delivery Net amount of an order
   wa_fcat-col_pos = 7.
   wa_fcat-tabname = 'DT_TABCST'.
   wa_fcat-seltext_m = 'Total Desp(Net) '.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.




   wa_fcat-fieldname = 'TOTALDISPATCH'" Invoice amount , Ex factory based
   wa_fcat-col_pos = 8.
   wa_fcat-tabname = 'DT_TABCST'.
   wa_fcat-seltext_m = 'Total Inv(Ex.Fct)'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.


   wa_fcat-fieldname = 'TOTALRETURN'.
   wa_fcat-col_pos = 9.
   wa_fcat-tabname = 'DT_TABCST'.
   wa_fcat-seltext_m = 'Total Return'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'DISCINVAMOUNTINV'.
   wa_fcat-col_pos = 10.
   wa_fcat-tabname = 'DT_TABCST'.
   wa_fcat-seltext_m = 'Discount(Inv)'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.


   wa_fcat-fieldname = 'NETSALES'.
   wa_fcat-col_pos = 11.
   wa_fcat-tabname = 'DT_TABCST'.
   wa_fcat-seltext_m = 'Net Sales(Inv)'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.


   wa_fcat-fieldname = 'EXPENSES'.
   wa_fcat-col_pos = 12.
   wa_fcat-tabname = 'DT_TABCST'.
   wa_fcat-seltext_m = 'Expenses(FI)'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.




   wa_fcat-fieldname = 'RECEIPTS'.
   wa_fcat-col_pos = 13.
   wa_fcat-tabname = 'DT_TABCST'.
   wa_fcat-seltext_m = 'Receipts(FI)'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.




   wa_fcat-fieldname = 'BALANCE'.
   wa_fcat-col_pos = 14.
   wa_fcat-tabname = 'DT_TABCST'.
   wa_fcat-seltext_m = 'Balance'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.


   wa_fcat-fieldname = 'DELST'.
   wa_fcat-col_pos = 15.
   wa_fcat-tabname = 'DT_TABCST'.
   wa_fcat-seltext_m = 'Delivery Status'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'BILLST'.
   wa_fcat-col_pos = 16.
   wa_fcat-tabname = 'DT_TABCST'.
   wa_fcat-seltext_m = 'Billing Status'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.




*  ==============================SHOW GRID NOW

   CALLFUNCTION'REUSE_ALV_GRID_DISPLAY'
     EXPORTING
       i_callback_program      = sy-repid
       i_callback_top_of_page  = 'TOP-OF-PAGE'"see FORM
       i_callback_user_command = 'USER_COMMAND'
       it_fieldcat             = it_fcat
       is_layout               = wa_fieldlayout
     TABLES
       t_outtab                = dt_tabcst.




ENDFORM.                    "setalvfieldsCst
*&---------------------------------------------------------------------*
*&      Form  display_alvcst
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM display_alvcst.







ENDFORM.                    "display_alvCst
*&---------------------------------------------------------------------*
*&      Form  display_alv
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM display_alv. "Item Wise
   CALLFUNCTION'REUSE_ALV_GRID_DISPLAY'
     EXPORTING
       i_callback_program      = sy-repid
       i_callback_user_command = 'USER_COMMAND'
       i_callback_top_of_page  = 'TOP-OF-PAGE'"see FORM
       it_fieldcat             = it_fcat
       is_layout               = wa_fieldlayout " It will show full heading name
     TABLES
       t_outtab                = dt_tab.
ENDFORM.                    "display_alv
*&---------------------------------------------------------------------*
*&      Form  data_retrieval
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM data_retrieval.
   SELECT
     vbak~vkorg  "Company
      vbak~vkbur "Sales office
     vbak~kunnr  " "Customer ID

     kna1~name1  "Customer Name

      vbak~vbeln " Sales ORDER NO
     vbak~audat  " Sales ORDER DATE

     INTO CORRESPONDING FIELDSOFTABLE
     dt_tab
     FROM vbak INNER JOIN vbap ON
     vbak~vbeln = vbap~vbeln

     INNER JOIN kna1 ON
     vbak~kunnr = kna1~kunnr

   WHERE
   vkorg = s_vkorg AND
   vkbur = s_vkbur  AND

   vbak~vbeln IN s_vbeln AND
    vbak~audat IN s_audat  AND
    vbak~kunnr IN s_kunnr
      .
*---------Now Calculate rate discount hosting freight price etc------
   LOOPAT   dt_tab.
*--Get PO
     SELECTSINGLE vbkd~bstkd FROM vbkd INTO
       dt_tab-po
       WHERE
       vbkd~vbeln = dt_tab-vbeln.

* ---Conditions Cqalculation-----
*See
*Sample Report  = ZQA_SD_SALE_ORDER_BMP  and  ZRHN_SD_SALE_ORDR_DO_SCR
*Sample Form = ZQA_SD_SALES_ORDER
*For reference

* -------Unit rate (Expected Factory Rate)----
     SELECTSINGLE kbetr FROM konv INTO dt_tab-rate
                           WHERE knumv =  dt_tab-knumv
                             AND kbetr NE' '
                             AND kposn = dt_tab-posnr
                             AND kschl IN ('ZPR0', 'ZPR1', 'ZPR2', 'ZBTH').
* -------(Amount Per Item = Qty * Rate) ---------------
     dt_tab-amount  = dt_tab-rate * dt_tab-kwmeng.

*------Total Discount in one Item---
     v_price = 0.
     SELECT kwert FROM konv INTO dt_tab-disprice  "tempitab-discount
                      WHERE knumv =  dt_tab-knumv
                         AND kwert NE' '
                         AND kposn = dt_tab-posnr

                           AND kschl IN ('ZDC4','ZDC1','ZLSD').

       v_price =    v_price + dt_tab-disprice.
     ENDSELECT.
     dt_tab-disprice = v_price.

*-------- " Disc Amount Per Item" ----
*    dt_tab-disamountperitem = dt_tab-disprice * dt_tab-kwmeng. " Disc Amount Per Item"
     dt_tab-disamountperitem = dt_tab-disprice. " Disc Amount Per Item"

*-------- "Amount after discount" ----
     dt_tab-amountafterdiscount = dt_tab-amount - ABS( dt_tab-disamountperitem ). " Amount After Discount  Per item

*----------"Discount Percentage Per Item"
     dt_tab-discperc =   dt_tab-amountafterdiscount  / dt_tab-amount * 100. "Discount Percentage"

*-------" Net Item Sale Amount = qty * rate
     dt_tab-netamountitem  = dt_tab-netpr * dt_tab-kwmeng.
*----- "Freight rate per item
     SELECTSINGLE kbetr FROM konv INTO dt_tab-frrateperitem
                         WHERE knumv = dt_tab-knumv
                           AND kbetr NE' '
                           AND kposn = dt_tab-posnr
                           AND kschl IN ('ZSHF').
*-------- "Hosting rate per item
     SELECTSINGLE kbetr FROM konv INTO    dt_tab-htrateperitem "      "Hosting rate per item
                  WHERE knumv = dt_tab-knumv
                    AND kposn = dt_tab-posnr
                 AND kschl IN ('ZEXW').

*-------"Freight amount per item------
     dt_tab-framountperitem  = dt_tab-frrateperitem * dt_tab-kwmeng.
*------- "Hosting amount per item-------
     dt_tab-htamountitem  = dt_tab-htrateperitem * dt_tab-kwmeng.
*------Actual quantity delivered (in sales units)

     SELECTSINGLE  SUM( lfimg )
       FROM lips
        INTO dt_tab-lfimg
        WHERE vgpos EQ dt_tab-posnr
       AND   vgbel EQ dt_tab-vbeln
       GROUPBY vgpos vgbel.

*--------- TotalDispatch Amount
     dt_tab-totaldispatchamount  =  dt_tab-lfimg * dt_tab-netpr.

*-----Returned Qty-----------------See ZRHN_SD_SALE_ORDR_DO_SCR Line 185 for reference
     CLEAR: v_vbeln ,  v_posnr.

     SELECT
       SINGLE   vbfa~vbeln  vbfa~posnv
       INTO      (v_vbeln , v_posnr )
       FROM vbfa
       INNER JOIN vbap ON vbap~vbeln = vbfa~vbeln AND vbap~posnr = vbfa~posnv
       WHERE vbfa~posnv EQ dt_tab-posnr
       AND   vbfa~vbelv EQ dt_tab-vbeln
       AND   pstyv EQ'REN' .


     SELECTSINGLE lfimg INTO dt_tab-returnedqty
     FROM lips
     WHERE posnr EQ v_posnr
     AND   vgbel EQ v_vbeln.
*------------------returned amount per item
     dt_tab-retdamountitem  =   dt_tab-returnedqty * dt_tab-netpr.
**-----------Invoiced Qty-------
     SELECTSUM( fkimg ) INTO dt_tab-fkimg
       FROM vbrp
       WHERE aubel = dt_tab-vbeln
       AND aupos EQ dt_tab-posnr.

*----------Receipts (Invoiced Amount)--------
     dt_tab-invamount  =   dt_tab-fkimg * dt_tab-netpr.

*------------------" Discount Amount (Inv)

*First get knumv  from VBRK
     SELECTSINGLE vbrk~knumv  INTO dt_tab-vbrkknumv
                              FROM  vbrk
                              INNER JOIN   vbrp ON
                              vbrk~vbeln = vbrp~vbeln
                              INNER JOIN lips ON
                              lips~vbeln = vbrp~vgbel AND
                              lips~posnr = vbrp~vgpos
                              AND
                              lips~vgbel =  dt_tab-vbeln  AND
                              lips~vgpos = dt_tab-posnr.
     v_price = 0.
     SELECT kbetr  INTO dt_tab-discinv
                           FROM konv
                      WHERE knumv =  dt_tab-vbrkknumv
                         AND kbetr NE' '
                         AND kposn = dt_tab-posnr
                         AND kschl IN ('ZDC4','ZDC1').
       v_price =    v_price + dt_tab-discinv.
     ENDSELECT.
     dt_tab-discinv = v_price.

*----------dt_tab-NetAmountInv    to be paid by customer-----------

     SELECTSUM(  vbrp~netwr ) INTO dt_tab-netamountinv
       FROM vbrp INNER JOIN
       lips ON
       lips~vbeln = vbrp~vgbel AND
       lips~posnr = vbrp~vgpos
       AND
       lips~vgbel = dt_tab-vbeln AND
       lips~vgpos = dt_tab-posnr.
*=================================
     MODIFY dt_tab.
   ENDLOOP.
*---------------------------------------------
ENDFORM.                    "data_retrieval

*&---------------------------------------------------------------------*
*&      Form  setalvfields
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM setalvfields.

   wa_fcat-fieldname = 'VKORG'.
   wa_fcat-col_pos = 1.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Company'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.


   wa_fcat-fieldname = 'VKBUR'.
   wa_fcat-col_pos = 2.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Sales Office'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'KUNNR'.
   wa_fcat-col_pos = 3.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Cust.ID'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.



   wa_fcat-fieldname = 'NAME1'.
   wa_fcat-col_pos = 4.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Cust.Name'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'VBELN'.
   wa_fcat-col_pos = 5.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Sal.Ord.No'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'AUDAT'.
   wa_fcat-col_pos = 6.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Sal.Ord.Date'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.


   wa_fcat-fieldname = 'POSNR'.
   wa_fcat-col_pos = 7.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Sal.Doc.Item'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.


   wa_fcat-fieldname = 'MATNR'.
   wa_fcat-col_pos = 8.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Mat. No'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'ARKTX'.
   wa_fcat-col_pos = 9.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Material Desc.'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname =  'VRKME'.
   wa_fcat-col_pos = 10.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'UOM'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'KWMENG'.
   wa_fcat-col_pos = 11.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Order Quantity'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'RATE'.
   wa_fcat-col_pos = 12.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Unit Rate'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'AMOUNT'.
   wa_fcat-col_pos = 13.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Amount'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.


   wa_fcat-fieldname = 'DISPRICE'.
   wa_fcat-col_pos = 14.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Discount Price'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.


   wa_fcat-fieldname = 'DISAMOUNTPERITE'.
   wa_fcat-col_pos = 15.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Disc Amount Per Item'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.



   wa_fcat-fieldname = 'AMOUNTAFTERDISCOUNT'.
   wa_fcat-col_pos = 16.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Amount After Disc.Per Item'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.


   wa_fcat-fieldname = 'NETPR'.
   wa_fcat-col_pos = 17.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m =  'Net Rate'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat .

   wa_fcat-fieldname = 'NETAMOUNTITEM'.
   wa_fcat-col_pos = 18.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m =  'Net Sale Amount'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat .

   wa_fcat-fieldname = 'FRRATEPERITEM'.
   wa_fcat-col_pos = 19.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Freight Rate Per Item'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'HTRATEPERITEM'.
   wa_fcat-col_pos = 20.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Hosting Rate Per Item'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'FRAMOUNTPERITEM'.
   wa_fcat-col_pos = 21.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Freight Amount Per Item'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'HTAMOUNTITEM'.
   wa_fcat-col_pos = 22.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Hosting Amount Per Item'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'NETPR'.
   wa_fcat-col_pos = 23.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'DO Net Rate Per Item'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'LFIMG'.
   wa_fcat-col_pos = 24.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Quantity Delivered'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'TOTALDISPATCHAMOUNT'.
   wa_fcat-col_pos = 25.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Dispatch Amount Per Item'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'RETURNEDQTY'.
   wa_fcat-col_pos = 26.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Returned Qty'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.


   wa_fcat-fieldname = 'RETDAMOUNTITEM'.
   wa_fcat-col_pos = 27.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Returned Amount Per Item'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'FKIMG'.
   wa_fcat-col_pos = 28.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Invoiced Qty'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'INVAMOUNT'.
   wa_fcat-col_pos = 29.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Receipts'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

   wa_fcat-fieldname = 'PO'.
   wa_fcat-col_pos = 30.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Purchase Order no'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.



   wa_fcat-fieldname = 'DISCINV'.
   wa_fcat-col_pos = 31.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Discount Amount (Inv)'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.


   wa_fcat-fieldname = 'NETAMOUNTINV'.
   wa_fcat-col_pos = 32.
   wa_fcat-tabname = 'DB_TAB'.
   wa_fcat-seltext_m = 'Net Sale(Inv)'.
   APPEND wa_fcat TO it_fcat.
   CLEAR wa_fcat.

ENDFORM.                    "setalvfields


regard

khurram Nagi


Viewing all articles
Browse latest Browse all 2878

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>