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