Quantcast
Channel: SCN : Unanswered Discussions - ABAP Development
Viewing all 8768 articles
Browse latest View live

Stopped SM35 Job by going to SM37 and cancelling active job

$
0
0

I have an SM35 job running which i want to cancel.

I went to SM37 clicked on my job and 'cancel active job'. In SM37 this appears as cancelled, in SM35 this still appears as if it is executing although it is not.

How do i clear this job. I cannot do this via SM50 because it is running with a batch userid that i do not have authorisation to debug.


PO01 tcode issue

$
0
0

Dear Experts,

 

Ever since upgeade from EHP4 to EHP6.  there has been issue in PO01 tcode execution (workcenter edit); when any changes in workcenter are needed to be saved. it asks client to be opened.

 

Capture.PNG

Capture1.PNG

none of below helped

 

Note 208746, “If no changes are actually allowed in the client, the automatic transport connection must be deactivated”

Note 163897

 

https://scn.sap.com/thread/1949573

 

Could you please suggest what else could be reason.

 

regards,

SOST - Change "Send Date"

$
0
0

Hi all,

 

I have been trying to look for a way in which I can change the "Send Date" value on an email in SOST tcode.

Any ideas? Any User Exit or enhancement point you guys know about? Any other way??

 

Capture.PNG

MB1A - LSMW error Formatting error in the field MSEG-GRUND

$
0
0

Dear All,

 

I'm trying to create LSMW program for MB1A transaction.

I have done the recording by giving all mandatory data.

 

However, for one field - Reason for movement, I have maintained a rule constant 0006.

With this i was expecting that the program will write the default value for the data records from excel file being read..

 

But it is not happening that way & while readinig the file, system is throwing the error 'Formatting error in the field MSEG-GRUND; see next message - Fill in all required entry fields

 

 

When I checked it in foreground mode, system is asking to enter the value in field "Reason for Movement" even though it has rule.

 

 

Please see details below, any suggestion/guidance/poniters will be helpful.

 

Thanks in advance!.

 

-------------------------------------------------

 

I have applied rule constant to field “GRUND - reason for movement” but is failing.

When I checked it in foreground mode, system is asking to enter the value even though it has rule.

I trie deleting it from recording, even then it asking this.

 

 

 

1.jpg

3.jpg2.jpg

4.jpg

 

 

5.jpg

 

 

 

6.jpg

 

7.jpg

 

8.jpg

Get click event Screen.

$
0
0

Hi experts.

 

I have been  working with determination with bopf.

 

My Determination is called in all modification screen.

 

I need it be called only when the user click in a nwbc menu option specific.

 

How can i know what menu is clicked by the user to put in my code?

If i need create a event to menu please send a tutorial.

I have a TM guide but i didnt find how to do it.

 

For example in sap ecc the abap use sy-ucomm but how to do it in bopf inside a determination?

 

 

Thanks.

scrolling in step loops

$
0
0

I have to work with Step Loops. with all the research I found

 

LOOP AT ITAB CURSOR CL INTO WA.

 

ENDLOOP.


in flow logic in the PBO event will transfer the content from internal table to the screen field automatically and it enable scrolling. when scrolled the PAI event is triggered, and in PAI,

 

LOOP AT ITAB.

 

ENDLOOP.


will automatically take care of scrolling. This kind of method display as many table rows that my screen can contain. I found these with Transaction TZ61.

 

Now the Problem is In my output screen I need to control how many table rows is displayed. so I made these addition.

 

PROCESS BEFORE OUTPUT.

LOOP AT ITAB CURSOR CL INTO WA FROM N1 TO N2..

 

ENDLOOP.

 

PROCESS AFTER INPUT.

LOOP AT ITAB.

 

ENDLOOP.

 

N1 of type I has value 1 , N2 of type I has value 5, CL of type I has value 1.

 

Now In output I managed to get 5 table rows as required but the scrolling event is not triggering. please guide me what are all the changes that I need to do If I made the additions FROM N1 TO N2.

 

when I scroll the contents are not scrolling. only the first 5 rows from the internal table is displayed. but my internal table has 100 rows.

 

please guide me at the earliest. I had referred sap technical and help.sap.com but I couldn't find any solution. please help.

Add additional time slots in Customers: Goods Receiving Hours (Tcode: OVSC)

$
0
0

Hi,

I want to add additional time slots in Customers: Goods Receiving Hours (Tcode: OVSC). Currently there are only 2 time slots... Screenshot is attached. Please give any suggestion.

Stored Procedure using the method "EXECUTE_PROCEDURE" of class "CL_SQL_STATEMENT"

$
0
0

Hi Experts,

 

I wanted to fetch the data from the database table, using the stored procedure concept. But i am unable get the exact syntax for creating a creating procedure with select query in it. And How to display the DBresults[Output of select query].

 

Kindly help.

 

Thanks and Regards,

Chethan


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

Which Userexit to change number range for material slips? (LIKP-XABLN)

$
0
0

Hi all,

 

I have enabled the specific number ranges for material Slips per plant in the customizing.

For Italy I need consecutive delivery note numbers so SAP suggests to use that solution to write that number into the field LIKP-XABLN.

 

The setting in customizing is: 1 plant => 1 number range

 

What I need is to have 2 different number ranges depending on the shipping point.

 

Could you tell me which userexit I can use to query the shipping Point and to Switch the number range accordingly?

 

Thank you!!!

 

Best regards

 

Kai

create function location in (IL01) from customer in FD01.

$
0
0

hello all,

 

 

in FD01 i have created a customer like below,

fd03.jpg

 

when i save i wanted to create a function location with (function location name = customer name and function location text =

 

customer description) in IL01..

 

 

is it possible to do so,

 

if so,

 

what are the user exits required do this,

 

thanks in advance...

Ldapmap : SU01 parameter tab, schema enhancement needed ?

$
0
0

Hello,

 

We are running SAP Netweaver Gateway 7.4, and in the context of some Fiori deployemnt , I have been asked to replicate

user data from LDAP (Microsoft Windows 2003 Active Directory). to SAP user master.

So I went though the documentation LDAP configuration, LDAPMAP configuration and defined the following mapping

The same mapping rules have been applied to our ECC production system actually

05-09-2015 14-23-12.png

 

But then, I have received a new requirement asking to also map the su01 parameter tab, as it has caused a lot of effort, to maintain it manually

after LDAP synchronisation.

 

I checked the "mapping proposal" feature, and it seem possible to map the paramter tab with the ldap attribute : sapParameters

04-09-2015 19-54-38.png

 

But, I am really confused about whether or not, do I need first to enhance, extend the schema using RSLDAPSCHEMAEXT ?

I have read the sap notes 888848 and the FAQ note 793191, and both thoses notes tend to recommend to NOT extend the schema unless it is necessary.

 

So can I directly map the sap field parameter1 to LDAP attribute sapParameters ? OR do I first need to extend the schema first ?

 

Thank you

Best Regards

Infotype 185

$
0
0

Hi experts,

                  I want to fetch the id type description of passport,civil id and work permit for kuwait country in my ALV report.

 

                  Please help me, from which table i need to fetch the above description.

 

                  in table  T5R05, i cannot find the description.Kindly tell me the table.

 

 

 

 

Regards

Samir

Table Control

$
0
0

Hi Experts,

This is table control PAI code I need help  for FIELD after using  structure fields given DUMP. Please send this solution.If you know the correct code send and explain the wrong and give complete solution. 

PAI:

Loop at lt_kna1,

field:lw_kna1-kunnr,

       lw_kna1-land1,

       lw_kna1-name1,

       lw_kna1-ort01.

Modeule Modify.   

endloop.


L3 720 Error in Transfer order creation

$
0
0

Hi,

 

I am creating a transfer order using the BAPI 'L_TO_CREATE_DN ' but the TO creation is unsuccessful asI am getting the error message '2 Step picking relevance will be removed since no relevant group'.

 

But using LT03 transaction if transfer order is created the same error message is shown as Warning message.

 

Could you please help me creating TO ?

 

Thanks in advance,

Manojkumar K


Compilation process in ABAP

$
0
0

Repect to Gurus,

 

Based on information in various forums, I came to know that ABAP is an interpreted language (please confirm this. I have also read that ABAP language processers combine compilation and interpretation like JAVA, to produce an intermediate form similar to bytecode). I would like to know what the different compliaton steps are (broad overview) and what file/intermediate program is actually fed to the machine. Please explain with examples (sample instruction in source code).

 

Thanks

2 ALV GRID with button to show data in single screen

$
0
0

Hi Experts,

 

I have a requirement to have 2 ALV Grid Display in one screen and a button.

I have created the screens using se51. Followed the guide here SAP ABAP 4 Tutorial: Two ALV Grids in Single Screen using OOPs

I succeeded in creating the 2 alv grid in one screen, but my requirement is when I run my program Both ALV will be shown but only ALV1 will have data first and when  I click a button ALV2 will be populated.

How can I populate my ALV2 when I press a button?

 

Here is my code:

 

 

DATA: BEGIN OF intern OCCURS 0.

         INCLUDE STRUCTURE  alsmex_tabline.

DATA: END OF intern.

 

DATA: BEGIN OF intern1 OCCURS 0.

         INCLUDE STRUCTURE  alsmex_tabline.

DATA: END OF intern1.

 

DATA: BEGIN OF it_upload OCCURS 0,

   rmcdsnum TYPE string,

   ebeln TYPE string,

   ebelp TYPE string,

   matnr TYPE string,

   mixcode TYPE string,

   vol TYPE string,

   END OF it_upload.

DATA: wa_upload LIKE it_upload.

DATA: tind(4) TYPE n.

DATA: lne(2) TYPE n.

DATA: zwfeld(30).

FIELD-SYMBOLS: <fs1>.

 

 

DATA: BEGIN OF fieldnames OCCURS 3,

         title(60),

         zline(2) TYPE n,

       END OF fieldnames.

 

DATA: BEGIN OF data_tab OCCURS 0,

        value_0001(50),

        value_0002(50),

        value_0003(50),

        value_0004(50),

        value_0005(50),

        value_0006(50),

        value_0007(50),

        value_0008(50),

        value_0009(50),

        value_0010(50),

        value_0011(50),

        value_0012(50),

        value_0013(50).

DATA: END OF data_tab.

DATA: wa_fieldnames LIKE fieldnames.

DATA: wa_datatab LIKE data_tab.

 

 

TYPES: BEGIN OF ty_data,

          chk(1) TYPE c,

          rmcdsnum TYPE string,

          ebeln TYPE string,

          ebelp TYPE string,

          matnr TYPE string,

          mixcode TYPE string,

          vol TYPE string,

        END OF ty_data,

 

        BEGIN OF ty_recco,

          rmcdsnum TYPE string,

          ebeln LIKE ekbe-ebeln,

          ebelp LIKE ekbe-ebelp,

          type(1) TYPE c,

          message TYPE BAPI_MSG,

        END OF ty_recco.

 

DATA: wa_data TYPE ty_data,

       wa_recco TYPE ty_recco,

       it_data TYPE STANDARD TABLE OF ty_data,

       it_recco TYPE STANDARD TABLE OF ty_recco.

 

"Field Catalog structure and Tables

DATA: wa_fcat_data TYPE lvc_s_fcat,

       wa_fcat_recco TYPE lvc_s_fcat,

       it_fcat_data TYPE STANDARD TABLE OF lvc_s_fcat,

       it_fcat_recco TYPE STANDARD TABLE OF lvc_s_fcat.

 

DATA: "Object for Custom Container

       ob_custom1 TYPE REF TO cl_gui_custom_container,

       ob_custom2 TYPE REF TO cl_gui_custom_container,

 

       "Object for GRIDs

       ob_grid1  TYPE REF TO cl_gui_alv_grid,

       ob_grid2  TYPE REF TO cl_gui_alv_grid.

 

 

 

 

 

PARAMETERS: p_file LIKE rlgrap-filename MEMORY ID M01,

             begcol TYPE i DEFAULT 1 NO-DISPLAY,

             begrow TYPE i DEFAULT 1 NO-DISPLAY,

             endcol TYPE i DEFAULT 100 NO-DISPLAY,

             endrow TYPE i DEFAULT 32000 NO-DISPLAY.

 

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

   CALL FUNCTION 'KD_GET_FILENAME_ON_F4'

        EXPORTING

             mask      = '*.xls'

             static    = 'X'

        CHANGING

             file_name = p_file.

 

 

START-OF-SELECTION.

   CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

        EXPORTING

             filename                = p_file

             i_begin_col             = begcol

             i_begin_row             = begrow

             i_end_col               = endcol

             i_end_row               = endrow

        TABLES

             intern                  = intern

        EXCEPTIONS

             inconsistent_parameters = 1

             upload_ole              = 2

             OTHERS                  = 3.

 

   IF sy-subrc <> 0.

     WRITE:/ 'Upload Error ', SY-SUBRC.

   ENDIF.

 

 

 

FORM get_exceldata.

   LOOP AT intern.

     intern1 = intern.

     CLEAR intern1-row.

     APPEND intern1.

   ENDLOOP.

 

   "Get Header of excel file

   SORT intern BY row col.

     LOOP AT intern.

       fieldnames-title = intern-value.

       fieldnames-zline = sy-tabix.

       APPEND fieldnames.

       AT END OF row.

         EXIT.

       ENDAT.

     ENDLOOP.

 

   "Get values of excel

   SORT intern BY row col.

   LOOP AT intern.

     IF intern-row = 1.

       CONTINUE.

     ENDIF.

     tind = intern-col.

     CONCATENATE 'DATA_TAB-VALUE_' tind INTO zwfeld.

     ASSIGN (zwfeld) TO <fs1>.

     <fs1> = intern-value.

     AT END OF row.

       APPEND data_tab.

       CLEAR data_tab.

     ENDAT.

   ENDLOOP.

 

   "Put value into itab with header

   CLEAR: zwfeld, <fs1>.

   LOOP AT data_tab INTO wa_datatab.

     READ TABLE fieldnames INTO wa_fieldnames WITH KEY Title = 'RMCDS'.

       IF sy-subrc EQ 0.

         lne = wa_fieldnames-zline.

         CONCATENATE 'wa_datatab-value_00' lne INTO zwfeld.

         ASSIGN (zwfeld) TO <fs1>.

         it_upload-rmcdsnum = <fs1>.

       ELSE.

         MESSAGE 'Cannot find column STO in the file' TYPE 'E'.

       ENDIF.

 

     READ TABLE fieldnames INTO wa_fieldnames WITH KEY Title = 'STO'.

       IF sy-subrc EQ 0.

         lne = wa_fieldnames-zline.

         CONCATENATE 'wa_datatab-value_00' lne INTO zwfeld.

         ASSIGN (zwfeld) TO <fs1>.

         it_upload-ebeln = <fs1>.

       ELSE.

         MESSAGE 'Cannot find column STO in the file' TYPE 'E'.

       ENDIF.

 

     READ TABLE fieldnames INTO wa_fieldnames WITH KEY Title = 'Line Item'.

       IF sy-subrc EQ 0.

         lne = wa_fieldnames-zline.

         CONCATENATE 'wa_datatab-value_00' lne INTO zwfeld.

         ASSIGN (zwfeld) TO <fs1>.

         it_upload-ebelp = <fs1>.

       ELSE.

         MESSAGE 'Cannot find column Line Item in the excel file' TYPE 'E'.

       ENDIF.

 

     "Material Number

     READ TABLE fieldnames INTO wa_fieldnames WITH KEY Title = 'Item Code'.

       IF sy-subrc EQ 0.

         lne = wa_fieldnames-zline.

         CONCATENATE 'wa_datatab-value_00' lne INTO zwfeld.

         ASSIGN (zwfeld) TO <fs1>.

         it_upload-matnr = <fs1>.

       ELSE.

         MESSAGE 'Cannot find column Volume in the excel file' TYPE 'E'.

       ENDIF.

 

     READ TABLE fieldnames INTO wa_fieldnames WITH KEY Title = 'Mix Code'.

       IF sy-subrc EQ 0.

         lne = wa_fieldnames-zline.

         CONCATENATE 'wa_datatab-value_00' lne INTO zwfeld.

         ASSIGN (zwfeld) TO <fs1>.

         it_upload-mixcode = <fs1>.

       ELSE.

         MESSAGE 'Cannot find column Volume in the excel file' TYPE 'E'.

       ENDIF.

 

     READ TABLE fieldnames INTO wa_fieldnames WITH KEY Title = 'Volume'.

       IF sy-subrc EQ 0.

         lne = wa_fieldnames-zline.

         CONCATENATE 'wa_datatab-value_00' lne INTO zwfeld.

         ASSIGN (zwfeld) TO <fs1>.

         it_upload-vol = <fs1>.

       ELSE.

         MESSAGE 'Cannot find column Volume in the excel file' TYPE 'E'.

       ENDIF.

 

     APPEND it_upload.

   ENDLOOP.

ENDFORM.

 

 

CLASS getrmcds DEFINITION.

 

   PUBLIC SECTION.

     METHODS: get_dataexcel, "Selection from EKKO

              get_recco, "Selection from EKPO

              fieldcat_exceldata, "Fieldcatalog for Header Table

              fieldcat_recco. "Fieldcatalog for Item Table

 

ENDCLASS.                    "getrmcds DEFINITION

*

**----------------------------------------------------------------------*

**       CLASS getrmcds IMPLEMENTATION

**----------------------------------------------------------------------*

**

**----------------------------------------------------------------------*

CLASS getrmcds IMPLEMENTATION.

 

   METHOD get_dataexcel.

     LOOP AT it_upload INTO wa_upload.

       wa_data-rmcdsnum = wa_upload-rmcdsnum.

       wa_data-ebeln = wa_upload-ebeln.

       wa_data-ebelp = wa_upload-ebelp.

       wa_data-matnr = wa_upload-matnr.

       wa_data-mixcode = wa_upload-mixcode.

       wa_data-vol = wa_upload-vol.

       APPEND wa_data TO it_data.

     ENDLOOP.

 

     CALL METHOD: fieldcat_exceldata.

     CALL METHOD: fieldcat_recco.

 

   ENDMETHOD.                    "get_dataexcel

 

   METHOD get_recco.

     wa_recco-rmcdsnum = '123123'.

     wa_recco-ebeln = '1111'.

     wa_recco-ebelp = '0020'.

     wa_recco-type = 'E'.

     wa_recco-message = 'yesyeseyseys'.

     APPEND wa_recco TO it_recco.

 

     CALL METHOD: fieldcat_recco.

 

 

   ENDMETHOD.                    "get_recco

 

   METHOD fieldcat_exceldata.

     CLEAR wa_fcat_data.

     REFRESH it_fcat_data.

 

     DATA: lv_col TYPE i VALUE 0.

 

     lv_col                 = 1 + lv_col.

     wa_fcat_data-col_pos   = lv_col.

     wa_fcat_data-fieldname = 'CHK'.

     wa_fcat_data-tabname   = 'IT_DATA'.

     wa_fcat_data-checkbox = 'X'.

     wa_fcat_data-edit = 'X'.

     wa_fcat_data-col_opt   = 'X'.

     APPEND wa_fcat_data TO it_fcat_data.

     CLEAR wa_fcat_data.

 

     lv_col                 = 1 + lv_col.

     wa_fcat_data-col_pos   = lv_col.

     wa_fcat_data-fieldname = 'RMCDSNUM'.

     wa_fcat_data-tabname   = 'IT_DATA'.

     wa_fcat_data-reptext   = 'RMCDS Number'.

     wa_fcat_data-col_opt   = 'X'.

     APPEND wa_fcat_data TO it_fcat_data.

     CLEAR wa_fcat_data.

 

     lv_col                 = 1 + lv_col.

     wa_fcat_data-col_pos   = lv_col.

     wa_fcat_data-fieldname = 'EBELN'.

     wa_fcat_data-tabname   = 'IT_DATA'.

     wa_fcat_data-reptext   = 'STO'.

     wa_fcat_data-col_opt   = 'X'.

     APPEND wa_fcat_data TO it_fcat_data.

     CLEAR wa_fcat_data.

 

     lv_col                 = 1 + lv_col.

     wa_fcat_data-col_pos   = lv_col.

     wa_fcat_data-fieldname = 'EBELP'.

     wa_fcat_data-tabname   = 'IT_DATA'.

     wa_fcat_data-reptext   = 'Line Item'.

     wa_fcat_data-col_opt   = 'X'.

     APPEND wa_fcat_data TO it_fcat_data.

     CLEAR wa_fcat_data.

 

     lv_col                 = 1 + lv_col.

     wa_fcat_data-col_pos   = lv_col.

     wa_fcat_data-fieldname = 'MATNR'.

     wa_fcat_data-tabname   = 'IT_DATA'.

     wa_fcat_data-reptext   = 'Item Code'.

     wa_fcat_data-col_opt   = 'X'.

     APPEND wa_fcat_data TO it_fcat_data.

     CLEAR wa_fcat_data.

 

     lv_col                 = 1 + lv_col.

     wa_fcat_data-col_pos   = lv_col.

     wa_fcat_data-fieldname = 'MIXCODE'.

     wa_fcat_data-tabname   = 'IT_DATA'.

     wa_fcat_data-reptext   = 'Mix Code'.

     wa_fcat_data-col_opt   = 'X'.

     APPEND wa_fcat_data TO it_fcat_data.

     CLEAR wa_fcat_data.

 

     lv_col                 = 1 + lv_col.

     wa_fcat_data-col_pos   = lv_col.

     wa_fcat_data-fieldname = 'VOL'.

     wa_fcat_data-tabname   = 'IT_DATA'.

     wa_fcat_data-reptext   = 'Vendr'.

     wa_fcat_data-col_opt   = 'X'.

     APPEND wa_fcat_data TO it_fcat_data.

     CLEAR wa_fcat_data.

 

   ENDMETHOD.                    "fieldcat_exceldata

 

   METHOD fieldcat_recco.

     CLEAR wa_fcat_recco.

     REFRESH it_fcat_recco.

 

     DATA: lv_col TYPE i VALUE 0.

 

     lv_col                 = 1 + lv_col.

     wa_fcat_recco-col_pos   = lv_col.

     wa_fcat_recco-fieldname = 'RMCDSNUM'.

     wa_fcat_recco-tabname   = 'IT_RECCO'.

     wa_fcat_recco-reptext   = 'RMCDS Number'.

     wa_fcat_recco-col_opt   = 'X'.

     APPEND wa_fcat_recco TO it_fcat_recco.

     CLEAR wa_fcat_recco.

 

     lv_col                 = 1 + lv_col.

     wa_fcat_recco-col_pos   = lv_col.

     wa_fcat_recco-fieldname = 'EBELP'.

     wa_fcat_recco-tabname   = 'IT_RECCO'.

     wa_fcat_recco-reptext   = 'STO'.

     wa_fcat_recco-col_opt   = 'X'.

     APPEND wa_fcat_recco TO it_fcat_recco.

     CLEAR wa_fcat_recco.

 

     lv_col                 = 1 + lv_col.

     wa_fcat_recco-col_pos   = lv_col.

     wa_fcat_recco-fieldname = 'EBELN'.

     wa_fcat_recco-tabname   = 'IT_RECCO'.

     wa_fcat_recco-reptext   = 'Line Item'.

     wa_fcat_recco-col_opt   = 'X'.

     APPEND wa_fcat_recco TO it_fcat_recco.

     CLEAR wa_fcat_recco.

 

     lv_col                 = 1 + lv_col.

     wa_fcat_recco-col_pos   = lv_col.

     wa_fcat_recco-fieldname = 'TYPE'.

     wa_fcat_recco-tabname   = 'IT_RECCO'.

     wa_fcat_recco-reptext   = 'Type'.

     wa_fcat_recco-col_opt   = 'X'.

     APPEND wa_fcat_recco TO it_fcat_recco.

     CLEAR wa_fcat_recco.

 

     lv_col                 = 1 + lv_col.

     wa_fcat_recco-col_pos   = lv_col.

     wa_fcat_recco-fieldname = 'MESSAGE'.

     wa_fcat_recco-tabname   = 'IT_RECCO'.

     wa_fcat_recco-reptext   = 'Message'.

     wa_fcat_recco-col_opt   = 'X'.

     APPEND wa_fcat_recco TO it_fcat_recco.

     CLEAR wa_fcat_recco.

 

   ENDMETHOD.                    "fieldcat_recco

 

ENDCLASS.                    "getrmcds IMPLEMENTATION

 

 

 

 

END-OF-SELECTION.

   PERFORM get_exceldata.

 

   DATA: getrmcds TYPE REF TO getrmcds.

   CREATE OBJECT getrmcds.

   CALL METHOD: getrmcds->get_dataexcel.

   CALL METHOD: getrmcds->get_recco.

 

   CALL SCREEN 0900.

 

 

 

 

*&---------------------------------------------------------------------*

*&      Module  USER_COMMAND_0900  INPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

MODULE USER_COMMAND_0900 INPUT.

   IF   sy-ucomm = 'BACK'

     OR sy-ucomm = 'EXIT'

     OR sy-ucomm = 'CANCEL'.

 

     FREE: ob_grid1, ob_grid2, ob_custom1, ob_custom2.

     REFRESH: it_data, it_recco.

     LEAVE TO SCREEN 0.

   ENDIF.

 

*  IF sy-ucomm = 'SIMULATE'.

*    CALL METHOD: getrmcds->get_recco.

*    CALL SCREEN 0900.

*  ENDIF.

 

ENDMODULE.                 " USER_COMMAND_0900  INPUT

 

*&---------------------------------------------------------------------*

*&      Module  STATUS_0900  OUTPUT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

MODULE STATUS_0900 OUTPUT.

 

   SET PF-STATUS 'ZSTANDARD'.

*  SET TITLEBAR 'TITLE_9000'.

 

   "Object creation for custom container 1 exporting the name

   CREATE OBJECT ob_custom1

     EXPORTING

       container_name = 'CONTAINER1'.

 

   "Object creation for custom container 2 exporting the name

   CREATE OBJECT ob_custom2

     EXPORTING

       container_name = 'CONTAINER2'.

 

   "Object creation for ALV Grid 1 exporting the parent container 1

   "It means container 1 contains ALV grid 1 - header table

   CREATE OBJECT ob_grid1

     EXPORTING

       i_parent = ob_custom1.

 

   "Object creation for ALV Grid 2 exporting the parent container 2

   "It means container 2 contains ALV grid 2 - item table

   CREATE OBJECT ob_grid2

     EXPORTING

       i_parent = ob_custom2.

 

*Calling the method to display the output table in ALV Grid 1.

*Here field catalog and output table are passed by changing parameter.

*Header table is passed here.

   CALL METHOD ob_grid1->set_table_for_first_display

     CHANGING

       it_fieldcatalog = it_fcat_data

       it_outtab       = it_data.

 

*Calling the method to display the output table in ALV Grid 2.

*Here field catalog and output table are passed by changing parameter.

*Item table is passed here.

   CALL METHOD ob_grid2->set_table_for_first_display

     CHANGING

       it_fieldcatalog = it_fcat_recco

       it_outtab       = it_recco.

 

ENDMODULE.                 " STATUS_0900  OUTPUT

How to upload document and connect it to a debitor?

$
0
0

Hi all,

 

I would like to upload documents (e.g. PDF-documents) from a java application to SAP and connect the uploaded document with a debitor.

 

Is there an function module for this purpose?

I already searched for a FM or some hints but found nothing concrete yet. I know that there is SAP ArchiveLink, but I have never worked with this technology before.

 

Hope someone could give me a starting point.

 

Best Regards

Markus

OLE Memory

$
0
0

Hello Expert,

 

I am a creating an Excel with dynamic tabs. However my problem is that the OLE memory is not getting cleared.

When i execute the program... it can creates x number of tabs...

However if i change the selection screen criteria... and it should produce Y number of tabs..

It is producing X number of tabs..

 

It is always keeping the last amount of tabs created.

 

How can i clear the OLE memory ?

 

Here is my code:

 

CREATE OBJECT go_excel 'EXCEL.APPLICATION'.

SET PROPERTY OF go_excel  'VISIBLE' = 0.

SET PROPERTY OF go_excel 'DisplayAlerts' = 0.

 

CALL METHOD OF

       go_excel

       'Workbooks' = go_workbooks.


CALL METHOD OF

       go_workbooks

       'ADD'        = go_workbook.

 

SET PROPERTY OF go_excel 'SHEETSINNEWWORKBOOK' = v_max_tab.


loop ...

CALL METHOD OF

       go_excel

       'WORKSHEETS' = lw_worksheet

     EXPORTING

       #1           = v_sheet_count.

 

   v_sheet_count = v_sheet_count + 1.

 

   CALL METHOD OF

       lw_worksheet

       'ACTIVATE'.

.

.

.

endloop.


 

   CALL FUNCTION 'FLUSH'

     EXCEPTIONS

       cntl_system_error = 1

       cntl_error        = 2

       OTHERS            = 3.

 

   IF sy-subrc EQ 0.

 

     CALL METHOD OF

         go_workbook

         'SaveAS'.

 

   ENDIF.

 

 

   SET PROPERTY OF go_excel 'Visible' = 1.

   SET PROPERTY OF go_excel 'DisplayAlerts' = 1.

   FREE OBJECT: go_excel, go_workbooks, go_workbook.


Update FB02 Assignment and Text

$
0
0

Hi,

 

We have the requirement to update the Accounting Document Assignment and Text in FB02.

 

I have checked but, I did not get any standard function module to update in MASS.

 

I have developed the BDC recording program to update these fields. But, After certain line items it fails due to change of screen no.

 

Please suggest if any other method to update these fields.

 

Regards

Amol Khochare

Viewing all 8768 articles
Browse latest View live


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