Vbap-kdmat
hi
i need to get this field. here is what i have written but i am not getting it.
SELECT *
FROM vbrk
INNER JOIN vbrp ON vbrkvbeln = vbrpvbeln
INNER JOIN kna1 ON vbrkkunag = kna1kunnr
INTO corresponding fields of TABLE itab
where
vbrkvbeln in p_vbeln and vbrkkunag in p_kunag and vbrpmatnr in p_matnr and vbrpaugru_auft in p_augru and vbrk~fkdat in P_fkdat .
loop at itab.
select kdmat into itab1-kdmat
from vbap
where vbeln = itab-vbeln .
endselect.
endloop.
there is no value showing up in itab.
is there some special approach for this ?
See the below code :
SELECT *
FROM vbrk
INNER JOIN vbrp ON vbrkvbeln = vbrpvbeln
INNER JOIN kna1 ON vbrkkunag = kna1kunnr
INTO corresponding fields of TABLE itab
where
vbrkvbeln in p_vbeln and vbrkkunag in p_kunag and vbrpmatnr in p_matnr and vbrpaugru_auft in p_augru and vbrk~fkdat in P_fkdat .
loop at itab.
select kdmat into itab1-kdmat
from vbap
where vbeln = <b>itab-aubel</b> .
endselect.
endloop.
If you want to get KDMAT(Custoemr material # ) then you need validate on vbrp-aubel(This is sales order #) and Item number
Reward Points if it is useful
Thanks
Seshu
Similar Messages
-
Copy control invoice - order - KDMAT will not be there
Hi Experts!
we create customer orders (in this case credit notes) with reference to an invoice.
the problem is that the field vbap-kdmat is empty in the copy control and so it could not be filled into the new order.
in VTAF we use the copy requirement 153 Item from bill.doc.
in the PO tab of the invoice the customer material is filled (manually)
We don't have set up information in VD51 but we fill the customer material with some information and this should be copied into the returns.
does anyone have an idea how to get the copy control working?
I tried to change the 153 to 151 where the source says:
vbap-kdmat = cvbap-kdmat.
but without the value in vbap (it is empty while executing this code) the field will remain empty.
Thank you in advance
Regards
Daniel Hermannhi
billing level PO tab customer material number comes through order , here table also VBAP, so actually this PO tab all fields are display mode only ,
when enter the sale order item PO tab level enter the customer material number , then pass to same billing level ,
when billing level you enter manually this data fet at VBAP table only ,
so you assign the copy routine 151 then on kdmat copy billing to credit memo order OR we maintain same kdmat in main order its copy to billing then also copy credit memo also
do this
regards
sankar -
How to get the open order quantity for a material
Hi All,
We need to get the open order quantity for materials. At present we are using the following logic...
SELECT VBAKVBELN VBAPPOSNR VBAP~KWMENG
INTO TABLE IT_VBAP
FROM VBAP
INNER JOIN VBAK ON VBAKVBELN = VBAPVBELN
INNER JOIN VAPMA ON VAPMAVBELN = VBAPVBELN
AND VAPMAPOSNR = VBAPPOSNR
INNER JOIN VBUP ON VBUPVBELN = VBAPVBELN
AND VBUPPOSNR = VBAPPOSNR
WHERE VAPMA~MATNR = IT_OUTPUT-MATNR
AND VAPMA~WERKS = IT_OUTPUT-WERKS
AND VBAK~AUART IN S_AUART
AND VBUP~GBSTA NE 'C'.
But the Query takes quite a long time as it does a full range scan on all the tables. Is there any way the query can be improved, may be by creating an index etc? Or is there anyother way by which i can get the required data?
Any input is appreciated.
Regards
Brain.This could help.
*& Report: zsdvr055 date written: 03/24/00 *
*& Author: Brian Huntley last update: 03/24/00 *
*& Program Title: Open Order Report *
*& Description: This report will create a list of sales documents *
*& that are open (contain at least one item that is not shipped). *
*& The report will sort by ship-to customer name and by sales *
*& document number. *
*& Tables: *
*& Files: *
*& Transactions: *
*& Changes: *
REPORT ZSDVR055 LINE-SIZE 255.
TABLES: VBPA,
VBAP,
VBUP,
VBAK,
VBKD,
KNA1,
VBEP,
VBFA,
LIKP,
LIPS,
EKET,
T171T.
define hashed table for selected ship-to and sold-to SO's
TYPES: BEGIN OF TVBPA_TYPE,
VBELN LIKE VBPA-VBELN, "sales document
POSNR LIKE VBPA-POSNR, "item number
PARVW LIKE VBPA-PARVW, "partner function
KUNNR LIKE VBPA-KUNNR, "customer number
END OF TVBPA_TYPE.
DATA: TVBPA TYPE HASHED TABLE OF TVBPA_TYPE
WITH UNIQUE KEY VBELN POSNR PARVW WITH HEADER LINE.
define internal table for all selected SO's
DATA: BEGIN OF ITAB0 OCCURS 0,
VBELN LIKE VBPA-VBELN, "sales document
END OF ITAB0.
define internal table for all selected SO items
DATA: BEGIN OF ITAB OCCURS 0,
VBELN LIKE VBAP-VBELN, "document number
POSNR LIKE VBAP-POSNR, "item number
MATNR LIKE VBAP-MATNR, "material
ARKTX LIKE VBAP-ARKTX, "description
PSTYV LIKE VBAP-PSTYV, "item category
KDMAT LIKE VBAP-KDMAT, "customer material
NETWR LIKE VBAP-NETWR, "net value
WAERK LIKE VBAP-WAERK, "currency
KWMENG LIKE VBAP-KWMENG, "quantity
ERDAT LIKE VBAP-ERDAT, "entry date
NETPR LIKE VBAP-NETPR, "net price
KPEIN LIKE VBAP-KPEIN, "pricing unit
PRCTR LIKE VBAP-PRCTR, "profit center
ERNAM LIKE VBAK-ERNAM, "entered by
AUART LIKE VBAK-AUART, "order type
VKORG LIKE VBAK-VKORG, "sales organization
VTWEG LIKE VBAK-VTWEG, "distribution channel
VDATU LIKE VBAK-VDATU, "requested date (header)
BNAME LIKE VBAK-BNAME, "name of orderer
KUNNR LIKE VBAK-KUNNR, "sold-to customer
BZIRK LIKE VBKD-BZIRK, "sales district
KURSK LIKE VBKD-KURSK, "conversion rate
BSTKD LIKE VBKD-BSTKD, "customer PO
LFGSA LIKE VBUP-LFGSA, "overall delivery status
FKSAA LIKE VBUP-FKSAA, "overall billing status
KUNWE LIKE VBPA-KUNNR, "ship-to customer
NAME1 LIKE KNA1-NAME1, "ship-to customer name
ORT01 LIKE KNA1-ORT01, "ship-to address
REGIO LIKE KNA1-REGIO, "ship-to region (state)
LAND1 LIKE KNA1-LAND1, "ship-to country
END OF ITAB.
create internal table for open orders
DATA: BEGIN OF ITAB1 OCCURS 0,
KUNNR LIKE VBAK-KUNNR, "sold-to customer
KUNWE LIKE VBPA-KUNNR, "ship-to customer
VBELN LIKE VBAP-VBELN, "document number
POSNR LIKE VBAP-POSNR, "item number
ZDATE1 LIKE VBEP-EDATU, "requested date
ZDATE2 LIKE VBEP-EDATU, "scheduled date (confirm)
ZDATE3 LIKE VBEP-EDATU, "committed date
ZQTY1 LIKE VBAP-KWMENG, "qty ordered
ZQTY2 LIKE VBEP-BMENG, "backlog qty
ZEXTD LIKE VBAP-NETWR, "backlog net value
ZDESC(30) TYPE C, "backlog description
END OF ITAB1.
define internal table for SO schedule lines
DATA: BEGIN OF ITAB2A OCCURS 0,
WADAT LIKE VBEP-WADAT, "planned goods issue date
VBELN LIKE VBAP-VBELN, "document number
POSNR LIKE VBAP-POSNR, "item number
WMENG LIKE VBEP-WMENG, "qty ordered
BMENG LIKE VBEP-BMENG, "qty confirmed
END OF ITAB2A.
define internal table for SO item request dates
DATA: BEGIN OF ITAB2B OCCURS 0,
EDATU LIKE VBEP-EDATU, "delivery date
VBELN LIKE VBAP-VBELN, "document number
POSNR LIKE VBAP-POSNR, "item number
WMENG LIKE VBEP-WMENG, "qty ordered
END OF ITAB2B.
define internal table for SO item commit dates
DATA: BEGIN OF ITAB2C OCCURS 0,
EDATU LIKE VBEP-EDATU, "delivery date
VBELN LIKE VBAP-VBELN, "document number
POSNR LIKE VBAP-POSNR, "item number
ROMS1 LIKE VBEP-WMENG, "committed qty
END OF ITAB2C.
define internal table for SO item deliveries
DATA: BEGIN OF ITAB3 OCCURS 0,
VGBEL LIKE LIPS-VGBEL, "sales document
VGPOS LIKE LIPS-VGPOS, "sales document item
VBELN LIKE LIKP-VBELN, "delivery number
POSNR LIKE LIPS-POSNR, "delivery item number
WADAT LIKE LIKP-WADAT, "planned GI date
WADAT_IST LIKE LIKP-WADAT_IST, "actual GI date
LFIMG LIKE LIPS-LFIMG, "actual qty delivered
ERDAT LIKE LIKP-ERDAT, "date created
ERZET LIKE LIKP-ERZET, "time created
END OF ITAB3.
define internal table for SO item / delivery cross reference
DATA: BEGIN OF ITAB4 OCCURS 0,
VBELV LIKE VBFA-VBELV, "sales document
POSNV LIKE VBFA-POSNV, "sales document item
VBELN LIKE VBFA-VBELN, "delivery number
POSNN LIKE VBFA-POSNN, "delivery item
VBTYP_N LIKE VBFA-VBTYP_N, "document category
RFMNG LIKE VBFA-RFMNG, "qty delivered
PLMIN LIKE VBFA-PLMIN, "plus/minus flag
END OF ITAB4.
define local variables
DATA: ORDR_QTY LIKE VBEP-WMENG, "order qty
CONF_QTY LIKE VBEP-BMENG, "confirmed qty
NOCONF_QTY LIKE VBEP-BMENG, "qty not confirmed
DELV_QTY LIKE VBEP-WMENG, "qty delivered
NODELV_QTY LIKE VBEP-WMENG, "qty not delivered
REMAIN_QTY LIKE VBEP-WMENG, "qty remain to get conf date
REQ_DATE LIKE VBEP-EDATU, "request date
COM_DATE LIKE VBEP-EDATU, "committed date
DELV_QTY1 LIKE VBEP-WMENG, "preceding delivery qty
REMAIN_QTY1 LIKE VBEP-WMENG, "qty remain to get reqest date
REMAIN_QTY2 LIKE VBEP-WMENG, "qty remain to get commit date
THIRD_QTY LIKE VBEP-WMENG, "3rd party no PO qty
SO_STOCK LIKE MSKA-KALAB, "sales order stock
ZPRICE LIKE VBAP-NETPR, "unit price USD
ADRS1(40) TYPE C, "concatenated city and region
ADRS2(45) TYPE C, "city, region and country
ADRS3(80) TYPE C, "name, city, rgn, ctry
ZCNTR TYPE I. "counter
define select options
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_VKORG FOR VBAK-VKORG DEFAULT '1000',
S_VTWEG FOR VBAK-VTWEG DEFAULT '10' NO-DISPLAY,
S_SPART FOR VBAK-SPART DEFAULT '00' NO-DISPLAY,
S_KUNNR FOR VBPA-KUNNR MATCHCODE OBJECT DEBI,
S_KUNWE FOR VBPA-KUNNR MATCHCODE OBJECT DEBI.
SELECTION-SCREEN SKIP.
SELECT-OPTIONS:
S_BZIRK FOR VBKD-BZIRK,
S_PRCTR FOR VBAP-PRCTR,
S_MATNR FOR VBAP-MATNR MATCHCODE OBJECT MAT1,
S_ERNAM FOR VBAK-ERNAM,
S_ERDAT FOR VBAP-ERDAT.
SELECTION-SCREEN END OF BLOCK BLK1.
AT SELECTION-SCREEN.
IF S_KUNNR IS INITIAL AND S_KUNWE IS INITIAL.
MESSAGE E005(ZM) WITH TEXT-100.
ENDIF.
MAIN PROGRAM
INITIALIZATION.
INCLUDE ZSYHEADR.
START-OF-SELECTION.
PERFORM 100_GET_SO_ITEMS.
PERFORM 200_GET_NO_DELIVERY.
PERFORM 300_GET_NO_GOODS_ISSUE.
PERFORM 400_GET_PARTIAL_DELIVERY.
PERFORM 500_GET_THIRD_PARTY.
PERFORM 900_CREATE_LIST.
FORM 100_GET_SO_ITEMS
FORM 100_GET_SO_ITEMS.
get SO's for selected ship-to and sold-to customers
REFRESH TVBPA.
IF NOT S_KUNNR IS INITIAL.
SELECT VBELN POSNR PARVW KUNNR
FROM VBPA INTO TABLE TVBPA
WHERE KUNNR IN S_KUNNR AND PARVW = 'AG' AND VBELN < '0080000000'.
ENDIF.
IF NOT S_KUNWE IS INITIAL.
SELECT VBELN POSNR PARVW KUNNR
FROM VBPA APPENDING TABLE TVBPA
WHERE KUNNR IN S_KUNWE AND PARVW = 'WE' AND VBELN < '0080000000'.
ENDIF.
DESCRIBE TABLE TVBPA LINES ZCNTR.
IF ZCNTR = 0.
WRITE: /1 'No data found for selection'.
STOP.
ENDIF.
eliminate duplicate SO's
LOOP AT TVBPA.
CLEAR ITAB0.
MOVE TVBPA-VBELN TO ITAB0-VBELN.
APPEND ITAB0.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM ITAB0.
get SO detail
SELECT VBAP~VBELN VBAP~POSNR VBAP~MATNR VBAP~ARKTX VBAP~PSTYV
VBAP~KDMAT VBAP~NETWR VBAP~WAERK VBAP~KWMENG VBAP~ERDAT
VBAP~NETPR VBAP~KPEIN VBAP~PRCTR VBAK~ERNAM VBAK~AUART
VBAK~VKORG VBAK~VTWEG VBAK~VDATU VBAK~BNAME VBAK~KUNNR
VBKD~BZIRK VBKD~KURSK VBKD~BSTKD VBUP~LFGSA VBUP~FKSAA
FROM VBAP INNER JOIN VBUP ON VBUP~VBELN = VBAP~VBELN AND
VBUP~POSNR = VBAP~POSNR
INNER JOIN VBKD ON VBKD~VBELN = VBAP~VBELN AND
VBKD~POSNR = VBAP~POSNR
INNER JOIN VBAK ON VBAK~VBELN = VBAP~VBELN
INTO TABLE ITAB FOR ALL ENTRIES IN ITAB0
WHERE VBAP~VBELN = ITAB0-VBELN AND VBAP~MATNR IN S_MATNR AND
VBAP~ERDAT IN S_ERDAT AND VBAP~PRCTR IN S_PRCTR AND
VBAP~ABGRU = SPACE AND VBKD~BZIRK IN S_BZIRK AND
VBAK~VKORG IN S_VKORG AND VBAK~VTWEG IN S_VTWEG AND
VBAK~SPART IN S_SPART AND VBAK~KUNNR IN S_KUNNR AND
VBAK~ERNAM IN S_ERNAM.
IF SY-SUBRC <> 0.
WRITE: /1 'No data found for selection'.
STOP.
ENDIF.
loop thru SO items
LOOP AT ITAB.
get ship-to customer
IF NOT S_KUNWE IS INITIAL.
CLEAR TVBPA.
READ TABLE TVBPA WITH TABLE KEY VBELN = ITAB-VBELN
POSNR = ITAB-POSNR PARVW = 'WE'.
IF SY-SUBRC <> 0.
READ TABLE TVBPA WITH TABLE KEY VBELN = ITAB-VBELN
POSNR = '000000' PARVW = 'WE'.
ENDIF.
MOVE TVBPA-KUNNR TO ITAB-KUNWE.
ELSE.
CLEAR ITAB-KUNWE.
SELECT SINGLE KUNNR FROM VBPA INTO ITAB-KUNWE
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
PARVW = 'WE'.
IF SY-SUBRC <> 0.
SELECT SINGLE KUNNR FROM VBPA INTO ITAB-KUNWE
WHERE VBELN = ITAB-VBELN AND POSNR = '000000' AND
PARVW = 'WE'.
ENDIF.
ENDIF.
IF NOT ITAB-KUNWE IN S_KUNWE.
DELETE ITAB.
CONTINUE.
ENDIF.
get ship-to customer address info
SELECT SINGLE NAME1 ORT01 REGIO LAND1 FROM KNA1
INTO (ITAB-NAME1, ITAB-ORT01, ITAB-REGIO, ITAB-LAND1)
WHERE KUNNR = ITAB-KUNWE.
MODIFY ITAB.
ENDLOOP.
SORT ITAB BY VBELN POSNR.
ENDFORM.
FORM 200_GET_NO_DELIVERY
get detail for SO items w/ no deliveries for order document types
(ZZOR, ZZC1, ZZCO, ZZRP, ZZRW, KE, KR, ZCHP, ZPSO, ZZNC)
FORM 200_GET_NO_DELIVERY.
LOOP AT ITAB WHERE AUART = 'ZZOR' OR AUART = 'ZZC1' OR
AUART = 'ZZCO' OR AUART = 'ZZRP' OR AUART = 'ZZRW' OR
AUART = 'KE' OR AUART = 'KR' OR AUART = 'ZCHP' OR
AUART = 'ZPSO' OR AUART = 'ZZNC'.
select if delivery status = A (not delivered)
IF ITAB-LFGSA = 'A'.
assign values to detail fields
CLEAR ITAB1.
ITAB1-KUNNR = ITAB-KUNNR.
ITAB1-KUNWE = ITAB-KUNWE.
ITAB1-VBELN = ITAB-VBELN.
ITAB1-POSNR = ITAB-POSNR.
IF ITAB-KURSK = 0.
ITAB-KURSK = 1.
ENDIF.
IF ITAB-KPEIN = 0.
ITAB-KPEIN = 1.
ENDIF.
select schedule lines for SO item and write to internal table itab2a
SELECT WADAT VBELN POSNR WMENG BMENG
FROM VBEP INTO TABLE ITAB2A
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR.
select sched lines w/request date and write to internal table itab2b
SELECT EDATU VBELN POSNR WMENG
FROM VBEP INTO TABLE ITAB2B
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
WMENG <> 0.
select sched lines w/commit date and write to internal table itab2c
SELECT EDATU VBELN POSNR ROMS1
FROM VBEP INTO TABLE ITAB2C
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
ROMS1 <> 0.
SORT ITAB2A BY WADAT.
SORT ITAB2B BY EDATU.
SORT ITAB2C BY EDATU.
ORDR_QTY = 0.
CONF_QTY = 0.
NOCONF_QTY = 0.
calculate the unconfirmed qty for a SO item
LOOP AT ITAB2A.
CONF_QTY = CONF_QTY + ITAB2A-BMENG.
ORDR_QTY = ORDR_QTY + ITAB2A-WMENG.
ENDLOOP.
NOCONF_QTY = ORDR_QTY - CONF_QTY.
LOOP AT ITAB2A WHERE BMENG <> 0.
PERFORM GET_REQUEST_DATE TABLES ITAB2B
USING ITAB2A-BMENG REQ_DATE.
PERFORM GET_COMMIT_DATE TABLES ITAB2C
USING ITAB2A-BMENG COM_DATE.
ITAB1-ZDATE1 = REQ_DATE.
ITAB1-ZDATE2 = ITAB2A-WADAT.
ITAB1-ZDATE3 = COM_DATE.
ITAB1-ZQTY1 = ITAB-KWMENG.
ITAB1-ZQTY2 = ITAB2A-BMENG.
ITAB1-ZDESC = 'no delivery, confirmed'.
calculate net value for backlog qty
ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
if order type is consignment return (KR), reverse sign
IF ITAB-AUART = 'KR'.
ITAB1-ZQTY1 = ITAB1-ZQTY1 * -1.
ITAB1-ZQTY2 = ITAB1-ZQTY2 * -1.
ITAB1-ZEXTD = ITAB1-ZEXTD * -1.
ENDIF.
APPEND ITAB1.
ENDLOOP.
get request date for SO item
IF NOCONF_QTY <> 0.
PERFORM GET_REQUEST_DATE TABLES ITAB2B
USING NOCONF_QTY REQ_DATE.
PERFORM GET_COMMIT_DATE TABLES ITAB2C
USING NOCONF_QTY COM_DATE.
ITAB1-ZDATE1 = REQ_DATE.
ITAB1-ZDATE2 = '99991231'.
ITAB1-ZDATE3 = COM_DATE.
ITAB1-ZQTY1 = ITAB-KWMENG.
ITAB1-ZQTY2 = NOCONF_QTY.
ITAB1-ZDESC = 'no delivery, not confirmed'.
calculate net value for backlog qty
ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
if order type is consignment return (KR), reverse sign
IF ITAB-AUART = 'KR'.
ITAB1-ZQTY1 = ITAB1-ZQTY1 * -1.
ITAB1-ZQTY2 = ITAB1-ZQTY2 * -1.
ITAB1-ZEXTD = ITAB1-ZEXTD * -1.
ENDIF.
APPEND ITAB1.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.
FORM 300_GET_NO_GOODS_ISSUE
get detail for SO items w/deliveries and no goods issue for
doc types (ZZOR, ZZC1, ZZCO, ZZRP, ZZRW, KE, KR, ZCHP, ZPSO, ZZNC)
FORM 300_GET_NO_GOODS_ISSUE.
get detail for deliveries w/no goods issue
SELECT VBELN WADAT WADAT_IST ERDAT ERZET
FROM LIKP INTO (LIKP-VBELN, LIKP-WADAT, LIKP-WADAT_IST,
LIKP-ERDAT, LIKP-ERZET)
WHERE WADAT_IST = 0.
select if actual qty delivered <> 0
CLEAR LIPS.
SELECT POSNR VGBEL VGPOS LFIMG
FROM LIPS INTO (LIPS-POSNR, LIPS-VGBEL, LIPS-VGPOS, LIPS-LFIMG)
WHERE VBELN = LIKP-VBELN AND LFIMG <> 0.
select if goods movement status on delivery = A (no goods issue)
CLEAR VBUP.
SELECT SINGLE WBSTA FROM VBUP INTO VBUP-WBSTA
WHERE VBELN = LIKP-VBELN AND POSNR = LIPS-POSNR.
IF VBUP-WBSTA = 'A'.
CLEAR ITAB3.
ITAB3-VGBEL = LIPS-VGBEL.
ITAB3-VGPOS = LIPS-VGPOS.
ITAB3-VBELN = LIKP-VBELN.
ITAB3-POSNR = LIPS-POSNR.
ITAB3-WADAT = LIKP-WADAT.
ITAB3-WADAT_IST = LIKP-WADAT_IST.
ITAB3-LFIMG = LIPS-LFIMG.
ITAB3-ERDAT = LIKP-ERDAT.
ITAB3-ERZET = LIKP-ERZET.
APPEND ITAB3.
ENDIF.
ENDSELECT.
ENDSELECT.
SORT ITAB3 BY VGBEL VGPOS VBELN POSNR.
loop thru deliveries w/no goods issue and get SO item detail
LOOP AT ITAB3.
CLEAR ITAB.
READ TABLE ITAB WITH KEY VBELN = ITAB3-VGBEL POSNR = ITAB3-VGPOS.
IF SY-SUBRC <> 0.
IF ITAB-AUART = 'ZZOR' OR ITAB-AUART = 'ZZC1' OR
ITAB-AUART = 'ZZCO' OR ITAB-AUART = 'ZZRP' OR
ITAB-AUART = 'ZZRW' OR ITAB-AUART = 'KE' OR
ITAB-AUART = 'KR' OR ITAB-AUART = 'ZCHP' OR
ITAB-AUART = 'ZPSO' OR ITAB-AUART = 'ZZNC'.
assign values to detail fields
CLEAR ITAB1.
ITAB1-KUNNR = ITAB-KUNNR.
ITAB1-KUNWE = ITAB-KUNWE.
ITAB1-VBELN = ITAB-VBELN.
ITAB1-POSNR = ITAB-POSNR.
IF ITAB-KURSK = 0.
ITAB-KURSK = 1.
ENDIF.
IF ITAB-KPEIN = 0.
ITAB-KPEIN = 1.
ENDIF.
select delivery qty for SO item and write to internal table
SELECT VBELV POSNV VBELN POSNN VBTYP_N RFMNG PLMIN
FROM VBFA INTO TABLE ITAB4
WHERE VBELV = ITAB-VBELN AND POSNV = ITAB-POSNR AND
( VBTYP_N = 'J' OR VBTYP_N = 'T' ).
calculate total delivery qty for SO item
DELV_QTY = 0.
DELV_QTY1 = 0.
LOOP AT ITAB4.
IF ITAB4-VBTYP_N = 'J' OR ( ITAB4-VBTYP_N = 'T' AND
ITAB-AUART = 'KR').
IF ITAB4-PLMIN = '-'.
ITAB4-RFMNG = ITAB4-RFMNG * -1.
ENDIF.
determine if delivery for SO item precedes delivery w/no goods
issue (to determine request date and qty)
CLEAR LIKP.
SELECT SINGLE ERDAT ERZET
FROM LIKP INTO (LIKP-ERDAT, LIKP-ERZET)
WHERE VBELN = ITAB4-VBELN.
IF LIKP-ERDAT < ITAB3-ERDAT OR ( LIKP-ERDAT = ITAB3-ERDAT
AND LIKP-ERZET < ITAB3-ERZET ).
DELV_QTY1 = DELV_QTY1 + ITAB4-RFMNG.
ENDIF.
DELV_QTY = DELV_QTY + ITAB4-RFMNG.
ENDIF.
ENDLOOP.
get request dates for SO item
REFRESH ITAB2B.
SELECT EDATU VBELN POSNR WMENG
FROM VBEP INTO TABLE ITAB2B
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
WMENG <> 0.
select sched lines w/commit date and write to itab2c
REFRESH ITAB2C.
SELECT EDATU VBELN POSNR ROMS1
FROM VBEP INTO TABLE ITAB2C
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
ROMS1 <> 0.
SORT ITAB2B BY EDATU.
SORT ITAB2C BY EDATU.
loop thru request dates and delete request date entries for
quantity(s) for preceding deliveries
REMAIN_QTY1 = DELV_QTY1.
LOOP AT ITAB2B.
IF ITAB2B-WMENG > REMAIN_QTY1.
ITAB2B-WMENG = ITAB2B-WMENG - REMAIN_QTY1.
MODIFY ITAB2B.
EXIT.
ELSEIF ITAB2B-WMENG = REMAIN_QTY1.
DELETE ITAB2B.
EXIT.
ELSE.
REMAIN_QTY1 = REMAIN_QTY1 - ITAB2B-WMENG.
DELETE ITAB2B.
ENDIF.
ENDLOOP.
loop thru commit dates and delete commit date entries for
quantity(s) for preceding deliveries
REMAIN_QTY2 = DELV_QTY1.
LOOP AT ITAB2C.
IF ITAB2C-ROMS1 > REMAIN_QTY2.
ITAB2C-ROMS1 = ITAB2C-ROMS1 - REMAIN_QTY2.
MODIFY ITAB2C.
EXIT.
ELSEIF ITAB2C-ROMS1 = REMAIN_QTY2.
DELETE ITAB2C.
EXIT.
ELSE.
REMAIN_QTY2 = REMAIN_QTY2 - ITAB2C-ROMS1.
DELETE ITAB2C.
ENDIF.
ENDLOOP.
if planned goods issue date is 0, put qty in non-confirmed
get request date for SO item
IF ITAB3-WADAT <> 0.
PERFORM GET_REQUEST_DATE TABLES ITAB2B
USING ITAB3-LFIMG REQ_DATE.
PERFORM GET_COMMIT_DATE TABLES ITAB2C
USING ITAB3-LFIMG COM_DATE.
ITAB1-ZDATE1 = REQ_DATE.
ITAB1-ZDATE2 = ITAB3-WADAT.
ITAB1-ZDATE3 = COM_DATE.
ITAB1-ZQTY1 = ITAB-KWMENG.
ITAB1-ZQTY2 = ITAB3-LFIMG.
ITAB1-ZDESC = 'delivery, no goods issue'.
ELSE.
PERFORM GET_REQUEST_DATE TABLES ITAB2B
USING ITAB3-LFIMG REQ_DATE.
PERFORM GET_COMMIT_DATE TABLES ITAB2C
USING ITAB3-LFIMG COM_DATE.
ITAB1-ZDATE1 = REQ_DATE.
ITAB1-ZDATE2 = '99991231'.
ITAB1-ZDATE3 = COM_DATE.
ITAB1-ZQTY1 = ITAB-KWMENG.
ITAB1-ZQTY2 = ITAB3-LFIMG.
ITAB1-ZDESC = 'delivery, no goods issue date'.
ENDIF.
calculate net value for backlog qty
ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
if order type is consignment return (KR), reverse sign
IF ITAB-AUART = 'KR'.
ITAB1-ZQTY1 = ITAB1-ZQTY1 * -1.
ITAB1-ZQTY2 = ITAB1-ZQTY2 * -1.
ITAB1-ZEXTD = ITAB1-ZEXTD * -1.
ENDIF.
APPEND ITAB1.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.
FORM 400_GET_PARTIAL_DELIVERY
get detail for SO items w/partial deliveries for document types
(ZZOR, ZZC1, ZZCO, ZZRP, ZZRW, KE, KR, ZCHP, ZPSO, ZZNC)
FORM 400_GET_PARTIAL_DELIVERY.
process SO items for selected order types
LOOP AT ITAB WHERE AUART = 'ZZOR' OR AUART = 'ZZC1' OR
AUART = 'ZZCO' OR AUART = 'ZZRP' OR AUART = 'ZZRW' OR
AUART = 'KE' OR AUART = 'KR' OR AUART = 'ZCHP' OR
AUART = 'ZPSO' OR AUART = 'ZZNC'.
select if delivery status = B (partially delivered)
IF ITAB-LFGSA = 'B'.
assign values to detail fields
CLEAR ITAB1.
ITAB1-KUNNR = ITAB-KUNNR.
ITAB1-KUNWE = ITAB-KUNWE.
ITAB1-VBELN = ITAB-VBELN.
ITAB1-POSNR = ITAB-POSNR.
IF ITAB-KURSK = 0.
ITAB-KURSK = 1.
ENDIF.
IF ITAB-KPEIN = 0.
ITAB-KPEIN = 1.
ENDIF.
select delivery qty for SO item and write to internal table
SELECT VBELV POSNV VBELN POSNN VBTYP_N RFMNG PLMIN
FROM VBFA INTO TABLE ITAB4
WHERE VBELV = ITAB-VBELN AND POSNV = ITAB-POSNR AND
( VBTYP_N = 'J' OR VBTYP_N = 'T' ).
calculate total delivery qty for SO item
DELV_QTY = 0.
LOOP AT ITAB4.
IF ITAB4-VBTYP_N = 'J' OR ( ITAB4-VBTYP_N = 'T' AND
ITAB-AUART = 'KR').
IF ITAB4-PLMIN = '-'.
ITAB4-RFMNG = ITAB4-RFMNG * -1.
ENDIF.
DELV_QTY = DELV_QTY + ITAB4-RFMNG.
ENDIF.
ENDLOOP.
select schedule lines for SO item and write to internal table
REFRESH ITAB2A.
SELECT WADAT VBELN POSNR WMENG BMENG
FROM VBEP INTO TABLE ITAB2A
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR.
get request dates from schedule line table
REFRESH ITAB2B.
SELECT EDATU VBELN POSNR WMENG
FROM VBEP INTO TABLE ITAB2B
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
WMENG <> 0.
get commit dates from schedule line table
REFRESH ITAB2C.
SELECT EDATU VBELN POSNR ROMS1
FROM VBEP INTO TABLE ITAB2C
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
ROMS1 <> 0.
SORT ITAB2B BY EDATU.
SORT ITAB2C BY EDATU.
SORT ITAB2A BY WADAT.
loop thru request dates and delete request date entries for
quantity(s) already delivered
REMAIN_QTY1 = DELV_QTY.
LOOP AT ITAB2B.
IF ITAB2B-WMENG > REMAIN_QTY1.
ITAB2B-WMENG = ITAB2B-WMENG - REMAIN_QTY1.
MODIFY ITAB2B.
EXIT.
ELSEIF ITAB2B-WMENG = REMAIN_QTY1.
DELETE ITAB2B.
EXIT.
ELSE.
REMAIN_QTY1 = REMAIN_QTY1 - ITAB2B-WMENG.
DELETE ITAB2B.
ENDIF.
ENDLOOP.
loop thru commit dates and delete request date entries for
quantity(s) already delivered
REMAIN_QTY2 = DELV_QTY.
LOOP AT ITAB2C.
IF ITAB2C-ROMS1 > REMAIN_QTY2.
ITAB2C-ROMS1 = ITAB2C-ROMS1 - REMAIN_QTY2.
MODIFY ITAB2C.
EXIT.
ELSEIF ITAB2C-ROMS1 = REMAIN_QTY2.
DELETE ITAB2C.
EXIT.
ELSE.
REMAIN_QTY2 = REMAIN_QTY2 - ITAB2C-ROMS1.
DELETE ITAB2C.
ENDIF.
ENDLOOP.
ORDR_QTY = 0.
CONF_QTY = 0.
NOCONF_QTY = 0.
calculate the unconfirmed qty for SO item
LOOP AT ITAB2A.
ORDR_QTY = ORDR_QTY + ITAB2A-WMENG.
CONF_QTY = CONF_QTY + ITAB2A-BMENG.
ENDLOOP.
NOCONF_QTY = ORDR_QTY - CONF_QTY.
NODELV_QTY = ORDR_QTY - DELV_QTY.
loop thru schedule lines and process entries with no related
delivery(s)
REMAIN_QTY = DELV_QTY.
LOOP AT ITAB2A.
IF ITAB2A-BMENG <> 0.
IF ITAB2A-BMENG <= REMAIN_QTY.
REMAIN_QTY = REMAIN_QTY - ITAB2A-BMENG.
ELSE.
ITAB2A-BMENG = ITAB2A-BMENG - REMAIN_QTY.
PERFORM GET_REQUEST_DATE TABLES ITAB2B
USING ITAB2A-BMENG REQ_DATE.
PERFORM GET_COMMIT_DATE TABLES ITAB2C
USING ITAB2A-BMENG COM_DATE.
ITAB1-ZDATE1 = REQ_DATE.
ITAB1-ZDATE2 = ITAB2A-WADAT.
ITAB1-ZDATE3 = COM_DATE.
ITAB1-ZQTY1 = ITAB-KWMENG.
ITAB1-ZQTY2 = ITAB2A-BMENG.
ITAB1-ZDESC = 'partial delivery'.
calculate net value for backlog qty
ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
if order type is consignment return (KR), reverse sign
IF ITAB-AUART = 'KR'.
ITAB1-ZQTY1 = ITAB1-ZQTY1 * -1.
ITAB1-ZQTY2 = ITAB1-ZQTY2 * -1.
ITAB1-ZEXTD = ITAB1-ZEXTD * -1.
ENDIF.
APPEND ITAB1.
REMAIN_QTY = 0.
ENDIF.
ENDIF.
ENDLOOP.
if total unconfirmed >= total not delivered, qty is unconfirmed
IF NOCONF_QTY >= NODELV_QTY.
PERFORM GET_REQUEST_DATE TABLES ITAB2B
USING NODELV_QTY REQ_DATE.
PERFORM GET_COMMIT_DATE TABLES ITAB2C
USING NODELV_QTY COM_DATE.
ITAB1-ZDATE1 = REQ_DATE.
ITAB1-ZDATE2 = '99991231'.
ITAB1-ZDATE3 = COM_DATE.
ITAB1-ZQTY1 = ITAB-KWMENG.
ITAB1-ZQTY2 = NODELV_QTY.
ITAB1-ZDESC = 'partial delv, not confirmed'.
calculate net value for backlog qty
ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
if order type is consignment return (KR), reverse sign
IF ITAB-AUART = 'KR'.
ITAB1-ZQTY1 = ITAB1-ZQTY1 * -1.
ITAB1-ZQTY2 = ITAB1-ZQTY2 * -1.
ITAB1-ZEXTD = ITAB1-ZEXTD * -1.
ENDIF.
APPEND ITAB1.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.
FORM 500_GET_THIRD_PARTY
get detail for third party SO items
FORM 500_GET_THIRD_PARTY.
process SO items for selected order types
LOOP AT ITAB WHERE PSTYV = 'TAS' AND ( AUART = 'ZZOR' OR
AUART = 'ZZC1' OR AUART = 'ZZCO' OR AUART = 'ZZRP' OR
AUART = 'ZZRW' OR AUART = 'KE' OR AUART = 'KR' OR
AUART = 'ZCHP' OR AUART = 'ZPSO' OR AUART = 'ZZNC' ).
select if billing status <> C (billed)
IF ITAB-FKSAA <> 'C'.
assign values to detail fields
CLEAR ITAB1.
ITAB1-KUNNR = ITAB-KUNNR.
ITAB1-KUNWE = ITAB-KUNWE.
ITAB1-VBELN = ITAB-VBELN.
ITAB1-POSNR = ITAB-POSNR.
IF ITAB-KURSK = 0.
ITAB-KURSK = 1.
ENDIF.
IF ITAB-KPEIN = 0.
ITAB-KPEIN = 1.
ENDIF.
get request dates from schedule line table
REFRESH ITAB2B.
SELECT EDATU VBELN POSNR WMENG
FROM VBEP INTO TABLE ITAB2B
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
WMENG <> 0.
get commit dates from schedule line table
REFRESH ITAB2C.
SELECT EDATU VBELN POSNR ROMS1
FROM VBEP INTO TABLE ITAB2C
WHERE VBELN = ITAB-VBELN AND POSNR = ITAB-POSNR AND
ROMS1 <> 0.
SORT ITAB2B BY EDATU.
SORT ITAB2C BY EDATU.
get PO number(s) for SO item and write to internal table
REFRESH ITAB4.
SELECT VBELV POSNV VBELN POSNN VBTYP_N RFMNG PLMIN
FROM VBFA INTO TABLE ITAB4
WHERE VBELV = ITAB-VBELN AND POSNV = ITAB-POSNR AND
VBTYP_N = 'V' AND RFMNG <> 0.
calculate total delivery qty for PO item
DELV_QTY = 0.
LOOP AT ITAB4.
IF ITAB4-PLMIN = '-'.
ITAB4-RFMNG = ITAB4-RFMNG * -1.
ENDIF.
DELV_QTY = DELV_QTY + ITAB4-RFMNG.
ENDLOOP.
loop thru PO's for SO item
LOOP AT ITAB4.
select delivery lines for PO item
SELECT EINDT EBELN EBELP MENGE FROM EKET
INTO (EKET-EINDT, EKET-EBELN, EKET-EBELP, EKET-MENGE)
WHERE EBELN = ITAB4-VBELN AND EBELP = ITAB4-POSNN.
PERFORM GET_REQUEST_DATE TABLES ITAB2B
USING EKET-MENGE REQ_DATE.
PERFORM GET_COMMIT_DATE TABLES ITAB2C
USING EKET-MENGE COM_DATE.
ITAB1-ZDATE1 = REQ_DATE.
ITAB1-ZDATE2 = EKET-EINDT.
ITAB1-ZDATE3 = COM_DATE.
ITAB1-ZQTY1 = ITAB-KWMENG.
ITAB1-ZQTY2 = EKET-MENGE.
ITAB1-ZDESC = '3rd party item'.
calculate net value for backlog qty
ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
APPEND ITAB1.
ENDSELECT.
ENDLOOP.
if total delivery qty < order qty, put remaining in non-confirmed
IF DELV_QTY < ITAB-KWMENG.
THIRD_QTY = ITAB-KWMENG - DELV_QTY.
PERFORM GET_REQUEST_DATE TABLES ITAB2B
USING THIRD_QTY REQ_DATE.
PERFORM GET_COMMIT_DATE TABLES ITAB2C
USING THIRD_QTY COM_DATE.
ITAB1-ZDATE1 = REQ_DATE.
ITAB1-ZDATE2 = '99991231'.
ITAB1-ZDATE2 = COM_DATE.
ITAB1-ZQTY1 = ITAB-KWMENG.
ITAB1-ZQTY2 = THIRD_QTY.
ITAB1-ZDESC = '3rd party item, no PO'.
calculate net value for backlog qty
ZPRICE = ( ITAB-NETPR / ITAB-KPEIN ) * ITAB-KURSK.
ITAB1-ZEXTD = ITAB1-ZQTY2 * ZPRICE.
APPEND ITAB1.
CONTINUE.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.
FORM 900_CREATE_LIST
process open business detail and create list
FORM 900_CREATE_LIST.
if internal table is empty, write message and exit
DESCRIBE TABLE ITAB1 LINES ZCNTR.
IF ZCNTR = 0.
WRITE: / 'No Data Found for Selection'.
STOP.
ENDIF.
SORT ITAB1 BY KUNNR KUNWE VBELN POSNR.
loop thru sorted table and create list
LOOP AT ITAB1.
IF ITAB1-ZDATE1 = SPACE.
ITAB1-ZDATE1 = '99991231'.
ENDIF.
IF ITAB1-ZDATE3 = SPACE.
ITAB1-ZDATE3 = '99991231'.
ENDIF.
get SO item detail
CLEAR ITAB.
READ TABLE ITAB WITH KEY VBELN = ITAB1-VBELN
POSNR = ITAB1-POSNR BINARY SEARCH.
print sold-to and ship-to customer header info
AT NEW KUNWE.
CLEAR KNA1.
SELECT SINGLE NAME1 FROM KNA1 INTO KNA1-NAME1
WHERE KUNNR = ITAB1-KUNNR.
CONCATENATE ITAB-ORT01 ITAB-REGIO INTO ADRS1 SEPARATED BY ', '.
CONCATENATE ADRS1 ITAB-LAND1 INTO ADRS2 SEPARATED BY ' '.
CONCATENATE ITAB-NAME1 ADRS2 INTO ADRS3 SEPARATED BY ' '.
FORMAT COLOR 1 INTENSIFIED OFF.
WRITE: /1 'Sold-to:', 10 ITAB1-KUNNR, 18 KNA1-NAME1,
56 'Ship-to:', 65 ITAB1-KUNWE, 73 ADRS3.
FORMAT RESET.
SKIP.
ENDAT.
print out backlog detail
CLEAR T171T.
SELECT SINGLE BZTXT FROM T171T INTO T171T-BZTXT
WHERE SPRAS = SY-LANGU AND BZIRK = ITAB-BZIRK.
WRITE: /1 ITAB1-VBELN,
13(6) ITAB1-POSNR NO-ZERO,
21 ITAB-MATNR,
41 ITAB-ARKTX,
83 ITAB1-ZDATE1,
95 ITAB1-ZDATE3,
107 ITAB1-ZDATE2,
119 ITAB-ERNAM,
129 ITAB-BZIRK, 135 T171T-BZTXT,
157(20) ITAB-BSTKD,
179(12) ITAB1-ZQTY1 DECIMALS 0,
193(12) ITAB1-ZQTY2 DECIMALS 0,
207(16) ITAB1-ZEXTD DECIMALS 2,
225 ITAB1-ZDESC.
AT END OF VBELN.
SKIP.
ENDAT.
print footing at ship-to customer
AT END OF KUNWE.
SUM.
ULINE: /193(12), 207(16).
FORMAT COLOR 1 INTENSIFIED OFF.
WRITE: /1 'Total: Sold-to:', 18 ITAB1-KUNNR,
25 '/', 27 'Ship-to:', 36 ITAB1-KUNWE,
193(12) ITAB1-ZQTY2 DECIMALS 0,
207(16) ITAB1-ZEXTD DECIMALS 2.
FORMAT RESET.
SKIP 2.
ENDAT.
AT LAST.
SUM.
ULINE: /193(12), 207(16).
FORMAT COLOR 1 INTENSIFIED ON.
WRITE: /1 'Report Total:',
193(12) ITAB1-ZQTY2 DECIMALS 0,
207(16) ITAB1-ZEXTD DECIMALS 2.
FORMAT RESET.
ENDAT.
ENDLOOP.
ENDFORM.
FORM GET_REQUEST_DATE
subroutine to get request date for SO item
FORM GET_REQUEST_DATE TABLES FTAB STRUCTURE ITAB2B
USING CONF_QTY REQ_DATE.
DATA: REMAIN LIKE VBEP-WMENG, "qty remaining
CNTR TYPE I, "loop counter
TAB_INDEX TYPE I. "table index
initialize
REMAIN = 0.
REQ_DATE = SPACE.
get first request date from table
TAB_INDEX = 1.
READ TABLE FTAB INDEX TAB_INDEX.
if request date not found, set request date to blank
IF SY-SUBRC <> 0.
REQ_DATE = SPACE.
EXIT.
ELSE.
REQ_DATE = FTAB-EDATU.
ENDIF.
calculate quantity remaining for request date
REMAIN = FTAB-WMENG - CONF_QTY.
if qty remaining > 0, update request date with qty remaining
IF REMAIN > 0.
FTAB-WMENG = REMAIN.
MODIFY FTAB INDEX TAB_INDEX.
if qty remaining = 0, delete request date (so next request
date will be used for next confirmed qty)
ELSEIF REMAIN = 0.
DELETE FTAB INDEX TAB_INDEX.
if qty remaining < 0, find next request date and update
ELSE.
CNTR = 0.
WHILE REMAIN < 0 OR CNTR < 10.
DELETE FTAB INDEX TAB_INDEX.
TAB_INDEX = TAB_INDEX + 1.
READ TABLE FTAB INDEX TAB_INDEX.
REMAIN = REMAIN + FTAB-WMENG.
CNTR = CNTR + 1.
ENDWHILE.
IF REMAIN = 0.
DELETE FTAB INDEX TAB_INDEX.
ELSEIF REMAIN > 0.
FTAB-WMENG = REMAIN.
MODIFY FTAB INDEX TAB_INDEX.
ENDIF.
ENDIF.
ENDFORM.
FORM GET_COMMIT_DATE
subroutine to get commit date for SO item
FORM GET_COMMIT_DATE TABLES CTAB STRUCTURE ITAB2C
USING CONF_QTY COM_DATE.
DATA: REMAIN LIKE VBEP-WMENG, "qty remaining
CNTR TYPE I, "loop counter
TAB_INDEX TYPE I. "table index
initialize
REMAIN = 0.
COM_DATE = SPACE.
get first commit date from table
TAB_INDEX = 1.
READ TABLE CTAB INDEX TAB_INDEX.
if request date not found, set request date to blank
IF SY-SUBRC <> 0.
COM_DATE = SPACE.
EXIT.
ELSE.
COM_DATE = CTAB-EDATU.
ENDIF.
calculate quantity remaining for request date
REMAIN = CTAB-ROMS1 - CONF_QTY.
if qty remaining > 0, update request date with qty remaining
IF REMAIN > 0.
CTAB-ROMS1 = REMAIN.
MODIFY CTAB INDEX TAB_INDEX.
if qty remaining = 0, delete request date (so next request
date will be used for next confirmed qty)
ELSEIF REMAIN = 0.
DELETE CTAB INDEX TAB_INDEX.
if qty remaining < 0, find next request date and update
ELSE.
CNTR = 0.
WHILE REMAIN < 0 OR CNTR < 10.
DELETE CTAB INDEX TAB_INDEX.
TAB_INDEX = TAB_INDEX + 1.
READ TABLE CTAB INDEX TAB_INDEX.
REMAIN = REMAIN + CTAB-ROMS1.
CNTR = CNTR + 1.
ENDWHILE.
IF REMAIN = 0.
DELETE CTAB INDEX TAB_INDEX.
ELSEIF REMAIN > 0.
CTAB-ROMS1 = REMAIN.
MODIFY CTAB INDEX TAB_INDEX.
ENDIF.
ENDIF.
ENDFORM.
END-OF-REPORT. -
How to Created custom report for Ship not Billed (SD/FI)?
Hi all,
I am anticipating to write some abap reports..Here is one of them..
Anyone can help me with writing a Report , how to do 'Custom Report for shipped not Billed(SD/FI)' ..But since I am new to Abap , if you wish to reply, please use a little more detail and simple explanation, step by step so I can understand what is the idea, how it can be acheived...what kind of report should be used , techniques, tables etc...:)
Appreciate your help!
Regards,
BobyHi Boby,
You need to create custom transaction to achive these results.
you will have selection-screen ,it would be :
Date : Here date would be mandatory - Ranges Option
Customer - Optional field - Ranges
Order # Sales Order (Optional) Ranges
Invoice # - Invoice # (Optional) Ranges
You will get the data based on ur selection-screen criteria ...
First you will have customer order details from diffrent table
VBAK,
VBAP,
LIKP
LIPS
VBRK,
VBRP
KNA1,
VBFA Tables ( See the my sample program )
Output would be :
Customer # Custome Name Order # Delivery # Invoice # Netpr, Netquantity ,
Check the condition whether invoice table has VBRK-RFBSK = ''.
See the my sample program : This is sales report by monthly..
REPORT ZFDSALES_REPORT no standard page heading
message-id zwave.
Data Declaration Part
TYPE-POOLS
type-pools : slis.
Tables
tables : VBAK,
VBAP.
Internal table for VBAK Table
data : begin of i_vbak occurs 0,
vbeln like vbak-vbeln,
bstnk like vbak-bstnk,
vdatu like vbak-vdatu,
end of i_vbak.
Internal table for VBAP and MATNR
data : begin of i_vbap occurs 0,
vbeln like vbap-vbeln,
matnr like vbap-matnr,
kdmat like vbap-kdmat,
kwmeng like vbap-kwmeng,
netpr like vbap-netpr,
maktx like makt-maktx,
end of i_vbap.
Internal tables
data : begin of i_sales occurs 0,
vdatu like vbak-vdatu,
bstnk like vbak-bstnk,
matnr like vbap-matnr,
maktx like makt-maktx,
kdmat like vbap-kdmat,
kwmeng like vbap-kwmeng,
netpr like vbap-netpr,
end of i_sales.
Variable for ALV
data : v_repid like sy-repid,
gt_fieldcat type slis_t_fieldcat_alv.
Selection-screen
selection-screen : begin of block blk with frame title text-001.
select-options : s_vbeln for vbak-vbeln,
s_erdat for vbak-erdat,
s_ernam for vbak-ernam,
s_vdatu for vbak-vdatu obligatory,
s_BSTNK for vbak-BSTNK,
s_KUNNR for vbak-kunnr,
s_matnr for vbap-matnr,
s_KDMAT for vbap-KDMAT.
selection-screen : end of block blk.
Initilization
initialization.
v_repid = sy-repid.
S T A R T - O F - S E L E C T I O N ****************
start-of-selection.
Get the data from VBAK and VBAP Tables
perform get_vbak_vbap.
E N D - O F - S E L E C T I O N *****************
end-of-selection.
Display the data
perform dispolay_data.
*& Form get_vbak_vbap
Get the data from VBAK and VBAP Table
FORM get_vbak_vbap.
Get the data from VBAK Table
select vbeln bstnk vdatu from vbak into table i_vbak
where vbeln in s_vbeln
and bstnk in s_bstnk
and vdatu in s_vdatu
and kunnr in s_kunnr
and erdat in s_erdat
and ernam in s_ernam.
if sy-subrc ne 0.
message e000(zwave) with 'No data found for given selection'.
endif.
Get the data from VBAP Table
select avbeln amatnr akdmat akwmeng a~netpr
b~maktx into table i_vbap
from vbap as a inner join makt as b on bmatnr = amatnr
for all entries in i_vbak
where a~vbeln in s_vbeln
and a~kdmat in s_kdmat
and a~abgru = space
and a~matnr in s_matnr
and a~matnr ne '000000000000009999'
and a~matnr ne '000000000000004444'
and a~matnr ne '000000000000008888'
and a~matnr ne '000000000000001111'
and a~werks = '1000'
and b~spras = 'E'
and a~vbeln = i_vbak-vbeln.
if sy-subrc ne 0.
message e000(zwave) with 'No data found for given selection'.
endif.
sort i_vbak by vbeln.
sort i_vbap by vbeln matnr.
loop at i_vbap.
read table i_vbak with key vbeln = i_vbap-vbeln
binary search.
if sy-subrc eq 0.
i_sales-bstnk = i_vbak-bstnk.
i_sales-vdatu = i_vbak-vdatu.
i_sales-matnr = i_vbap-matnr.
i_sales-kdmat = i_vbap-kdmat.
i_sales-maktx = i_vbap-maktx.
i_sales-netpr = i_vbap-netpr.
i_sales-kwmeng = i_vbap-kwmeng.
append i_sales.
else.
continue.
endif.
clear : i_sales,
i_vbap,
i_vbak.
endloop.
sort i_sales by vdatu bstnk matnr.
refresh : i_vbap,
i_vbak.
ENDFORM. " get_vbak_vbap
*& Form dispolay_data
Display the data
FORM dispolay_data.
Fill the Fiedlcat
PERFORM fieldcat_init using gt_fieldcat[].
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = v_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT = gt_fieldcat[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IT_ALV_GRAPHICS =
IT_ADD_FIELDCAT =
IT_HYPERLINK =
I_HTML_HEIGHT_TOP =
I_HTML_HEIGHT_END =
IT_EXCEPT_QINFO =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = i_sales
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
ENDFORM. " dispolay_data
*& Form fieldcat_init
text
-->P_GT_FIELDCAT[] text
FORM fieldcat_init USING e01_lt_fieldcat type slis_t_fieldcat_alv.
DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
Delivery Date
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'VDATU'.
LS_FIELDCAT-OUTPUTLEN = 12.
LS_FIELDCAT-TABNAME = 'I_SALES'.
ls_fieldcat-seltext_L = 'Delivery Date'.
APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.
Purchase Order #Material Description
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'BSTNK'.
LS_FIELDCAT-OUTPUTLEN = 25.
LS_FIELDCAT-TABNAME = 'I_SALES'.
ls_fieldcat-seltext_L = 'Purchase Order #'.
APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.
Material
CLEAR LS_FIELDCAT.
LS_FIELDCAT-REF_FIELDNAME = 'MATNR'.
LS_FIELDCAT-REF_TABNAME = 'MARA'.
LS_FIELDCAT-FIELDNAME = 'MATNR'.
LS_FIELDCAT-TABNAME = 'I_SALES'.
ls_fieldcat-seltext_L = 'Material #'.
ls_fieldcat-seltext_M = 'Material #'.
ls_fieldcat-seltext_S = 'Material #'.
APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.
Material Description
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'MAKTX'.
LS_FIELDCAT-OUTPUTLEN = 40.
LS_FIELDCAT-TABNAME = 'I_SALES'.
ls_fieldcat-seltext_L = 'Material Description'.
APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.
Customer Material #
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'KDMAT'.
LS_FIELDCAT-OUTPUTLEN = 35.
LS_FIELDCAT-TABNAME = 'I_SALES'.
ls_fieldcat-seltext_L = 'Customer material no.'.
APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.
Quantity
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'KWMENG'.
LS_FIELDCAT-OUTPUTLEN = 15.
LS_FIELDCAT-TABNAME = 'I_SALES'.
ls_fieldcat-seltext_L = 'Quantity'.
APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.
Net Price
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'NETPR'.
LS_FIELDCAT-OUTPUTLEN = 15.
LS_FIELDCAT-TABNAME = 'I_SALES'.
ls_fieldcat-seltext_L = 'Net Price'.
APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.
ENDFORM. " fieldcat_init
Reward Points if it is helpful
Thanks
Seshu -
Hi!
I am unable to get the result for my one of the item as checkbox. Other two are working properly .Please check and let me know wheres the problem please.
***INCLUDE ZSD_CONTRACT_LIST_T01_RENTAL1 .
TABLES: vbak, vbap, wbrk, zsdsched,vbkd, fplt, fpla, tvlvt.
TYPE-POOLS: slis.
data: BEGIN OF gt_report occurs 0,
vbeln LIKE vbak-vbeln, "Sales Document
posnr LIKE vbap-posnr, "Item
ernam LIKE vbak-ernam, "Created by
erdat LIKE vbak-erdat, "Created on
audat LIKE vbak-audat, "Document Date
vbtyp LIKE vbak-vbtyp, "SD document category
auart LIKE vbak-auart, "Sales Document type
vkorg LIKE vbak-vkorg, "Sales Org
vtweg LIKE vbak-vtweg, "Distribution Channel
spart LIKE vbak-spart, "Division
vkbur LIKE vbak-vkbur, "Sales Office
guebg LIKE vbak-guebg, "Valid from date
gueen LIKE vbak-gueen, "Valid to date kunnrt LIKE kna1-name1, "Sold-to Name
kunwet LIKE kna1-name1, "Ship-to Name
kunnrt LIKE kna1-name1, "Sold-to Name
kunret LIKE kna1-name1, "Bill-to Name
kunnr LIKE vbak-kunnr, "Sold-to party
kunnrt LIKE kna1-name1, "Sold-to Name
kvgr4 LIKE vbak-kvgr4, "Territory
matnr LIKE vbap-matnr, "Material
arktx LIKE vbap-arktx, "Material Short Text
charg LIKE vbap-charg, "Batch
matkl LIKE vbap-matkl, "Material Group
pstyv LIKE vbap-pstyv, "Item Category
zmeng LIKE vbap-zmeng, "Target Quantity
zieme LIKE vbap-zieme, "Target Unit
kdmat LIKE vbap-kdmat, "Customer Material Number
werks LIKE vbap-werks, "Plant
lgort LIKE vbap-lgort, "Storage Location
vstel LIKE vbap-vstel, "Shipping Point
route LIKE vbap-route, "Route
netpr LIKE vbap-netpr, "Net Price
kpein LIKE vbap-kpein, "Condition Price Unit
kmein LIKE vbap-kmein, "Condition Unit
shkzg LIKE vbap-shkzg, "Returns Item
oidrc LIKE vbap-oidrc, "DRC Code
kunwe LIKE vbap-oid_ship, "Ship-to
aufnr LIKE vbap-aufnr, "Order Number
vkaus LIKE vbap-vkaus, "Usage
kunwet LIKE kna1-name1, "Ship-to Name
zzwprofid LIKE vbap-zzwprofid, "Waste Profile ID
kunre LIKE wbrk-kunre, "Bill-to
kunret LIKE kna1-name1, "Bill-to Name
addl_schd LIKE icon-id, "Push Button For addl line
datab LIKE zsdsched-datab, "Valid-From Date
datbi LIKE zsdsched-datbi, "Valid To Date
zschdfreq LIKE zsdsched-zschdfreq, "Contract schedule frequency
frequency LIKE zsdsched-frequency, "Frequency
monday LIKE zsdsched-monday, "Mondays
tuesday LIKE zsdsched-tuesday, "Tuesdays
wednesday LIKE zsdsched-wednesday, "Wednesdays
thursday LIKE zsdsched-thursday, "Thursdays
friday LIKE zsdsched-friday, "Fridays
saturday LIKE zsdsched-saturday, "Saturdays
sunday LIKE zsdsched-sunday, "Sundays
dzieme LIKE zsdsched-dzieme, "Target quantity UoM
comments LIKE zsdsched-comments, "Comments
END OF gt_report.
data: Begin of gt_report1 occurs 0,
fksaf LIKE fplt-fksaf,
afdat LIKE fplt-afdat,
fakwr LIKE fplt-fakwr,
fkdat LIKE fplt-fkdat,
nfdat LIKE fplt-nfdat,
fpart LIKE fpla-fpart,
bedat LIKE fpla-bedat,
endat LIKE fpla-endat,
horiz LIKE fpla-horiz,
bezei LIKE tvlvt-bezei,
vbeln LIKE vbak-vbeln,
erdat LIKE vbak-erdat,
ernam LIKE vbak-ernam,
guebg LIKE vbak-guebg,
gueen LIKE vbak-gueen,
auart LIKE vbak-auart,
kunnr LIKE vbak-kunnr,
kvgr4 LIKE vbak-kvgr4,
vkbur LIKE vbak-vkbur,
vkorg LIKE vbak-vkorg,
vtweg LIKE vbak-vtweg,
vbtyp LIKE vbak-vbtyp,
name1 LIKE kna1-name1,
pstyv LIKE vbap-pstyv,
matnr LIKE vbap-matnr,
werks LIKE vbap-werks,
oid_ship LIKE vbap-oid_ship,
kpein LIKE vbap-kpein,
kmein LIKE vbap-kmein,
netpr LIKE vbap-netpr,
kdmat LIKE vbap-kdmat,
posnr LIKE vbap-posnr,
matkl LIKE vbap-matkl,
aufnr LIKE vbap-aufnr,
vkaus LIKE vbap-vkaus,
route LIKE vbap-route,
kunre LIKE wbrk-kunre, "Bill-to
kunwe LIKE vbap-oid_ship, "Ship-to
kunwet LIKE kna1-name1, "Ship-to Name
kunnrt LIKE kna1-name1, "Sold-to Name
kunret LIKE kna1-name1, "Bill-to Name
End of gt_report1.
data: gs_report LIKE LINE OF gt_report,
gs_report1 LIKE LINE OF gt_report1,
gt_sched TYPE TABLE OF zsdsched,
gt_sched_tmp TYPE TABLE OF zsdsched,
gs_sched TYPE zsdsched,
gt_sel LIKE gt_report OCCURS 0,
gt_sel1 LIKE gt_report1 OCCURS 0,
gt_vbpa TYPE TABLE OF vbpa,
gs_vbpa TYPE vbpa,
gv_auart TYPE auart,
gv_counter TYPE i.
**-- ALV variables
DATA: ls_fieldcat TYPE slis_fieldcat_alv, "Field Catalog list
gt_fieldcat TYPE slis_t_fieldcat_alv, "Field Catalog
ls_sort TYPE slis_sortinfo_alv, "Sorting list
gt_sort TYPE slis_t_sortinfo_alv, "Sort
gs_layout TYPE slis_layout_alv, "List Layout
gs_variant TYPE disvariant, "Display Variant
gv_repid LIKE sy-repid,
gv_save(1) TYPE c,
ls_fieldcat1 TYPE slis_fieldcat_alv, "Field Catalog list
gt_fieldcat1 TYPE slis_t_fieldcat_alv, "Field Catalog
ls_sort1 TYPE slis_sortinfo_alv, "Sorting list
gt_sort1 TYPE slis_t_sortinfo_alv, "Sort
gs_layout1 TYPE slis_layout_alv, "List Layout
gs_variant1 TYPE disvariant, "Display Variant
gv_repid1 LIKE sy-repid,
gv_exit(1) TYPE c.
CONSTANTS: gc_a TYPE c VALUE 'A',
gc_g TYPE c VALUE 'G',
gc_re(2) TYPE c VALUE 'RE'.
Screen-control Variables
CONTROLS:
tctrl_sched TYPE TABLEVIEW USING SCREEN 1010. " Schedule lines.
*& Report ZSD_CONTRACT_LIST
*& Created on: January 21, 2007
*& Description: List of Contracts - ALV
REPORT zsd_contract_list_rental1.
INCLUDE zsd_contract_list_t01_rental1.
Selection Screen
SELECTION-SCREEN BEGIN OF BLOCK m1 WITH FRAME TITLE text-t01.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t02.
SELECT-OPTIONS: s_vkorg FOR vbak-vkorg MEMORY ID vko,
s_vtweg FOR vbak-vtweg MEMORY ID vtw,
s_spart FOR vbak-spart MEMORY ID spa,
s_vkbur FOR vbak-vkbur MEMORY ID vkb.
SELECTION-SCREEN SKIP 1.
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln,
s_erdat FOR vbak-erdat,
s_ernam FOR vbak-ernam,
s_guebg FOR vbak-guebg,
s_gueen FOR vbak-gueen,
s_auart FOR gv_auart MEMORY ID vta
MATCHCODE OBJECT h_vakz,
s_fkarv FOR fplt-fkarv.
SELECTION-SCREEN SKIP 1.
SELECT-OPTIONS:
s_kunnr FOR vbak-kunnr,
s_kunwe FOR vbap-oid_ship,
s_kunre FOR wbrk-kunre.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-t03.
SELECT-OPTIONS: s_werks FOR vbap-werks MEMORY ID wrk,
s_lgort FOR vbap-lgort MEMORY ID lag,
s_vstel FOR vbap-vstel MEMORY ID vst,
s_route for vbap-route,
s_matnr FOR vbap-matnr.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-t04.
PARAMETERS: p_varia TYPE disvariant-variant MEMORY ID wrk,
p_all AS CHECKBOX DEFAULT 'X',
p_group AS CHECKBOX DEFAULT 'X',
p_rental AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK b3.
SELECTION-SCREEN END OF BLOCK m1.
Start of Selection
START-OF-SELECTION.
PERFORM get_data.
Display ALV
END-OF-SELECTION.
IF gt_report[] IS INITIAL.
MESSAGE s419(brain).
ELSE.
PERFORM create_alv.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST *
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_varia.
PERFORM f01_f4_variant CHANGING p_varia.
*& Form get_data
text
FORM get_data .
select the appropriate rental data.
IF p_rental IS NOT INITIAL AND ( ( p_all IS INITIAL ) AND ( p_group IS INITIAL ) ).
SELECT avbeln aerdat aernam aaudat avbtyp aauart a~vkorg
avtweg aspart avkbur aguebg agueen akunnr a~kvgr4
bpstyv bmatnr bwerks boid_ship bkpein bkmein
bnetpr bkdmat bposnr bmatkl baufnr bvkaus b~route
dbezei efkarv eafdat efakwr efkdat enfdat e~fksaf
ffpart fbedat fendat fhoriz flodat ftndat b~oid_ship AS kunwe
INTO CORRESPONDING FIELDS OF TABLE gt_sel1
FROM vbak AS a
INNER JOIN vbap AS b ON avbeln = bvbeln
INNER JOIN vbpa as c ON avbeln = cvbeln
INNER JOIN vbkd AS g ON avbeln = gvbeln
INNER JOIN fplt AS e ON gfplnr = efplnr
INNER JOIN fpla AS f ON efplnr = ffplnr
INNER JOIN tvlvt AS d ON bvkaus = dabrvw
WHERE a~vbeln IN s_vbeln
AND a~erdat IN s_erdat
AND a~vbtyp = gc_g
AND a~ernam IN s_ernam
AND a~vkorg IN s_vkorg
AND a~vtweg IN s_vtweg
AND a~spart IN s_spart
AND a~vkbur IN s_vkbur
AND a~guebg IN s_guebg
AND a~gueen IN s_gueen
AND a~auart IN s_auart
AND a~kunnr IN s_kunnr
AND b~oid_ship IN s_kunwe
AND b~werks IN s_werks
AND b~lgort IN s_lgort
AND b~vstel IN s_vstel
and b~route in s_route
AND b~matnr IN s_matnr
AND e~fkarv IN s_fkarv
AND e~fksaf = 'A'
OR e~fksaf = 'B'.
sort gt_sel1.
*ENDIF.
IF NOT gt_sel1[] IS INITIAL.
Get Bill-to Party's for Item Lines
SELECT vbeln posnr parvw kunnr INTO CORRESPONDING FIELDS OF TABLE gt_vbpa
FROM vbpa
FOR ALL ENTRIES IN gt_sel1
WHERE vbeln = gt_sel1-vbeln
AND parvw = gc_re.
Loop through captured data for additional information
LOOP AT gt_sel1 INTO gs_report1.
Find the bill-to party
READ TABLE gt_vbpa INTO gs_vbpa WITH KEY vbeln = gs_report1-vbeln
posnr = gs_report1-posnr
parvw = gc_re.
IF sy-subrc <> 0.
READ TABLE gt_vbpa INTO gs_vbpa WITH KEY vbeln = gs_report1-vbeln
parvw = gc_re.
CHECK sy-subrc = 0 AND gs_vbpa-kunnr IN s_kunre.
ELSE.
CHECK gs_vbpa-kunnr IN s_kunre.
ENDIF.
gs_report1-kunre = gs_vbpa-kunnr.
Get the Customer's Name
gs_report1-kunnrt = zcl_kna1=>get_name1( itp_kunnr = gs_report1-kunnr ).
gs_report1-kunwet = zcl_kna1=>get_name1( itp_kunnr = gs_report1-kunwe ).
gs_report1-kunret = zcl_kna1=>get_name1( itp_kunnr = gs_report1-kunre ).
Get the scheduling lines for the item line.
CLEAR gv_counter.
APPEND gs_report1 TO gt_report1.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM gt_report1.
*ENDIF.
ELSE.
IF ( ( p_all IS NOT INITIAL ) OR ( p_group IS NOT INITIAL ) ) AND p_rental IS INITIAL.
Select the appropriate contract data.
SELECT a~vbeln a~erdat a~ernam a~audat a~vbtyp a~auart a~vkorg
a~vtweg a~spart a~vkbur a~guebg a~gueen a~kunnr a~kvgr4
b~posnr b~matnr b~charg b~matkl b~arktx b~pstyv b~zmeng
b~zieme b~kdmat b~werks b~lgort b~vstel b~netpr b~kpein
b~kmein b~shkzg b~oid_extbol b~oid_miscdl b~oidrc b~oid_ship AS kunwe
b~zzwprofid c~datbi c~datab b~route
baufnr bvkaus d~bezei
INTO CORRESPONDING FIELDS OF TABLE gt_sel
FROM vbak AS a
INNER JOIN vbap AS b ON a~vbeln = b~vbeln
INNER JOIN tvlvt AS d ON bvkaus = dabrvw
LEFT OUTER JOIN zsdsched AS c ON b~vbeln = c~vbeln AND
b~posnr = c~posnr
WHERE a~vbeln IN s_vbeln
AND a~erdat IN s_erdat
AND a~vbtyp = gc_g
AND a~ernam IN s_ernam
AND a~vkorg IN s_vkorg
AND a~vtweg IN s_vtweg
AND a~spart IN s_spart
AND a~vkbur IN s_vkbur
AND a~guebg IN s_guebg
AND a~gueen IN s_gueen
AND a~auart IN s_auart
AND a~kunnr IN s_kunnr
AND b~oid_ship IN s_kunwe
AND b~werks IN s_werks
AND b~lgort IN s_lgort
AND b~vstel IN s_vstel
and b~route in s_route
AND b~matnr IN s_matnr.
SORT gt_sel.
ENDIF.
IF NOT gt_sel[] IS INITIAL.
Get Bill-to Party's for Item Lines
SELECT vbeln posnr parvw kunnr INTO CORRESPONDING FIELDS OF TABLE gt_vbpa
FROM vbpa
FOR ALL ENTRIES IN gt_sel
WHERE vbeln = gt_sel-vbeln
AND parvw = gc_re.
endif.
Select the remaining records from the ZSDSCHED Table.
IF p_group IS NOT INITIAL.
SELECT * FROM zsdsched
INTO TABLE gt_sched
FOR ALL ENTRIES IN gt_sel
WHERE vbeln = gt_sel-vbeln
AND posnr = gt_sel-posnr.
SORT gt_sched.
ENDIF.
Loop through captured data for additional information
LOOP AT gt_sel INTO gs_report.
Find the bill-to party
READ TABLE gt_vbpa INTO gs_vbpa WITH KEY vbeln = gs_report-vbeln
posnr = gs_report-posnr
parvw = gc_re.
IF sy-subrc <> 0.
READ TABLE gt_vbpa INTO gs_vbpa WITH KEY vbeln = gs_report-vbeln
parvw = gc_re.
CHECK sy-subrc = 0 AND gs_vbpa-kunnr IN s_kunre.
ELSE.
CHECK gs_vbpa-kunnr IN s_kunre.
ENDIF.
gs_report-kunre = gs_vbpa-kunnr.
Get the Customer's Name
gs_report-kunnrt = zcl_kna1=>get_name1( itp_kunnr = gs_report-kunnr ).
gs_report-kunwet = zcl_kna1=>get_name1( itp_kunnr = gs_report-kunwe ).
gs_report-kunret = zcl_kna1=>get_name1( itp_kunnr = gs_report-kunre ).
Get the scheduling lines for the item line.
CLEAR gv_counter.
IF NOT p_group IS INITIAL.
If we are grouping the lines add the icon button.
LOOP AT gt_sched INTO gs_sched WHERE vbeln = gs_report-vbeln
AND posnr = gs_report-posnr.
IF gv_counter > 0.
gs_report-addl_schd = '@1E@'.
CONTINUE.
ENDIF.
MOVE-CORRESPONDING gs_sched TO gs_report.
ADD 1 TO gv_counter.
ENDLOOP.
ELSE.
Otherwise get the rest of the schedule information
READ TABLE gt_sched INTO gs_sched
WITH KEY vbeln = gs_report-vbeln
posnr = gs_report-posnr
datbi = gs_report-datbi
datab = gs_report-datab.
IF sy-subrc = 0.
MOVE-CORRESPONDING gs_sched TO gs_report.
ENDIF.
ENDIF.
APPEND gs_report TO gt_report.
ENDLOOP.
Remove any duplicates from the reporting table
DELETE ADJACENT DUPLICATES FROM gt_report.
If Show all records is initial, delete non-scheduled lines (ex. Sub-items)
IF p_all IS INITIAL.
DELETE gt_report WHERE datbi = 0
AND datab = 0.
ENDIF.
endif.
endif.
ENDFORM. " get_data
*& Form create_alv
text
FORM create_alv .
if ( ( p_all is not initial ) or ( p_group is not initial ) ) and p_rental is initial.
PERFORM initialize_fieldcat USING gt_fieldcat[].
PERFORM populate_layout CHANGING gs_layout
gs_variant.
PERFORM populate_sort USING gt_sort[].
PERFORM display_alv_report.
else.
if p_rental is not initial and ( ( p_all is initial ) and ( p_group is initial ) ).
PERFORM initialize_fieldcat1 USING gt_fieldcat1[].
PERFORM populate_layout1 CHANGING gs_layout1
gs_variant1.
PERFORM populate_sort1 USING gt_sort1[].
PERFORM display_alv_report1.
*endif.
*endif.
ENDFORM. " create_alv
*& Form initialize_fieldcat
Get and enhance the field catalog data
-->L_FIELDCAT[] text
FORM initialize_fieldcat USING l_fieldcat TYPE slis_t_fieldcat_alv.
IF p_rental IS NOT INITIAL .
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = 'ZSD_CONTRACT_LIST_RENTAL1'
i_internal_tabname = 'GT_REPORT1'
i_inclname = 'ZSD_CONTRACT_LIST_T01_RENTAL1'
CHANGING
ct_fieldcat = l_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
READ TABLE l_fieldcat INTO ls_fieldcat WITH KEY fieldname = 'VBELN'.
ls_fieldcat-seltext_m = ls_fieldcat-seltext_l = 'Contract'.
ls_fieldcat-hotspot = 'X'.
MODIFY l_fieldcat FROM ls_fieldcat INDEX sy-tabix.
READ TABLE l_fieldcat INTO ls_fieldcat WITH KEY fieldname = 'KUNNRT'.
ls_fieldcat-seltext_s =
ls_fieldcat-seltext_m = ls_fieldcat-seltext_l = 'Sold-to Name'.
MODIFY l_fieldcat FROM ls_fieldcat INDEX sy-tabix.
READ TABLE l_fieldcat INTO ls_fieldcat WITH KEY fieldname = 'KUNWET'.
ls_fieldcat-seltext_s =
ls_fieldcat-seltext_m = ls_fieldcat-seltext_l = 'Ship-to Name'.
MODIFY l_fieldcat FROM ls_fieldcat INDEX sy-tabix.
READ TABLE l_fieldcat INTO ls_fieldcat WITH KEY fieldname = 'KUNRET'.
ls_fieldcat-seltext_s =
ls_fieldcat-seltext_m = ls_fieldcat-seltext_l = 'Bill-to Name'.
MODIFY l_fieldcat FROM ls_fieldcat INDEX sy-tabix.
READ TABLE l_fieldcat INTO ls_fieldcat WITH KEY fieldname = 'ADDL_SCHD'.
IF NOT p_group IS INITIAL.
ls_fieldcat-seltext_s = 'Schd'.
ls_fieldcat-seltext_m = ls_fieldcat-seltext_l = 'Additional Scheduling Lines'.
ls_fieldcat-icon = 'X'.
CLEAR: ls_fieldcat-key,
ls_fieldcat-ref_fieldname,
ls_fieldcat-ref_tabname,
ls_fieldcat-reptext_ddic,
ls_fieldcat-ddic_outputlen.
ls_fieldcat-hotspot = 'X'.
MODIFY l_fieldcat FROM ls_fieldcat INDEX sy-tabix.
ELSE.
DELETE l_fieldcat INDEX sy-tabix.
ENDIF.
READ TABLE l_fieldcat INTO ls_fieldcat WITH KEY fieldname = 'DATAB'.
ls_fieldcat-seltext_s = 'Schd From'.
ls_fieldcat-seltext_m = ls_fieldcat-seltext_l = 'Sched. From Date'.
CLEAR: ls_fieldcat-key.
MODIFY l_fieldcat FROM ls_fieldcat INDEX sy-tabix.
READ TABLE l_fieldcat INTO ls_fieldcat1 WITH KEY fieldname = 'DATBI'.
ls_fieldcat-seltext_s = 'Schd To'.
ls_fieldcat-seltext_m = ls_fieldcat-seltext_l = 'Sched. To Date'.
CLEAR: ls_fieldcat-key.
MODIFY l_fieldcat FROM ls_fieldcat INDEX sy-tabix.
ELSE.
IF p_rental IS INITIAL.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = 'ZSD_CONTRACT_LIST_RENTAL1'
i_internal_tabname = 'GT_REPORT'
i_inclname = 'ZSD_CONTRACT_LIST_T01_RENTAL1'
CHANGING
ct_fieldcat = l_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
READ TABLE l_fieldcat INTO ls_fieldcat WITH KEY fieldname = 'VBELN'.
ls_fieldcat-seltext_m = ls_fieldcat-seltext_l = 'Contract'.
ls_fieldcat-hotspot = 'X'.
MODIFY l_fieldcat FROM ls_fieldcat INDEX sy-tabix.
READ TABLE l_fieldcat INTO ls_fieldcat WITH KEY fieldname = 'KUNNRT'.
ls_fieldcat-seltext_s =
ls_fieldcat-seltext_m = ls_fieldcat-seltext_l = 'Sold-to Name'.
MODIFY l_fieldcat FROM ls_fieldcat INDEX sy-tabix.
READ TABLE l_fieldcat INTO ls_fieldcat WITH KEY fieldname = 'KUNWET'.
ls_fieldcat-seltext_s =
ls_fieldcat-seltext_m = ls_fieldcat-seltext_l = 'Ship-to Name'.
MODIFY l_fieldcat FROM ls_fieldcat INDEX sy-tabix.
READ TABLE l_fieldcat INTO ls_fieldcat WITH KEY fieldname = 'KUNRET'.
ls_fieldcat-seltext_s =
ls_fieldcat-seltext_m = ls_fieldcat-seltext_l = 'Bill-to Name'.
MODIFY l_fieldcat FROM ls_fieldcat INDEX sy-tabix.
READ TABLE l_fieldcat INTO ls_fieldcat WITH KEY fieldname = 'ADDL_SCHD'.
IF NOT p_group IS INITIAL.
ls_fieldcat-seltext_s = 'Schd'.
ls_fieldcat-seltext_m = ls_fieldcat-seltext_l = 'Additional Scheduling Lines'.
ls_fieldcat-icon = 'X'.
CLEAR: ls_fieldcat-key,
ls_fieldcat-ref_fieldname,
ls_fieldcat-ref_tabname,
ls_fieldcat-reptext_ddic,
ls_fieldcat-ddic_outputlen.
ls_fieldcat-hotspot = 'X'.
MODIFY l_fieldcat FROM ls_fieldcat INDEX sy-tabix.
ELSE.
DELETE l_fieldcat INDEX sy-tabix.
ENDIF.
READ TABLE l_fieldcat INTO ls_fieldcat WITH KEY fieldname = 'DATAB'.
ls_fieldcat-seltext_s = 'Schd From'.
ls_fieldcat-seltext_m = ls_fieldcat-seltext_l = 'Sched. From Date'.
CLEAR: ls_fieldcat-key.
MODIFY l_fieldcat FROM ls_fieldcat INDEX sy-tabix.
READ TABLE l_fieldcat INTO ls_fieldcat1 WITH KEY fieldname = 'DATBI'.
ls_fieldcat-seltext_s = 'Schd To'.
ls_fieldcat-seltext_m = ls_fieldcat-seltext_l = 'Sched. To Date'.
CLEAR: ls_fieldcat-key.
MODIFY l_fieldcat FROM ls_fieldcat INDEX sy-tabix.
ENDIF.
ENDIF.
ENDFORM. " initialize_fieldcat
*& Form populate_layout
text
<--GS_LAYOUT
<--GS_VARIANT
FORM populate_layout CHANGING gs_layout TYPE slis_layout_alv
gs_variant TYPE disvariant.
gs_layout-colwidth_optimize = 'X'.
gs_layout-allow_switch_to_list = 'X'.
gs_layout-zebra = 'X'.
gs_variant-report = sy-repid.
ENDFORM. " populate_layout
*& Form populate_sort
text
-->l_SORT[] text
FORM populate_sort USING l_sort TYPE slis_t_sortinfo_alv.
ENDFORM. " populate_sort
*& Form display_alv_report
FORM display_alv_report .
gv_repid = sy-repid.
IF p_rental IS INITIAL.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
i_callback_program = gv_repid
I_CALLBACK_PF_STATUS_SET = ' '
i_callback_user_command = 'USER_COMMAND'
i_structure_name = 'GT_REPORT'
is_layout = gs_layout
it_fieldcat = gt_fieldcat
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
it_sort = gt_sort
IT_FILTER =
IS_SEL_HIDE =
i_default = 'X'
i_save = gc_a
is_variant = gs_variant
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = gt_report
EXCEPTIONS
program_error = 1
OTHERS = 2
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ELSE.
IF p_rental IS NOT INITIAL.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
i_callback_program = gv_repid
I_CALLBACK_PF_STATUS_SET = ' '
i_callback_user_command = 'USER_COMMAND'
i_structure_name = 'GT_REPORT1'
is_layout = gs_layout
it_fieldcat = gt_fieldcat
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
it_sort = gt_sort
IT_FILTER =
IS_SEL_HIDE =
i_default = 'X'
i_save = gc_a
is_variant = gs_variant
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = GT_REPORT1
EXCEPTIONS
program_error = 1
OTHERS = 2
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
endif.
endif.
ENDFORM. " display_alv_report
*& Form initialize_fieldcat1
Get and enhance the field catalog data for rental fields
-->L_FIELDCAT[] text
*FORM initialize_fieldcat1 USING l_fieldcat1 TYPE slis_t_fieldcat_alv.
**if ***
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = 'ZSD_CONTRACT_LIST_rental1'
i_internal_tabname = 'GT_SEL1'
i_inclname = 'ZSD_CONTRACT_LIST_T01_rental1'
CHANGING
ct_fieldcat = l_fieldcat1
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
**else.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = 'ZSD_CONTRACT_LIST_rental1'
i_internal_tabname = 'GT_SEL1'
i_inclname = 'ZSD_CONTRACT_LIST_T01_rental1'
CHANGING
ct_fieldcat = l_fieldcat1
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
***endfi.
*ENDFORM. " initialize_fieldcat
*& Form populate_layout
text
<--GS_LAYOUT
<--GS_VARIANT
*FORM populate_layout1 CHANGING gs_layout1 TYPE slis_layout_alv
gs_variant1 TYPE disvariant.
gs_layout1-colwidth_optimize = 'X'.
gs_layout1-allow_switch_to_list = 'X'.
gs_layout1-zebra = 'X'.
gs_variant1-report = sy-repid.
*ENDFORM. " populate_layout
***& Form populate_sort
text
-->l_SORT[] text
*FORM populate_sort1 USING l_sort TYPE slis_t_sortinfo_alv.
*ENDFORM. " populate_sort
***& Form display_alv_report
*FORM display_alv_report1 .
gv_repid = sy-repid.
if p_rental is not initial and ( ( p_all is initial ) and ( p_group is initial ) ).
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
i_callback_program = gv_repid
I_CALLBACK_PF_STATUS_SET = ' '
i_callback_user_command = 'USER_COMMAND'
i_structure_name = 'gt_sel1'
is_layout = gs_layout1
it_fieldcat = gt_fieldcat1
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
it_sort = gt_sort1
IT_FILTER =
IS_SEL_HIDE =
i_default = 'X'
i_save = gc_a
is_variant = gs_variant1
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = gt_sel1
EXCEPTIONS
program_error = 1
OTHERS = 2
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
*endif.
*ENDFORM. " display_alv_report
*& Form f01_f4_variant
Get the Layout variant for the user.
FORM f01_f4_variant CHANGING c_variant TYPE disvariant-variant.
DATA: ls_variant TYPE disvariant,
l_exit TYPE char1.
ls_variant-report = sy-repid.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = ls_variant
i_save = 'A'
it_default_fieldcat =
IMPORTING
e_exit = l_exit
es_variant = ls_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 2.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
IF l_exit EQ space.
c_variant = ls_variant-variant.
ENDIF.
ENDIF.
ENDFORM. " f01_f4_variant
FORM USER_COMMAND *
--> R_UCOMM *
--> RS_SELFIELD *
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
Check function code
CASE r_ucomm.
WHEN '&IC1'.
READ TABLE gt_report INTO gs_report INDEX rs_selfield-tabindex.
CHECK sy-subrc = 0.
CASE rs_selfield-fieldname.
WHEN 'VBELN'.
Set parameter ID for transaction screen field
CHECK NOT gs_report-vbeln IS INITIAL.
SET PARAMETER ID 'KTN' FIELD gs_report-vbeln.
CALL TRANSACTION 'VA43' AND SKIP FIRST SCREEN.
WHEN 'ADDL_SCHD'.
CHECK NOT gs_report-addl_schd IS INITIAL.
REFRESH gt_sched_tmp.
LOOP AT gt_sched INTO gs_sched
WHERE vbeln = gs_report-vbeln
AND posnr = gs_report-posnr.
APPEND gs_sched TO gt_sched_tmp.
ENDLOOP.
CHECK sy-subrc = 0.
CALL SCREEN '1010' STARTING AT 5 5.
ENDCASE.
ENDCASE.
ENDFORM. "user_command
*& Module STATUS_1010 OUTPUT
text
MODULE status_1010 OUTPUT.
SET PF-STATUS 'MAIN_1010'.
SET TITLEBAR '1010' WITH gs_report-vbeln gs_report-posnr.
ENDMODULE. " STATUS_1010 OUTPUT
*& Module USER_COMMAND_1010 INPUT
text
MODULE user_command_1010 INPUT.
CASE sy-ucomm.
WHEN 'BACK' OR 'CANC'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_1010 INPUTHi !
This report shows the schedule line items , group schedule line items and rental contact (billing plan) lines when particular checkbox is checked. The checkboxs p_all(non-schedule line) , p_group(group schedule line items) are working in my above alv report and showing result but unfortunately when p_rental is checked it dosent give me result , it says no data selected. This when checked has to show result based on a different set of selections as I have done, but its not shwoing me the result .
Kindly help please.
Thanks -
Problem is When i click the record in alv report it has to go to Va02 tran
Hi Everyone,
When i click on sales order number it has to go to transaction code Va02 for that i wrote code as like this....
*& Report ZOPEN_SALES_ORDER
Report ZOPEN_SALES_ORDER1.
TYPE-POOLs : slis.
tables:kna1,mara.
DATA : FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA : IMPORT_VARIANT LIKE DISVARIANT.
DATA : XREPID LIKE SY-REPID.
DATA : LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA : P_SORT TYPE STANDARD TABLE OF SLIS_SORTINFO_ALV.
DATA : I_EVENTS TYPE SLIS_T_EVENT,
I_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
T_REPID LIKE SY-REPID.
TYPES: BEGIN OF ty_report.
INCLUDE STRUCTURE BAPIORDERS.
TYPES: KDMAT TYPE VBAP-KDMAT,
aedat TYPE sy-datum,
MENGE TYPE BAPIORDERS-DLV_QTY,
END OF ty_report.
DATA: it_report TYPE STANDARD TABLE OF ty_report with HEADER LINE,
wa_report TYPE ty_report.
data: cust type BAPI1007-CUSTOMER,
p_sales type BAPIORDERS-SALES_ORG,
vbeln type vbap-vbeln.
selection-screen begin of block bk1 with frame title text-001.
PARAMETERS :p_cust type BAPI1007-CUSTOMER .
*PARAMETERS p_sales type BAPIORDERS-SALES_ORG .
PARAMETERS: p_matnr type mara-matnr.
parameters: p_sd_doc type BAPIORDERS-SD_DOC.
PARAMETERS: p_date type BAPIORDERS-REQ_DATE.
PARAMETERS: p_plant type vbap-werks.
*PARAMETERS P_KDMAT TYPE VBAP-KDMAT.
*PARAMETERS P_WERKS TYPE VBAP-WERKS.
*PARAMETERS P_PO TYPE EKKO-ebeln.
selection-screen end of block bk1.
at SELECTION-SCREEN .
if P_cust is INITIAL and p_matnr is INITIAL and P_sd_doc is INITIAL
and P_date is INITIAL and p_plant is INITIAL. .
message e000(0) with 'Please Fill At Least One Field '.
endif.
If p_cust is not INITIAL .
select single VKORG from vbak into p_sales where kunnr eq p_cust.
message 'Execute The Repport' Type 'E'.
elseif p_matnr is not INITIAL .
clear p_cust.
clear p_sales.
select single VBELN from vbap into vbeln where matnr eq p_matnr.
if vbeln is not INITIAL.
SELECT single kunnr vkorg from vbak into (cust,p_sales) where vbeln eq vbeln.
p_cust = cust.
p_sales = p_sales.
endif.
elseif P_sd_doc is not INITIAL.
clear p_cust.
clear p_sales.
SELECT single kunnr vkorg from vbak into (cust,p_sales) where vbeln eq P_SD_DOC.
p_cust = cust.
p_sales = p_sales.
elseif p_date is not initial.
clear vbeln.
clear p_cust.
clear p_sales.
select single VBELN from vbep into vbeln where EDATU eq p_date and POSNR = '10' and etenr = '0001'.
if vbeln is not INITIAL.
SELECT single kunnr vkorg from vbak into (cust,p_sales) where vbeln eq vbeln.
p_cust = cust.
p_sales = p_sales.
endif.
elseif p_plant is not INITIAL.
clear vbeln.
clear p_cust.
clear p_sales.
select single VBELN from vbap into vbeln where werks eq p_plant.
if vbeln is not INITIAL.
SELECT single kunnr vkorg from vbak into (cust,p_sales) where vbeln eq vbeln.
p_cust = cust.
p_sales = p_sales.
endif.
endif.
INITIALIZATION.
T_REPID = SY-REPID.
CONSTANTS:C_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.
START-OF-SELECTION.
CALL FUNCTION 'BAPI_SALESORDER_GETLIST'
EXPORTING
CUSTOMER_NUMBER = p_cust
SALES_ORGANIZATION = p_sales
MATERIAL = p_matnr
DOCUMENT_DATE = p_date
DOCUMENT_DATE_TO =
PURCHASE_ORDER =
TRANSACTION_GROUP = 0
PURCHASE_ORDER_NUMBER =
MATERIAL_EVG =
IMPORTING
RETURN =
TABLES
SALES_ORDERS = it_report
LOOP AT it_report INTO wa_report.
SELECT SINGLE KDMAT INTO wa_report-KDMAT FROM VBAP
WHERE VBELN = wa_report-SD_DOC AND POSNR = wa_report-ITM_NUMBER.
SELECT SINGLE aedat FROM ekko Into wa_report-aedat
where ebeln = wa_report-PURCH_NO.
wa_report-menge = wa_report-REQ_QTY - wa_report-dlv_qty.
select single edatu from vbep into wa_
MODIFY it_report FROM wa_report INDEX SY-TABIX.
ENDLOOP.
PERFORM DISPLAY.
FORM DISPLAY .
PERFORM FIELDCAT_INIT USING FIELDCAT[].
PERFORM LAYOUT_BUILD USING LAYOUT.
PERFORM EVENTTAB_BUILD USING I_EVENTS.
PERFORM COMMENT_BUILD USING I_LIST_TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = T_REPID
I_CALLBACK_TOP_OF_PAGE = 'TOP-OF-PAGE'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IT_FIELDCAT = FIELDCAT
IS_LAYOUT = LAYOUT
IT_EVENTS = I_EVENTS[]
I_DEFAULT = 'X'
I_SAVE = 'A'
TABLES
T_OUTTAB = it_report
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " DISPLAY
FORM FIELDCAT_INIT USING RT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
DATA : CNTR TYPE I.
CLEAR LS_FIELDCAT.
CNTR = CNTR + 1.
LS_FIELDCAT-COL_POS = CNTR.
LS_FIELDCAT-FIELDNAME = 'SD_DOC'.
LS_FIELDCAT-SELTEXT_L = 'Sales Order'.
LS_FIELDCAT-HOTSPOT = 'X'. " HAND APPEARS.
LS_FIELDCAT-KEY = 'X'.
LS_FIELDCAT-OUTPUTLEN = 15.
APPEND LS_FIELDCAT TO FIELDCAT.
CLEAR LS_FIELDCAT.
CNTR = CNTR + 1.
LS_FIELDCAT-COL_POS = CNTR.
LS_FIELDCAT-FIELDNAME = 'ITM_NUMBER'.
LS_FIELDCAT-SELTEXT_L = 'Item Number'.
LS_FIELDCAT-OUTPUTLEN = 15.
APPEND LS_FIELDCAT TO FIELDCAT.
CLEAR LS_FIELDCAT.
CNTR = CNTR + 1.
LS_FIELDCAT-COL_POS = CNTR.
LS_FIELDCAT-FIELDNAME = 'SOLD_TO'.
LS_FIELDCAT-SELTEXT_L = 'Customer Number'.
LS_FIELDCAT-OUTPUTLEN = 15.
APPEND LS_FIELDCAT TO FIELDCAT.
CLEAR LS_FIELDCAT.
CNTR = CNTR + 1.
LS_FIELDCAT-COL_POS = CNTR.
LS_FIELDCAT-FIELDNAME = 'NAME'.
LS_FIELDCAT-SELTEXT_L = 'Customer NAME'.
LS_FIELDCAT-OUTPUTLEN = 15.
APPEND LS_FIELDCAT TO FIELDCAT.
CLEAR LS_FIELDCAT.
CNTR = CNTR + 1.
LS_FIELDCAT-COL_POS = CNTR.
LS_FIELDCAT-FIELDNAME = 'MATERIAL'.
LS_FIELDCAT-SELTEXT_L = 'Material'.
LS_FIELDCAT-OUTPUTLEN = 15.
APPEND LS_FIELDCAT TO FIELDCAT.
CLEAR LS_FIELDCAT.
CNTR = CNTR + 1.
LS_FIELDCAT-COL_POS = CNTR.
LS_FIELDCAT-FIELDNAME = 'SHORT_TEXT'.
LS_FIELDCAT-SELTEXT_L = 'Material Short Text'.
LS_FIELDCAT-OUTPUTLEN = 15.
APPEND LS_FIELDCAT TO FIELDCAT.
CLEAR LS_FIELDCAT.
CNTR = CNTR + 1.
LS_FIELDCAT-COL_POS = CNTR.
LS_FIELDCAT-FIELDNAME = 'KDMAT'.
LS_FIELDCAT-SELTEXT_L = 'Customer Material'.
LS_FIELDCAT-OUTPUTLEN = 15.
APPEND LS_FIELDCAT TO FIELDCAT.
CLEAR LS_FIELDCAT.
CNTR = CNTR + 1.
LS_FIELDCAT-COL_POS = CNTR.
LS_FIELDCAT-FIELDNAME = 'PLANT'.
LS_FIELDCAT-SELTEXT_L = 'Plant'.
LS_FIELDCAT-OUTPUTLEN = 15.
APPEND LS_FIELDCAT TO FIELDCAT.
CLEAR LS_FIELDCAT.
CNTR = CNTR + 1.
LS_FIELDCAT-COL_POS = CNTR.
LS_FIELDCAT-FIELDNAME = 'PURCH_NO'.
LS_FIELDCAT-SELTEXT_L = 'Purchase Order Nuber'.
LS_FIELDCAT-OUTPUTLEN = 15.
APPEND LS_FIELDCAT TO FIELDCAT.
CLEAR LS_FIELDCAT.
CNTR = CNTR + 1.
LS_FIELDCAT-COL_POS = CNTR.
LS_FIELDCAT-FIELDNAME = 'AEDAT'.
LS_FIELDCAT-SELTEXT_L = 'PO Date'.
LS_FIELDCAT-OUTPUTLEN = 15.
APPEND LS_FIELDCAT TO FIELDCAT.
CLEAR LS_FIELDCAT.
CNTR = CNTR + 1.
LS_FIELDCAT-COL_POS = CNTR.
LS_FIELDCAT-FIELDNAME = 'REQ_QTY'.
LS_FIELDCAT-SELTEXT_L = 'Sales Order Quantity'.
LS_FIELDCAT-OUTPUTLEN = 15.
APPEND LS_FIELDCAT TO FIELDCAT.
CLEAR LS_FIELDCAT.
CNTR = CNTR + 1.
LS_FIELDCAT-COL_POS = CNTR.
LS_FIELDCAT-FIELDNAME = 'REQ_DATE'.
LS_FIELDCAT-SELTEXT_L = 'Required Date'.
LS_FIELDCAT-OUTPUTLEN = 15.
APPEND LS_FIELDCAT TO FIELDCAT.
CLEAR LS_FIELDCAT.
CNTR = CNTR + 1.
LS_FIELDCAT-COL_POS = CNTR.
LS_FIELDCAT-FIELDNAME = 'DLV_QTY'.
LS_FIELDCAT-SELTEXT_L = 'Delivered Quantity'.
LS_FIELDCAT-OUTPUTLEN = 15.
APPEND LS_FIELDCAT TO FIELDCAT.
CLEAR LS_FIELDCAT.
CNTR = CNTR + 1.
LS_FIELDCAT-COL_POS = CNTR.
LS_FIELDCAT-FIELDNAME = 'MENGE'.
LS_FIELDCAT-SELTEXT_L = 'Open Quantity'.
LS_FIELDCAT-OUTPUTLEN = 15.
APPEND LS_FIELDCAT TO FIELDCAT.
CLEAR LS_FIELDCAT.
CNTR = CNTR + 1.
LS_FIELDCAT-COL_POS = CNTR.
LS_FIELDCAT-FIELDNAME = 'CREATION_DATE'.
LS_FIELDCAT-SELTEXT_L = 'Creation Date'.
LS_FIELDCAT-OUTPUTLEN = 15.
APPEND LS_FIELDCAT TO FIELDCAT.
CLEAR LS_FIELDCAT.
CNTR = CNTR + 1.
LS_FIELDCAT-COL_POS = CNTR.
LS_FIELDCAT-FIELDNAME = 'DOC_STATUS'.
LS_FIELDCAT-SELTEXT_L = 'Sales Document Status'.
LS_FIELDCAT-OUTPUTLEN = 15.
APPEND LS_FIELDCAT TO FIELDCAT.
CLEAR LS_FIELDCAT.
CNTR = CNTR + 1.
LS_FIELDCAT-COL_POS = CNTR.
LS_FIELDCAT-FIELDNAME = 'NET_PRICE'.
LS_FIELDCAT-SELTEXT_L = 'Net Price'.
LS_FIELDCAT-OUTPUTLEN = 15.
APPEND LS_FIELDCAT TO FIELDCAT.
CLEAR LS_FIELDCAT.
CNTR = CNTR + 1.
LS_FIELDCAT-COL_POS = CNTR.
LS_FIELDCAT-FIELDNAME = 'COND_P_UNT'.
LS_FIELDCAT-SELTEXT_L = 'Condition Pricing Unit'.
LS_FIELDCAT-OUTPUTLEN = 15.
APPEND LS_FIELDCAT TO FIELDCAT.
CLEAR LS_FIELDCAT.
CNTR = CNTR + 1.
LS_FIELDCAT-COL_POS = CNTR.
LS_FIELDCAT-FIELDNAME = 'COND_UNIT'.
LS_FIELDCAT-SELTEXT_L = 'Condition Unit'.
LS_FIELDCAT-OUTPUTLEN = 15.
APPEND LS_FIELDCAT TO FIELDCAT.
CLEAR LS_FIELDCAT.
CNTR = CNTR + 1.
LS_FIELDCAT-COL_POS = CNTR.
LS_FIELDCAT-FIELDNAME = 'NET_VALUE'.
LS_FIELDCAT-SELTEXT_L = 'Net Value in Document Currency'.
LS_FIELDCAT-OUTPUTLEN = 15.
APPEND LS_FIELDCAT TO FIELDCAT.
endform.
FORM LAYOUT_BUILD USING LAYOUT TYPE SLIS_LAYOUT_ALV.
LAYOUT-ZEBRA = 'X'.
LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
LAYOUT-INFO_FIELDNAME = 'LINE_COLOR'.
LAYOUT-BOX_TABNAME = 'ITAB'.
LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
ENDFORM. " layout_build
*& Form eventtab_build
Initialize events
-->L_EVENTS Table used to store the events
FORM EVENTTAB_BUILD USING L_EVENTS TYPE SLIS_T_EVENT.
DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = L_EVENTS.
READ TABLE L_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE INTO LS_EVENT.
IF SY-SUBRC = 0.
MOVE C_FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.
APPEND LS_EVENT TO L_EVENTS.
ENDIF.
ENDFORM. "eventtab_build
*& Form comment_build
-->L_LIST_TOP_OF_PAGE Table used to store the list header
FORM COMMENT_BUILD USING L_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
DATA: LS_LINE TYPE SLIS_LISTHEADER.
DATA: DATE1(200) TYPE C.
DATA: DATE2(4) TYPE C.
DATA: DATE3(12) TYPE C.
DATA: DATE4(12) TYPE C.
DATA: TIME1(200) TYPE C.
DATA: TIME2(4) TYPE C.
DATA: VALUE1(100).
DATA: VALUE2(50).
CONCATENATE SY-UZEIT+0(2) ':'
SY-UZEIT+2(2) ':'
SY-UZEIT+4(2) INTO TIME1.
DATE2 = SY-DATUM+6(2).
CONCATENATE DATE2 '/' INTO DATE1." separated by space.
DATE2 = SY-DATUM+4(2).
CONCATENATE DATE1 DATE2 '/' INTO DATE1.
DATE2 = SY-DATUM+0(4).
CONCATENATE DATE1 DATE2 INTO DATE1.
LS_LINE-TYP = 'H'.
LS_LINE-INFO = 'Open Sales Report'.
APPEND LS_LINE TO L_LIST_TOP_OF_PAGE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = 'User Name :'.
LS_LINE-INFO = SY-UNAME.
APPEND LS_LINE TO L_LIST_TOP_OF_PAGE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = 'Execution Date :'.
LS_LINE-INFO = DATE1.
APPEND LS_LINE TO L_LIST_TOP_OF_PAGE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = 'Execution Time :'.
LS_LINE-INFO = TIME1.
APPEND LS_LINE TO L_LIST_TOP_OF_PAGE.
ENDFORM. "comment_build
*& Form top_of_page
SAP Logo on top of page
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = I_LIST_TOP_OF_PAGE.
ENDFORM. "top_of_page
*FORM USER_COMMAND USING UCOMM LIKE SY-UCOMM
*RS_SELFIELD TYPE SLIS_SELFIELD.
FORM USER_COMMAND USING r_ucomm like sy-ucomm
ls_selfield TYPE slis_selfield.
READ TABLE it_report ."into it_report INDEX RS_SELFIELD-TABINDEX.
IF SY-SUBRC = 0.
CASE r_UCOMM.
WHEN 'SD_DOC'.
SET PARAMETER ID 'AUN' FIELD IT_REPORT-SD_DOC.
CALL TRANSACTION 'VA02' AND SKIP FIRST SCREEN.
clear IT_report-SD_DOC.
endcase.
ENDIF.
endform.
Pls correct me .....HI,
FORM USER_COMMAND USING r_ucomm like sy-ucomm
ls_selfield TYPE slis_selfield.
if ls_selfield-FIELDNAME = 'SD_DOC'. " Change
SET PARAMETER ID 'AUN' FIELD ls_selfield-Value. " Change
CALL TRANSACTION 'VA02' AND SKIP FIRST SCREEN.
clear IT_report-SD_DOC.
endif. " Change
endform.
Edited by: Avinash Kodarapu on Jan 29, 2009 12:24 AM -
Hi,
I have a ALV screen as that of VA05( list of sales order) but in this customised screen the problem is with open sales orders, there r many OPEN SALES ORDERS in VAO5 and in my customised screen there r very less How to find out where is the problem in this open sales order in my customised ALV's
and second one, i need to add extra one column to this report but i get that value from sql database and store in my variable say v_opt, so how to equate this in select stmts
select akunnr avbeln blgortbcharg ...............into orresponding fields of table itab from vbak as a inner join vbap as b on avbln = b~vbeln
so iam retrieving v_opt based on the charg from sql database table, so how to use in this select query , field catalogue and in layout
perform fill_field_of_fieldcatalog tables alv_fldcat using 'ITAB' 'WERKS' ' ' 'PLANT' ' ' ' ' ' ' ' ' ' '
alv_fldcat-tabname = p_tabname
alv_fldcat-fieldname = p_fieldname.
alv_fldcat-key = p_key.
alv_fldcat-emphasize = '1234'.
alv_fldcat-seltext_l = p_seltext_l
alv_fldcat-no_zero = p_no_zero.
alv_fldcat-just = p_just
alv_fldcat-datatype = p_datatype
alv_fldcat-ddictxt = 'L',
alv_fldcat-sp_group = p_group.
append alv_fldcat.
i know alv_fldcat-tabname and fieldname , so what are other fields usedHi
you should follow the following SAP note to add fields to VA05
this will ensure it is supported by SAP, instead of Customer material number
you can add any of your field
Note 350068 - Additionl fields in VA05:Customer material number as example
To add field VBAP-KDMAT to structure VBMTV, proceed as follows:
1. Table VBMTV: Replace the dummy field with KDMAT in Include VBMTVZ.
2. Table T180A: Add a new data record via Transaction SE16. TBNAM = 'VBMTV'
FDNAM = 'KDMAT'
ZUART = 'D'
3. In Releases < 4.0A: Adjust the display variant in Customizing (VOA3). In Releases >= 4.0A, read Note 0300633 for the settings of the display variant for the ALV lists.
4. Update of KDMAT:User exit PERFORM MOVE_USERFIELDS USING 'VBAP' in LV05TFMO, Include V05TZZMO add the following line behind WHEN 'VBAP': MOVE LVBAP-KDMAT TO LVBMTV-KDMAT. <-- Insert
5. Activate Include V05TZZMO.
6. If then, you log on to the system again and call up Transaction VA05 or VA35, the system issues the 'Customer material number' field.
Regards
Jitesh -
Adding New Fields to the Variant in VA05
When we click the t code VA05 we get Display list of open sales orders. When we click on Display variants we get three fields
1) Requests
2) Order Item
3) Order Schedule
My question is when you click on these of these variants u get fields. How do u add additional fields and whats the procedure for that.????
Regards
Atul KeshavHello Atul,
You can review the note 350068, which describes how to add any field (as an example VBAP-KDMAT in the note) in VA05. I hope it helps.
Best regards,
Lela -
Hi!
Can anyone please help me out as to whats the problem with the report thats causing in loss of records , presently when I combine the two internal tables and try extracting the records its not showing up all the records , its just taking the entries whicg match against the two tables and giving output. Please help me ot please.
Thanks
*& Include ZSD_RENTAL_REPTEST_T01
TABLES: vbak, vbap, wbrk, vbkd, fplt, fpla, zsdsched.
TYPE-POOLS: slis.
DATA: BEGIN OF itab OCCURS 0,
vbeln LIKE vbak-vbeln, "Sales Document
posnr LIKE vbap-posnr, "Item
ernam LIKE vbak-ernam, "Created by
erdat LIKE vbak-erdat, "Created on
audat LIKE vbak-audat, "Document Date
vbtyp LIKE vbak-vbtyp, "SD document category
auart LIKE vbak-auart, "Sales Document type
vkorg LIKE vbak-vkorg, "Sales Org
vtweg LIKE vbak-vtweg, "Distribution Channel
spart LIKE vbak-spart, "Division
vkbur LIKE vbak-vkbur, "Sales Office
guebg LIKE vbak-guebg, "Valid from date
gueen LIKE vbak-gueen, "Valid to date
kunnr LIKE vbak-kunnr, "Sold-to party
kunnrt LIKE kna1-name1, "Sold-to Name
kvgr4 LIKE vbak-kvgr4, "Territory
matnr LIKE vbap-matnr, "Material
arktx LIKE vbap-arktx, "Material Short Text
charg LIKE vbap-charg, "Batch
matkl LIKE vbap-matkl, "Material Group
pstyv LIKE vbap-pstyv, "Item Category
zmeng LIKE vbap-zmeng, "Target Quantity
zieme LIKE vbap-zieme, "Target Unit
kdmat LIKE vbap-kdmat, "Customer Material Number
werks LIKE vbap-werks, "Plant
lgort LIKE vbap-lgort, "Storage Location
vstel LIKE vbap-vstel, "Shipping Point
route LIKE vbap-route, "Route
netpr LIKE vbap-netpr, "Net Price
kpein LIKE vbap-kpein, "Condition Price Unit
kmein LIKE vbap-kmein, "Condition Unit
shkzg LIKE vbap-shkzg, "Returns Item
oidrc LIKE vbap-oidrc, "DRC Code
kunwe LIKE vbap-oid_ship, "Ship-to
kunwet LIKE kna1-name1, "Ship-to Name
zzwprofid LIKE vbap-zzwprofid, "Waste Profile ID
kunre LIKE wbrk-kunre, "Bill-to
kunret LIKE kna1-name1, "Bill-to Name
addl_schd LIKE icon-id, "Push Button For addl line
datab LIKE zsdsched-datab, "Valid-From Date
datbi LIKE zsdsched-datbi, "Valid To Date
zschdfreq LIKE zsdsched-zschdfreq, "Contract schedule frequency
frequency LIKE zsdsched-frequency, "Frequency
monday LIKE zsdsched-monday, "Mondays
tuesday LIKE zsdsched-tuesday, "Tuesdays
wednesday LIKE zsdsched-wednesday, "Wednesdays
thursday LIKE zsdsched-thursday, "Thursdays
friday LIKE zsdsched-friday, "Fridays
saturday LIKE zsdsched-saturday, "Saturdays
sunday LIKE zsdsched-sunday, "Sundays
dzieme LIKE zsdsched-dzieme, "Target quantity UoM
comments LIKE zsdsched-comments, "Comments
fplnr like vbkd-fplnr,
END OF itab.
data: begin of itab1 occurs 0,
fksaf LIKE fplt-fksaf, "Billing Status
afdat LIKE fplt-afdat, "Billing date
fakwr LIKE fplt-fakwr, "Value to be billed
fkdat LIKE fplt-fkdat, "Settelment Date
nfdat LIKE fplt-nfdat, "Settelment Date
fpart LIKE fpla-fpart, "Billing plan type
bedat LIKE fpla-bedat, "Start day for billing
endat LIKE fpla-endat, "End date for billing
horiz LIKE fpla-horiz, "Horizon in billing plan
fplnr LIKE fplt-fplnr,
vbeln LIKE vbak-vbeln,
end of itab1.
data : begin of gt_report occurs 0,
vbeln LIKE vbak-vbeln, "Sales Document
posnr LIKE vbap-posnr, "Item
ernam LIKE vbak-ernam, "Created by
erdat LIKE vbak-erdat, "Created on
audat LIKE vbak-audat, "Document Date
vbtyp LIKE vbak-vbtyp, "SD document category
auart LIKE vbak-auart, "Sales Document type
vkorg LIKE vbak-vkorg, "Sales Org
vtweg LIKE vbak-vtweg, "Distribution Channel
spart LIKE vbak-spart, "Division
vkbur LIKE vbak-vkbur, "Sales Office
guebg LIKE vbak-guebg, "Valid from date
gueen LIKE vbak-gueen, "Valid to date
kunnr LIKE vbak-kunnr, "Sold-to party
kunnrt LIKE kna1-name1, "Sold-to Name
kvgr4 LIKE vbak-kvgr4, "Territory
matnr LIKE vbap-matnr, "Material
arktx LIKE vbap-arktx, "Material Short Text
charg LIKE vbap-charg, "Batch
matkl LIKE vbap-matkl, "Material Group
pstyv LIKE vbap-pstyv, "Item Category
zmeng LIKE vbap-zmeng, "Target Quantity
zieme LIKE vbap-zieme, "Target Unit
kdmat LIKE vbap-kdmat, "Customer Material Number
werks LIKE vbap-werks, "Plant
lgort LIKE vbap-lgort, "Storage Location
vstel LIKE vbap-vstel, "Shipping Point
route LIKE vbap-route, "Route
netpr LIKE vbap-netpr, "Net Price
kpein LIKE vbap-kpein, "Condition Price Unit
kmein LIKE vbap-kmein, "Condition Unit
shkzg LIKE vbap-shkzg, "Returns Item
oidrc LIKE vbap-oidrc, "DRC Code
kunwe LIKE vbap-oid_ship, "Ship-to
aufnr LIKE vbap-aufnr, "Interal Order #
vkaus LIKE vbap-vkaus, "Usage
bezei LIKE tvlvt-bezei, "Usage Description
kunwet LIKE kna1-name1, "Ship-to Name
zzwprofid LIKE vbap-zzwprofid, "Waste Profile ID
kunre LIKE wbrk-kunre, "Bill-to
kunret LIKE kna1-name1, "Bill-to Name
addl_schd LIKE icon-id, "Push Button For addl line
datab LIKE zsdsched-datab, "Valid-From Date
datbi LIKE zsdsched-datbi, "Valid To Date
zschdfreq LIKE zsdsched-zschdfreq, "Contract schedule frequency
frequency LIKE zsdsched-frequency, "Frequency
monday LIKE zsdsched-monday, "Mondays
tuesday LIKE zsdsched-tuesday, "Tuesdays
wednesday LIKE zsdsched-wednesday, "Wednesdays
thursday LIKE zsdsched-thursday, "Thursdays
friday LIKE zsdsched-friday, "Fridays
saturday LIKE zsdsched-saturday, "Saturdays
sunday LIKE zsdsched-sunday, "Sundays
dzieme LIKE zsdsched-dzieme, "Target quantity UoM
comments LIKE zsdsched-comments, "Comments
fksaf LIKE fplt-fksaf, "Billing Status
afdat LIKE fplt-afdat, "Billing date
fakwr LIKE fplt-fakwr, "Value to be billed
fkdat LIKE fplt-fkdat, "Settelment Date
nfdat LIKE fplt-nfdat, "Settelment Date
fpart LIKE fpla-fpart, "Billing plan type
bedat LIKE fpla-bedat, "Start day for billing
endat LIKE fpla-endat, "End date for billing
horiz LIKE fpla-horiz, "Horizon in billing plan
END OF gt_report.
DATA: gs_report LIKE LINE OF gt_report,
gt_sched TYPE TABLE OF zsdsched,
gt_sched_tmp TYPE TABLE OF zsdsched,
gs_sched TYPE zsdsched,
gt_sel LIKE gt_report OCCURS 0,
gt_vbpa TYPE TABLE OF vbpa,
gs_vbpa TYPE vbpa,
gv_auart TYPE auart,
gv_counter TYPE i.
**-- ALV variables
DATA: ls_fieldcat TYPE slis_fieldcat_alv, "Field Catalog list
gt_fieldcat TYPE slis_t_fieldcat_alv, "Field Catalog
ls_sort TYPE slis_sortinfo_alv, "Sorting list
gt_sort TYPE slis_t_sortinfo_alv, "Sort
gs_layout TYPE slis_layout_alv, "List Layout
gs_variant TYPE disvariant, "Display Variant
gv_repid LIKE sy-repid,
gv_save(1) TYPE c,
gv_exit(1) TYPE c.
CONSTANTS: gc_a TYPE c VALUE 'A',
gc_g TYPE c VALUE 'G',
gc_re(2) TYPE c VALUE 'RE'.
* Screen-control Variables
CONTROLS:
tctrl_sched TYPE TABLEVIEW USING SCREEN 1010. " Schedule lines.
*& Report ZSD_RENTAL_REPTEST
REPORT ZSD_RENTAL_REPTEST.
*& Report ZSD_RENTAL_REPTEST
INCLUDE zsd_rental_reptest_t01.
* Selection Screen
SELECTION-SCREEN BEGIN OF BLOCK m1 WITH FRAME TITLE text-t01.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t02.
SELECT-OPTIONS: s_vkorg FOR vbak-vkorg MEMORY ID vko,
s_vtweg FOR vbak-vtweg MEMORY ID vtw,
s_spart FOR vbak-spart MEMORY ID spa,
s_vkbur FOR vbak-vkbur MEMORY ID vkb.
SELECTION-SCREEN SKIP 1.
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln,
s_erdat FOR vbak-erdat,
s_ernam FOR vbak-ernam,
s_guebg FOR vbak-guebg,
s_gueen FOR vbak-gueen,
s_fplnr for fplt-fplnr,
s_auart FOR gv_auart MEMORY ID vta
MATCHCODE OBJECT h_vakz.
SELECTION-SCREEN SKIP 1.
SELECT-OPTIONS:
s_kunnr FOR vbak-kunnr,
s_kunwe FOR vbap-oid_ship,
s_kunre FOR wbrk-kunre.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-t03.
SELECT-OPTIONS: s_werks FOR vbap-werks MEMORY ID wrk,
s_lgort FOR vbap-lgort MEMORY ID lag,
s_vstel FOR vbap-vstel MEMORY ID vst,
s_route for vbap-route,
s_matnr FOR vbap-matnr.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-t04.
PARAMETERS: p_varia TYPE disvariant-variant MEMORY ID wrk,
p_all AS CHECKBOX DEFAULT 'X',
p_group AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK b3.
SELECTION-SCREEN END OF BLOCK m1.
* Start of Selection
START-OF-SELECTION.
PERFORM get_data.
* Display ALV
END-OF-SELECTION.
IF gt_report[] IS INITIAL.
MESSAGE s419(brain).
ELSE.
PERFORM create_alv.
ENDIF.
* AT SELECTION-SCREEN ON VALUE-REQUEST *
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_varia.
PERFORM f01_f4_variant CHANGING p_varia.
*& Form get_data
* text
FORM get_data .
data: v_tabix type sy-tabix.
* Select the appropriate contract data.
SELECT a~vbeln a~erdat a~ernam a~audat a~vbtyp a~auart a~vkorg
a~vtweg a~spart a~vkbur a~guebg a~gueen a~kunnr a~kvgr4
b~posnr b~matnr b~charg b~matkl b~arktx b~pstyv b~zmeng
b~zieme b~kdmat b~werks b~lgort b~vstel b~netpr b~kpein
b~kmein b~shkzg b~oid_extbol b~oid_miscdl b~oidrc b~oid_ship AS kunwe
b~zzwprofid c~datbi c~datab b~route d~fplnr
INTO CORRESPONDING FIELDS OF TABLE itab
FROM vbak AS a
INNER JOIN vbap AS b ON a~vbeln = b~vbeln
inner join vbkd as d on b~vbeln = d~vbeln
LEFT OUTER JOIN zsdsched AS c ON b~vbeln = c~vbeln AND
b~posnr = c~posnr
WHERE a~vbeln IN s_vbeln
AND a~erdat IN s_erdat
AND a~vbtyp = gc_g
AND a~ernam IN s_ernam
AND a~vkorg IN s_vkorg
AND a~vtweg IN s_vtweg
AND a~spart IN s_spart
AND a~vkbur IN s_vkbur
AND a~guebg IN s_guebg
AND a~gueen IN s_gueen
AND a~auart IN s_auart
AND a~kunnr IN s_kunnr
AND b~oid_ship IN s_kunwe
AND b~werks IN s_werks
AND b~lgort IN s_lgort
AND b~vstel IN s_vstel
and b~route in s_route
AND b~matnr IN s_matnr.
SORT itab.
select e~fkdat e~nfdat e~fakwr e~fksaf e~afdat
f~fpart f~bedat f~endat f~horiz g~vbeln
INTO CORRESPONDING FIELDS OF TABLE itab1
FROM fplt AS e
INNER JOIN fpla AS f ON f~fplnr = e~fplnr
inner join vbkd as g on f~fplnr = g~fplnr
where g~vbeln in s_vbeln and
e~fplnr in s_fplnr.
sort itab1.
loop at itab.
read table itab1 with key vbeln = itab-vbeln.
if sy-subrc = 0.
move sy-tabix to v_tabix.
move-corresponding itab to gt_report.
move-corresponding itab1 to gt_report.
append gt_report.
delete itab1 index v_tabix.
endif.
endloop.
loop at itab1.
move-corresponding itab1 to gt_report.
append gt_report.
endloop.
IF NOT itab[] IS INITIAL.
* Get Bill-to Party's for Item Lines
SELECT vbeln posnr parvw kunnr INTO CORRESPONDING FIELDS OF TABLE gt_vbpa
FROM vbpa
FOR ALL ENTRIES IN itab
WHERE vbeln = itab-vbeln
AND parvw = gc_re.
* Select the remaining records from the ZSDSCHED Table.
SELECT * FROM zsdsched
INTO TABLE gt_sched
FOR ALL ENTRIES IN itab
WHERE vbeln = itab-vbeln
AND posnr = itab-posnr.
SORT gt_sched.
ENDIF.
* Loop through captured data for additional information
* LOOP AT itab INTO gs_report.
LOOP AT itab.
* Find the bill-to party
READ TABLE gt_vbpa INTO gs_vbpa WITH KEY vbeln = gs_report-vbeln
posnr = gs_report-posnr
parvw = gc_re.
IF sy-subrc 0.
READ TABLE gt_vbpa INTO gs_vbpa WITH KEY vbeln = gs_report-vbeln
parvw = gc_re.
CHECK sy-subrc = 0 AND gs_vbpa-kunnr IN s_kunre.
ELSE.
CHECK gs_vbpa-kunnr IN s_kunre.
ENDIF.
gs_report-kunre = gs_vbpa-kunnr.
* Get the Customer's Name
gs_report-kunnrt = zcl_kna1=>get_name1( itp_kunnr = gs_report-kunnr ).
gs_report-kunwet = zcl_kna1=>get_name1( itp_kunnr = gs_report-kunwe ).
gs_report-kunret = zcl_kna1=>get_name1( itp_kunnr = gs_report-kunre ).
* Get the scheduling lines for the item line.
CLEAR gv_counter.
IF NOT p_group IS INITIAL.
* If we are grouping the lines add the icon button.
LOOP AT gt_sched INTO gs_sched WHERE vbeln = gs_report-vbeln
AND posnr = gs_report-posnr.
IF gv_counter > 0.
gs_report-addl_schd = '@1E@'.
CONTINUE.
ENDIF.
MOVE-CORRESPONDING gs_sched TO gs_report.
ADD 1 TO gv_counter.
ENDLOOP.
ELSE.
* Otherwise get the rest of the schedule information
READ TABLE gt_sched INTO gs_sched
WITH KEY vbeln = gs_report-vbeln
posnr = gs_report-posnr
datbi = gs_report-datbi
datab = gs_report-datab.
IF sy-subrc = 0.
MOVE-CORRESPONDING gs_sched TO gs_report.
ENDIF.
ENDIF.
APPEND gs_report TO gt_report.
ENDLOOP.
* Remove any duplicates from the reporting table
DELETE ADJACENT DUPLICATES FROM gt_report.
* If Show all records is initial, delete non-scheduled lines (ex. Sub-items)
IF p_all IS INITIAL.
DELETE gt_report WHERE datbi = 0
AND datab = 0.
ENDIF.
ENDFORM. " get_data
*& Form create_alv
* text
FORM create_alv .
PERFORM initialize_fieldcat USING gt_fieldcat[].
PERFORM populate_layout CHANGING gs_layout
gs_variant.
PERFORM populate_sort USING gt_sort[].
PERFORM display_alv_report.
ENDFORM. " create_alv
*& Form initialize_fieldcat
* Get and enhance the field catalog data
* -->L_FIELDCAT[] text
FORM initialize_fieldcat USING l_fieldcat TYPE slis_t_fieldcat_alv.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = 'ZSD_RENTAL_REPTEST'(002)
i_internal_tabname = 'GT_REPORT'
i_inclname = 'ZSD_RENTAL_REPTEST_T01'(001)
CHANGING
ct_fieldcat = l_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
READ TABLE l_fieldcat INTO ls_fieldcat WITH KEY fieldname = 'VBELN'.
ls_fieldcat-seltext_m = ls_fieldcat-seltext_l = 'Contract'.
ls_fieldcat-hotspot = 'X'.
MODIFY l_fieldcat FROM ls_fieldcat INDEX sy-tabix.
READ TABLE l_fieldcat INTO ls_fieldcat WITH KEY fieldname = 'KUNNRT'.
ls_fieldcat-seltext_s =
ls_fieldcat-seltext_m = ls_fieldcat-seltext_l = 'Sold-to Name'.
MODIFY l_fieldcat FROM ls_fieldcat INDEX sy-tabix.
READ TABLE l_fieldcat INTO ls_fieldcat WITH KEY fieldname = 'KUNWET'.
ls_fieldcat-seltext_s =
ls_fieldcat-seltext_m = ls_fieldcat-seltext_l = 'Ship-to Name'.
MODIFY l_fieldcat FROM ls_fieldcat INDEX sy-tabix.
READ TABLE l_fieldcat INTO ls_fieldcat WITH KEY fieldname = 'KUNRET'.
ls_fieldcat-seltext_s =
ls_fieldcat-seltext_m = ls_fieldcat-seltext_l = 'Bill-to Name'.
MODIFY l_fieldcat FROM ls_fieldcat INDEX sy-tabix.
READ TABLE l_fieldcat INTO ls_fieldcat WITH KEY fieldname = 'ADDL_SCHD'.
IF NOT p_group IS INITIAL.
ls_fieldcat-seltext_s = 'Schd'.
ls_fieldcat-seltext_m = ls_fieldcat-seltext_l = 'Additional Scheduling Lines'.
ls_fieldcat-icon = 'X'.
CLEAR: ls_fieldcat-key,
ls_fieldcat-ref_fieldname,
ls_fieldcat-ref_tabname,
ls_fieldcat-reptext_ddic,
ls_fieldcat-ddic_outputlen.
ls_fieldcat-hotspot = 'X'.
MODIFY l_fieldcat FROM ls_fieldcat INDEX sy-tabix.
ELSE.
DELETE l_fieldcat INDEX sy-tabix.
ENDIF.
READ TABLE l_fieldcat INTO ls_fieldcat WITH KEY fieldname = 'DATAB'.
ls_fieldcat-seltext_s = 'Schd From'.
ls_fieldcat-seltext_m = ls_fieldcat-seltext_l = 'Sched. From Date'.
CLEAR: ls_fieldcat-key.
MODIFY l_fieldcat FROM ls_fieldcat INDEX sy-tabix.
READ TABLE l_fieldcat INTO ls_fieldcat WITH KEY fieldname = 'DATBI'.
ls_fieldcat-seltext_s = 'Schd To'.
ls_fieldcat-seltext_m = ls_fieldcat-seltext_l = 'Sched. To Date'.
CLEAR: ls_fieldcat-key.
MODIFY l_fieldcat FROM ls_fieldcat INDEX sy-tabix.
ENDFORM. " initialize_fieldcat
*& Form populate_layout
* text
* <--GS_LAYOUT
* <--GS_VARIANT
FORM populate_layout CHANGING gs_layout TYPE slis_layout_alv
gs_variant TYPE disvariant.
gs_layout-colwidth_optimize = 'X'.
gs_layout-allow_switch_to_list = 'X'.
gs_layout-zebra = 'X'.
gs_variant-report = sy-repid.
ENDFORM. " populate_layout
*& Form populate_sort
* text
* -->l_SORT[] text
FORM populate_sort USING l_sort TYPE slis_t_sortinfo_alv.
ENDFORM. " populate_sort
*& Form display_alv_report
FORM display_alv_report .
gv_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE = ' '
i_callback_program = gv_repid
* I_CALLBACK_PF_STATUS_SET = ' '
i_callback_user_command = 'USER_COMMAND'
i_structure_name = 'gt_report'
is_layout = gs_layout
it_fieldcat = gt_fieldcat
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
it_sort = gt_sort
* IT_FILTER =
* IS_SEL_HIDE =
i_default = 'X'
i_save = gc_a
is_variant = gs_variant
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = gt_report
EXCEPTIONS
program_error = 1
OTHERS = 2
IF sy-subrc 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " display_alv_report
*& Form f01_f4_variant
* Get the Layout variant for the user.
FORM f01_f4_variant CHANGING c_variant TYPE disvariant-variant.
DATA: ls_variant TYPE disvariant,
l_exit TYPE char1.
ls_variant-report = sy-repid.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = ls_variant
i_save = 'A'
* it_default_fieldcat =
IMPORTING
e_exit = l_exit
es_variant = ls_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 2.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
IF l_exit EQ space.
c_variant = ls_variant-variant.
ENDIF.
ENDIF.
ENDFORM. " f01_f4_variant
* FORM USER_COMMAND *
* --> R_UCOMM *
* --> RS_SELFIELD *
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
* Check function code
CASE r_ucomm.
WHEN '&IC1'.
READ TABLE gt_report INTO gs_report INDEX rs_selfield-tabindex.
CHECK sy-subrc = 0.
CASE rs_selfield-fieldname.
WHEN 'VBELN'.
* Set parameter ID for transaction screen field
CHECK NOT gs_report-vbeln IS INITIAL.
SET PARAMETER ID 'KTN' FIELD gs_report-vbeln.
CALL TRANSACTION 'VA43' AND SKIP FIRST SCREEN.
WHEN 'ADDL_SCHD'.
CHECK NOT gs_report-addl_schd IS INITIAL.
REFRESH gt_sched_tmp.
LOOP AT gt_sched INTO gs_sched
WHERE vbeln = gs_report-vbeln
AND posnr = gs_report-posnr.
APPEND gs_sched TO gt_sched_tmp.
ENDLOOP.
CHECK sy-subrc = 0.
CALL SCREEN '1010' STARTING AT 5 5.
ENDCASE.
ENDCASE.
ENDFORM. "user_command
*& Module STATUS_1010 OUTPUT
* text
MODULE status_1010 OUTPUT.
SET PF-STATUS 'MAIN_1010'.
SET TITLEBAR '1010' WITH gs_report-vbeln gs_report-posnr.
ENDMODULE. " STATUS_1010 OUTPUT
*& Module USER_COMMAND_1010 INPUT
* text
MODULE user_command_1010 INPUT.
CASE sy-ucomm.
WHEN 'BACK' OR 'CANC'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_1010 INPUTHi - in this section --
if sy-subrc = 0.
move sy-tabix to v_tabix.
move-corresponding itab to gt_report.
move-corresponding itab1 to gt_report.
append gt_report.
delete itab1 index v_tabix.
endif.
.. the append to gt_report should not be inside the if -
Output type for the managed codes cut letter is hard coded
Hello,
Very Good afternoon!
I have a requirement to create new Output Types for a Smart Form.
The already existing Output types are hard coded as shown Below :
CONSTANTS : c_kschl_order LIKE nast-kschl
VALUE 'ZUS0',
c_kschl_order1 LIKE nast-kschl
VALUE 'ZUS1',
Now they do not want to use ZUS1. Insted they wnat to use New Output Types.
u2022 Remove ZUS1 as we no longer use this one.
u2022 Add ZAU0
u2022 Add ZNZ0
u2022 Add ZJP0
u2022 Add ZCN0
u2022 Add ZKR0
How to add these Output types without Hardcoding as shown ABove.
Any Suggestions will be appreciated.....
For reference..I will paste the code of the Program here.
Here is the code :
PROGRAM DECLARATION
PROGRAM ID Z_RVADOR01_SALES_CUT_LETTER
TABLES: vbak, "Sales Document: Header Data
vbap, "Sales Document: Item Data
vbpa, "Sales Document: Partner
vbep, "Sales Document: Schedule Line Data
kna1, "General Data in Customer Master
MARA, "Material Master
KOMK, "Communicationarea for conditions
KOMP, "Communicationarea for conditions
KOMVD, "Communicationarea for conditions
VBCO3, "Communicationarea for view
VBDKA, "Headerview
VBDPA, "Itemview
VBDPAU, "Subitemnumbers
CONF_OUT, "Configuration data
SADR, "Addresses
TVAG, "Reason for rejection
VEDKA, "Servicecontract head data
VEDPA, "Servicecontract position data
VEDKN, "Servicecontract head notice data
VEDPN, "Servicecontract pos. notice data
RISERLS, "Serialnumbers
KOMSER, "Serialnumbers for print
TVBUR, "Sales office
TVKO, "Sales organisation
ADRS, "Communicationarea for Address
FPLTDR, "billing schedules
WTAD_ADDIS_IN_SO_PRINT, "additional
WTAD_BUYING_PRINT_EXTRA_TEXT, "texts belonging to additional
adrc,
adr6,
t247.
INCLUDE RVADTABL.
INCLUDE RVDIREKT.
INCLUDE VEDADATA.
data for access to central address maintenance
INCLUDE SDZAVDAT.
TYPE-POOLS: ADDI.
DATA PRICE_PRINT_MODE(1) TYPE C. "Print-mode
DATA: RETCODE LIKE SY-SUBRC. "Returncode
DATA: REPEAT(1) TYPE C.
DATA: XSCREEN(1) TYPE C. "Output on printer or screen
DATA: BEGIN OF STEU, "Controldata for output
VDKEX(1) TYPE C,
VDPEX(1) TYPE C,
KBKEX(1) TYPE C,
KBPEX(1) TYPE C,
END OF STEU.
DATA: BEGIN OF TVBDPA OCCURS 0. "Internal table for items
INCLUDE STRUCTURE VBDPA.
DATA: END OF TVBDPA.
DATA: BEGIN OF TKOMV OCCURS 50.
INCLUDE STRUCTURE KOMV.
DATA: END OF TKOMV.
DATA: BEGIN OF TKOMVD OCCURS 50.
INCLUDE STRUCTURE KOMVD.
DATA: END OF TKOMVD.
DATA: BEGIN OF TVBDPAU OCCURS 5.
INCLUDE STRUCTURE VBDPAU.
DATA: END OF TVBDPAU.
DATA: BEGIN OF TKOMCON OCCURS 50.
INCLUDE STRUCTURE CONF_OUT.
DATA: END OF TKOMCON.
DATA: BEGIN OF TKOMSERVH OCCURS 1.
INCLUDE STRUCTURE VEDKA.
DATA: END OF TKOMSERVH.
DATA: BEGIN OF TKOMSERVP OCCURS 5.
INCLUDE STRUCTURE VEDPA.
DATA: END OF TKOMSERVP.
DATA: BEGIN OF TKOMSERVHN OCCURS 5.
INCLUDE STRUCTURE VEDKN.
DATA: END OF TKOMSERVHN.
DATA: BEGIN OF TKOMSERVPN OCCURS 5.
INCLUDE STRUCTURE VEDPN.
DATA: END OF TKOMSERVPN.
DATA: BEGIN OF TKOMSER OCCURS 5.
INCLUDE STRUCTURE RISERLS.
DATA: END OF TKOMSER.
DATA: BEGIN OF TKOMSER_PRINT OCCURS 5.
INCLUDE STRUCTURE KOMSER.
DATA: END OF TKOMSER_PRINT.
DATA: BEGIN OF TFPLTDR OCCURS 5.
INCLUDE STRUCTURE FPLTDR.
DATA: END OF TFPLTDR.
DATA: TADDI_PRINT TYPE ADDI_SO_PRINT_ITAB WITH HEADER LINE.
TYPES:BEGIN OF ty_orders ,
xblnr LIKE mkpf-xblnr, "delivery number
erfmg LIKE mseg-erfmg, "goods issue quantity
custname LIKE kna1-name1, "customer name
bstnk LIKE vbak-bstnk, "purchase order number
ean11 LIKE vbap-ean11, "upc
kdmat LIKE vbap-kdmat, "customer material code
arktx LIKE vbap-arktx, "description
csrno LIKE kna1-kunnr, "customer service rep number
spras LIKE kna1-spras, "customer language key
csrname LIKE kna1-name1, "customer service rep name
csremail LIKE adr6-smtp_addr, "csr email
csrphone LIKE kna1-telf1, "csr telephone
csrext LIKE adrc-tel_extens, "csr extension
csrfax LIKE kna1-telfx, "csr fax
total LIKE lips-lfimg, "cut quantity
ldate(18) TYPE c,
END OF ty_orders.
CONSTANTS: c_kschl_order LIKE nast-kschl
VALUE 'ZUS0',
c_kschl_order1 LIKE nast-kschl
VALUE 'ZUS1', c_parvw_shipto LIKE vbpa-parvw
VALUE 'WE',
c_parvw_csr LIKE vbpa-parvw
VALUE 'ZS',
c_eng(1) TYPE c VALUE 'E',
c_sep(1) TYPE c VALUE '/',
c_sale(25) type c VALUE 'Sales Order'.
DATA: WA_VBAK TYPE VBAK,
tbl_ord TYPE ty_orders OCCURS 0 WITH HEADER LINE,
w_csrname(30) TYPE c,
w_csrno(30) TYPE c,
w_email LIKE adr6-smtp_addr,
f_shipto_found TYPE c,
w_custname(30) TYPE c,
w_month(2),
w_ldate(18),
w_total LIKE lips-lfimg,
w_lines TYPE i VALUE 0,
f_mail(1) TYPE c,
cnt_1 TYPE i VALUE 0,
cnt_2 TYPE i VALUE 0,
tbl_otf LIKE itcoo OCCURS 0 WITH HEADER LINE,
w_type(25) TYPE c,
st_doc_data LIKE sodocchgi1,
tbl_objtxt LIKE solisti1 OCCURS 10 WITH HEADER LINE,
tbl_line LIKE tline OCCURS 0 WITH HEADER LINE,
tbl_attach LIKE solisti1 OCCURS 10 WITH HEADER LINE,
tbl_objhead LIKE solisti1 OCCURS 10 WITH HEADER LINE,
tbl_proc_para LIKE soparai1 OCCURS 10 WITH HEADER LINE,
tbl_maillist LIKE somlreci1 OCCURS 10 WITH HEADER LINE,
tbl_pack_list LIKE sopcklsti1 OCCURS 10 WITH HEADER LINE,
tbl_cpo LIKE itcpo OCCURS 0 WITH HEADER LINE,"SAPscript output
" interface
tbl_cpp LIKE itcpp OCCURS 0 WITH HEADER LINE,"SAPscript output
" parameters
tbl_smtp TYPE szadr_adsmtp_line OCCURS 0 WITH HEADER LINE,
tbl_cdhdpos LIKE cdshw OCCURS 0 WITH HEADER LINE,
tbl_cdpos LIKE cdshw OCCURS 0 WITH HEADER LINE,
wrk_lines LIKE sy-tabix,
hltlines TYPE i,
off1 TYPE p,
fle1(2) TYPE p,
fle2(2) TYPE p,
htabix LIKE sy-tabix,
hfeld(500) TYPE c.
FORM ENTRY USING RETURN_CODE US_SCREEN.
if sy-tcode = 'VA01'.
IF nast-kschl = c_kschl_order.
SELECT SINGLE * FROM VBAK INTO WA_VBAK WHERE vbeln = nast-objky.
IF SY-SUBRC = 0.
CLEAR RETCODE.
XSCREEN = US_SCREEN.
PERFORM PROCESSING USING us_screen.
IF RETCODE NE 0.
RETURN_CODE = 1.
ELSE.
RETURN_CODE = 0.
ENDIF.
ELSE.
retcode = sy-subrc.
syst-msgid = 'ZVERROR'.
syst-msgno = '000'.
syst-msgty = 'E'.
syst-msgv1 = NAST-KSCHL.
syst-msgv1 = 'Sales Order cut letter
for this order already issued'.
syst-msgv2 = ' '.
PERFORM protocol_update.
ENDIF.
ELSE.
CLEAR retcode.
xscreen = us_screen.
PERFORM processing USING us_screen.
IF retcode NE 0.
return_code = 1.
ELSE.
return_code = 0.
ENDIF.
ENDIF.
endif.
ENDFORM.
FORM PROCESSING *
FORM PROCESSING USING proc_screen.
CASE nast-kschl.
WHEN c_kschl_order.
PERFORM get_orders.
CHECK retcode = 0.
PERFORM openform USING proc_screen vbak-landtx.
CHECK retcode = 0.
PERFORM layout.
CHECK retcode = 0.
CHECK proc_screen NE 'X'.
w_type = c_sale.
PERFORM send_email USING proc_screen.
WHEN c_kschl_order1.
PERFORM get_orders.
CHECK retcode = 0.
CHECK proc_screen NE 'X'.
w_type = c_sale.
PERFORM send_email USING proc_screen.
WHEN OTHERS.
retcode = 1.
syst-msgid = 'E0'.
syst-msgno = '430'.
syst-msgty = 'E'.
PERFORM protocol_update.
ENDCASE.
IF retcode EQ 0.
syst-msgid = '69'.
syst-msgno = '254'.
syst-msgty = 'S'.
syst-msgv1 = nast-kschl.
PERFORM protocol_update.
ELSE.
syst-msgid = 'CKCC'.
syst-msgno = '036'.
syst-msgty = 'E'.
PERFORM protocol_update.
ENDIF.
ENDFORM.
FORM PROTOCOL_UPDATE *
The messages are collected for the processing protocol. *
FORM PROTOCOL_UPDATE.
IF xscreen EQ space.
CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
EXPORTING
MSG_ARBGB = SYST-MSGID
MSG_NR = SYST-MSGNO
MSG_TY = SYST-MSGTY
MSG_V1 = SYST-MSGV1
MSG_V2 = SYST-MSGV2
MSG_V3 = SYST-MSGV3
MSG_V4 = SYST-MSGV4
EXCEPTIONS
OTHERS = 1.
ELSE.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.
*& Form get_orders
text
--> p1 text
<-- p2 text
FORM get_orders.
DATA : f_csr_found TYPE c.
SELECT SINGLE vbeln vkorg vdatu bstnk kunnr
FROM vbak
INTO (vbak-vbeln,vbak-vkorg,vbak-vdatu,vbak-bstnk,vbak-kunnr)
WHERE vbeln EQ nast-objky.
IF sy-subrc NE 0.
retcode = sy-subrc.
syst-msgid = 'VN'.
syst-msgno = '203'.
syst-msgty = 'E'.
syst-msgv1 = 'VBAK'.
syst-msgv2 = sy-subrc.
PERFORM protocol_update.
ENDIF.
SELECT vbeln posnr matnr pmatn arktx abgru kdmat werks
FROM vbap
INTO (vbap-vbeln,vbap-posnr,vbap-matnr,vbap-pmatn,
vbap-arktx,vbap-abgru,vbap-kdmat,vbap-werks)
WHERE vbeln = vbak-vbeln
AND abgru NE space "select items havng Rejection Reason
and PSTYV NE 'ZHDR'.
to check whether the reason for rejection was picked from the
managed codes tables
data: war_abgru type abgru,
w_exist type c.
clear : war_abgru, w_exist.
select single abgru from ZMAT_REJ002
into war_abgru
where vkorg = vbak-vkorg
and kunnr <> vbak-kunnr
and MATNR = vbap-matnr
and datef <= vbak-vdatu
and datet >= vbak-vdatu.
if sy-subrc <> 0.
select single abgru from ZMAT_REJ003
into war_abgru
where vkorg = vbak-vkorg
and kunnr <> vbak-kunnr
and MATNR = vbap-matnr
and datef <= vbak-vdatu
and datet >= vbak-vdatu.
if sy-subrc <> 0.
select single abgru from ZMAT_REJ001
into war_abgru
where vkorg = vbak-vkorg
and werks <> vbap-werks
and matnr = vbap-matnr
and datef <= vbak-vdatu
and datet >= vbak-vdatu.
if sy-subrc <> 0.
select single abgru from ZMAT_REJ004
into war_abgru
where vkorg = vbak-vkorg
and matnr = vbap-matnr
and datef >= vbak-vdatu
and datet <= vbak-vdatu.
if sy-subrc <> 0.
else.
w_exist = 'X'.
endif.
else.
w_exist = 'X'.
endif.
else.
w_exist = 'X'.
endif.
else.
w_exist = 'X'.
endif.
if w_exist = 'X'.
end for check from managed codes table
*to find the quantity fields
SELECT SINGLE wmeng bmeng
FROM vbep
INTO (vbep-wmeng,vbep-bmeng)
WHERE vbeln EQ vbap-vbeln
AND posnr EQ vbap-posnr.
*to get info about the customer
SELECT SINGLE kunnr
FROM vbpa
INTO vbpa-kunnr
WHERE vbeln EQ vbak-vbeln
AND parvw EQ c_parvw_shipto.
IF sy-subrc EQ 0.
f_shipto_found = 'X'.
SELECT SINGLE name1 spras
FROM kna1
INTO (kna1-name1,kna1-spras)
WHERE kunnr EQ vbpa-kunnr.
IF sy-subrc EQ 0.
w_custname = kna1-name1.
CLEAR kna1-name1.
ENDIF.
ENDIF.
SELECT SINGLE kunnr
FROM vbpa
INTO vbpa-kunnr
WHERE vbeln EQ vbak-vbeln
AND parvw EQ c_parvw_csr.
IF SY-SUBRC EQ 0.
f_csr_found = 'X'.
SELECT SINGLE kunnr name1 name2 adrnr
FROM kna1
INTO (kna1-kunnr,kna1-name1,kna1-name2,
kna1-adrnr)
WHERE kunnr EQ vbpa-kunnr.
IF sy-subrc EQ 0.
w_csrno = kna1-kunnr.
w_csrname = kna1-name1.
CLEAR kna1-name1.
SELECT SINGLE tel_number tel_extens fax_number
FROM adrc
INTO (adrc-tel_number,adrc-tel_extens,
adrc-fax_number)
WHERE addrnumber EQ kna1-adrnr.
CLEAR: adr6, w_email.
SELECT SINGLE * FROM adr6 WHERE addrnumber = kna1-adrnr.
IF sy-subrc = 0.
w_email = adr6-smtp_addr.
ENDIF.
ENDIF.
ENDIF.
*to get the date format in french
IF kna1-spras NE c_eng.
w_month = sy-datum+4(2).
SELECT SINGLE ltx
FROM t247
INTO t247-ltx
WHERE spras EQ kna1-spras
AND mnr EQ w_month.
CONCATENATE sy-datum+6(2)
t247-ltx
sy-datum+0(4)
INTO w_ldate
SEPARATED BY space.
ELSE.
CONCATENATE sy-datum+4(2)
sy-datum+6(2)
sy-datum+0(4)
INTO w_ldate
SEPARATED BY c_sep.
ENDIF.
w_total = vbep-wmeng - vbep-bmeng.
IF w_total GT 0.
PERFORM fill_orders.
ELSE.
IF vbap-abgru NE space.
w_total = vbep-wmeng.
PERFORM fill_orders.
ENDIF.
ENDIF.
CLEAR vbap.
endif. " check for w_exist for Managed Codes entry
ENDSELECT.
IF tbl_ord[] IS INITIAL.
retcode = 1.
syst-msgid = 'FZ'.
syst-msgno = '027'.
syst-msgty = 'E'.
PERFORM protocol_update.
ENDIF.
IF f_csr_found IS INITIAL.
syst-msgid = '8B'.
syst-msgno = '127'.
syst-msgty = 'W'.
syst-msgv1 = c_parvw_csr.
PERFORM protocol_update.
ENDIF.
IF f_shipto_found IS INITIAL.
syst-msgid = '8B'.
syst-msgno = '127'.
syst-msgty = 'W'.
syst-msgv1 = c_parvw_shipto.
PERFORM protocol_update.
ENDIF.
ENDFORM. " get_orders
*& Form layout
text
--> p1 text
<-- p2 text
FORM layout.
SORT tbl_ord BY bstnk kdmat.
LOOP AT tbl_ord.
AT FIRST.
PERFORM writeform_text.
ENDAT.
PERFORM writeform.
AT LAST.
PERFORM writeform_footer.
ENDAT.
ENDLOOP.
CLEAR : cnt_1,cnt_2.
PERFORM closeform.
ENDFORM. " layout
*& Form openform
text
FORM openform USING us_screen us_country.
DESCRIBE TABLE tbl_ord LINES w_lines.
IF w_lines EQ 0.
retcode = '1'.
syst-msgid = 'FE'.
syst-msgno = '078'.
syst-msgty = 'E'.
PERFORM protocol_update.
ENDIF.
CHECK retcode EQ 0.
INCLUDE zrvadopfo.
ENDFORM. " openform
*& Form send_email
text
-->P_PROC_SCREEN text
FORM send_email USING PROC_SCREEN.
f_mail = 'X'.
PERFORM openform USING proc_screen vbak-landtx.
LOOP AT tbl_ord.
AT FIRST.
PERFORM writeform_text.
ENDAT.
PERFORM writeform.
AT LAST.
PERFORM writeform_footer.
ENDAT.
ENDLOOP.
CLEAR cnt_2.
PERFORM closeform.
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF' "'ASCII'
IMPORTING
bin_filesize = st_doc_data-doc_size
TABLES
otf = tbl_otf
lines = tbl_line
EXCEPTIONS "DEVK912166
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
OTHERS = 4.
IF sy-subrc NE 0.
retcode = sy-subrc.
syst-msgid = 'OA'. "DEVK912166
syst-msgno = '186'. "DEVK912166
syst-msgty = 'E'. "DEVK912166
PERFORM protocol_update.
ENDIF.
REFRESH tbl_objtxt.
CLEAR tbl_objtxt.
CLEAR tbl_proc_para.
REFRESH tbl_proc_para.
CLEAR tbl_maillist.
REFRESH tbl_maillist.
CLEAR tbl_pack_list.
REFRESH tbl_pack_list.
st_doc_data-obj_name = 'Sales Order Cut Letter'.
st_doc_data-obj_langu = 'E'. "DEVK905849
st_doc_data-sensitivty = 'F'. "DEVK905849
st_doc_data-obj_prio = 1. "DEVK905849
CONCATENATE w_type 'Cut Letter' INTO "#EC NOTEXT
st_doc_data-obj_descr SEPARATED BY space.
DATA w_line(3) TYPE c.
PERFORM format_pdf. "DEVK905849
concatenate VBAK-VBELN '.PDF' into tbl_objhead.
tbl_objhead = 'Sales Order Cut Letter.PDF'.
APPEND tbl_objhead.
"DEVK905849
CLEAR wrk_lines.
DESCRIBE TABLE tbl_attach LINES wrk_lines.
fields needed for email
tbl_maillist-com_type = 'INT'.
tbl_maillist-receiver = w_email.
tbl_maillist-rec_type = 'U'.
APPEND tbl_maillist.
send email
CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
STARTING NEW TASK 'MAIL'
EXPORTING
document_data = st_doc_data
document_type = 'PDF'
COMMIT_WORK = 'X' " added after ECC6.0 upgrade
TABLES
object_header = tbl_objhead
object_content = tbl_objtxt
receivers = tbl_maillist
EXCEPTIONS "DEVK912166
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8
IF sy-subrc NE 0.
retcode = sy-subrc.
syst-msgid = 'ZA_G'. "DEVK912166
syst-msgno = '922'. "DEVK912166
syst-msgty = 'E'. "DEVK912166
syst-msgv1 = sy-subrc. "DEVK912166
syst-msgv2 = tbl_smtp-adsmtp-smtp_addr. "DEVK912166
PERFORM protocol_update.
syst-msgid = 'VW'.
syst-msgno = '001'.
syst-msgty = 'E'.
syst-msgv1 = 'Print successful:email Recepient Invalid'."#EC NOTEXT
PERFORM protocol_update.
ENDIF.
ENDFORM. " send_email
*& Form fill_orders
text
--> p1 text
<-- p2 text
FORM fill_orders.
tbl_ord-bstnk = vbak-bstnk.
tbl_ord-kdmat = vbap-kdmat.
tbl_ord-xblnr = vbak-vbeln.
tbl_ord-ean11 = vbap-pmatn.
tbl_ord-arktx = vbap-arktx.
tbl_ord-csrno = w_csrno .
tbl_ord-csremail = w_email.
tbl_ord-spras = kna1-spras .
tbl_ord-csrphone = adrc-tel_number.
tbl_ord-csrfax = adrc-fax_number.
tbl_ord-csrext = adrc-tel_extens.
tbl_ord-total = w_total.
tbl_ord-custname = w_custname.
tbl_ord-csrname = w_csrname .
tbl_ord-ldate = w_ldate.
APPEND tbl_ord.
CLEAR tbl_ord.
CLEAR w_total.
CLEAR w_ldate.
ENDFORM. " fill_orders
*& Form writeform_text
text
--> p1 text
<-- p2 text
FORM writeform_text.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'WTEXT'
window = 'WINDOW2'
EXCEPTIONS
element = 1
window = 2.
IF sy-subrc NE 0.
retcode = sy-subrc.
syst-msgid = 'EBR'.
syst-msgno = '056'.
syst-msgty = 'E'.
syst-msgv1 = 'WTEXT'.
syst-msgv2 = 'WINDOW2'.
PERFORM protocol_update.
ENDIF.
ENDFORM. " writeform_text
*& Form writeform
text
--> p1 text
<-- p2 text
FORM writeform.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'EMAIN'
window = 'MAIN'
EXCEPTIONS
element = 1
window = 2.
IF sy-subrc NE 0.
retcode = sy-subrc.
syst-msgid = 'EBR'.
syst-msgno = '056'.
syst-msgty = 'E'.
syst-msgv1 = 'WTEXT'.
syst-msgv2 = 'WINDOW2'.
PERFORM protocol_update.
ENDIF.
ENDFORM. " writeform
*& Form writeform_footer
text
--> p1 text
<-- p2 text
FORM writeform_footer.
IF nast-spras = 'N'.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'FOOTER'
window = 'MAIN'
EXCEPTIONS
element = 1
window = 2.
ENDIF.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = 'WFOOTER'
window = 'WINDOW12'
EXCEPTIONS
element = 1
window = 2.
IF sy-subrc NE 0.
retcode = sy-subrc.
syst-msgid = 'EBR'.
syst-msgno = '056'.
syst-msgty = 'E'.
syst-msgv1 = 'WFOOTER'.
syst-msgv2 = 'WINDOW12'.
PERFORM protocol_update.
ENDIF.
ENDFORM. " writeform_footer
*& Form closeform
text
--> p1 text
<-- p2 text
FORM closeform.
CALL FUNCTION 'CLOSE_FORM'
TABLES
otfdata = tbl_otf
EXCEPTIONS
unopened = 1
bad_pageformat_for_print = 2
OTHERS = 3.
IF sy-subrc NE 0.
retcode = sy-subrc.
syst-msgid = 'PS'.
syst-msgno = '005'.
syst-msgty = 'E'.
PERFORM protocol_update.
ENDIF.
ENDFORM. " closeform
*& Form format_pdf
text
--> p1 text
<-- p2 text
FORM format_pdf.
FIELD-SYMBOLS <fs>.
DESCRIBE TABLE tbl_line LINES hltlines.
DESCRIBE FIELD tbl_line LENGTH fle1 IN BYTE MODE . Defect#1579-
DESCRIBE FIELD tbl_objtxt LENGTH fle2 IN BYTE MODE . Defect#1579-
Start of Defect#1579+
DESCRIBE FIELD tbl_line LENGTH fle1 IN CHARACTER MODE.
DESCRIBE FIELD tbl_objtxt LENGTH fle2 IN CHARACTER MODE.
End of Defect#1579+
CLEAR tbl_objtxt.
REFRESH tbl_objtxt.
LOOP AT tbl_line.
htabix = sy-tabix.
MOVE tbl_line TO hfeld+off1.
IF htabix = hltlines.
fle1 = strlen( tbl_line ).
ENDIF.
off1 = off1 + fle1.
IF off1 GE fle2.
CLEAR tbl_objtxt.
tbl_objtxt = hfeld(fle2).
APPEND tbl_objtxt.
SHIFT hfeld BY fle2 PLACES.
off1 = off1 - fle2.
ENDIF.
IF htabix = hltlines.
IF off1 GT 0.
CLEAR tbl_objtxt.
tbl_objtxt = hfeld(off1).
APPEND tbl_objtxt.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " format_pdf
ANy Suggestion or help will be appreciated!
Regards,
Kittu
Edited by: Kittu on Jun 30, 2008 12:32 PMHello Julie Waller,
Very Good evening!
Thank you very much for your response!
Sometimes...I miss the basic things and start concentarcting on typical ways to fix the issue. ....which will only make my issue critical.
Hello Sathya,
Thank you for your response!
POints are rewarded..
Have a great day ahead!
Regards,
Kittu -
Headers getting repeated while running the report in background
Hi,
I have a report which uses ALV grid display for output display.
I have displayed a heder in the top_of_page option. while running the program in foregound the header gets displayed only once. but when executing in background the header is getting displayed for each and every page.
can any one tell me how to get the header displayed only once in the background also.REPORT ZBACKORD MESSAGE-ID VZ
NO STANDARD PAGE HEADING.
*& TABLES AND TYPE-POOLS *
Tables used
TABLES : VBAK, "Sales Document: Header Data
VBAP, "Sales Document: Item Data
VBPA. "Sales Document Partner
For ALV Display
TYPE-POOLS: SLIS. "Globale Typen für generische Listbausteine
*& CONSTANTS *
Constants Used
CONSTANTS:
C_X VALUE 'X', "Order status
C_TAPA(4) VALUE 'TAPA', "For Material Determination
C_0001(4) VALUE '0001', "Etenr value
C_A VALUE 'A', "Enable Save
C_US(3) VALUE 'US$', "US DOLLAR.
C_B VALUE 'B', "for Partially processed
C_E VALUE 'E', "Language
C_C VALUE 'C', "for completely processed
C_BLANK VALUE ' ', "Blank
C_IC1(4) VALUE '&IC1', "for user command
C_ZR(2) VALUE 'ZR', "Cs ReP No
C_BP(2) VALUE 'RE', "Bill to party
C_SH(2) VALUE 'WE', "Sold to party
C_6(6) VALUE '000000', "For item number
C_20(2) TYPE N VALUE '20', "For the length of the field
C_S(1) TYPE C VALUE 'S', "STOCK
C_H VALUE 'H', "Header
C_COL(1) TYPE C VALUE ':', " COLUMN FOR DATA AND TIME
C_TOP TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',
"For TOP_OF_PAGE
C_USER TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'.
" For USER_COMMAND
*& TYPE DEFINITIONS *
*FOR Sales Document: Header Data
TYPES: BEGIN OF TP_VBAK,
VBELN TYPE VBELN_VF, "Sales Document
ERDAT TYPE ERDAT, "Date on which the record was created
AUART TYPE AUART, "Sales document type
LIFSK TYPE LIFSK, "Delivery block
VKORG TYPE VKORG, "Sales organization
VTWEG TYPE VTWEG, "Distribution channel
END OF TP_VBAK.
*FOR Sales Document Business Data
TYPES :BEGIN OF TP_VBKD,
VBELN TYPE VBELN, "Sales and distribution document number
POSNR TYPE POSNR, "Item number of the SD document
INCO1 TYPE INCO1, "Incoterms
ZTERM TYPE DZTERM, "Terms of payment key
BSTKD TYPE BSTKD, "Customer purchase order number
END OF TP_VBKD.
TYPES : BEGIN OF TP_VBFA,
VBELV TYPE VBELN_VON,
POSNV TYPE POSNR_VON,
END OF TP_VBFA.
*FOR Sales Document: Partner
TYPES : BEGIN OF TP_VBPA,
VBELN TYPE VBELN, "Sales and distribution
PARVW TYPE PARVW, "Partner function
KUNNR TYPE KUNNR, "Customer Number 1
ADRNR TYPE ADRNR, "address
END OF TP_VBPA.
*FOR Addresses (Business Address Services)
TYPES : BEGIN OF TP_ADRC,
ADDRNUMBER TYPE AD_ADDRNUM, "Address
DATE_FROM TYPE AD_DATE_FR, "Date valid from
NATION TYPE AD_NATION, "International address
NAME1 TYPE AD_NAME1, "name
END OF TP_ADRC.
*FOR Sales Document: Item Data
TYPES: BEGIN OF TP_VBAP,
VBELN TYPE VBELN_VA, "Sales document
POSNR TYPE POSNR_VA, "Sales document item
MATNR TYPE MATNR, "Material Number
PSTYV TYPE PSTYV, "Sales document item category
KDMAT TYPE MATNR_KU, "Material number used by customer
VRKME TYPE VRKME, "Sales unit
WERKS TYPE WERKS_EXT, "Plant (Own or External)
VSTEL TYPE VSTEL, "Shipping point /Receiving point
NETPR TYPE NETPR, "Net p
NETWR TYPE NETWR_AP,
WAERK TYPE VBAP-WAERK,"Target outline doc currency
END OF TP_VBAP.
*for Sales Document: Schedule Line Data
TYPES: BEGIN OF TP_VBEP,
VBELN TYPE VBELN_VA, "Sales document
POSNR TYPE POSNR_VA, "Sales Document Item
ETENR TYPE ETENR, "Schedule line
EDATU TYPE EDATU, "Schedule line data
WMENG TYPE WMENG, "Order quantity in sales unit
BMENG TYPE BMENG, "Confirmed quantity
LMENG TYPE LMENG, "Required quantity
WADAT TYPE WADAT, "Goods issue date
LIFSP TYPE LIFSP_EP, "Schedule line blocked for delivery
END OF TP_VBEP.
*For Sales Document: Header Status and Administrative Data
TYPES : BEGIN OF TP_VBUK,
VBELN TYPE VBELN, "Sales and Distribution Document Number
SPSTG TYPE SPSTG, "Overall blocked status
CMGST TYPE CMGST,
END OF TP_VBUK.
TYPES : BEGIN OF TP_TVLST,
LIFSP TYPE LIFSP, "Default delivery block
VTEXT TYPE BEZEI_LIFSP, "Description
END OF TP_TVLST.
*FOR Sales Document: Item Status
TYPES : BEGIN OF TP_VBUP,
VBELN TYPE VBELN, "Sales and distribution
POSNR TYPE POSNR, "Item number of the SD
LFGSA TYPE LFGSA, "Overall delivery status of item
END OF TP_VBUP.
For ALV Display-if cs rep is checked
TYPES: BEGIN OF TP_DISPC,
VBELN TYPE VBELN, "Sales and distribution Doc
VKORG TYPE VKORG, "Sales organization
VTWEG TYPE VTWEG, "Distribution channel
AUART TYPE AUART, "Sales document type
BSTKD TYPE BSTKD, "Customer purchase order
KUNNR_1 TYPE KUNNR, "Cs Rep Number
NAME1_1 TYPE NAME1, "Cs Rep Name
KUNNR_2 TYPE KUNNR, "Bill to Number
NAME1_2 TYPE NAME1, "Bill to Party
KUNNR_3 TYPE KUNNR, "Ship to Number
NAME1_3 TYPE NAME1, "Ship to Party
POSNR TYPE POSNR_VA, "Item number of the SD
MATNR TYPE MATNR, "Material Number
KDMAT TYPE MATNR_KU, "Material number used by
VSTEL TYPE VSTEL, "Shipping point /Receiving
NETPR TYPE NETPR, "Net price
NETWR TYPE NETWR_AP,
WAERK TYPE WAERK, "Currency
ZTERM TYPE DZTERM, "Terms of payment key
WMENG TYPE WMENG, "Order quantity in sales unit
LOGIC_1 TYPE WMENG, "BackOrder Quantity
VRKME TYPE STRING, "Sales Unit
WADAT TYPE EDATU, "Goods issue date
WADAT1 TYPE EDATU,
EDATU TYPE EDATU, "Schedule line data
VRKME_1 TYPE STRING, "Sales Unit
INCO1 TYPE INCO1, "Incoterms
LFGSA TYPE STRING, "Overall delivery status of item
LIFSP TYPE STRING, "Line Item Block
LIFSK TYPE STRING, "Header block
SPSTG TYPE STRING, "Overall blocked status
END OF TP_DISPC.
For ALV Display-if plant is checked
TYPES: BEGIN OF TP_DISPP,
VBELN TYPE VBELN, "Sales and distribution Doc
VKORG TYPE VKORG, "Sales organization
VTWEG TYPE VTWEG, "Distribution channel
AUART TYPE AUART, "Sales document type
BSTKD TYPE BSTKD, "Customer purchase order
KUNNR_2 TYPE KUNNR, "Cs rep number
NAME1_2 TYPE NAME1, "Cs rep Name
KUNNR_3 TYPE KUNNR, "Ship to Number
NAME1_3 TYPE NAME1, "Ship to Party Name
POSNR TYPE POSNR_VA, "Item number of the SD
MATNR TYPE MATNR, "Material Number
KDMAT TYPE MATNR_KU, "Material number used by customer
VSTEL TYPE VSTEL, "Shipping point /Receiving point
NETPR TYPE NETPR, "Net price
NETWR TYPE NETWR_AP,
*}MOD02
WAERK TYPE WAERK, "Currency
ZTERM TYPE DZTERM, "Terms of payment key
WMENG TYPE WMENG, "Order quantity in sales unit
LOGIC_1 TYPE WMENG, "Backorder Quantity
VRKME TYPE STRING, "Sales unit
WADAT TYPE EDATU, "Goods issue date
WADAT1 TYPE EDATU,
EDATU TYPE EDATU, "Schedule line data
VRKME_1 TYPE STRING, "Sales Unit
INCO1 TYPE INCO1, "Incoterms
LFGSA TYPE STRING, "Overall delivery status of item
LIFSP TYPE STRING, "Line Item Block
LIFSK TYPE STRING, "Header block
SPSTG TYPE STRING, "Overall blocked status
WERKS TYPE WERKS_EXT, "Plant (Own or External)
END OF TP_DISPP.
For ALV Display-if cs rep and palnt is checked
TYPES: BEGIN OF TP_DISP,
VKORG TYPE VKORG, "Sales organization
VTWEG TYPE VTWEG, "Distribution channel
AUART TYPE AUART, "Sales document type
VBELN TYPE VBELN, "Sales and distribution Doc no
BSTKD TYPE BSTKD, "Customer purchase order number
KUNNR_1 TYPE KUNNR, "Cs Rep Number
NAME1_1 TYPE NAME1, "Cs Rep Name
KUNNR_2 TYPE KUNNR, "Bill to Number
NAME1_2 TYPE NAME1, "Bill to Name
KUNNR_3 TYPE KUNNR, "Ship to Number
NAME1_3 TYPE NAME1, "Ship to Name
POSNR TYPE POSNR_VA, "Item number of the SD
MATNR TYPE MATNR, "Material Number
KDMAT TYPE MATNR_KU, "Material number used
VSTEL TYPE VSTEL, "Shipping point /Receiving
NETPR TYPE NETPR, "Net price
NETWR TYPE NETWR_AP,
WAERK TYPE WAERK, "Currency
ZTERM TYPE DZTERM, "Terms of payment key
WMENG TYPE WMENG, "Order quantity in sales
LOGIC_1 TYPE WMENG, "Backorder Quantity
VRKME TYPE STRING, "Sales unit
WADAT TYPE EDATU, "Goods issue date
WADAT1 TYPE EDATU,
VRKME_1 TYPE STRING, "Sales Unit
EDATU TYPE EDATU, "Schedule line date
INCO1 TYPE INCO1, "Incoterms
LFGSA TYPE STRING, "Overall delivery status of
LIFSP TYPE STRING, "Line Item Block
LIFSK TYPE STRING, "Header block
SPSTG TYPE STRING, "Overall blocked status
WERKS TYPE WERKS_EXT, "Plant (Own or External)
END OF TP_DISP.
*& INTERNAL TABLES *
Internal Tables used for Data Selection
DATA: T_VBAK TYPE STANDARD TABLE OF TP_VBAK WITH HEADER LINE,
T_VBPA TYPE STANDARD TABLE OF TP_VBPA WITH HEADER LINE,
T_VBAP TYPE STANDARD TABLE OF TP_VBAP WITH HEADER LINE,
T_VBKD TYPE STANDARD TABLE OF TP_VBKD WITH HEADER LINE,
T_VBEP TYPE STANDARD TABLE OF TP_VBEP WITH HEADER LINE,
T_VBEP1 TYPE STANDARD TABLE OF TP_VBEP WITH HEADER LINE,
T_VBUP TYPE STANDARD TABLE OF TP_VBUP WITH HEADER LINE,
T_ADRC TYPE STANDARD TABLE OF TP_ADRC WITH HEADER LINE,
T_DISPC TYPE STANDARD TABLE OF TP_DISPC WITH HEADER LINE,
T_DISPP TYPE STANDARD TABLE OF TP_DISPP WITH HEADER LINE,
T_DISP TYPE STANDARD TABLE OF TP_DISP WITH HEADER LINE.
{23-8-2007
DATA: T_VBUK TYPE STANDARD TABLE OF TP_VBUK WITH HEADER LINE,
T_TVLST TYPE STANDARD TABLE OF TP_TVLST WITH HEADER LINE,
T_TVLST1 TYPE STANDARD TABLE OF TP_TVLST WITH HEADER LINE,
T_VBFA TYPE STANDARD TABLE OF TP_VBFA WITH HEADER LINE.
Variables used for ALV Display *
DATA:
W_REPID TYPE SY-REPID, " Report name
W_POS TYPE I VALUE 0, " Column position indicator
W_LAYOUT TYPE SLIS_LAYOUT_ALV, " Layout
W_DATUM(10) TYPE C, " Run date
W_TIME(8) TYPE C. " Run time
Tables used for ALV Display *
DATA : T_GROUP TYPE SLIS_T_SP_GROUP_ALV WITH HEADER LINE,
"Grouping of field
T_SORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE,
"sorting of the field
T_FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
" Field description
T_TOP TYPE SLIS_T_LISTHEADER. " Header for the ALV
Work Area used for ALV Display
DATA : WA_TOP LIKE LINE OF T_TOP. " Work Area for Header
*& SELECTION SCREEN *
Selection
SELECTION-SCREEN BEGIN OF BLOCK B01 WITH FRAME TITLE TEXT-T01.
"Sales Organization details
SELECT-OPTIONS: S_VKORG FOR VBAK-VKORG OBLIGATORY.
"Sales Organization
SELECT-OPTIONS: S_VTWEG FOR VBAK-VTWEG .
"Distribution Channel
SELECT-OPTIONS: S_KUNNR1 FOR VBPA-KUNNR . "CS Rep Number
SELECT-OPTIONS: S_WERKS FOR VBAP-WERKS. "Plant
SELECTION-SCREEN END OF BLOCK B01.
SELECTION-SCREEN BEGIN OF BLOCK B02 WITH FRAME TITLE TEXT-T02.
"Additional Selections
SELECT-OPTIONS: S_KUNNR2 FOR VBPA-KUNNR . "Bill to party
SELECT-OPTIONS: S_KUNNR3 FOR VBPA-KUNNR . "Ship to party
SELECT-OPTIONS: S_VBELN FOR VBAK-VBELN . "Saler Order
SELECT-OPTIONS: S_MATNR FOR VBAP-MATNR . "Material Number
SELECT-OPTIONS: S_KDMAT FOR VBAP-KDMAT . "Customer Material Number
SELECT-OPTIONS: S_AUART FOR VBAK-AUART . "Sales Order Type
SELECTION-SCREEN END OF BLOCK B02.
SELECTION-SCREEN BEGIN OF BLOCK B03 WITH FRAME TITLE TEXT-T03.
"Date Selection
SELECT-OPTIONS: S_ERDAT FOR VBAK-ERDAT OBLIGATORY.
"Order Creation Date
PARAMETER: P_PLANT AS CHECKBOX. "Backorder Plant
PARAMETER: P_CSREP AS CHECKBOX. "Backorder CSREP number
SELECTION-SCREEN END OF BLOCK B03.
*& AT SELECTION SCREEN *
*Validation Sales Organisation
AT SELECTION-SCREEN ON S_VKORG.
IF NOT S_VKORG[] IS INITIAL.
SELECT VKORG UP TO 1 ROWS FROM TVKO
BYPASSING BUFFER
INTO S_VKORG
WHERE VKORG IN S_VKORG.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH TEXT-E01.
"Enter a valid Sales Organization
ENDIF.
ENDIF.
*Validation Distribution Channel
AT SELECTION-SCREEN ON S_VTWEG.
IF NOT S_VTWEG[] IS INITIAL.
SELECT VTWEG UP TO 1 ROWS FROM TVTW
BYPASSING BUFFER
INTO S_VTWEG
WHERE VTWEG IN S_VTWEG.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH TEXT-E02.
"Enter a valid Distribution channel
ENDIF.
ENDIF.
*Validation Customer service rep number
AT SELECTION-SCREEN ON S_KUNNR1.
IF NOT S_KUNNR1[] IS INITIAL.
SELECT KUNNR UP TO 1 ROWS FROM KNA1
INTO S_KUNNR1
WHERE KUNNR IN S_KUNNR1.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH TEXT-E03.
"Enter a valid Customer Service rep number
ENDIF.
ENDIF.
*Validation Plant
AT SELECTION-SCREEN ON S_WERKS.
IF NOT S_WERKS[] IS INITIAL.
SELECT WERKS UP TO 1 ROWS
FROM T001W
INTO S_WERKS
BYPASSING BUFFER
WHERE WERKS IN S_WERKS.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH TEXT-E04. "Enter a valid Plant
ENDIF.
ENDIF.
*Validation Bill to number
AT SELECTION-SCREEN ON S_KUNNR2.
IF NOT S_KUNNR2[] IS INITIAL.
SELECT KUNNR UP TO 1 ROWS FROM KNA1
INTO S_KUNNR2
WHERE KUNNR IN S_KUNNR2.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH TEXT-E05. "Enter a valid Bill to number
ENDIF.
ENDIF.
*Validation Ship to Number
AT SELECTION-SCREEN ON S_KUNNR3.
IF NOT S_KUNNR3[] IS INITIAL.
SELECT KUNNR UP TO 1 ROWS FROM KNA1
INTO S_KUNNR3
WHERE KUNNR IN S_KUNNR3.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH TEXT-E06. "Enter a valid Ship to number
ENDIF.
ENDIF.
*Validation Order Number
AT SELECTION-SCREEN ON S_VBELN.
IF NOT S_VBELN[] IS INITIAL.
SELECT VBELN UP TO 1 ROWS FROM VBUK
INTO S_VBELN
WHERE VBELN IN S_VBELN.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH TEXT-E07. "Enter a valid Order number
ENDIF.
ENDIF.
*Validation Material Number
AT SELECTION-SCREEN ON S_MATNR.
IF NOT S_MATNR[] IS INITIAL.
SELECT MATNR UP TO 1 ROWS FROM MARA
INTO S_MATNR
WHERE MATNR IN S_MATNR.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH TEXT-E08. "Enter a valid Material number
ENDIF.
ENDIF.
*Validation Customer Material Number
AT SELECTION-SCREEN ON S_KDMAT.
IF NOT S_KDMAT[] IS INITIAL.
SELECT KDMAT UP TO 1 ROWS
FROM KNMT
INTO S_KDMAT
WHERE VKORG IN S_VKORG AND
VTWEG IN S_VTWEG AND
KDMAT IN S_KDMAT.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH TEXT-E09.
"Enter a valid Customer Material number
ENDIF.
ENDIF.
*Validation Salea order type
AT SELECTION-SCREEN ON S_AUART.
IF NOT S_AUART[] IS INITIAL.
SELECT AUART UP TO 1 ROWS FROM TVAK
INTO S_AUART
BYPASSING BUFFER
WHERE AUART IN S_AUART.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH TEXT-E10.
"Enter a valid Sales Order type
ENDIF.
ENDIF.
*Validation for Plant / CS rep .
AT SELECTION-SCREEN .
IF NOT ( ( P_PLANT = C_X ) OR ( P_CSREP = C_X ) ).
MESSAGE E000 WITH TEXT-E12. "Choose the Plant or CSrep
ENDIF.
IF ( P_PLANT = C_X ) AND S_WERKS IS INITIAL.
MESSAGE E000 WITH TEXT-E13. "Enter Plant
ENDIF.
IF ( P_CSREP = C_X ) AND S_KUNNR1 IS INITIAL.
MESSAGE E000 WITH TEXT-E14. " Enter CSREP number
ENDIF.
*& START OF SELECTION *
START-OF-SELECTION.
Clear Work Areas/Variables and Clear/Refresh Internal Tables
PERFORM CLEAR_REFRESH.
Selection of Data as per inputs
PERFORM DATA_SELECTION.
Populate Internal table for display
PERFORM DATA_FILL_FOR_DISPLAY.
*& END OF SELECTION *
END-OF-SELECTION.
IF NOT T_DISP[] IS INITIAL.
*Populating the field catalog for ALV Display if plant and csrep is
*checked.
PERFORM POPULATE_FIELD_CATALOG.
PERFORM DISPLAY.
ELSEIF T_DISPP[] IS NOT INITIAL.
*Populating the field catalog for ALV Display if plant is checked.
PERFORM POPULATE_FIELD_CATALOG.
PERFORM DISPLAY.
ELSEIF T_DISPC[] IS NOT INITIAL.
*Populating the field catalog for ALV Display if csrep is checked.
PERFORM POPULATE_FIELD_CATALOG.
PERFORM DISPLAY.
ELSE.
MESSAGE I000 WITH TEXT-E15. "No Data found for Selection Criteria
ENDIF.
Clear Work Areas/Variables and Clear/Refresh Internal Tables
PERFORM CLEAR_REFRESH.
*& Form CLEAR_REFRESH
Clear Work Areas/Variables and Clear/Refresh Internal Tables
FORM CLEAR_REFRESH .
Clear Variables/Work Areas/Internal Tables
CLEAR: W_REPID,
W_POS,
W_LAYOUT,
W_DATUM,
W_TIME,
T_VBAK,
T_VBKD,
T_VBPA,
T_VBAP,
T_VBEP,
T_VBUP,
T_DISPC,
T_DISPP,
T_DISP,
T_VBUK,
T_TVLST,
T_TVLST1.
Refresh Internal Tables
REFRESH: T_VBAK,
T_VBKD,
T_VBPA,
T_VBAP,
T_VBEP,
T_VBUP,
T_DISPC,
T_DISPP,
T_DISP,
T_VBUK,
T_TVLST,
T_TVLST1.
ENDFORM. " CLEAR_REFRESH
*& Form DATA_SELECTION
Selection of Data as per inputs
FORM DATA_SELECTION .
*Obtain Sales and distribution document number,Date on which the record
*was created
*Sales document type,Delivery block,Sales organisation,
Distribution channel based on selection criteria
SELECT VBELN "Sales and distribution Doc no
ERDAT
"Date on which the record was created
AUART "Sales document type
LIFSK "Delivery block
VKORG "Sales organisation
VTWEG "Distribution channel
FROM VBAK
INTO TABLE T_VBAK
WHERE VBELN IN S_VBELN AND
ERDAT IN S_ERDAT AND
AUART IN S_AUART AND
VKORG IN S_VKORG AND
VTWEG IN S_VTWEG.
IF SY-SUBRC EQ 0.
SORT T_VBAK BY VBELN .
*Obtain Sales document ,Sales document item,Material Number,Material
*number used by customer
Safer point ,Plant (Own or External),Shipping point /Receiving point
Net price based on selection criteria
SELECT A~VBELN "Sales document
A~POSNR "Sales document item
MATNR "Material Number
PSTYV "Sales document item category
KDMAT "Material number used by customer
VRKME "Sales unit
WERKS "Plant (Own or External)
VSTEL "Shipping point /Receiving point
NETPR "Net price
*MOD02 {
NETWR
*}MOD02
WAERK "Target outline doc currency
FROM VBAP AS A JOIN VBUP AS B
ON ( AVBELN = BVBELN
AND APOSNR = BPOSNR )
INTO TABLE T_VBAP
FOR ALL ENTRIES IN T_VBAK
WHERE A~VBELN = T_VBAK-VBELN AND
A~MATNR IN S_MATNR AND
A~PSTYV NE C_TAPA AND
A~KDMAT IN S_KDMAT AND
A~WERKS IN S_WERKS AND
A~ABGRU EQ SPACE AND
B~LFSTA NE 'C'.
IF SY-SUBRC EQ 0.
SORT T_VBAP BY VBELN POSNR.
ENDIF.
SELECT VBELV
POSNV
FROM VBFA
INTO TABLE T_VBFA
FOR ALL ENTRIES IN T_VBAP
WHERE VBELV = T_VBAP-VBELN
AND POSNV = T_VBAP-POSNR
AND VBTYP_N = 'J'.
IF SY-SUBRC = 0.
SORT T_VBFA BY VBELV POSNV.
LOOP AT T_VBAP.
*READ TABLE T_VBFA WITH KEY VBELV = T_VBAP-VBELN POSNV = T_VBAP-POSNR.
IF SY-SUBRC = 0.
DELETE T_VBAP.
ENDIF.
ENDLOOP.
ENDIF.
{ 23-8-2007
SELECT LIFSP
VTEXT
FROM TVLST
INTO TABLE T_TVLST
FOR ALL ENTRIES IN T_VBAK
WHERE SPRAS EQ C_E AND
LIFSP = T_VBAK-LIFSK.
IF SY-SUBRC EQ 0.
SORT T_TVLST BY LIFSP.
ENDIF.
*Obtain Sales and distribution document number,Item number of the SD
*document ,Incoterms,Terms of payment key,Customer purchase order number
*based on selection criteria
SELECT VBELN "Sales and distribution document number
POSNR "Item number of the SD document
INCO1 "Incoterms
ZTERM "Terms of payment key
BSTKD "Customer purchase order number
FROM VBKD INTO TABLE T_VBKD
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN.
IF SY-SUBRC EQ 0.
SORT T_VBKD BY VBELN .
ENDIF.
*Obtain Sales document,Sales Document Item,Schedule line,Schedule line
*data, Order quantity in sales unit,Confirmed quantity,Goods issue date,
*Schedule line blocked for delivery based on selection criteria
SELECT VBELN "Sales document
POSNR "Sales Document Item
ETENR "Schedule line
EDATU "Schedule line data
CMENG "Order quantity in sales unit
BMENG "Confirmed quantity
LMENG
WADAT "Goods issue date
LIFSP "Schedule line blocked for delivery
FROM VBEP INTO TABLE T_VBEP
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN AND
ETENR = C_0001.
IF SY-SUBRC EQ 0.
SORT T_VBEP BY VBELN POSNR ETENR.
{ 23-8-2007
SELECT LIFSP
VTEXT
FROM TVLST
INTO TABLE T_TVLST1
FOR ALL ENTRIES IN T_VBEP
WHERE SPRAS EQ C_E AND
LIFSP = T_VBEP-LIFSP.
IF SY-SUBRC EQ 0.
SORT T_TVLST1 BY LIFSP.
ENDIF.
ENDIF.
SELECT VBELN "Sales document
POSNR "Sales Document Item
ETENR "Schedule line
EDATU "Schedule line data
CMENG "Order quantity in sales unit
BMENG "Confirmed quantity
LMENG
WADAT "Goods issue date
LIFSP
"Schedule line blocked for delivery
FROM VBEP INTO TABLE T_VBEP1
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN .
IF SY-SUBRC EQ 0.
SORT T_VBEP1 BY VBELN POSNR .
ENDIF.
{ 23-8-2007
SELECT VBELN "Sales and Distribution Document Number
SPSTG "Overall blocked status
*MOD02 {
CMGST
*}MOD02
FROM VBUK
INTO TABLE T_VBUK
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN
AND ( CMGST = 'A' OR CMGST = 'D' ).
IF SY-SUBRC EQ 0.
SORT T_VBUK BY VBELN .
ENDIF.
*Obtain Sales and distribution Doc no,Item number of the SD document
Overall delivery status of item
SELECT VBELN "Sales and distribution Doc no
POSNR "Item number of the SD document
LFGSA "Overall delivery status of item
FROM VBUP
INTO TABLE T_VBUP
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN.
IF SY-SUBRC EQ 0.
SORT T_VBUP BY VBELN POSNR.
ENDIF.
*Obtain Sales and distribution document number,Partner function
Customer Number 1,address based on selection criteria
SELECT VBELN "Sales and distribution Doc no
PARVW " Patner function
KUNNR "Customer No1
ADRNR "address
FROM VBPA
INTO TABLE T_VBPA
FOR ALL ENTRIES IN T_VBAP
WHERE VBELN = T_VBAP-VBELN AND
( ( KUNNR IN S_KUNNR1 ) OR
( KUNNR IN S_KUNNR2 ) OR
( KUNNR IN S_KUNNR3 ) ) AND
( ( PARVW = C_ZR ) OR
( PARVW = C_BP ) OR
( PARVW = C_SH ) ).
IF SY-SUBRC EQ 0.
SORT T_VBPA BY VBELN PARVW.
IF NOT T_VBPA[] IS INITIAL.
*Obtain Address number ,name
SELECT ADDRNUMBER "Address number
DATE_FROM "Date valid from
NATION "International address version ID
NAME1 "name
FROM ADRC
INTO TABLE T_ADRC
FOR ALL ENTRIES IN T_VBPA
WHERE ADDRNUMBER = T_VBPA-ADRNR.
IF SY-SUBRC EQ 0.
SORT T_ADRC BY ADDRNUMBER.
ENDIF.
ENDIF.
ELSE.
MESSAGE I000 WITH TEXT-S02."No Data For the Entered CS rep number
STOP.
ENDIF.
ELSE.
MESSAGE I000 WITH TEXT-S01.
"No data found for the selection criteria
STOP.
ENDIF.
ENDFORM. " DATA_SELECTION
*& Form DATA_FILL_FOR_DISPLAY
Populate Internal table for display
FORM DATA_FILL_FOR_DISPLAY .
DATA: L_NETPR TYPE NETPR. "For net amount
DATA: L_DATE TYPE EDATU. "For Date Field
DATA: L_WMENG TYPE WMENG. "For Confirmed Quantity
DATA: L_BMENG TYPE BMENG. "For Delivered Quantity
DATA : L_LAST_DATE TYPE EDATU.
DATA : W_FG TYPE C.
DATA : L_TABIX TYPE SY-TABIX.
DATA: L_CNT TYPE I,
L_NETWR TYPE NETWR.
*If plant and csrep are selected.
IF ( ( P_PLANT = C_X ) AND ( P_CSREP = C_X ) ).
LOOP AT T_VBAP.
CLEAR W_FG.
CLEAR L_CNT.
*MOD02 {
READ TABLE T_VBUK WITH KEY VBELN = T_VBAP-VBELN.
IF SY-SUBRC = 0.
*}MOD02
LOOP AT T_VBEP1 WHERE VBELN = T_VBAP-VBELN AND POSNR =
T_VBAP-POSNR.
L_CNT = L_CNT + 1.
IF L_LAST_DATE IS NOT INITIAL AND W_FG NE 'X'.
IF L_LAST_DATE NE T_VBEP1-WADAT.
W_FG = 'X'.
ENDIF.
ENDIF.
L_LAST_DATE = T_VBEP1-WADAT.
ENDLOOP.
IF L_CNT = 1 AND T_VBEP1-BMENG = 0.
W_FG = 'X'.
ENDIF.
IF W_FG = 'X'.
READ TABLE T_VBEP WITH KEY VBELN = T_VBAP-VBELN
POSNR = T_VBAP-POSNR
BINARY SEARCH.
IF SY-SUBRC EQ 0.
*Move Order quantity in sales unit to final internal table
MOVE T_VBEP-WMENG TO T_DISP-WMENG.
MOVE T_VBEP-WADAT TO T_DISP-WADAT1.
*Move Goods issue date to final internal table
MOVE T_VBEP-EDATU TO T_DISP-WADAT.
{ 23-8-2007
READ TABLE T_TVLST1 WITH KEY LIFSP = T_VBEP-LIFSP
BINARY SEARCH.
IF SY-SUBRC EQ 0.
CONCATENATE T_VBEP-LIFSP
T_TVLST1-VTEXT
INTO T_DISP-LIFSP
SEPARATED BY SPACE.
ENDIF.
*Move the Schedule line blocked for delivery
to final internal table.
ENDIF.
*LOOP AT T_VBEP1 WHERE VBELN = T_VBAP-VBELN AND POSNR = T_VBAP-POSNR.
LOOP AT T_VBEP1 WHERE VBELN = T_VBAP-VBELN AND POSNR =
T_VBAP-POSNR.
L_WMENG = T_VBEP1-WMENG + L_WMENG.
L_BMENG = T_VBEP1-BMENG + L_BMENG.
IF NOT L_DATE IS INITIAL.
IF ( L_DATE < T_VBEP1-EDATU ).
L_DATE = T_VBEP1-EDATU.
ENDIF.
ELSE.
L_DATE = T_VBEP1-EDATU.
ENDIF.
AT END OF POSNR.
READ TABLE T_VBEP1 INDEX SY-TABIX.
IF SY-SUBRC = 0.
L_DATE = T_VBEP1-EDATU.
ENDIF.
ENDAT.
ENDLOOP.
IF T_VBEP1-WMENG EQ T_VBEP1-BMENG.
T_DISP-LOGIC_1 = 0.
T_DISP-EDATU = T_VBEP1-EDATU.
ELSEIF L_WMENG EQ L_BMENG .
T_DISP-EDATU = L_DATE.
T_DISP-LOGIC_1 = L_WMENG.
ELSE.
T_DISP-EDATU = C_BLANK.
T_DISP-LOGIC_1 = L_WMENG.
ENDIF.
*Move the Sales document item to final internal table.
MOVE T_VBAP-POSNR TO T_DISP-POSNR.
*Move the Material Number to final internal table.
MOVE T_VBAP-MATNR TO T_DISP-MATNR.
*Move the Material number used by customer to final internal table.
MOVE T_VBAP-KDMAT TO T_DISP-KDMAT.
*Move the Shipping point to final internal table.
MOVE T_VBAP-VSTEL TO T_DISP-VSTEL.
*Move the Sales unit to final internal table.
PERFORM UNIT1 USING T_VBAP-VRKME CHANGING T_VBAP-VRKME.
MOVE T_VBAP-VRKME TO T_DISP-VRKME.
MOVE T_VBAP-VRKME TO T_DISP-VRKME_1.
*Move the Plant (Own or External) to final internal table.
MOVE T_VBAP-WERKS TO T_DISP-WERKS.
MOVE T_VBAP-WAERK TO T_DISP-WAERK.
*Move the Net price to final internal table.
IF T_VBAP-WAERK = C_US .
L_NETPR = T_VBAP-NETPR.
L_NETPR = L_NETPR / 100.
T_DISP-NETPR = L_NETPR.
CLEAR L_NETPR.
ELSE.
MOVE T_VBAP-NETPR TO T_DISP-NETPR.
ENDIF.
CLEAR L_NETPR.
*MOD02{
IF T_VBAP-WAERK = C_US .
L_NETWR = T_VBAP-NETWR.
L_NETWR = L_NETWR / 100.
T_DISP-NETWR = L_NETWR.
CLEAR L_NETWR.
ELSE.
MOVE T_VBAP-NETWR TO T_DISP-NETWR.
ENDIF.
CLEAR L_NETWR.
*}MOD02
*READ THE TABLE VBAK TO FETCH Sales Order Number,sales
*organisation,distribution channel,Document type,Delivery block
READ TABLE T_VBAK WITH KEY VBELN = T_VBEP-VBELN BINARY SEARCH.
IF SY-SUBRC EQ 0.
*Move the Sales order number to final internal table.
MOVE T_VBAK-VBELN TO T_DISP-VBELN.
PERFORM DELETE_LEADING_ZEROES CHANGING T_DISP-VBELN.
*Move the Sales organisation to final internal table.
MOVE T_VBAK-VKORG TO T_DISP-VKORG.
*Move the Distribution channel to final internal table.
MOVE T_VBAK-VTWEG TO T_DISP-VTWEG.
*Move the Document type to final internal table.
MOVE T_VBAK-AUART TO T_DISP-AUART.
{23-8-2007
READ TABLE T_TVLST WITH KEY LIFSP = T_VBAK-LIFSK
BINARY SEARCH.
IF SY-SUBRC EQ 0.
CONCATENATE T_VBAK-LIFSK
T_TVLST-VTEXT
INTO T_DISP-LIFSK
SEPARATED BY SPACE.
ENDIF.
ENDIF.
*READ THE TABLE VBKD TO FETCH Incoterms,Terms of payment key,Customer
*purchase order number
READ TABLE T_VBKD WITH KEY VBELN = T_VBAP-VBELN
BINARY SEARCH.
IF SY-SUBRC EQ 0.
*Move the Customer purchase order number to final internal table.
MOVE T_VBKD-BSTKD TO T_DISP-BSTKD.
*Move the Incoterms to final internal table.
MOVE T_VBKD-INCO1 TO T_DISP-INCO1.
*Move the Terms of payment to final internal table.
MOVE T_VBKD-ZTERM TO T_DISP-ZTERM.
ENDIF.
{ 23-8-2007
READ TABLE T_VBUK WITH KEY VBELN = T_VBEP-VBELN
BINARY SEARCH.
IF SY-SUBRC EQ 0.
IF T_VBUK-SPSTG EQ SPACE.
T_DISP-SPSTG = TEXT-TE1. "Not Blocked
ELSEIF T_VBUK-SPSTG EQ C_C.
T_DISP-SP -
Error in task -Downloading a file from report
Hi all,
This is my code to download the content of report to Excel,Problem i am getting when trying to put heading for numerical fields .Its getting '0' in the heading .For remaining Fields which are non-numberic its displaying nicely.Could any one solve this for me.
report zt11.
data : itab type mard occurs 0 .
select * from mard into table itab .
data: it_t001 type t001 occurs 0,
it_fields type dfies occurs 0 with header line,
begin of it_fnames occurs 0,
reptext like dfies-reptext,
end of it_fnames.
CALL FUNCTION 'GET_FIELDTAB'
EXPORTING
LANGU = SY-LANGU
ONLY = ' '
TABNAME = 'MARD'
WITHTEXT = 'X'
IMPORTING
HEADER =
RC =
TABLES
FIELDTAB = it_fields
EXCEPTIONS
INTERNAL_ERROR = 1
NO_TEXTS_FOUND = 2
TABLE_HAS_NO_FIELDS = 3
TABLE_NOT_ACTIV = 4
OTHERS = 5
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
loop at it_fields.
it_fnames-reptext = it_fields-reptext.
append it_fnames.
endloop.
CALL FUNCTION 'EXCEL_OLE_STANDARD_DAT'
EXPORTING
FILE_NAME = 'C:\T001'
CREATE_PIVOT = 0
DATA_SHEET_NAME = 'Companies'
PIVOT_SHEET_NAME = ' '
PASSWORD = ' '
PASSWORD_OPTION = 0
TABLES
PIVOT_FIELD_TAB =
DATA_TAB = itab
FIELDNAMES = it_fnames
EXCEPTIONS
FILE_NOT_EXIST = 1
FILENAME_EXPECTED = 2
COMMUNICATION_ERROR = 3
OLE_OBJECT_METHOD_ERROR = 4
OLE_OBJECT_PROPERTY_ERROR = 5
INVALID_FILENAME = 6
INVALID_PIVOT_FIELDS = 7
DOWNLOAD_PROBLEM = 8
OTHERS = 9
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
short dump : unable to interpret the "..... " as number.Hi,
You are not formatting the internal table for field labels correctly.
See the attached code and do accordingly.
This will help you.
Reward for useful answers.
report zesdr001
line-size 215
line-count 65
no standard page heading
message-id zv.
Tables Declaration
tables:vbrk, " Sales Document: Billing Header Data
mara, " Material Master Data
mbew, " Material Valuation data
mbewh, " Material Valuation: History Data
t001, " Company Codes
t001w, " Plants/Branches
konv, " Pricing Conditions Data
t179t, " Materials: Product hierarchies: Texts
tcurx, " Currency Conversion Table
vbuk, " Sales Document: Header Status data
tvko, " Organizational Unit: Sales Organizations
tvtw, " Organizational Unit: Dist.Channels
tspa, " Organizational Unit: Divisions
tvfk, " Billing Document Types
kna1. " Customer Master Data
Declaration of Data and Internal Tables
Internal table to store the Billing Details data.(VBRK,VBRP)
data: begin of itab_bill occurs 0,
vbeln like vbrk-vbeln, " Billing Document Number
fktyp like vbrk-fktyp, " Billing Category
vbtyp like vbrk-vbtyp, " Sales Doc Category
fkdat like vbrk-fkdat, " Billing doc date
fkart like vbrk-fkart, " Billing Doc type
bukrs like vbrk-bukrs, " Company Code
kurrf like vbrk-kurrf, " Exchange type
knumv like vbrk-knumv, " Condition Number
waerk like vbrk-waerk, " Currency
kunag like vbrk-kunag, " Sold to Party
vrkme like vbrp-vrkme, " sales Unit
posnr like vbrp-posnr, " Item Number
charg like vbrp-charg, " Batch Number
fkimg like vbrp-fkimg, " Billed quantity
werks like vbrp-werks, " Plant
matnr like vbrp-matnr, " Material Number
netwr like vbrp-netwr, " Net Value of the doc
wavwr like vbrp-wavwr, " Cost in Doc Currency
kdmat like vbap-kdmat, " Customer Material
end of itab_bill.
Internal table to write the report output when Customer Mode
Radiobutton is selected
data: begin of itab_out occurs 0,
kunag like vbrk-kunag, " Customer No
vbeln like vbrk-vbeln, " Billing Document Number
fkart like vbrk-fkart, " Billing Doc type
fktyp like vbrk-fktyp, " Billing Category
vbtyp like vbrk-vbtyp, " Sales Doc Category
fkdat like vbrk-fkdat, " Billing doc date
kunnr like kna1-kunnr, " Customer
bukrs like vbrk-bukrs, " Company Code
kurrf like vbrk-kurrf, " Exchange Rate
waerk like vbrk-waerk, " Currency
vrkme like vbrp-vrkme, " Sales Unit
posnr like vbrp-posnr, " Item Number
charg like vbrp-charg, " Batch Number
fkimg like vbrp-fkimg, " Billed quantity
werks like vbrp-werks, " Plant
matnr like vbrp-matnr, " Material NUmber
kdmat like vbap-kdmat, " Customer Material
bil_amt(16) type p decimals 2, " Bill Amount
mode(10), " Mode
density(10), " Density
sel_prc(16) type p decimals 2, " Selling Price
mvg_prs like mbew-verpr, " Moving Price
gp_mvp_amt like vbrp-netwr, " GrossProfit Amount(MVP)
gp_mvp_pr(6) type p decimals 2, " ,, percentage
end of itab_out.
Internal table to write the report output when Mode
Radiobutton is selected
data: begin of itab_out2 occurs 0,
mode(10),
vbeln like vbrk-vbeln, " Billing Document Number
fktyp like vbrk-fktyp, " Billing Category
vbtyp like vbrk-vbtyp, " Sales Doc Category
fkdat like vbrk-fkdat, " Billing doc date
kunag like vbrk-kunag, " Sold to party
kunnr like kna1-kunnr, " Customer
bukrs like vbrk-bukrs, " Company Code
kurrf like vbrk-kurrf, " Exchange Rate
waerk like vbrk-waerk, " Currency
vrkme like vbrp-vrkme, " Sales UNit
posnr like vbrp-posnr, " Item No
charg like vbrp-charg, " Batch Number
fkimg like vbrp-fkimg, " Billed quantity
werks like vbrp-werks, " Plant
matnr like vbrp-matnr, " Material Number
kdmat like vbap-kdmat, " Customer Material No
bil_amt(16) type p decimals 2, " Billing Amount
density(10), " density
sel_prc(16) type p decimals 4, " Selling Price
mvg_prs like mbew-verpr, " Moving Price
gp_mvp_amt like vbrp-netwr, " GrossProfit Amount(MVP)
gp_mvp_pr(6) type p decimals 2, " ,, percentage
end of itab_out2.
Internal table to write the report output when Density
Radiobutton is selected
data: begin of itab_out3 occurs 0,
mode(10),
density(10),
vbeln like vbrk-vbeln, " Billing Document Number
fktyp like vbrk-fktyp, " Billing Category
vbtyp like vbrk-vbtyp, " Sales Doc Category
fkdat like vbrk-fkdat, " Billing doc date
kunag like vbrk-kunag, " Sold to Party
kunnr like kna1-kunnr, " Customer
bukrs like vbrk-bukrs, " Company Code
kurrf like vbrk-kurrf, " Exchange Rate
waerk like vbrk-waerk, " Currency
vrkme like vbrp-vrkme, " Sales Unit
posnr like vbrp-posnr, " Item Number
charg like vbrp-charg, " Batch Number
fkimg like vbrp-fkimg, " Billed quantity
werks like vbrp-werks, " Plant
matnr like vbrp-matnr, " Material Number
kdmat like vbap-kdmat, " Customer Material
bil_amt(16) type p decimals 2, " Bill Amount
sel_prc(16) type p decimals 4, " Selling Price
mvg_prs like mbew-verpr, " Moving Price
gp_mvp_amt like vbrp-netwr, " GrossProfit Amount(MVP)
gp_mvp_pr(6) type p decimals 2, " ,, percentage
end of itab_out3.
*-Internal Table to Hold data to be downloaded to file
data: begin of itab_out1 occurs 0,
kunag(10), " Customer
vbeln(10), " Billing Doc No
fkdat(10), " Bill Date
posnr(6), " Item No
mode(6), " Mode
density(6), " Density
matnr(18), " Material
charg(10), " Batch Number
fkimg like vbrp-fkimg, " Billed quantity
vrkme(4), " Sales Unit
sel_prc(14), " Selling Price
bil_amt(15) type p decimals 2, " Billing Amount
waerk(4), " Currency
mvg_prs(15), " Moving Price
gp_mvp_amt like vbrp-netwr, " Gross profit Amount(MVP)
gp_mvp_pr(15), " ,, percentage
kdmat(35), " Customer Material
end of itab_out1.
*Internal Table
data: begin of fieldnames occurs 0,
title(25) type c,
table(5) type c,
field(5) type c,
type(1) type c,
end of fieldnames.
Declaration Of Variables
data: w_period like bapi0002_4-fiscal_period,
w_year like bapi0002_4-fiscal_year,
w_date like bsad-budat,
w_lin type i. "No.of lines in Internal Table
data: t_fkimg like vbrp-fkimg,
t_bil_amt(8) type p decimals 2,
t_gp_mvp_amt(8) type p decimals 2,
t_gr_fkimg like vbrp-fkimg,
t_gr_bil_amt(8) type p decimals 2,
t_gr_gp_mvp_amt(8) type p decimals 2,
t_efkimg like vbrp-fkimg,
t_ebil_amt(8) type p decimals 2,
t_egp_mvp_amt(8) type p decimals 2.
data:f_flg .
Select-Options
selection-screen: begin of block b with frame.
selection-screen : begin of block b1 with frame title text-001.
select-options:s_bukrs for t001-bukrs no intervals no-extension
obligatory,
s_vkorg for tvko-vkorg no intervals no-extension,
s_vtweg for tvtw-vtweg no intervals no-extension,
s_spart for tspa-spart no intervals no-extension,
s_werks for t001w-werks no intervals no-extension,
s_kunag for kna1-kunnr,
s_vbeln for vbuk-vbeln,
s_fkart for tvfk-fkart,
s_fkdat for vbrk-fkdat obligatory.
selection-screen begin of line.
selection-screen comment 1(20) text-008.
selection-screen end of line.
selection-screen begin of line.
parameters p_cust type c radiobutton group cust.
selection-screen comment 3(20) text-004 for field p_cust.
selection-screen end of line.
selection-screen begin of line.
parameters p_mode type c radiobutton group cust.
selection-screen comment 3(20) text-006 for field p_mode.
selection-screen end of line.
selection-screen begin of line.
parameters p_dens type c radiobutton group cust.
selection-screen comment 3(20) text-007 for field p_dens.
selection-screen end of line.
selection-screen: end of block b1.
selection-screen : begin of block b2 with frame title text-002.
parameters: p_dwnlod as checkbox,
p_file like rlgrap-filename. " default 'C:\zesdr001'.
selection-screen: end of block b2.
selection-screen: end of block b.
*******At Selection Screen********************************************
at selection-screen.
At Selection Screen on Value Request
at selection-screen on value-request for p_file.
perform f4_help.
Checking for the input values of selection screen.
perform screen_check.
Top Of Page***************************************************
top-of-page.
perform rep_headers.
*******Start of Selection*********************************************
start-of-selection.
Selecting data from the database tables
perform invoice_selection.
describe table itab_bill lines w_lin.
if w_lin = 0.
message i008. " No Data Found for the Given Selection Criteria
else.
Moving the data records into output internal table
perform bill_details.
When Customer Radio button is selected
if p_cust eq 'X'.
perform invoice_output_cust.
When Mode Radio button is selected
elseif p_mode eq 'X'.
perform invoice_output_mode.
When density Radio button is selected
elseif p_dens eq 'X'.
perform invoice_output_dens.
endif.
endif.
*******End of Selection***********************************************
end-of-selection.
perform init_fieldnames.
if p_dwnlod = 'X'.
perform read_data_for_dowlload.
perform down_load_to_file using p_file.
perform download_excel using p_file.
endif.
*& Form screen_check
Ckecking for Selection Screen fields Validation
form screen_check.
Validation of Sales Organization
clear tvko.
if not s_vkorg-low is initial.
select vkorg from tvko up to 1 rows
into tvko-vkorg
where vkorg in s_vkorg.
endselect.
if sy-subrc ne 0.
message e009. " Invalid Sales Organization
endif.
endif.
Validation of Distribution Channel
clear tvtw.
if not s_vtweg-low is initial.
select vtweg from tvtw up to 1 rows
into tvtw-vtweg
where vtweg in s_vtweg.
endselect.
if sy-subrc ne 0.
message e010. " Invalid Distribution Channel
endif.
endif.
Validation of Division
clear tspa.
if not s_spart-low is initial.
select spart from tspa up to 1 rows
into tspa-spart
where spart in s_spart.
endselect.
if sy-subrc ne 0.
message e011. " Invalid Division
endif.
endif.
Validation for company code
clear t001.
if not s_bukrs-low is initial.
select single bukrs from t001
into t001-bukrs
where bukrs in s_bukrs.
if sy-subrc <> 0.
message e007. " Enter valid Company Code
endif.
endif.
Validation of billing Document Type
clear tvfk.
if not s_fkart is initial.
select fkart from tvfk up to 1 rows
into tvfk-fkart
where fkart in s_fkart.
endselect.
if sy-subrc ne 0.
message e012. " Invalid Billing Document Type
endif.
endif.
Validation of Billing Document Number
clear vbuk.
if not s_vbeln is initial.
select vbeln from vbuk up to 1 rows
into vbuk-vbeln
where vbeln in s_vbeln and
vbtyp = 'M'.
endselect.
if sy-subrc ne 0.
message e013. " Invalid Billing Doc Number
endif.
endif.
Validation of Customer
clear kna1.
if not s_kunag is initial.
select kunnr from kna1 up to 1 rows
into kna1-kunnr
where kunnr in s_kunag.
endselect.
if sy-subrc ne 0.
message e014. " Invalid Customer Number
endif.
endif.
Validation of Plant
clear t001w.
if not s_werks is initial.
select werks from t001w up to 1 rows
into t001w-werks
where werks in s_werks.
endselect.
if sy-subrc ne 0.
message e004. " Invalid Plant Number
endif.
endif.
Validation for File path to download
if p_dwnlod = 'X'.
if p_file is initial.
message e006. " Enter the Valid file path to Download
endif.
endif.
endform. "screen_check
FORM invoice_selection *
Selecting data from the database tables
form invoice_selection.
select
a~vbeln " Billing Doc Number
a~fktyp " Billing Category
a~vbtyp " Sales Doc category
a~fkdat " Billing doc date
a~fkart " Billing doc type
a~bukrs " Company code
a~kurrf " Exchange rate
a~knumv " Condition record Number
a~waerk " Currency
a~kunag " Sold to Party
b~vrkme " Sales Unit
b~posnr " Item Number
b~charg " Batch Number
b~fkimg " Billed quantity
b~werks " Plant
b~matnr " Material Number
b~netwr " Net Value of Bill Doc
b~wavwr " Cost in Doc Currency
c~kdmat " Customer Material
into table itab_bill
from vbrk as a join vbrp as b
on bvbeln = avbeln
join vbap as c
on baubel = cvbeln and
baupos = cposnr
where a~vbeln in s_vbeln and
a~fkdat in s_fkdat and
a~bukrs in s_bukrs and
a~vtweg in s_vtweg and
a~vkorg in s_vkorg and
a~spart in s_spart and
a~fkart in s_fkart and
b~werks in s_werks and
a~kunag in s_kunag and
a~sfakn eq ' ' and
a~fksto eq ' ' .
endform .
FORM bill_details *
appending data into itab_out internal table
form bill_details.
sort itab_bill by vbeln.
select single waers from t001 into t001-waers
where bukrs in s_bukrs.
data:f_txt1(10),f_txt2(10),f_txt3(10).
loop at itab_bill.
itab_out-vbeln = itab_bill-vbeln.
itab_out-fktyp = itab_bill-fktyp.
itab_out-vbtyp = itab_bill-vbtyp.
itab_out-fkdat = itab_bill-fkdat.
itab_out-fkart = itab_bill-fkart.
itab_out-bukrs = itab_bill-bukrs.
itab_out-kurrf = itab_bill-kurrf.
itab_out-waerk = itab_bill-waerk.
itab_out-kunag = itab_bill-kunag.
itab_out-vrkme = itab_bill-vrkme.
itab_out-posnr = itab_bill-posnr.
itab_out-charg = itab_bill-charg.
itab_out-fkimg = itab_bill-fkimg.
itab_out-werks = itab_bill-werks.
itab_out-matnr = itab_bill-matnr.
itab_out-kdmat = itab_bill-kdmat.
select single currdec from tcurx into tcurx-currdec
where currkey eq itab_out-waerk.
if sy-subrc eq '0' .
if tcurx-currdec eq '0'.
itab_bill-netwr = itab_bill-netwr * 100.
itab_bill-wavwr = itab_bill-wavwr * 100.
endif.
endif.
itab_out-bil_amt = itab_bill-netwr.
clear : konv.
Pricing data from KONV table
select single kbetr kwert kpein from konv into
(konv-kbetr,konv-kwert,konv-kpein)
where knumv = itab_bill-knumv and
kposn = itab_bill-posnr and
kschl eq 'ZSP1' and
krech eq 'C' and
kinak eq ' '.
Currency conversion
select single currdec from tcurx into tcurx-currdec
where currkey eq itab_out-waerk.
if sy-subrc eq '0' .
if tcurx-currdec eq '0'.
konv-kbetr = konv-kbetr * 100.
endif.
endif.
Unit Price
itab_out-sel_prc = konv-kbetr.
Unit Price Calculation
if not konv-kpein is initial.
itab_out-sel_prc = itab_out-sel_prc / konv-kpein .
endif.
Call Function to get the Period for the given Billing date
and Company Code
perform get_period.
Selecting Material Valuation Data
clear:mbew.
if itab_out-fktyp eq 'L'.
select single
lfmon lfgja verpr stprs vmver vmstp
from mbew
into (mbew-lfmon,mbew-lfgja,mbew-verpr,
mbew-stprs,mbew-vmver,mbew-vmstp)
where matnr = itab_out-matnr
and bwkey = itab_out-werks.
if mbew-lfmon = w_period and mbew-lfgja = w_year.
select single currdec from tcurx into tcurx-currdec
where currkey eq t001-waers.
if sy-subrc eq '0' .
if tcurx-currdec eq '0'.
mbew-stprs = mbew-stprs * 100.
mbew-verpr = mbew-verpr * 100.
endif.
endif.
if itab_out-waerk eq t001-waers.
itab_out-mvg_prs = mbew-verpr ."/ itab_out-kurrf.
else.
itab_out-mvg_prs = mbew-verpr / itab_out-kurrf.
endif.
else.
clear:mbewh.
select single
lfmon lfgja verpr stprs
from mbewh
into (mbewh-lfmon,mbewh-lfgja,mbewh-verpr,
mbewh-stprs)
where matnr = itab_out-matnr
and bwkey = itab_out-werks
and lfmon = w_period
and lfgja = w_year.
select single currdec from tcurx into tcurx-currdec
where currkey eq t001-waers.
if sy-subrc eq '0' .
if tcurx-currdec eq '0'.
mbewh-verpr = mbewh-verpr * 100.
endif.
endif.
if itab_out-waerk eq t001-waers.
itab_out-mvg_prs = mbewh-verpr ."/ itab_out-kurrf.
else.
itab_out-mvg_prs = mbewh-verpr / itab_out-kurrf.
endif.
if itab_out-mvg_prs is initial.
select single
lfmon lfgja verpr stprs vmver vmstp
from mbew
into (mbew-lfmon,mbew-lfgja,mbew-verpr,
mbew-stprs,mbew-vmver,mbew-vmstp)
where matnr = itab_out-matnr
and bwkey = itab_out-werks.
select single currdec from tcurx
into tcurx-currdec
where currkey eq t001-waers.
if sy-subrc eq '0' .
if tcurx-currdec eq '0'.
mbew-verpr = mbew-verpr * 100.
endif.
endif.
if itab_out-waerk eq t001-waers.
itab_out-mvg_prs = mbew-verpr ."/ itab_out-kurrf.
else.
itab_out-mvg_prs = mbew-verpr / itab_out-kurrf.
endif.
endif.
endif.
endif.
To find Density and Mode from MARA and T179T tables
clear :mara,t179t.
select single prdha from mara
into mara-prdha
where matnr = itab_out-matnr.
select single vtext from t179t
into t179t-vtext
where spras = 'EN' and
prodh = mara-prdha(4).
split t179t-vtext at ' ' into f_txt1 f_txt2 f_txt3.
itab_out-mode = f_txt2.
itab_out-density = f_txt3.
if not itab_out-mvg_prs is initial.
if itab_out-fktyp eq 'L'.
itab_out-gp_mvp_amt = itab_out-bil_amt - itab_out-mvg_prs *
itab_out-fkimg.
else.
itab_out-gp_mvp_amt = '0'.
endif.
endif.
if not itab_out-mvg_prs is initial
and not itab_out-sel_prc is initial.
itab_out-gp_mvp_pr = ( itab_out-sel_prc - itab_out-mvg_prs )
/ itab_out-sel_prc * 100.
endif.
append itab_out.
clear itab_out.
endloop.
loop at itab_out.
if itab_out-vbtyp eq 'N' or itab_out-vbtyp eq 'O'.
itab_out-fkimg = itab_out-fkimg * -1.
itab_out-sel_prc = itab_out-sel_prc * -1.
itab_out-bil_amt = itab_out-bil_amt * -1.
itab_out-mvg_prs = itab_out-mvg_prs * -1.
itab_out-gp_mvp_amt = itab_out-gp_mvp_amt * -1.
itab_out-gp_mvp_pr = itab_out-gp_mvp_pr * -1.
If the bill amount is 0 then the quantity should also be 0.
if itab_out-bil_amt = 0.
itab_out-fkimg = 0.
endif.
Check if the Bill amount is Credit memo amount, then the gross profit
should also be the same bill amount irrespecitve of +ve or -ve.
if itab_out-gp_mvp_amt = 0.
move: itab_out-bil_amt to itab_out-gp_mvp_amt.
endif.
modify itab_out.
clear itab_out.
endif.
endloop.
endform.
*& Form get_period
Getting Document Period
form get_period.
clear :w_period,w_year,w_date.
concatenate itab_out-fkdat(4)
itab_out-fkdat+4(2)
itab_out-fkdat+6(2)
into w_date.
call function 'BAPI_COMPANYCODE_GET_PERIOD'
exporting
companycodeid = itab_out-bukrs
posting_date = w_date
importing
fiscal_year = w_year
fiscal_period = w_period.
endform. " get_period
*& Form invoice_output_cust
Report Output when customer is selected
form invoice_output_cust.
write at /1(214) sy-uline.
sort itab_out by kunag vbeln fkart posnr fkdat.
loop at itab_out.
if f_flg = 'X'.
format color col_normal intensified off.
f_flg = ' '.
else.
format color col_normal intensified on.
f_flg = 'X'.
endif.
at new kunag.
read table itab_out index sy-tabix.
endat.
write: /01 sy-vline, 2(10) itab_out-kunag,
12 sy-vline, 13(10) itab_out-vbeln,
23 sy-vline, 24(6) itab_out-posnr,
30 sy-vline, 31(10) itab_out-fkdat,
41 sy-vline, 42(6) itab_out-mode,
48 sy-vline, 49(7) itab_out-density,
56 sy-vline, 57(18) itab_out-matnr,
75 sy-vline, 76(10) itab_out-charg,
86 sy-vline,
87(13) itab_out-fkimg unit itab_out-vrkme no-sign,
102(3) itab_out-vrkme,
105 sy-vline,
106(14) itab_out-sel_prc currency konv-waers no-sign,
120 sy-vline,
121(15) itab_out-bil_amt currency vbrk-waerk no-sign,
138(3) itab_out-waerk,
141 sy-vline,
142(15) itab_out-mvg_prs currency vbrk-waerk no-sign,
157 sy-vline,
158(15) itab_out-gp_mvp_amt currency vbrk-waerk no-sign,
173 sy-vline,174(6) itab_out-gp_mvp_pr no-sign ,
180 sy-vline,181(33) itab_out-kdmat,
214 sy-vline.
t_fkimg = t_fkimg + itab_out-fkimg.
t_bil_amt = t_bil_amt + itab_out-bil_amt.
t_gp_mvp_amt = t_gp_mvp_amt + itab_out-gp_mvp_amt.
t_gr_fkimg = t_gr_fkimg + itab_out-fkimg.
t_gr_bil_amt = t_gr_bil_amt + itab_out-bil_amt.
t_gr_gp_mvp_amt = t_gr_gp_mvp_amt + itab_out-gp_mvp_amt.
at end of kunag.
format reset.
format color col_total intensified off.
write:/1(214) sy-uline.
write:/01 sy-vline,
02 'Sub Total of Customer:'(035), itab_out-kunag,
87(13) t_fkimg unit itab_out-vrkme no-sign,
121(15) t_bil_amt no-sign,
158(15) t_gp_mvp_amt no-sign,
214 ' ',
/1(214) sy-uline.
clear: t_fkimg, t_bil_amt, t_gp_mvp_amt.
endat.
at last.
write:/01 sy-vline,
02 'Grand Total :'(032),
87(13) t_gr_fkimg unit itab_out-vrkme no-sign,
121(15) t_gr_bil_amt no-sign,
158(15) t_gr_gp_mvp_amt no-sign,
214 ' '.
endat.
format color off.
endloop.
write at /1(214) sy-uline.
endform. "invoice_output_cust
*& Form invoice_output_mode
Report Output
form invoice_output_mode.
loop at itab_out.
move-corresponding itab_out to itab_out2.
append itab_out2.
clear: itab_out2.
endloop.
write at /1(214) sy-uline.
sort itab_out2 by mode vbeln posnr fkdat.
loop at itab_out2.
if f_flg = 'X'.
format color col_normal intensified off.
f_flg = ' '.
else.
format color col_normal intensified on.
f_flg = 'X'.
endif.
at new mode.
read table itab_out2 index sy-tabix.
endat.
write: /01 sy-vline, 2(10) itab_out2-kunag,
12 sy-vline, 13(10) itab_out2-vbeln,
23 sy-vline, 24(6) itab_out2-posnr,
30 sy-vline, 31(10) itab_out2-fkdat,
41 sy-vline, 42(6) itab_out2-mode,
48 sy-vline, 49(7) itab_out2-density,
56 sy-vline, 57(18) itab_out2-matnr,
75 sy-vline, 76(10) itab_out2-charg,
86 sy-vline,
87(13) itab_out2-fkimg unit itab_out2-vrkme no-sign,
102(3) itab_out2-vrkme,
105 sy-vline,
106(14) itab_out2-sel_prc currency vbrk-waerk no-sign,
120 sy-vline,
121(15) itab_out2-bil_amt currency vbrk-waerk no-sign,
138(3) itab_out2-waerk,
141 sy-vline,
142(15) itab_out2-mvg_prs currency vbrk-waerk no-sign,
157 sy-vline,
158(15) itab_out2-gp_mvp_amt currency vbrk-waerk no-sign,
173 sy-vline,174(6) itab_out2-gp_mvp_pr no-sign,
180 sy-vline,181(33) itab_out2-kdmat,
214 sy-vline.
t_fkimg = t_fkimg + itab_out2-fkimg.
t_bil_amt = t_bil_amt + itab_out2-bil_amt.
t_gp_mvp_amt = t_gp_mvp_amt + itab_out2-gp_mvp_amt.
t_gr_fkimg = t_gr_fkimg + itab_out2-fkimg.
t_gr_bil_amt = t_gr_bil_amt + itab_out2-bil_amt.
t_gr_gp_mvp_amt = t_gr_gp_mvp_amt + itab_out2-gp_mvp_amt.
at end of mode.
format reset.
format color col_total intensified off.
write:/1(214) sy-uline.
write:/01 sy-vline,
02 'Sub Total of Mode :'(033), itab_out2-mode,
87(13) t_fkimg unit itab_out-vrkme no-sign,
121(15) t_bil_amt no-sign,
158(15) t_gp_mvp_amt no-sign,
214 ' ',
/1(214) sy-uline.
clear: t_fkimg, t_bil_amt, t_gp_mvp_amt.
endat.
at last.
write:/01 sy-vline,
02 'Grand Total :'(032),
87(13) t_gr_fkimg unit itab_out-vrkme no-sign,
121(15) t_gr_bil_amt no-sign,
158(15) t_gr_gp_mvp_amt no-sign,
214 ' '.
endat.
format color off.
endloop.
write at /1(214) sy-uline.
endform. "invoice_output_mode
*& Form invoice_output_dens
Report Output
form invoice_output_dens.
loop at itab_out.
move-corresponding itab_out to itab_out3.
append itab_out3.
clear: itab_out3.
endloop.
write at /1(214) sy-uline.
sort itab_out3 by mode density vbeln posnr fkdat.
loop at itab_out3.
if f_flg = 'X'.
format color col_normal intensified off.
f_flg = ' '.
else.
format color col_normal intensified on.
f_flg = 'X'.
endif.
at new mode.
endat.
at new density.
read table itab_out3 index sy-tabix.
endat.
write: /01 sy-vline, 2(10) itab_out3-kunag,
12 sy-vline, 13(10) itab_out3-vbeln,
23 sy-vline, 24(6) itab_out3-posnr,
30 sy-vline, 31(10) itab_out3-fkdat,
41 sy-vline, 42(6) itab_out3-mode,
48 sy-vline, 49(7) itab_out3-density,
56 sy-vline, 57(18) itab_out3-matnr,
75 sy-vline, 76(10) itab_out3-charg,
86 sy-vline,
87(13) itab_out3-fkimg unit itab_out3-vrkme no-sign,
102(3) itab_out3-vrkme,
105 sy-vline,106(14) itab_out3-sel_prc no-sign,
120 sy-vline,
121(15) itab_out3-bil_amt currency vbrk-waerk no-sign,
138(3) itab_out3-waerk,
141 sy-vline,142(15) itab_out3-mvg_prs no-sign
currency vbrk-waerk,
157 sy-vline,158(15) itab_out3-gp_mvp_amt no-sign
currency vbrk-waerk,
173 sy-vline,174(6) itab_out3-gp_mvp_pr no-sign,
180 sy-vline,181(33) itab_out3-kdmat,
214 sy-vline.
t_efkimg = t_efkimg + itab_out3-fkimg.
t_ebil_amt = t_ebil_amt + itab_out3-bil_amt.
t_egp_mvp_amt = t_egp_mvp_amt + itab_out3-gp_mvp_amt.
t_fkimg = t_fkimg + itab_out3-fkimg.
t_bil_amt = t_bil_amt + itab_out3-bil_amt.
t_gp_mvp_amt = t_gp_mvp_amt + itab_out3-gp_mvp_amt.
t_gr_fkimg = t_gr_fkimg + itab_out3-fkimg.
t_gr_bil_amt = t_gr_bil_amt + itab_out3-bil_amt.
t_gr_gp_mvp_amt = t_gr_gp_mvp_amt + itab_out3-gp_mvp_amt.
at end of density.
format reset.
format color col_total intensified off.
write:/1(214) sy-uline.
write:/01 sy-vline,
02 'Sub Total of Density :'(034), itab_out3-density,
87(13) t_efkimg unit itab_out-vrkme no-sign,
121(15) t_ebil_amt currency vbrk-waerk no-sign,
158(15) t_egp_mvp_amt currency vbrk-waerk no-sign,
214 ' ',
/1(214) sy-uline.
clear: t_efkimg, t_ebil_amt,t_egp_mvp_amt.
endat.
at end of mode.
format reset.
format color col_total intensified off.
write:/01 sy-vline,
02 'Sub Total of Mode :'(033), itab_out3-mode,
87(13) t_fkimg unit itab_out-vrkme no-sign,
121(15) t_bil_amt no-sign,
158(15) t_gp_mvp_amt no-sign,
214 ' ',
/1(214) sy-uline.
clear: t_fkimg, t_bil_amt, t_gp_mvp_amt.
endat.
at last.
write:/01 sy-vline,
02 'Grand Total :'(032),
87(13) t_gr_fkimg unit itab_out-vrkme no-sign,
121(15) t_gr_bil_amt no-sign,
158(15) t_gr_gp_mvp_amt no-sign,
214 ' '.
endat.
format color off.
endloop.
write at /1(214) sy-uline.
endform. "invoice_output_dens
*& Form f4_help
To Get F4 Help to Select File Name
form f4_help.
call function 'F4_FILENAME'
exporting
program_name = sy-cprog
dynpro_number = syst-dynnr
field_name = 'P_FILE'
importing
file_name = p_file.
endform. " f4_help
*& Form rep_headers
Report Header
form rep_headers.
format color col_heading on.
format color col_heading on.
select single butxt from t001 into t001-butxt
where bukrs = s_bukrs-low.
skip 2.
write: /2 t001-butxt, 92 'BILLING ANALYSIS'(003),
190 'Date :'(010),sy-datum.
write :/2 'Company Code :'(011), s_bukrs-low ,
85 'Billing Date :'(012) , s_fkdat-low , '-' ,s_fkdat-high ,
190 'Page :'(013), sy-pagno,
214 ' '.
write at /1(214) sy-uline.
write: /1 sy-vline, 2(10) 'Customer'(004) centered,
12 sy-vline, 13(10) 'Billing'(009) centered,
23 sy-vline, 24(6) 'Billing'(009) centered,
30 sy-vline, 31(10) 'Billing'(009) centered,
41 sy-vline, 42(6) 'Mode'(006) centered,
48 sy-vline, 49(7) 'Density'(014) centered,
56 sy-vline, 57(18) 'Material'(015) centered,
75 sy-vline, 76(10) 'Batch'(016) centered,
86 sy-vline, 87(13) 'Quantity'(017) centered,102(3) 'UOM'(027),
105 sy-vline, 106(14) 'Selling'(018) centered ,
120 sy-vline, 121(15) 'Billing'(009) centered,
138(3) 'Cur'(028),
141 sy-vline, 142(15) 'Mvg.Avg.Price'(020) centered,
157 sy-vline, 158(22) 'Gross Profit(MVP)'(022) centered,
180 sy-vline, 181(33) 'Customer Material'(023) centered,
214 sy-vline.
write: /1 sy-vline, 2(10) 'Code'(024) centered,
12 sy-vline, 13(10) 'Document'(025) centered,
23 sy-vline, 24(6) 'Item'(026) centered,
30 sy-vline, 31(10) 'Date'(036) centered,
41 sy-vline,
48 sy-vline,
56 sy-vline,
75 sy-vline,
86 sy-vline,
105 sy-vline, 106(14) 'Price'(030) centered ,
120 sy-vline, 121(15) 'Amount'(031) centered,
141 sy-vline, 142(15) '(per Unit)'(019) centered,
157 sy-vline, 158(15) 'Amount'(031) centered,
173 sy-vline, 174(6) ' % '(029) centered,
180 sy-vline,
214 sy-vline.
format color off.
endform. " rep_headers
*& Form init_fieldnames
Initialise all the fields to download in Excel Data File
form init_fieldnames.
perform append_fieldname using text-004 'itab_out1'
'KUNAG' 'X'.
perform append_fieldname using text-037 'itab_out1'
'VBELN' 'X'.
perform append_fieldname using text-036 'itab_out1'
'FKDAT' 'X'.
perform append_fieldname using text-038 'itab_out1'
'POSNR' 'X'.
perform append_fieldname using text-006 'itab_out1'
'MODE' 'X'.
perform append_fieldname using text-014 'itab_out1'
'DENSITY' 'X'.
perform append_fieldname using text-015 'itab_out1'
'MATNR' 'X'.
perform append_fieldname using text-016 'itab_out1'
'CHARG' 'X'.
perform append_fieldname using text-017 'itab_out1'
'FKIMG' 'X'.
perform append_fieldname using text-039 'itab_out1'
'VRKME' 'X'.
perform append_fieldname using text-040 'itab_out1'
'SEL_PRC' 'X'.
perform append_fieldname using text-041 'itab_out1'
'BIL_AMT' 'X'.
perform append_fieldname using text-028 'itab_out1'
'WAERK' 'X'.
perform append_fieldname using text-020 'itab_out1'
'MVG_PRS' 'X'.
perform append_fieldname using text-044 'itab_out1'
'GP_MVP_AMT' 'X'.
perform append_fieldname using text-045 'itab_out1'
'GP_MVP_PR' 'X'.
perform append_fieldname using text-023 'itab_out1'
'KDMAT' 'X'.
endform.
*& Form append_fieldname
Appending field Names
form append_fieldname using p_title p_table p_field p_type.
clear: fieldnames.
fieldnames-title = p_title.
fieldnames-ta -
Hi all,
I have a production issue and my report takes around 4 to 5 hours for its execution and i've finded out that the 2nd from first query has a corresponding tale with it and when i modified it to below one its displaying the output and when i check it in ST05 i have no i_bsad and i_bsid table query times mentioned in it.Where in when i have the corresponding tale included i get the above both queries time interval and this table works fine.(i have to have this select statements included for my business scenario logic).But because of the inclusion of this this both table are eating lot of time.Need to include them and reduce the time comsumption of the both the tables.
SELECT vbeln fkart vbtyp knumv fkdat gjahr kdgrp rfbsk zterm bukrs
netwr kunrg kunag
bstnk_vf xblnr mwsbk rfbsk
INTO TABLE i_vbrk
FROM vbrk WHERE
vbeln IN zvbeln AND
vbtyp IN zvbtyp AND
fkdat IN zfkdat AND
bukrs IN zbukrs AND
kunag IN zkunag AND
bstnk_vf IN zbstnkvf AND
xblnr IN zxblnr AND
fksto NE 'X' .
SELECT vbeln fkart vbtyp knumv fkdat bukrs gjahr kdgrp zterm netwr
kunrg kunag
bstnk_vf xblnr mwsbk rfbsk
INTO CORRESPONDING FIELDS OF TABLE i_vbrk
FROM vbrk WHERE
vbeln IN zvbeln AND
kunag IN zkunag AND
fkdat IN zfkdat AND
xblnr IN zxblnr AND
bstnk_vf IN zbstnkvf AND
vbtyp IN zvbtyp AND
fksto NE 'X' AND
bukrs IN zbukrs .
This are the both table which has to be included ,
SELECT belnr buzei dmbtr shkzg APPENDING TABLE i_bsad
FROM bsad
FOR ALL ENTRIES IN l_tab_temp
WHERE
bukrs EQ l_tab_temp-bukrs AND
gjahr EQ l_tab_temp-gjahr AND
belnr EQ l_tab_temp-vbeln.
SELECT belnr buzei shkzg dmbtr rebzg FROM bsid APPENDING CORRESPONDING FIELDS OF TABLE i_bsid
FOR ALL ENTRIES IN l_tab_temp
WHERE bukrs EQ l_tab_temp-bukrs
"PRA927038 "PRA927150 vbeln pick
AND NOT AUGBL = SPACE
*AND BELNR = L_TAB_TEMP-VBELN
AND gjahr = l_tab_temp-gjahr
AND gjahr IN zgjahr.
AND vbeln = l_tab_temp-vbeln .
AND rebzg = l_tab_temp-vbeln
AND rebzj = l_tab_temp-gjahr.
Can any one help me in tuning this if u guys still have questions please ask me.And for your understanding this my coding please go through it
*& Report ZAR_REC001 *
REPORT zar_rec001 NO STANDARD PAGE HEADING
LINE-SIZE 355
LINE-COUNT 60
MESSAGE-ID zuserm.
TYPE-POOLS : slis.
TABLES : vbrk,
vbrp,
bsid,
bsad,
kna1,
lfa1,
knvv,
zar1_detail,
zar1_struc1,
vbak,
vbap,
zcustomfields,
konv,
zvlxxsr,
mara,
t023t,
sscrfields,
konp,
tvarv,
tvkgr,
tvgrt. "IMR928046
TYPES : BEGIN OF t_tvkgr,
vkgrp TYPE vbrp-vkgrp,
END OF t_tvkgr.
TYPES : BEGIN OF ty_vbrp, "IMR928046
vkgrp TYPE vkgrp,
END OF ty_vbrp.
DATA : BEGIN OF i_zgjahr OCCURS 0,
zgjahr LIKE bsid-gjahr,
END OF i_zgjahr.
DATA : BEGIN OF i_vbrk OCCURS 0,
vbeln LIKE vbrk-vbeln,
fkart LIKE vbrk-fkart,
vbtyp LIKE vbrk-vbtyp,
knumv LIKE vbrk-knumv,
fkdat LIKE vbrk-fkdat,
gjahr LIKE vbrk-gjahr, "KRISHNA
kdgrp LIKE vbrk-kdgrp,
zterm LIKE vbrk-zterm,
bukrs LIKE vbrk-bukrs, "krishna
rfbsk LIKE vbrk-rfbsk, " KYH25882
netwr LIKE vbrk-netwr,
kunrg LIKE vbrk-kunrg,
kunag LIKE vbrk-kunag,
bstnk_vf LIKE vbrk-bstnk_vf,
xblnr LIKE vbrk-xblnr,
mwsbk LIKE vbrk-mwsbk,
name1 LIKE kna1-name1,
vkgrp LIKE knvv-vkgrp,
bezei LIKE tvgrt-bezei, "IMR928046
partialpmt LIKE vbrk-netwr,
opendmbtr LIKE vbrk-netwr,
gmdpercent LIKE vbrp-netwr,
gmdnetwr LIKE vbrp-netwr,
aubel LIKE vbrp-aubel,
aupos LIKE vbrp-aupos,
ihrez LIKE vbak-ihrez,
kdmat LIKE vbap-kdmat,
mwsbp LIKE vbrp-mwsbp,
kzwi5 LIKE vbrp-kzwi5,
due1 LIKE vbrp-netwr,
due2 LIKE vbrp-netwr,
due3 LIKE vbrp-netwr,
due4 LIKE vbrp-netwr,
due5 LIKE vbrp-netwr,
due6 LIKE vbrp-netwr.
DATA: END OF i_vbrk.
DATA : BEGIN OF i_vbrp OCCURS 0.
INCLUDE STRUCTURE zar1_struc1.
DATA: zzp_mfrnr LIKE vbrp-zzp_mfrnr,
vgbel LIKE vbrp-vgbel,
vgpos LIKE vbrp-vgpos.
DATA : END OF i_vbrp.
DATA : d_vbrp LIKE i_vbrp OCCURS 0 WITH HEADER LINE.
DATA : BEGIN OF d1_vbrp OCCURS 0.
INCLUDE STRUCTURE zar1_detail.
DATA : END OF d1_vbrp.
DATA : BEGIN OF i_bsad OCCURS 0,
belnr LIKE bsad-belnr, "krishna
buzei LIKE bsad-buzei, "Vijay
dmbtr LIKE bsad-dmbtr, "krishna
shkzg. "ppo924471
DATA : END OF i_bsad.
*--- begin of ppo924396
DATA : BEGIN OF i_bsid OCCURS 0,
augbl like bsad-augbl, "PRA927038
vbeln LIKE bsid-vbeln, "vma928512
rebzg LIKE bsid-rebzg, "vma928512
belnr LIKE bsid-belnr,
buzei LIKE bsid-buzei,
shkzg LIKE bsad-shkzg, "ppo924471
dmbtr LIKE bsad-dmbtr.
DATA : END OF i_bsid.
DATA : l_partialpmt LIKE bsad-dmbtr.
*--- end of ppo924396
DATA : BEGIN OF i_kunag OCCURS 0,
kunag LIKE vbrk-kunag.
DATA : END OF i_kunag.
DATA : BEGIN OF i_knumv OCCURS 0,
knumv LIKE vbrk-knumv.
DATA : END OF i_knumv.
DATA: BEGIN OF i_konv OCCURS 0,
knumv LIKE konv-knumv,
kposn LIKE konv-kposn,
kschl LIKE konv-kschl,
knumh LIKE konv-knumh,
kbetr LIKE konv-kbetr,
kwert LIKE konv-kwert,
kopos LIKE konv-kopos,
END OF i_konv.
DATA : BEGIN OF i_kna1 OCCURS 0,
kunnr LIKE kna1-kunnr,
name1 LIKE kna1-name1,
name2 LIKE kna1-name2,
name3 LIKE kna1-name3,
stras LIKE kna1-stras,
ort01 LIKE kna1-ort01,
regio LIKE kna1-regio,
pstlz LIKE kna1-pstlz,
adrnr LIKE kna1-adrnr.
DATA : END OF i_kna1.
*DATA : I_KNA1 TYPE HASHED TABLE OF T_KNA1 WITH UNIQUE KEY KUNNR.
*DATA : L_WA_KNA1 TYPE T_KNA1.
TYPES : BEGIN OF t_t023t,
matkl LIKE t023t-matkl,
wgbez LIKE t023t-wgbez.
TYPES : END OF t_t023t.
DATA : i_t023t TYPE HASHED TABLE OF t_t023t WITH UNIQUE KEY matkl.
DATA : l_wa_t023t TYPE t_t023t.
DATA : BEGIN OF i_t179t OCCURS 0,
prodh LIKE t179t-prodh,
vtext LIKE t179t-vtext.
DATA : END OF i_t179t.
TYPES : BEGIN OF t_mara,
matnr LIKE mara-matnr,
mfrpn LIKE mara-mfrpn.
TYPES : END OF t_mara.
DATA : i_mara TYPE HASHED TABLE OF t_mara WITH UNIQUE KEY matnr.
DATA : l_wa_mara TYPE t_mara.
DATA : BEGIN OF i_vbak OCCURS 0,
vbeln LIKE vbak-vbeln,
bname LIKE vbak-bname,
zz_ccenter LIKE vbak-zz_ccenter,
zz_dept LIKE vbak-zz_dept,
ihrez LIKE vbak-ihrez.
DATA : END OF i_vbak.
DATA: BEGIN OF i_vbap OCCURS 0,
vbeln LIKE vbap-vbeln,
posnr LIKE vbap-posnr,
erdat LIKE vbap-erdat,
prodh LIKE vbap-prodh,
ihrez LIKE vbak-ihrez,
kdmat LIKE vbap-kdmat,
posex LIKE vbap-posex,
END OF i_vbap.
DATA : BEGIN OF i_zcustomfields OCCURS 0,
vbeln LIKE zcustomfields-vbeln,
posnr LIKE zcustomfields-posnr,
valueid LIKE zcustomfields-valueid,
value LIKE zcustomfields-value.
DATA : END OF i_zcustomfields.
DATA : BEGIN OF i_vbpa OCCURS 0,
vbeln LIKE vbpa-vbeln,
kunnr LIKE vbpa-kunnr,
adrnr LIKE vbpa-adrnr.
DATA : END OF i_vbpa.
DATA d_vbpa LIKE i_vbpa OCCURS 0 WITH HEADER LINE.
DATA : BEGIN OF i_zvlxxsr OCCURS 0.
INCLUDE STRUCTURE zvlxxsr.
DATA : END OF i_zvlxxsr.
TYPES: BEGIN OF t_lfa1,
lifnr LIKE lfa1-lifnr,
name1 LIKE lfa1-name1.
TYPES: END OF t_lfa1.
DATA : i_lfa1 TYPE HASHED TABLE OF t_lfa1 WITH UNIQUE KEY lifnr.
DATA : l_wa_lfa1 TYPE t_lfa1.
DATA : i_tvkgr TYPE STANDARD TABLE OF t_tvkgr.
DATA : l_tvkgr TYPE t_tvkgr.
DATA : g_date_diff TYPE p.
DATA: fieldcat_sno TYPE slis_t_fieldcat_alv,
g_append_d_vbrp,
tcode LIKE sy-tcode,
fkimg_tot LIKE vbrp-fkimg,
Begin DEVK926013 KYH26013
NETPR_TOT LIKE I_VBRP-NETPR,
NETWR_TOT LIKE I_VBRP-NETPR,
KBETR_TOT LIKE I_VBRP-NETPR,
KBETRQTY_TOT LIKE I_VBRP-NETPR,
GMDPERCENT_TOT LIKE I_VBRP-NETPR,
GMDNETWR_TOT LIKE I_VBRP-NETPR,
netpr_tot LIKE vbrp-netwr,
netwr_tot LIKE vbrp-netwr,
kbetr_tot LIKE vbrp-netwr,
kbetrqty_tot LIKE vbrp-netwr,
gmdpercent_tot LIKE vbrp-netwr,
gmdnetwr_tot LIKE vbrp-netwr,
End DEVK926013 KYH26013
auth_failure.
DATA: objnum LIKE vbrk-knumv.
DATA: auth(3) TYPE c.
DATA: authcnt TYPE i VALUE 0.
DATA: cntserno TYPE i.
DATA: l_from TYPE i,
l_to TYPE i,
l_lines TYPE i,
l_rows(9) TYPE p DECIMALS 5,
l_loop TYPE i.
*--- begin of ppo924234
DATA: BEGIN OF down_sum OCCURS 0,
vbeln LIKE vbrk-vbeln,
fkart LIKE vbrk-fkart,
fkdat(8),
kunrg LIKE vbrk-kunrg,
kunag LIKE vbrk-kunag,
name1 LIKE kna1-name1,
vkgrp LIKE knvv-vkgrp,
bezei LIKE tvgrt-bezei, "IMR928046
zterm LIKE vbrk-zterm,
bstnk_vf LIKE vbrk-bstnk_vf,
xblnr LIKE vbrk-xblnr,
netwr(15),
partialpmt(15),
due1(15),
due2(15),
due3(15),
due4(15),
due5(15),
due6(15),
kdgrp LIKE vbrk-kdgrp,
END OF down_sum.
DATA: BEGIN OF down_sum_get OCCURS 0,
line(255),
END OF down_sum_get.
DATA: BEGIN OF down_det OCCURS 0,
zzid TYPE zchar8,
zcount(10),
vbeln TYPE zvbeln,
posnr(6),
fkdat(8),
bstnk_vf TYPE bstnk,
fkimg(13),
name1_mfg TYPE zmfg_zar1,
matnr TYPE matnr,
arktx TYPE arktx,
netpr(11),
kzwi5(13),
netwr(15),
kbetr(11),
kbetrqty(11),
mwsbp(13),
gmdpercent(15),
gmdnetwr(15),
name1 TYPE zsold_zar1,
name1_sh TYPE zship_zar1,
name2_sh TYPE zship2_zar1,
name3_sh TYPE zship3_zar1,
stras_sh TYPE stras,
ort01_sh TYPE ort01,
regio_sh TYPE regio,
pstlz_sh TYPE pstlz,
bname TYPE zbname_zar1,
vkgrp TYPE vkgrp,
aubel TYPE vbeln_va ,
aupos(6),
audat(8),
sernr TYPE gernr,
prodh TYPE prodh_d,
wgbez TYPE wgbez,
vtext TYPE bezei20,
asstg TYPE zasstg,
matkl TYPE matkl,
fkart TYPE fkart,
kunag TYPE kunag,
vbtyp TYPE vbtyp,
ihrez TYPE ihrez,
kdmat TYPE matnr_ku,
posex TYPE posex,
zz_ccenter TYPE zv_ccenter,
zz_dept TYPE zv_dept,
zz_cap_exp_code TYPE zv_cap_exp_code,
zz_cap_exp_id TYPE zv_cap_exp_id,
zz_project TYPE zv_project,
zz_aprvd_by TYPE zv_aprvd_by,
kdgrp_auft TYPE kdgrp_auft,
END OF down_det.
*--- end of ppo924234
*--- begin of ppo924471
DATA: BEGIN OF i_tvfk OCCURS 0,
fkart TYPE fkart,
END OF i_tvfk.
*--- end of ppo924471
begin of KYH
DATA: fiscal_yr_begn(8) TYPE c,
fiscal_yr_end(8) TYPE c,
fiscal_yr LIKE bsid-gjahr,
fnyear(4) TYPE c,
fnyear_pre(4) TYPE c.
END of KYH
DATA : v_gjahr LIKE bsid-gjahr. " KYH25882
TYPES : BEGIN OF t_konp,
knumh LIKE konp-knumh,
kopos LIKE konp-kopos,
KBETR LIKE KONP-KBETR. " KYH26013
kbetr LIKE vbrk-netwr. " KYH26013
TYPES : END OF t_konp.
DATA :i_konp TYPE HASHED TABLE OF t_konp WITH UNIQUE KEY knumh kopos.
DATA : l_wa_konp TYPE t_konp.
DATA : l_e_fyv TYPE periv VALUE 10,
l_i_fyear LIKE t009b-bdatj,
l_bsid_index TYPE sy-tabix VALUE 1,
l_bsad_index TYPE sy-tabix VALUE 1.
CLASS cl_abap_char_utilities DEFINITION LOAD. "IMR928770
CONSTANTS:
c_tab TYPE c VALUE cl_abap_char_utilities=>horizontal_tab,
c_cret TYPE c VALUE cl_abap_char_utilities=>cr_lf.
CONSTANTS c_index TYPE i VALUE 2000. "KYH25969
SELECTION-SCREEN : BEGIN OF BLOCK blk1 WITH FRAME.
SELECT-OPTIONS : zkunag FOR vbrk-kunag MATCHCODE OBJECT debi,
zvbeln FOR vbrk-vbeln MATCHCODE OBJECT vmcf,
zfkdat FOR vbrk-fkdat OBLIGATORY,
zvkbur FOR knvv-vkbur,
zvkgrp FOR knvv-vkgrp OBLIGATORY,
zbukrs FOR bsid-bukrs OBLIGATORY,
zgjahr FOR bsid-gjahr OBLIGATORY,
zvbtyp FOR vbrk-vbtyp NO-DISPLAY,
zbstnkvf FOR vbrk-bstnk_vf,
zxblnr FOR vbrk-xblnr.
SELECTION-SCREEN : END OF BLOCK blk1.
SELECTION-SCREEN : BEGIN OF BLOCK blk2 WITH FRAME.
PARAMETER : zopeninv RADIOBUTTON GROUP inv,
zallinv RADIOBUTTON GROUP inv DEFAULT 'X'.
SELECTION-SCREEN : END OF BLOCK blk2.
SELECTION-SCREEN : BEGIN OF BLOCK blk3 WITH FRAME.
PARAMETER : zinvoice AS CHECKBOX,
zdebit AS CHECKBOX,
zcredit AS CHECKBOX.
SELECTION-SCREEN : END OF BLOCK blk3.
SELECTION-SCREEN : BEGIN OF BLOCK blk4 WITH FRAME.
PARAMETER : zsumrep RADIOBUTTON GROUP rep DEFAULT 'X',
zdetrep RADIOBUTTON GROUP rep.
SELECT-OPTIONS : zmfrnr FOR vbrp-zzp_mfrnr MATCHCODE OBJECT kred.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN PUSHBUTTON /1(42) prun_det USER-COMMAND prun.
PARAMETERS: zid LIKE zar1_detail-zzid.
SELECTION-SCREEN : END OF BLOCK blk4.
*--- begin of ppo924234
SELECTION-SCREEN BEGIN OF BLOCK blk5 WITH FRAME TITLE text-001.
PARAMETERS: p_appfil RADIOBUTTON GROUP file DEFAULT 'X',
p_prsfil RADIOBUTTON GROUP file.
PARAMETERS: filepath LIKE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK blk5.
*--- end of ppo924234
INITIALIZATION.
MOVE : 'Detail Report results of the previous run' TO prun_det.
zid = sy-uname(8).
tcode = sy-tcode.
IF NOT tcode IS INITIAL.
tvarv-name = 'ZTCODE_ZAR_INVOICE'.
tvarv-type = 'P'.
tvarv-low = tcode.
MODIFY tvarv.
ENDIF.
IF tcode NE 'ZAR2'.
NEW-PAGE LINE-SIZE 255.
ELSE.
NEW-PAGE LINE-SIZE 170.
ENDIF.
AT SELECTION-SCREEN.
IF sscrfields-ucomm = 'PRUN'.
PERFORM call_ze16.
EXIT.
ENDIF.
*--- begin of ppo924234
AT SELECTION-SCREEN ON BLOCK blk5.
IF p_prsfil = 'X' AND filepath IS INITIAL.
MESSAGE e001(00) WITH 'Enter the File Name'.
ENDIF.
*--- end of ppo924234
START-OF-SELECTION.
PERFORM check_tcode.
PERFORM check_authorization.
IF auth_failure = 'X'.
EXIT.
ENDIF.
PERFORM get_sd_doc_category.
PERFORM get_invoice_data.
IF NOT i_vbrk[] IS INITIAL. "KYH25969
PERFORM get_accounting_data.
PERFORM get_other_data.
ENDIF. "KYH25969
END-OF-SELECTION.
IF NOT i_vbrk[] IS INITIAL. " KYH25969
PERFORM process_data.
IF NOT zsumrep IS INITIAL.
*--- begin of ppo924234
IF NOT filepath IS INITIAL.
CLEAR down_sum.
REFRESH down_sum.
MOVE: 'Invoice No' TO down_sum-vbeln,
'ITyp' TO down_sum-fkart,
'Bill Dt' TO down_sum-fkdat,
'Bill-to#' TO down_sum-kunrg,
'Customer#' TO down_sum-kunag,
'Name' TO down_sum-name1,
'SPN' TO down_sum-vkgrp,
'Spn Name' TO down_sum-bezei, "IMR928046
'PayT' TO down_sum-zterm,
'PO No' TO down_sum-bstnk_vf,
'Ref Doc' TO down_sum-xblnr,
'Invoice Total' TO down_sum-netwr,
'Payments' TO down_sum-partialpmt,
'Due(00-29 Days)' TO down_sum-due1,
'Due(30-44 Days)' TO down_sum-due2,
'Due(45-59 Days)' TO down_sum-due3,
'Due(60-74 Days)' TO down_sum-due4,
'Due(75-89 Days)' TO down_sum-due5,
'Due(Ovr 90Days)' TO down_sum-due6,
'CGrp' TO down_sum-kdgrp.
APPEND down_sum.
LOOP AT i_vbrk.
MOVE-CORRESPONDING i_vbrk TO down_sum.
APPEND down_sum.
CLEAR down_sum.
ENDLOOP.
PERFORM download_file TABLES down_sum USING down_sum.
ENDIF.
*--- end of ppo924234
PERFORM display_summary_output.
ELSE.
for Detail report
IF NOT i_vbrk[] IS INITIAL. " KYH26282
PERFORM get_data_for_detail_report.
PERFORM process_data_for_detail_report.
PERFORM display_detail_report.
ELSE.
MESSAGE i001(00) WITH 'No data exists for the given selection'.
" KYH26282
ENDIF. "KYH26282
ENDIF.
ELSE.
MESSAGE i001(00) WITH 'No data exists for the given selection'.
"KYH25969
ENDIF. " KYH25969
*& Form GET_INVOICE_DATA
text
--> p1 text
<-- p2 text
FORM get_invoice_data .
TYPES : BEGIN OF t1_vbrp,
vbeln TYPE vbeln,
gmdnetwr LIKE zar1_struc1-gmdnetwr,
gmdpercent LIKE zar1_struc1-gmdpercent,
vkgrp TYPE vkgrp.
TYPES END OF t1_vbrp.
DATA : v_end_flag(1) TYPE c.
DATA : l_tab_vbrp TYPE STANDARD TABLE OF t1_vbrp. "KYH
DATA: l_wa_vbrp LIKE LINE OF i_vbrp.
DATA : l1_vbrp TYPE t1_vbrp.
DATA : l_tab_temp LIKE STANDARD TABLE OF i_vbrk.
DATA : l_sy_tabix LIKE sy-tabix,
gmdnetwr LIKE i_vbrp-gmdnetwr,
gmdpercent LIKE i_vbrp-gmdpercent,
l_count LIKE sy-tabix,
l_tabix TYPE sy-tabix.
CLEAR: l_sy_tabix, l_tabix.
SELECT vbeln fkart vbtyp knumv fkdat gjahr kdgrp rfbsk zterm bukrs
netwr kunrg kunag "IMR928882
bstnk_vf xblnr mwsbk rfbsk
INTO TABLE i_vbrk
FROM vbrk WHERE
vbeln IN zvbeln AND
vbtyp IN zvbtyp AND
fkdat IN zfkdat AND
bukrs IN zbukrs AND
kunag IN zkunag AND
bstnk_vf IN zbstnkvf AND
xblnr IN zxblnr AND
fksto NE 'X' .
IF sy-dbcnt NE 0.
IF NOT zsumrep IS INITIAL.
IF NOT i_vbrk[] IS INITIAL.
PERFORM fiscal_year_check. " KYH25882
IF NOT i_vbrk[] IS INITIAL. " KYH25882
REFRESH: l_tab_temp.
CLEAR: l_from,
l_to,
l_lines,
l_rows,
l_loop.
DESCRIBE TABLE i_vbrk LINES l_lines.
l_from = 1.
l_to = c_index.
l_rows = l_lines / c_index.
l_loop = CEIL( l_rows ).
IF l_loop = 0.
l_loop = 1.
ENDIF.
DO l_loop TIMES.
APPEND LINES OF i_vbrk FROM l_from TO l_to TO l_tab_temp.
SELECT vbeln posnr vkgrp mwsbp kzwi5 aubel aupos
kdgrp_auft
APPENDING CORRESPONDING FIELDS OF TABLE i_vbrp
FROM vbrp FOR ALL ENTRIES IN l_tab_temp
WHERE
vbeln = l_tab_temp-vbeln
AND
vkbur IN zvkbur AND
vkgrp IN zvkgrp.
REFRESH l_tab_temp.
l_from = l_to + 1.
l_to = l_to + c_index.
ENDDO.
ENDIF.
*Remove entries from VBRK checkinf for SPN on selection screen
PERFORM check_spn. " KRI926835
ENDIF.
ELSE.
IF NOT i_vbrk[] IS INITIAL.
PERFORM fiscal_year_check. " KYH25882
IF NOT i_vbrk[] IS INITIAL. " KYH25882
REFRESH: l_tab_temp.
CLEAR: l_from,
l_to,
l_lines,
l_rows,
l_loop.
DESCRIBE TABLE i_vbrk LINES l_lines.
l_from = 1.
l_to = c_index.
l_rows = l_lines / c_index.
l_loop = CEIL( l_rows ).
IF l_loop = 0.
l_loop = 1.
ENDIF.
DO l_loop TIMES.
APPEND LINES OF i_vbrk FROM l_from TO l_to TO l_tab_temp.
SELECT vbeln posnr fkimg matnr arktx netwr vkgrp aubel aupos
sernr
zzp_mfrnr vgbel vgpos aupos matkl mwsbp kzwi5 kdgrp_auft
APPENDING CORRESPONDING FIELDS OF TABLE i_vbrp
FROM vbrp FOR ALL ENTRIES IN l_tab_temp WHERE
vbeln = l_tab_temp-vbeln AND
vkbur IN zvkbur AND
vkgrp IN zvkgrp AND
zzp_mfrnr IN zmfrnr.
REFRESH l_tab_temp.
l_from = l_to + 1.
l_to = l_to + c_index.
ENDDO.
ENDIF. " KYH25882
ENDIF.
ENDIF.
IF NOT i_vbrk[] IS INITIAL. "KYH25882
SORT i_vbrk BY vbeln. "KYH25882
SORT i_vbrp BY vbeln posnr. "KYH25882
LOOP AT i_vbrk.
MOVE i_vbrk-kunag TO i_kunag-kunag.
APPEND i_kunag.
MOVE i_vbrk-knumv TO i_knumv-knumv.
APPEND i_knumv.
ENDLOOP.
ENDIF. " KYH25882
ENDFORM. " GET_INVOICE_DATA
*& Form GET_ACCOUNTING_DATA
text
--> p1 text
<-- p2 text
FORM get_accounting_data .
DATA : l_tab_vbrp LIKE STANDARD TABLE OF i_vbrp. "KYH
DATA: l_tab_temp LIKE STANDARD TABLE OF i_vbrk.
CONSTANTS c_index TYPE i VALUE 4000.
IF NOT i_vbrk[] IS INITIAL.
REFRESH: l_tab_temp.
CLEAR: l_from,
l_to,
l_lines,
l_rows,
l_loop.
DESCRIBE TABLE i_vbrk LINES l_lines.
l_from = 1.
l_to = c_index.
l_rows = l_lines / c_index.
l_loop = CEIL( l_rows ).
IF l_loop = 0.
l_loop = 1.
ENDIF.
DO l_loop TIMES.
APPEND LINES OF i_vbrk FROM l_from TO l_to TO l_tab_temp.
DELETE l_tab_temp WHERE rfbsk <> 'C'. " KYH25882
IF NOT l_tab_temp[] IS INITIAL . " KYH25882
SELECT belnr buzei dmbtr shkzg APPENDING TABLE i_bsad
FROM bsad
FOR ALL ENTRIES IN l_tab_temp
WHERE
bukrs EQ l_tab_temp-bukrs AND
gjahr EQ l_tab_temp-gjahr AND
belnr EQ l_tab_temp-vbeln.
ENDIF. " KYH25882
REFRESH l_tab_temp.
l_from = l_to + 1.
l_to = l_to + c_index.
ENDDO.
*--- begin of ppo924396
REFRESH: l_tab_temp.
CLEAR: l_from,
l_to,
l_lines,
l_rows,
l_loop.
DESCRIBE TABLE i_vbrk LINES l_lines.
l_from = 1.
l_to = c_index.
l_rows = l_lines / c_index.
l_loop = CEIL( l_rows ).
IF l_loop = 0.
l_loop = 1.
ENDIF.
DO l_loop TIMES.
APPEND LINES OF i_vbrk FROM l_from TO l_to TO l_tab_temp.
DELETE l_tab_temp WHERE rfbsk <> 'C'. " KYH25882
IF NOT l_tab_temp[] IS INITIAL . " KYH25882
SELECT belnr buzei shkzg dmbtr rebzg FROM bsid "vma928512
APPENDING CORRESPONDING FIELDS OF TABLE i_bsid
FOR ALL ENTRIES IN l_tab_temp
WHERE bukrs EQ l_tab_temp-bukrs
"PRA927038 "PRA927150 vbeln pick
ENDIF. " KYH25882
REFRESH l_tab_temp.
l_from = l_to + 1.
l_to = l_to + c_index.
ENDDO.
SELECT fkart FROM tvfk INTO TABLE i_tvfk WHERE vbtyp = 'O'.
"ppo924471
delete i_bsid where augbl = space. " PRA927093
ENDIF. " KYH25882
ENDFORM. " GET_ACCOUNTING_DATA
*& Form GET_SD_DOC_CATEGORY
text
--> p1 text
<-- p2 text
FORM get_sd_doc_category .
Exclude SD Doc Category N and S
zvbtyp-sign = 'E'.
zvbtyp-option = 'EQ'.
zvbtyp-low = 'N'.
APPEND zvbtyp.
zvbtyp-sign = 'E'.
zvbtyp-option = 'EQ'.
zvbtyp-low = 'S'.
APPEND zvbtyp.
Get only Invoices
IF NOT zinvoice IS INITIAL.
zvbtyp-sign = 'I'.
zvbtyp-option = 'EQ'.
zvbtyp-low = 'M'.
APPEND zvbtyp.
ENDIF.
Get only Credit Memos
IF NOT zcredit IS INITIAL.
zvbtyp-sign = 'I'.
zvbtyp-option = 'EQ'.
zvbtyp-low = 'O'.
APPEND zvbtyp.
ENDIF.
Get only Debit Memos
IF NOT zdebit IS INITIAL.
zvbtyp-sign = 'I'.
zvbtyp-option = 'EQ'.
zvbtyp-low = 'P'.
APPEND zvbtyp.
ENDIF.
GET Fiscal year.
IF NOT zgjahr IS INITIAL.
zgjahr-sign = 'I'.
zgjahr-option = 'EQ'.
APPEND i_zgjahr.
APPEND zgjahr. "IMR928882
ENDIF.
ENDFORM. " GET_SD_DOC_CATEGORY
*& Form GET_OTHER_DATA
text
--> p1 text
<-- p2 text
FORM get_other_data .
IF NOT i_kunag[] IS INITIAL. " KYH25882
SORT i_kunag BY kunag.
DELETE ADJACENT DUPLICATES FROM i_kunag COMPARING kunag.
SELECT kunnr name1 name2 name3 stras ort01 regio pstlz adrnr FROM
kna1 INTO CORRESPONDING FIELDS OF TABLE i_kna1 FOR ALL ENTRIES
IN i_kunag WHERE kunnr = i_kunag-kunag.
SELECT kunnr name1 name2 name3 stras ort01 regio pstlz adrnr FROM
kna1 INTO TABLE i_kna1 FOR ALL ENTRIES "IMR928882
IN i_kunag WHERE kunnr = i_kunag-kunag.
IF NOT I_KNUMV[] IS INITIAL. " KYH25882
SORT I_KNUMV BY KNUMV.
DELETE ADJACENT DUPLICATES FROM I_KNUMV COMPARING KNUMV.
ENDIF. " KYH25882
ENDIF. " KYH25882
ENDFORM. " GET_OTHER_DATA
*& Form PROCESS_DATA
text
--> p1 text
<-- p2 text
FORM process_data .
IF NOT i_vbrk[] IS INITIAL. " KYH25882
DATA: l_sy_tabix LIKE sy-tabix.
CLEAR l_sy_tabix.
SORT i_kna1 BY kunnr.
SORT i_bsad BY belnr.
SORT i_bsid BY belnr.
LOOP AT i_vbrk.
l_sy_tabix = sy-tabix.
PERFORM invoice_total_get. "ppo924692
PERFORM payments_get.
IF NOT zopeninv IS INITIAL AND i_vbrk-opendmbtr = 0.
IF NOT zopeninv IS INITIAL.
start pradeep
perform openinvoices.
DELETE i_vbrk.
CONTINUE.
ENDIF.
PERFORM customer_name_get. "krishna
PERFORM return_cal_sum. "ppo925435
PERFORM dues_data_get. "ppo925435
PERFORM spn_get. "IMR928046
MODIFY i_vbrk INDEX l_sy_tabix.
CLEAR i_vbrk.
ENDLOOP.
ENDIF. " KYH25882
ENDFORM. " PROCESS_DATA
*& Form DISPLAY_SUMMARY_OUTPUT
text
--> p1 text
<-- p2 text
FORM display_summary_output .
IF i_vbrk[] IS INITIAL.
MESSAGE i001(00) WITH 'No data exists for the given selection'.
EXIT.
ENDIF.
PERFORM build_field_cat.
PERFORM call_alv.
ENDFORM. " DISPLAY_SUMMARY_OUTPUT
*& Form BUILD_FIELD_CAT
text
--> p1 text
<-- p2 text
FORM build_field_cat .
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'VBELN'.
ls_fieldcat-ref_tabname = 'VBRK'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Invoice No'.
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'FKART'.
ls_fieldcat-ref_tabname = 'VBRK'.
ls_fieldcat-ref_tabname = 'I_VBRK'. "IMR928770
ls_fieldcat-reptext_ddic = 'ITyp'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'FKDAT'.
ls_fieldcat-ref_tabname = 'VBRK'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Bill Dt'. "IMR928770
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'KUNRG'.
ls_fieldcat-ref_tabname = 'VBRK'.
ls_fieldcat-ref_tabname = 'I_VBRK'. "IMR928770
ls_fieldcat-reptext_ddic = 'Bill To #'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'KUNAG'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Customer #'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'NAME1'.
ls_fieldcat-ref_tabname = 'KNA1'. "IMR928770
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Name'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'VKGRP'.
ls_fieldcat-ref_tabname = 'VBRP'. "IMR928770
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Spn'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat. "IMR928046
ls_fieldcat-fieldname = 'BEZEI'.
ls_fieldcat-ref_tabname = 'TVGRT'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Spn Name'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'ZTERM'.
ls_fieldcat-ref_tabname = 'VBRK'. "IMR928770
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'PayT'. "IMR928770
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'BSTNK_VF'.
ls_fieldcat-ref_tabname = 'VBRK'. "IMR928770
ls_fieldcat-reptext_ddic = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Client PO'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'XBLNR'.
ls_fieldcat-ref_tabname = 'VBRK'. "IMR928770
ls_fieldcat-reptext_ddic = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Ref Doc'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'NETWR'.
ls_fieldcat-ref_tabname = 'VBRP'. "IMR928770
ls_fieldcat-reptext_ddic = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Invoice Total'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'PARTIALPMT'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Payment'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'DUE1'.
ls_fieldcat-ref_tabname = 'I_VBRK'.
ls_fieldcat-reptext_ddic = 'Due ( 0 - 29)'.
ls_fieldcat-key = ' '.
APPEND ls_fieldcat TO fieldcat_sno.Hi
1. Avoid NE in the select(below)
SELECT vbeln fkart vbtyp knumv fkdat bukrs gjahr kdgrp zterm netwr
kunrg kunag
bstnk_vf xblnr mwsbk rfbsk
INTO CORRESPONDING FIELDS OF TABLE i_vbrk
FROM vbrk WHERE
vbeln IN zvbeln AND
kunag IN zkunag AND
fkdat IN zfkdat AND
xblnr IN zxblnr AND
bstnk_vf IN zbstnkvf AND
vbtyp IN zvbtyp AND
<b>fksto NE 'X'</b> AND
bukrs IN zbukrs .
Instead delete the entries from the table after u fetch the data into i_vbrk.
2. Avoid using INTO CORRESPONDING FIELDS.
3. before using FOR ALL ENTRIES IN l_tab_temp
sort the internal table withrequired keys.
delete the duplicate entries with those fields.
4. this select APPENDING CORRESPONDING FIELDS OF TABLE i_vbrp
is in the DO-ENDDO. if possible move it out of the loop.
use WHILE-ENDWHILE instead of DO-ENDDO.
5. APPENDING CORRESPONDING FIELDS OF TABLE i_vbrp
avoid APPENDING clause. u can create temporary internal table and append the entries accordingly.
6. Avoid Move-corresponding.
7. you have used DELETE statement in Loops. try to avoid that.
hope this helps.
**reward if helpful
regards,
madhu -
More than 255 bytes in SO_NEW_DOCUMENT_ATT_SEND_API1
I know they are some posts about this topic already but I have read them all but I still don't have the solution. I hope someone could help me with this:
The problem is this: I have an internal table and I make an excell file of it which is mailed (sapmail) to the user who started the program. I all works fine except for the problem of the 255 limit. This happens because SOLISTI1 has an 255 limit. The excell attachment is mailed but it breaks after 255 characters (the total characters is about 500).
I know there are some solutions with TABLE_COMPRESS and TABLE_DECOMPRESS but I don't know on which moment you should compress or decompress which table! Below if my coding hope someone can help:
REPORT ZDTAFNAME_K.
tables: marc,
lips,
vbrp,
mara,
kna1,
vbak,
VBKD,
vbrk,
vbap,
vbep,
mvke,
mbew.
selection-screen: begin of block select with frame title text-f70.
select-options art for marc-matnr.
select-options abc for marc-abcin.
select-options fak for vbrp-vbeln default '20406070'.
Select-options dat for vbrp-erdat.
selection-screen: end of block select.
PARAMETERS: p_email TYPE somlreci1-receiver
DEFAULT '31dtg'.
data: rule(2) value '.,'.
data: begin of itab occurs 0,
deb like vbak-kunnr, "Debiteurennummer
debnaam like kna1-name1, "Naam debiteur
bestnr like vbkd-bstkd, "Bestelnr klant
artnr like marc-matnr, "Artikelnr
oms like lips-arktx, "Omschrijving
type like mara-groes, "Type
fab like lips-matkl, "Fabrikaat
faktuurdat like vbrp-erdat, "Faktuurdatum
faksrt like vbrk-fkart, "Faktuursoort
faktuur like vbrp-vbeln, "Faktuurnr
fakpos like vbrp-posnr, "Faktuurpositie
fakaantal(11) type c , "Faktuuraantal
fakeenh like vbrp-meins, "Faktuureenheid
fakwaarde(11) type c , "Faktuurwaarde
orddat like vbap-erdat, "Orderdatum
ordsrt like vbak-auart, "Ordersoort
verkoper like vbak-ernam, "Verkoper
ordnr like lips-vgbel, "Ordernr
ordnrpos like lips-vgpos, "Order positie
artklant like vbap-kdmat, "Artikelnr klant
ordaant(11) type c, "Order aantal
ordeenh like vbap-meins, "Order eenheid
ordwaarde(11) type c, "Nettowaarde orderpositie
postype like vbap-pstyv, "Positietype
gevlevdat like vbep-edatu, "Gevraagde leverdatum
levdat like lips-erdat, "Werkelijke leverdatum
levnr like lips-vbeln, "Leveringsnr
levpos like lips-posnr, "Levering positie
levaant(11) type c, "Leveringsaantal
leveenh like lips-meins, "Leveringseenheid
min(11) type c, "Bestelpunt
max(11) type c, "Max vrd
basiseenh like mara-meins, "Basiseenheid
abc like marc-abcin, "ABC Classificatie
artsoort like mara-mtart, "Artikelsoort
vkstatus(2) type c, "Verkoopstatus
ikstatus(2) type c, "Inkoopstatus
minlev(11) type c, "Min levereenheid
afrd(11) type c, "Afrondingswaarde
vprs(11) type c, "VPRS
vprseenh(11) type c, "VPRS eenheid
end of itab.
DATA: it_message TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
WITH HEADER LINE.
DATA: it_attach TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
WITH HEADER LINE.
DATA: t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
t_contents LIKE solisti1 OCCURS 0 WITH HEADER LINE,
t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
t_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE,
t_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE,
w_cnt TYPE i,
w_sent_all(1) TYPE c,
w_doc_data LIKE sodocchgi1,
gd_error TYPE sy-subrc,
gd_reciever TYPE sy-subrc.
*START_OF_SELECTION
START-OF-SELECTION.
Retrieve sample data from table ekpo
PERFORM data_retrieval.
Populate table with detaisl to be entered into .xls file
PERFORM build_xls_data_table.
*END-OF-SELECTION
END-OF-SELECTION.
Populate message body text
perform populate_email_message_body.
Send file by email as .xls speadsheet
PERFORM send_file_as_email_attachment
tables it_message
it_attach
using p_email
'Example .xls documnet attachment'
'XLS'
'filename'
changing gd_error
gd_reciever.
Instructs mail send program for SAPCONNECT to send email(rsconn01)
PERFORM initiate_mail_execute_program.
*& Form DATA_RETRIEVAL
Retrieve data form EKPO table and populate itab it_ekko
FORM data_retrieval.
select * from vbrk client specified where
mandt = sy-mandt and
vbeln in fak and
erdat in dat and
fkart = 'F2'.
select * from vbrp client specified where
mandt = sy-mandt and
vbeln = vbrk-vbeln and
erdat in dat and
matnr in art.
select single * from marc client specified where
mandt = sy-mandt and
werks = 610 and
matnr = vbrp-matnr and
abcin in abc.
if sy-subrc = 0.
itab-levnr = vbrp-vgbel.
itab-levpos = vbrp-vgpos.
itab-faksrt = vbrk-fkart.
select single * from mara client specified where
mandt = sy-mandt and
matnr = marc-matnr.
if sy-subrc = 0.
itab-type = mara-groes.
itab-basiseenh = mara-meins.
endif.
select single * from mvke client specified where
mandt = sy-mandt and
matnr = marc-matnr.
if sy-subrc = 0.
itab-vkstatus = mvke-vmsta.
itab-minlev = mvke-scmng.
endif.
select single * from mbew client specified where
mandt = sy-mandt and
matnr = marc-matnr and
bwkey = 610.
if sy-subrc = 0.
itab-vprs = mbew-verpr.
itab-vprseenh = mbew-peinh.
endif.
select single * from vbak client specified where
mandt = sy-mandt and
vbeln = vbrp-aubel.
if sy-subrc = 0.
itab-deb = vbak-kunnr.
itab-ordsrt = vbak-auart.
endif.
select single * from vbap client specified where
mandt = sy-mandt and
vbeln = vbrp-aubel and
posnr = vbrp-aupos.
if sy-subrc = 0.
itab-verkoper = vbap-ernam.
itab-orddat = vbap-erdat.
itab-artklant = vbap-kdmat.
itab-ordaant := vbap-kwmeng.
itab-ordeenh = vbap-meins.
itab-ordwaarde := vbap-netwr.
itab-postype = vbap-pstyv.
endif.
select single * from vbep client specified where
mandt = sy-mandt and
vbeln = vbap-vbeln and
posnr = vbap-posnr and
etenr = '0001'.
if sy-subrc = 0.
itab-gevlevdat = vbep-edatu.
endif.
select single * from vbkd client specified where
mandt = sy-mandt and
vbeln = vbak-vbeln.
if sy-subrc = 0.
itab-bestnr = vbkd-bstkd.
endif.
select single * from lips client specified where
mandt = sy-mandt and
vbeln = vbrp-vgbel and
posnr = vbrp-vgpos.
if sy-subrc = 0.
itab-levdat = lips-erdat.
itab-levaant = lips-lfimg.
itab-leveenh = lips-meins.
else.
clear itab-levnr.
clear itab-levpos.
clear itab-levaant.
clear itab-levdat.
endif.
select single * from kna1 client specified where
mandt = sy-mandt and
kunnr = vbak-kunnr.
if sy-subrc = 0.
itab-debnaam = kna1-name1.
endif.
itab-artnr = marc-matnr.
itab-oms = vbrp-arktx.
itab-fab = vbrp-matkl.
itab-abc = marc-abcin.
itab-artsoort = mara-mtart.
itab-min = marc-minbe.
itab-max = marc-mabst.
itab-afrd = marc-bstrf.
itab-ikstatus = marc-mmsta.
itab-faktuur = vbrp-vbeln.
itab-fakpos = vbrp-posnr.
*UNPACK VBRP-FKIMG TO ITAB-FAKAANTAL.
*shift itab-fakaantal right by 3 places.
itab-fakaantal = vbrp-fkimg.
translate itab-fakaantal using rule.
itab-fakeenh = vbrp-meins.
itab-faktuurdat = vbrp-erdat.
*UNPACK VBRP-NETWR TO ITAB-FAKWAARDE.
*shift itab-FAKWAARDE right by 2 places.
itab-FAKWAARDE = vbrp-netwr.
Translate van velden
translate itab-fakwaarde using rule.
translate itab-fakaantal using rule.
translate itab-ordaant using rule.
translate itab-ordwaarde using rule.
translate itab-min using rule.
translate itab-max using rule.
translate itab-vkstatus using rule.
translate itab-ikstatus using rule.
itab-ordnr = vbrp-aubel.
itab-ordnrpos = vbrp-aupos.
append itab.
endif.
endselect. " Select * from vbrp.
endselect.
endform.
*& Form BUILD_XLS_DATA_TABLE
Build data table for .xls document
FORM build_xls_data_table.
CONSTANTS: con_cret TYPE x VALUE '0D', "OK for non Unicode
con_tab TYPE x VALUE '09'. "OK for non Unicode
*If you have Unicode check active in program attributes thnen you will
*need to declare constants as follows
*class cl_abap_char_utilities definition load.
*constants:
con_tab type c value cl_abap_char_utilities=>HORIZONTAL_TAB,
con_cret type c value cl_abap_char_utilities=>CR_LF.
CONCATENATE 'DEBNR' 'NAAM' 'BESTELNR'
'ARTNR' 'OMSCHRIJVING' 'TYPE'
'FABRIKAAT' 'FAKTUURDATUM' 'FAKSRT'
'FAKTUURNR' 'FAK.POS.' 'FAK.AANTAL'
'FAK.EENH' 'FAKTUUR WAARDE' 'ORDER DATUM'
'ORDSRT' 'VERKOPER' 'ORDERNR.' 'ORDER.POS.'
'ARTNR KLANT' 'ORDER AANTAL' 'ORDER EENH'
'ORDERWAARDE' 'POS.TYPE' 'GEVRAAGDE LEVDAT'
'WERKELIJKE LEVDAT' 'LEVERINGSNR' 'LEV.POS'
'LEV.AANTAL' 'LEV.EENH' 'BESTELPUNT'
'MAX VRD' 'BASISEENH' 'ABC' 'ARTSRT.'
'VK.STATUS' 'IK.STATUS' 'MIN.LEVEENH.'
'AFDRONDINGSWAARDE' 'VPRS' 'PER'
INTO it_attach SEPARATED BY con_tab.
CONCATENATE con_cret it_attach INTO it_attach.
APPEND it_attach.
LOOP AT ITAB.
CONCATENATE itab-deb itab-debnaam itab-bestnr itab-artnr
itab-oms itab-type itab-fab itab-faktuurdat
itab-faksrt itab-faktuur itab-fakpos
itab-fakaantal itab-fakeenh itab-fakwaarde
itab-orddat itab-ordsrt itab-verkoper itab-ordnr
itab-ordnrpos itab-artklant itab-ordaant
itab-ordeenh itab-ordwaarde itab-postype
itab-gevlevdat itab-levdat itab-levnr itab-levpos
itab-levaant itab-leveenh itab-min itab-max
itab-basiseenh itab-abc itab-artsoort itab-vkstatus
itab-ikstatus itab-minlev itab-afrd itab-vprs
itab-vprseenh
INTO it_attach SEPARATED BY con_tab.
CONCATENATE con_cret it_attach INTO it_attach.
APPEND it_attach.
ENDLOOP.
ENDFORM. " BUILD_XLS_DATA_TABLE
*& Form SEND_FILE_AS_EMAIL_ATTACHMENT
Send email
FORM send_file_as_email_attachment tables pit_message
pit_attach
using p_email
p_mtitle
p_format
p_filename
p_attdescription
p_sender_address
p_sender_addres_type
changing p_error
p_reciever.
DATA: ld_error TYPE sy-subrc,
ld_reciever TYPE sy-subrc,
ld_mtitle LIKE sodocchgi1-obj_descr,
ld_email LIKE somlreci1-receiver,
ld_format TYPE so_obj_tp ,
ld_attdescription TYPE so_obj_nam ,
ld_attfilename TYPE so_obj_des ,
ld_sender_address LIKE soextreci1-receiver,
ld_sender_address_type LIKE soextreci1-adr_typ,
ld_receiver LIKE sy-subrc.
ld_email = p_email.
ld_mtitle = p_mtitle.
ld_format = p_format.
ld_attdescription = p_attdescription.
ld_attfilename = p_filename.
ld_sender_address = p_sender_address.
ld_sender_address_type = p_sender_addres_type.
Fill the document data.
w_doc_data-doc_size = 1.
Populate the subject/generic message attributes
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle .
w_doc_data-sensitivty = 'F'.
Fill the document data and get size of attachment
CLEAR w_doc_data.
READ TABLE it_attach INDEX w_cnt.
w_doc_data-doc_size =
( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle.
w_doc_data-sensitivty = 'F'.
CLEAR t_attachment.
REFRESH t_attachment.
t_attachment[] = pit_attach[].
Describe the body of the message
CLEAR t_packing_list.
REFRESH t_packing_list.
t_packing_list-transf_bin = space.
t_packing_list-head_start = 1.
t_packing_list-head_num = 0.
t_packing_list-body_start = 1.
DESCRIBE TABLE it_message LINES t_packing_list-body_num.
t_packing_list-doc_type = 'RAW'.
APPEND t_packing_list.
Create attachment notification
t_packing_list-transf_bin = 'X'.
t_packing_list-head_start = 1.
t_packing_list-head_num = 1.
t_packing_list-body_start = 1.
DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
t_packing_list-doc_type = ld_format.
t_packing_list-obj_descr = ld_attdescription.
t_packing_list-obj_name = ld_attfilename.
t_packing_list-doc_size = t_packing_list-body_num * 255.
APPEND t_packing_list.
Add the recipients email address
CLEAR t_receivers.
REFRESH t_receivers.
MOVE: SY-UNAME TO t_RECEIVERs-RECEIVER,
'X' TO t_RECEIVERs-EXPRESS,
'B' TO t_RECEIVERs-REC_TYPE.
APPEND t_RECEIVERs.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = w_doc_data
put_in_outbox = 'X'
sender_address = ld_sender_address
sender_address_type = ld_sender_address_type
commit_work = 'X'
IMPORTING
sent_to_all = w_sent_all
TABLES
packing_list = t_packing_list
contents_bin = t_attachment
contents_txt = it_message
receivers = t_receivers
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
Populate zerror return code
ld_error = sy-subrc.
Populate zreceiver return code
LOOP AT t_receivers.
ld_receiver = t_receivers-retrn_code.
ENDLOOP.
ENDFORM.
*& Form INITIATE_MAIL_EXECUTE_PROGRAM
Instructs mail send program for SAPCONNECT to send email.
FORM initiate_mail_execute_program.
WAIT UP TO 2 SECONDS.
SUBMIT rsconn01 WITH mode = 'INT'
WITH output = 'X'
AND RETURN.
ENDFORM. " INITIATE_MAIL_EXECUTE_PROGRAM
*& Form POPULATE_EMAIL_MESSAGE_BODY
Populate message body text
form populate_email_message_body.
REFRESH it_message.
it_message = 'Please find attached a list test ekpo records'.
APPEND it_message.
endform. " POPULATE_EMAIL_MESSAGE_BODYThanks Kunal Ghosh for your replies. I did try to condense it but it was still more than 255 characters.
I solved it by using chunks! I spend more than a week to solve this problem! The solution is so simple. Here's the new code for everybody who has the same problem:
REPORT ZDTAFNAME_K_ART no standard page heading line-size 250.
tables: marc,
lips,
vbrp,
mara,
kna1,
vbak,
VBKD,
vbrk,
vbap,
vbep,
mvke,
mbew.
selection-screen: begin of block select with frame title text-f70.
select-options art for marc-matnr.
select-options abc for marc-abcin.
select-options fak for vbrp-vbeln.
Select-options dat for vbrp-erdat.
select-options fsoort for vbrk-fkart.
select-options vest for marc-werks.
selection-screen: end of block select.
*parameters: p_email type somlreci1-receiver
DEFAULT '31dtg'.
data: p_email like somlreci1-receiver.
data: rule(2) value '.,'.
data: begin of itab occurs 0,
deb like vbak-kunnr, "Debiteurennummer
debnaam like kna1-name1, "Naam debiteur
bestnr like vbkd-bstkd, "Bestelnr klant
artnr like marc-matnr, "Artikelnr
oms like lips-arktx, "Omschrijving
type like mara-groes, "Type
fab like lips-matkl, "Fabrikaat
faktuurdat like vbrp-erdat, "Faktuurdatum
faksrt like vbrk-fkart, "Faktuursoort
faktuur like vbrp-vbeln, "Faktuurnr
fakpos like vbrp-posnr, "Faktuurpositie
fakaantal(11) type c , "Faktuuraantal
fakeenh like vbrp-meins, "Faktuureenheid
fakwaarde(11) type c , "Faktuurwaarde
orddat like vbap-erdat, "Orderdatum
ordsrt like vbak-auart, "Ordersoort
verkoper like vbak-ernam, "Verkoper
ordnr like lips-vgbel, "Ordernr
ordnrpos like lips-vgpos, "Order positie
artklant like vbap-kdmat, "Artikelnr klant
ordaant(11) type c, "Order aantal
ordeenh like vbap-meins, "Order eenheid
ordwaarde(11) type c, "Nettowaarde orderpositie
postype like vbap-pstyv, "Positietype
gevlevdat like vbep-edatu, "Gevraagde leverdatum
levdat like lips-erdat, "Werkelijke leverdatum
levnr like lips-vbeln, "Leveringsnr
levpos like lips-posnr, "Levering positie
levaant(11) type c, "Leveringsaantal
leveenh like lips-meins, "Leveringseenheid
min(11) type c, "Bestelpunt
max(11) type c, "Max vrd
basiseenh like mara-meins, "Basiseenheid
abc like marc-abcin, "ABC Classificatie
artsoort like mara-mtart, "Artikelsoort
vkstatus(2) type c, "Verkoopstatus
ikstatus(2) type c, "Inkoopstatus
minlev(11) type c, "Min levereenheid
afrd(11) type c, "Afrondingswaarde
vprs(11) type c, "VPRS
vprseenh(11) type c, "VPRS eenheid
end of itab.
DATA: it_message TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
WITH HEADER LINE.
DATA: it_attach TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
WITH HEADER LINE.
DATA: t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
t_contents LIKE solisti1 OCCURS 0 WITH HEADER LINE,
t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
t_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE,
t_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE,
w_cnt TYPE i,
w_sent_all(1) TYPE c,
w_doc_data LIKE sodocchgi1,
gd_error TYPE sy-subrc,
gd_reciever TYPE sy-subrc.
*START_OF_SELECTION
START-OF-SELECTION.
Retrieve sample data from table ekpo
PERFORM data_retrieval.
Populate table with detaisl to be entered into .xls file
PERFORM build_xls_data_table.
*END-OF-SELECTION
END-OF-SELECTION.
Populate message body text
perform populate_email_message_body.
Send file by email as .xls speadsheet
PERFORM send_file_as_email_attachment
tables it_message
it_attach
using p_email
'Xls bestand afname per artikelsoort'
'XLS'
'filename'
changing gd_error
gd_reciever.
Instructs mail send program for SAPCONNECT to send email(rsconn01)
PERFORM initiate_mail_execute_program.
*& Form DATA_RETRIEVAL
Retrieve data form EKPO table and populate itab it_ekko
FORM data_retrieval.
select * from vbrk client specified where
mandt = sy-mandt and
vbeln in fak and
erdat in dat and
fkart in fsoort.
select * from vbrp client specified where
mandt = sy-mandt and
vbeln = vbrk-vbeln and
matnr in art.
select single * from marc client specified where
mandt = sy-mandt and
werks in vest and
matnr = vbrp-matnr and
abcin in abc.
if sy-subrc = 0.
itab-levnr = vbrp-vgbel.
itab-levpos = vbrp-vgpos.
itab-faksrt = vbrk-fkart.
select single * from mara client specified where
mandt = sy-mandt and
matnr = marc-matnr.
if sy-subrc = 0.
itab-type = mara-groes.
itab-basiseenh = mara-meins.
endif.
select single * from mvke client specified where
mandt = sy-mandt and
matnr = marc-matnr.
if sy-subrc = 0.
itab-vkstatus = mvke-vmsta.
itab-minlev = mvke-scmng.
endif.
select single * from mbew client specified where
mandt = sy-mandt and
matnr = marc-matnr and
bwkey = 610.
if sy-subrc = 0.
itab-vprs = mbew-verpr.
itab-vprseenh = mbew-peinh.
endif.
select single * from vbak client specified where
mandt = sy-mandt and
vbeln = vbrp-aubel.
if sy-subrc = 0.
itab-deb = vbak-kunnr.
itab-ordsrt = vbak-auart.
endif.
select single * from vbap client specified where
mandt = sy-mandt and
vbeln = vbrp-aubel and
posnr = vbrp-aupos.
if sy-subrc = 0.
itab-verkoper = vbap-ernam.
itab-orddat = vbap-erdat.
itab-artklant = vbap-kdmat.
itab-ordaant := vbap-kwmeng.
itab-ordeenh = vbap-meins.
itab-ordwaarde := vbap-netwr.
itab-postype = vbap-pstyv.
endif.
select single * from vbep client specified where
mandt = sy-mandt and
vbeln = vbap-vbeln and
posnr = vbap-posnr and
etenr = '0001'.
if sy-subrc = 0.
itab-gevlevdat = vbep-edatu.
endif.
select single * from vbkd client specified where
mandt = sy-mandt and
vbeln = vbak-vbeln.
if sy-subrc = 0.
itab-bestnr = vbkd-bstkd.
endif.
select single * from lips client specified where
mandt = sy-mandt and
vbeln = vbrp-vgbel and
posnr = vbrp-vgpos.
if sy-subrc = 0.
itab-levdat = lips-erdat.
itab-levaant = lips-lfimg.
itab-leveenh = lips-meins.
else.
clear itab-levnr.
clear itab-levpos.
clear itab-levaant.
clear itab-levdat.
endif.
select single * from kna1 client specified where
mandt = sy-mandt and
kunnr = vbak-kunnr.
if sy-subrc = 0.
itab-debnaam = kna1-name1.
endif.
itab-artnr = marc-matnr.
itab-oms = vbrp-arktx.
itab-fab = vbrp-matkl.
itab-abc = marc-abcin.
itab-artsoort = mara-mtart.
itab-min = marc-minbe.
itab-max = marc-mabst.
itab-afrd = marc-bstrf.
itab-ikstatus = marc-mmsta.
itab-faktuur = vbrp-vbeln.
itab-fakpos = vbrp-posnr.
*UNPACK VBRP-FKIMG TO ITAB-FAKAANTAL.
*shift itab-fakaantal right by 3 places.
itab-fakaantal = vbrp-fkimg.
translate itab-fakaantal using rule.
itab-fakeenh = vbrp-meins.
itab-faktuurdat = vbrp-erdat.
*UNPACK VBRP-NETWR TO ITAB-FAKWAARDE.
*shift itab-FAKWAARDE right by 2 places.
itab-FAKWAARDE = vbrp-netwr.
Translate van velden
translate itab-fakwaarde using rule.
translate itab-fakaantal using rule.
translate itab-ordaant using rule.
translate itab-ordwaarde using rule.
translate itab-min using rule.
translate itab-max using rule.
translate itab-vkstatus using rule.
translate itab-ikstatus using rule.
translate itab-VPRS using rule.
translate itab-vprseenh using rule.
translate itab-levaant using rule.
translate itab-minlev using rule.
translate itab-afrd using rule.
itab-ordnr = vbrp-aubel.
itab-ordnrpos = vbrp-aupos.
append itab.
clear itab.
endif.
endselect. " Select * from vbrp.
endselect. " Select * from vbrk.
endform.
*& Form BUILD_XLS_DATA_TABLE
Build data table for .xls document
FORM build_xls_data_table.
CONSTANTS: con_cret TYPE x VALUE '0D', "OK for non Unicode
con_tab TYPE x VALUE '09'. "OK for non Unicode
*If you have Unicode check active in program attributes thnen you will
*need to declare constants as follows
*class cl_abap_char_utilities definition load.
*constants:
con_tab type c value cl_abap_char_utilities=>HORIZONTAL_TAB,
con_cret type c value cl_abap_char_utilities=>CR_LF.
<b>
CONCATENATE 'DEBNR' 'NAAM' 'BESTELNR'
'ARTNR' 'OMSCHRIJVING' 'TYPE'
'FABRIKAAT' 'FAKTUURDATUM' 'FAKSRT'
'FAKTUURNR' 'FAK.POS.' 'FAK.AANTAL'
'FAK.EENH' 'FAKTUUR WAARDE' 'ORDER DATUM'
'ORDSRT' 'VERKOPER' 'ORDERNR.' 'ORDER.POS.'
'ARTNR KLANT' 'ORDER AANTAL'
INTO it_attach SEPARATED BY con_tab.
CONCATENATE con_cret it_attach INTO it_attach.
APPEND it_attach.
CONCATENATE con_tab 'ORDER EENH' 'ORDERWAARDE'
'POS.TYPE' 'GEVRAAGDE LEVDAT'
'WERKELIJKE LEVDAT' 'LEVERINGSNR' 'LEV.POS'
'LEV.AANTAL' 'LEV.EENH' 'BESTELPUNT'
'MAX VRD' 'BASISEENH' 'ABC' 'ARTSRT.'
'VK.STATUS' 'IK.STATUS' 'MIN.LEVEENH.'
'AFDRONDINGSWAARDE' 'VPRS' 'PER'
INTO it_attach SEPARATED BY con_tab.
APPEND it_attach.
LOOP AT ITAB.
CONCATENATE itab-deb itab-debnaam itab-bestnr itab-artnr
itab-oms itab-type itab-fab itab-faktuurdat
itab-faksrt itab-faktuur itab-fakpos
itab-fakaantal itab-fakeenh itab-fakwaarde
itab-orddat itab-ordsrt itab-verkoper itab-ordnr
itab-ordnrpos itab-artklant itab-ordaant
INTO it_attach SEPARATED BY con_tab.
CONCATENATE Con_cret it_attach INTO it_attach.
APPEND it_attach.
CONCATENATE con_tab itab-ordeenh itab-ordwaarde itab-postype
itab-gevlevdat itab-levdat itab-levnr itab-levpos
itab-levaant itab-leveenh itab-min itab-max
itab-basiseenh itab-abc itab-artsoort itab-vkstatus
itab-ikstatus itab-minlev itab-afrd itab-vprs
itab-vprseenh
INTO it_attach SEPARATED BY con_tab.
APPEND it_attach.
ENDLOOP.</b>
ENDFORM. " BUILD_XLS_DATA_TABLE
*& Form SEND_FILE_AS_EMAIL_ATTACHMENT
Send email
FORM send_file_as_email_attachment tables pit_message
pit_attach
using p_email
p_mtitle
p_format
p_filename
p_attdescription
p_sender_address
p_sender_addres_type
changing p_error
p_reciever.
DATA: ld_error TYPE sy-subrc,
ld_reciever TYPE sy-subrc,
ld_mtitle LIKE sodocchgi1-obj_descr,
ld_email LIKE somlreci1-receiver,
ld_format TYPE so_obj_tp ,
ld_attdescription TYPE so_obj_nam ,
ld_attfilename TYPE so_obj_des ,
ld_sender_address LIKE soextreci1-receiver,
ld_sender_address_type LIKE soextreci1-adr_typ,
ld_receiver LIKE sy-subrc.
ld_email = p_email.
ld_mtitle = p_mtitle.
ld_format = p_format.
ld_attdescription = p_attdescription.
ld_attfilename = p_filename.
ld_sender_address = p_sender_address.
ld_sender_address_type = p_sender_addres_type.
Fill the document data.
w_doc_data-doc_size = 1.
Populate the subject/generic message attributes
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle .
w_doc_data-sensitivty = 'F'.
Fill the document data and get size of attachment
CLEAR w_doc_data.
READ TABLE it_attach INDEX w_cnt.
w_doc_data-doc_size =
( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle.
w_doc_data-sensitivty = 'F'.
CLEAR t_attachment.
REFRESH t_attachment.
t_attachment[] = pit_attach[].
Describe the body of the message
CLEAR t_packing_list.
REFRESH t_packing_list.
t_packing_list-transf_bin = space.
t_packing_list-head_start = 1.
t_packing_list-head_num = 0.
t_packing_list-body_start = 1.
DESCRIBE TABLE it_message LINES t_packing_list-body_num.
t_packing_list-doc_type = 'RAW'.
APPEND t_packing_list.
Create attachment notification
t_packing_list-transf_bin = 'X'.
t_packing_list-head_start = 1.
t_packing_list-head_num = 1.
t_packing_list-body_start = 1.
DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
t_packing_list-doc_type = ld_format.
t_packing_list-obj_descr = ld_attdescription.
t_packing_list-obj_name = ld_attfilename.
t_packing_list-doc_size = t_packing_list-body_num * 255.
APPEND t_packing_list.
Add the recipients email address
CLEAR t_receivers.
REFRESH t_receivers.
MOVE: SY-UNAME TO t_RECEIVERs-RECEIVER,
'X' TO t_RECEIVERs-EXPRESS,
'B' TO t_RECEIVERs-REC_TYPE.
APPEND t_RECEIVERs.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = w_doc_data
put_in_outbox = 'X'
sender_address = ld_sender_address
sender_address_type = ld_sender_address_type
commit_work = 'X'
IMPORTING
sent_to_all = w_sent_all
TABLES
packing_list = t_packing_list
contents_bin = t_attachment
contents_txt = it_message
receivers = t_receivers
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
Populate zerror return code
ld_error = sy-subrc.
Populate zreceiver return code
LOOP AT t_receivers.
ld_receiver = t_receivers-retrn_code.
ENDLOOP.
ENDFORM.
*& Form INITIATE_MAIL_EXECUTE_PROGRAM
Instructs mail send program for SAPCONNECT to send email.
FORM initiate_mail_execute_program.
WAIT UP TO 2 SECONDS.
SUBMIT rsconn01 WITH mode = 'INT'
WITH output = 'X'
AND RETURN.
ENDFORM. " INITIATE_MAIL_EXECUTE_PROGRAM
*& Form POPULATE_EMAIL_MESSAGE_BODY
Populate message body text
form populate_email_message_body.
REFRESH it_message.
it_message = 'Deze mail is automatisch gemaakt door transactie ZAKA'.
APPEND it_message.
endform. " POPULATE_EMAIL_MESSAGE_BODY -
Customer Material Infomation Missing
**Hello Friends,**
**We have a scenario where we create Delivery without Referance to an Order and in the Invoice we see that Customer Material Information is not getting copied.In the Billing i see that it is taking referance from VBAP Table but in our case we don't have any referance to a Sales Order so it is not getting copied there. Is there any way we can make the changes in the copy control to make it appear in the Invoice as the Customer Material Information is already available in the Deliery document. This information is very vital for us as the Invoice Idocs should carry Customer Material Information which is not happening currently.*
Customer Material Information can be seen in the Invoice Item Tab -PO Data.
Thanks in advance for your help
SunilThe field on the invoice item PO data tab is VBAP-KDMAT. It is a view to a non-existent sales order, so you cannot populate it with data on your type of invoice.
HOWEVERu2026u2026you really need the CMIR data on the Idoc, right?
So use an invoice IDoc user exit to insert the appropriate segment.
My particular favorite exit for such things is INCLUDE ZXEDFU02, which is found in function module EXIT_SAPLVEDF_002.
An Idoc type INVOIC02 should carry the customeru2019s material number in an E1EDP19 segment with qualifier QUALF=001. Set up your exit to test for the existence of such a segment. If it is not found, then query table KNMT for the KDMAT that you want and insert the new E1EDP19 segment at the appropriate index.
Maybe you are looking for
-
Moving files from windows to mac
Hi All, Some time soon my son is going to buy a Mac Pro or if they come out w/ a new model I will buy a new one and give him this one which is not too old. He now uses a windows XP pc. the question I have is how do I / he transfer his files from the
-
I got the new iPhone5 back in Dec, I hooked it up to my computer for the 1st time this wk. It deleted all new data added since Dec (notes,contacts,texts,pics, info added to apps) and reverted back to all my old data (literally uploaded all of my old
-
Material BOM mass change error
Hi gurus, When doing mass change of BOM via tcode CS20, i'm getting below error result. The following messages were displayed: Material BOM 00016478 : Delete Item(s) 19
-
How can I switch tabs direction?
I need to know how can I change the direction of the tabs?
-
FM to check status of Batch Session (SM35)
Hello All, Can you please provide me a FM to check the status of the Batch Session (SM35) whether it is available or not. Thanks,