Professional Documents
Culture Documents
Export Invoice
Export Invoice
Export Invoice
*&---------------------------------------------------------------------*
*& Report ZSD_EXPORT_INVOICE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~*&
*&--------------------------------------------------------------------*&
*& Program Name : ZSD_EXPORT_INVOICE *&
*& Transaction Code : VF03 *&
*& Module : SD *&
*& Package : ZABAP *&
*& Developed By : SUDARSHAN GAIKWAD , MANOJ KUMAR *&
*& Transport Req : SRDK900867 *&
*& Program Type : 1 - Executable *&
*&--------------------------------------------------------------------*&
*& Object : This is the Export Invoice Program *&
*& program. *&
*& *&
*&--------------------------------------------------------------------*&
*&'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~*&
*------------------------------------------------------------------*
* Change History
*------------------------------------------------------------------*
* Date | Programmer | Corr. # | Description
* | | |
* | | |
********************************************************************
REPORT zsd_export_invoice.
************************************************************************
* TABLE DECLARATION
************************************************************************
TABLES : vbrk, "Billing Document: Header Data
vbrp, "Billing Document: Item Data
t001w, "Plants/Branches
lfa1, "Vendor Master (General Section)
eikp, "Foreign Trade: Export/Import Header Data
eipo, "Foreign Trade: Export/Import: Item Data
tvzbt, "Customers: Terms of Payment Texts
vbkd, "Sales Document: Business Data
vbak, "Sales Document: Header Data.
adrc, "Addresses (Business Address Services)
nast,
t012k. "House Bank Accounts
************************************************************************
* DATA DECLARATION
************************************************************************
DATA: it_vbrk LIKE vbrk OCCURS 10 WITH HEADER LINE.
DATA: it_vbrp LIKE vbrp OCCURS 10 WITH HEADER LINE.
DATA: it_vbpa LIKE vbpa OCCURS 10 WITH HEADER LINE.
DATA: it_t001w LIKE t001w OCCURS 10 WITH HEADER LINE.
DATA: it_lfa1 LIKE lfa1 OCCURS 10 WITH HEADER LINE.
DATA: it_kna1 LIKE kna1 OCCURS 10 WITH HEADER LINE.
DATA: it_eikp LIKE eikp OCCURS 10 WITH HEADER LINE.
DATA: it_eipo LIKE eipo OCCURS 10 WITH HEADER LINE.
DATA: it_adrc LIKE adrc OCCURS 10 WITH HEADER LINE.
DATA: it_likp LIKE likp OCCURS 10 WITH HEADER LINE.
DATA: it_vbak LIKE vbrk OCCURS 10 WITH HEADER LINE.
DATA: it_vbap LIKE vbap OCCURS 10 WITH HEADER LINE.
DATA: it_tvzbt LIKE tvzbt OCCURS 10 WITH HEADER LINE.
DATA: it_vbkd LIKE vbkd OCCURS 10 WITH HEADER LINE.
DATA: it_konv LIKE konv OCCURS 10 WITH HEADER LINE.
DATA : it_header LIKE zexportinv_hdr OCCURS 10 WITH HEADER LINE.
DATA : wa_it_header1 LIKE zexportinv_hdr OCCURS 10 WITH HEADER LINE.
DATA : it_item LIKE zexportinv_item OCCURS 10 WITH HEADER LINE.
DATA: it_buff LIKE zsd_export_str OCCURS 10 WITH HEADER LINE.
*DATA: IT_BUFF LIKE ZSD_EXPORT_STR OCUURS 0 WITH HEADER LINE.
DATA : amountinword(200) TYPE c .
DATA : totsum1 LIKE pc207-betrg.
DATA: cust_kunnr LIKE kna1-kunnr,
cust_addrno LIKE adrc-addrnumber,
con_kunnr LIKE kna1-kunnr,
con_addrno LIKE adrc-addrnumber.
DATA: knumv1 LIKE vbrk-knumv.
DATA : totamount LIKE konv-kwert.
DATA : totamtinr LIKE konv-kwert.
DATA : totamtfr LIKE konv-kwert.
*DATA : TOTAMOUNT(20) TYPE N.
DATA : amt_no LIKE konv-kwert.
*DATA : AMT_NO(20) TYPE N.
*DATA : AMT_WORD TYPE STRING.
DATA : amt_word TYPE string.
DATA : amounttot TYPE string.
DATA : sfname TYPE tdsfname,
fm_name TYPE rs38l_fnam.
DATA : name LIKE thead-tdname.
DATA : line LIKE tline OCCURS 10 WITH HEADER LINE,
gro_wei LIKE tline OCCURS 10 WITH HEADER LINE,
chap_id LIKE tline OCCURS 10 WITH HEADER LINE,
cha_name LIKE tline OCCURS 10 WITH HEADER LINE,
transporter LIKE line-tdline.
DATA : unit LIKE vbrk-waerk.
DATA : qty_unit LIKE vbrp-vrkme.
DATA: gntgew LIKE vbrp-ntgew,
gbrgew LIKE vbrp-brgew,
lv_gw_total TYPE menge_d,
lv_gw TYPE menge_d.
DATA wa_excise TYPE j_1iexchdr.
DATA: count TYPE i VALUE 1.
DATA : plant1 LIKE vbrp-werks.
DATA : docno LIKE vbrk-vbeln.
DATA: exporter(60) TYPE c.
DATA : temp(100) TYPE c.
DATA : ek02_cost LIKE konv-kwert,
jeap_amt LIKE konv-kwert,
jeaq_amt LIKE konv-kwert,
jesp_amt LIKE konv-kwert,
jesq_amt LIKE konv-kwert,
pr00_cost LIKE konv-kwert,
zkf2_amt LIKE konv-kwert,
zkf3_amt LIKE konv-kwert,
zhk2_amt LIKE konv-kwert,
zhk3_amt LIKE konv-kwert,
zsdf_amt LIKE konv-kwert,
zsdp_amt LIKE konv-kwert,
zshc_amt LIKE konv-kwert,
zsi1_amt LIKE konv-kwert,
zsi2_amt LIKE konv-kwert,
zsm1_amt LIKE konv-kwert,
zsm2_amt LIKE konv-kwert,
zsp1_amt LIKE konv-kwert,
zsp2_amt LIKE konv-kwert,
zstf_amt LIKE konv-kwert,
zstp_amt LIKE konv-kwert,
vprs_amt LIKE konv-kwert,
jexp_amt LIKE konv-kwert,
ject_amt LIKE konv-kwert,
jaix_amt LIKE konv-kwert,
zhdf_amt LIKE konv-kwert,
zhdp_amt LIKE konv-kwert,
zhp1_amt LIKE konv-kwert,
zhp2_amt LIKE konv-kwert,
jivp_amt LIKE konv-kwert,
jcst_amt LIKE konv-kwert,
zhhc_amt LIKE konv-kwert,
zhk1_amt LIKE konv-kwert,
zhm1_amt LIKE konv-kwert,
zhm2_amt LIKE konv-kwert,
zhi8_amt LIKE konv-kwert,
r100_amt LIKE konv-kwert,
zhi9_amt LIKE konv-kwert,
pack_amt LIKE konv-kwert,
zhtf_amt LIKE konv-kwert,
zhtp_amt LIKE konv-kwert,
zhi1_amt LIKE konv-kwert,
zhi2_amt LIKE konv-kwert.
DATA : total_duty LIKE konv-kwert,
total_amt LIKE konv-kwert,
p_and_f LIKE konv-kwert,
total_educess LIKE konv-kwert,
total_edduty LIKE konv-kwert,
total_shecess LIKE konv-kwert,
total_discount LIKE konv-kwert,
total LIKE konv-kwert,
total_vat LIKE konv-kwert,
total_cst LIKE konv-kwert,
miss_charg LIKE konv-kwert,
total_ass_val LIKE konv-kwert,
freight LIKE konv-kwert,
insurance LIKE konv-kwert,
testing TYPE netwr_ak, " Added By Yograj
inspection TYPE netwr_ak. " Added By Yograj
DATA : wa_snd TYPE zinv_snd.
DATA: tot_qty LIKE vbrp-fkimg,
tot_rate LIKE konv-kbetr,
tot_price LIKE konv-kbetr.
DATA: variable1 TYPE i.
DATA: string(200) TYPE c,
stringamt(16) TYPE c,
part1 TYPE string,
part2 TYPE string,
part3 TYPE string,
part4 TYPE string,
part5 TYPE string,
part6 TYPE string,
part7(14) TYPE c VALUE 'And',
part8 TYPE string,
part9(14) TYPE c VALUE '/100'.
DATA: a TYPE i.
a = 10.
gntgew = 0.
gbrgew = 0.
tot_qty = 0.
tot_rate = 0.
tot_price = 0.
************************************************************************
* SELECTION-SCREEN
************************************************************************
*SELECTION-SCREEN:BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
*
*SELECT-OPTIONS: docno FOR vbrk-vbeln NO-EXTENSION
* NO INTERVALS.
*
*SELECTION-SCREEN:END OF BLOCK blk1.
FORM entry USING return_code us_screen.
docno = nast-objky.
************************************************************************
* START-OF-SELECTION.
************************************************************************
*sfname = 'ZSD_TAX_INV_SUD1'.
*sfname = 'ZSD_EXPORT_INVOICE'.
PERFORM initialization.
PERFORM fill_it_header.
PERFORM read_text.
PERFORM fill_it_item.
PERFORM call_form.
ENDFORM. "
*&---------------------------------------------------------------------*
*& Form FILL_IT_HEADER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_it_header .
SELECT * FROM vbrk
INTO TABLE it_vbrk
WHERE vbeln = docno.
* AND FKART = 'ZBEX'
* OR FKART = 'ZBFS'.
LOOP AT it_vbrk WHERE vbeln = docno.
SELECT SINGLE xblnr
FROM bkpf
INTO it_header-gsi_inv
WHERE bukrs = 'SF01'
AND blart = 'RV'
AND awkey = it_vbrk-vbeln.
MOVE it_vbrk-vbeln TO it_header-docno.
MOVE it_vbrk-fkdat TO it_header-fkdat.
MOVE it_vbrk-zterm TO it_header-zterm.
MOVE it_vbrk-inco1 TO it_header-inco1.
MOVE it_vbrk-land1 TO it_header-land1.
MOVE it_vbrk-waerk TO it_header-waerk.
MOVE it_vbrk-kurrf TO it_header-exrate."Exchange Rate
MOVE it_vbrk-lcnum TO it_header-lcnum."LC Document No
APPEND it_header.
CLEAR it_header.
ENDLOOP.
LOOP AT it_header.
SELECT SINGLE werks matnr "Plant
FROM vbrp
INTO (it_header-plant,it_header-exgood)
WHERE vbeln = it_header-docno.
* SELECT SINGLE adrnr "Plant Address
* FROM t001w
* INTO it_header-adrnr
* WHERE werks = it_header-plant.
SELECT SINGLE adrnr
INTO (it_header-adrnr)
FROM t001
WHERE bukrs = it_header-plant.
IF it_header-plant = 'SF02'.
it_header-adrnr = '0000022452'.
ENDIF.
SELECT SINGLE aubel vgbel vrkme "Sales Document No.,LOADING NO
FROM vbrp
INTO (it_header-oano,it_header-loadingno,it_header-vrkme)
WHERE vbeln = it_header-docno.
SELECT SINGLE bstkd bstdk "Purchase order No.,date,Exporters Ref
FROM vbkd
INTO (it_header-pono,it_header-podate)
WHERE vbeln = it_header-oano.
***********************if vbkd has single pono and date
SELECT * FROM vbkd
INTO TABLE it_vbkd
WHERE vbeln = it_header-oano.
variable1 = sy-dbcnt.
IF variable1 = 1.
SELECT SINGLE bstkd bstdk "Purchase order No.,date,Exporters Ref
FROM vbkd
INTO (it_header-pono1,it_header-podate1)
WHERE vbeln = it_header-oano
AND posnr = ''.
ENDIF.
********************
SELECT SINGLE lcnum "Financial doc. processing: Internal financial doc. number
FROM vbkd
INTO (it_header-lcnum)
WHERE vbeln = it_header-oano.
SELECT SINGLE baanr "Financial document processing: External financial doc. no.
FROM akkb
INTO (it_header-baanr)
WHERE lcnum = it_header-lcnum
AND bafkt = 'O'.
********************************for our bank************vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
SELECT SINGLE banks bankl "Bank country key , Bank Keys
FROM akkb
INTO (it_header-bbanks,it_header-bbankl)
WHERE lcnum = it_header-lcnum
AND bafkt = 'B'.
SELECT SINGLE banka stras ort01 swift " Name of bank, House number and street, City, SWIFT Code for International Payments
FROM bnka
INTO (it_header-bbanka,it_header-bstras,it_header-bort01,it_header-bswift)
WHERE bankl = it_header-bbankl
AND banks = it_header-bbanks.
SELECT SINGLE bankn
FROM t012k
INTO (it_header-bankn)
WHERE bukrs = 'SF01'
AND hktid = it_header-bbankl.
*********************************^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
********************************for notify party************vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
SELECT SINGLE banks bankl "Bank country key , Bank Keys
FROM akkb
INTO (it_header-abanks,it_header-abankl)
WHERE lcnum = it_header-lcnum
AND bafkt = 'A'. " 'O' BY SAGAR, 'A' BY SRIRAM SIR
SELECT SINGLE banka stras ort01 swift " Name of bank, House number and street, City, SWIFT Code for International Payments
FROM bnka
INTO (it_header-abanka,it_header-astras,it_header-aort01,it_header-aswift)
WHERE bankl = it_header-abankl
AND banks = it_header-abanks.
*********************************^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* SELECT SINGLE BNAME SUBMI "LICENCE NO,LICENCE DATE,ORDER DATE
* FROM VBAK
* INTO (it_header-ADVANCENO,it_header-DEPBNO)
* WHERE VBELN = IT_HEADER-OANO.
SELECT SINGLE erdat zuonr "ORDER DATE
FROM vbak
INTO (it_header-erdat,it_header-zuonr)
WHERE vbeln = it_header-oano.
* SELECT SINGLE IHREZ BSTKD_E BSTDK_E "LICENCE NO,LICENCE DATE
* FROM VBKD
* INTO (it_header-IECNO,it_header-EPCGNO,it_header-EPCGDATE)
* WHERE VBELN = IT_HEADER-OANO.
SELECT SINGLE name1 name2 name3 name4
FROM adrc
INTO (it_header-name1,it_header-name2,it_header-name3,it_header-name4)
WHERE addrnumber = it_header-adrnr.
SELECT SINGLE city1 city2 post_code1 street tel_number fax_number str_suppl2
FROM adrc
INTO (it_header-city1,it_header-city2,it_header-post_code1,it_header-street,it_header-tel_number,it_header-fax_number,it_header-
ael_email)
WHERE addrnumber = it_header-adrnr.
SELECT SINGLE tel_number FROM adr2 INTO (it_header-tel_number) WHERE addrnumber = it_header-adrnr
AND consnumber = '3'.
SELECT SINGLE tel_number FROM adr2 INTO (it_header-fax_number) WHERE addrnumber = it_header-adrnr
AND consnumber = '4'.
*SELECT SINGLE LANDX
* FROM T005T
* INTO (IT_HEADER-AELCOUNTRY)
* WHERE LAND1 = IT_HEADER-ALAND AND SPRAS = 'EN'.
*
*
*,
* SELECT SINGLE EXPVZ ALAND "MODE OF TRANSPORT (1,2,3)
* FROM EIKP
* INTO (it_header-EXPVZ,it_header-ALAND)
* WHERE REFNR = IT_HEADER-DOCNO.
SELECT SINGLE expvz aland iever "MODE OF TRANSPORT (1,2,3), pre carriage by
FROM eikp
INTO (it_header-expvz,it_header-aland,it_header-iever)
WHERE refnr = it_header-docno.
SELECT SINGLE bezei "MODE OF TRANSPORT (1,2,3)
FROM t618t
INTO (it_header-bezei)
WHERE expvz = it_header-expvz AND
land1 = it_header-aland AND
spras = 'EN'.
* SELECT SINGLE vsart BOLNR "Mode of Transport, Vehical No.
* FROM LIKP
* INTO (it_header-vsart,it_header-BOLNR)
* WHERE vbeln = IT_HEADER-LOADINGNO.
SELECT SINGLE zolla azoll zollb ladel "PORT OF LOADING,PLACE OF RECIPT,PORT OF DISCHARGE,FINAL DESTN.
FROM eikp
INTO (it_header-zolla,it_header-azoll,it_header-zollb,it_header-ladel)
WHERE refnr = it_header-docno.
SELECT SINGLE bezei "PORT OF LOADING
FROM t615t
INTO (it_header-bezei1)
WHERE zolla = it_header-zolla AND
land1 = it_header-aland AND
spras = 'EN'.
SELECT SINGLE bezei "PLACE OF RECIPT
FROM t615t
INTO (it_header-bezei2)
WHERE zolla = it_header-azoll AND
land1 = it_header-aland AND
spras = 'EN'.
* SELECT SINGLE bezei "PORT OF DISCHARGE
* FROM t615t
* INTO (it_header-bezei3)
* WHERE zolla = it_header-zollb AND
* land1 = it_header-land1 AND
* spras = 'EN'.
SELECT SINGLE kzabe kzgbe "PORT OF DISCHARGE, pre carriage transport
FROM eikp
INTO (it_header-kzabe,it_header-kzgbe)
WHERE refnr = it_header-docno.
SELECT SINGLE landx "COUNTRY OF ORIGIN
FROM t005t
INTO (it_header-landx)
WHERE land1 = it_header-aland AND
spras = 'EN'.
SELECT SINGLE landx "COUNTRY OF FINAL DESTINATION
FROM t005t
INTO (it_header-landx1)
WHERE land1 = it_header-land1 AND
spras = 'EN'.
TRANSLATE it_header-landx1 TO UPPER CASE.
SELECT SINGLE text1 text2 text3 "TEXT1 ,TEXT2 , TEXT3
FROM eikp
INTO (it_header-text1,it_header-text2,it_header-text3)
WHERE refnr = it_header-docno.
SELECT SINGLE vtext "TERMS OF DELIVERY AND PAYMENT
FROM tvzbt
INTO (it_header-vtext)
WHERE zterm = it_header-zterm AND
spras = 'EN'.
SELECT SINGLE lstel FROM likp
INTO it_header-lstel
WHERE vbeln = it_header-loadingno.
SELECT SINGLE vtext FROM tvlat
INTO it_header-vtext1
WHERE lstel = it_header-lstel
AND spras = 'EN'
AND vstel = it_header-plant.
SELECT SINGLE j_1iexrn FROM j_1imocomp
INTO it_header-j_1iexrn
WHERE werks = it_header-plant.
MODIFY it_header.
ENDLOOP.
PERFORM fill_it_vbpa.
PERFORM fill_it_adrc.
*PERFORM READ_MATERIAL_TEXT.
LOOP AT it_header.
plant1 = it_header-plant.
* UNIT = IT_HEADER-WAERK.
qty_unit = it_header-vrkme.
ENDLOOP.
ENDFORM. " FILL_IT_HEADER
*&---------------------------------------------------------------------*
*& Form FILL_IT_VBPA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_it_vbpa .
SELECT *
FROM vbpa
INTO TABLE it_vbpa
WHERE vbeln = docno.
LOOP AT it_header.
LOOP AT it_vbpa.
IF it_vbpa-parvw = 'AG'.
cust_kunnr = it_vbpa-kunnr.
PERFORM get_addrno USING cust_kunnr.
READ TABLE it_kna1 WITH KEY kunnr = cust_kunnr.
cust_addrno = it_kna1-adrnr.
PERFORM get_cust_addr USING cust_addrno.
READ TABLE it_adrc WITH KEY addrnumber = cust_addrno.
it_header-custno = cust_kunnr.
it_header-custname1 = it_adrc-name1.
it_header-custname2 = it_adrc-name2.
it_header-custname3 = it_adrc-name3.
it_header-custname4 = it_adrc-name4.
it_header-custcity1 = it_adrc-city1.
it_header-custcity2 = it_adrc-city2.
it_header-custpost_code1 = it_adrc-post_code1.
it_header-custstreet = it_adrc-street.
* PERFORM GET_CUSTEXCISE USING CUST_KUNNR.
*
* READ TABLE IT_j_1imocust WITH KEY KUNNR = CUST_KUNNR.
*
* IT_HEADER-CUSTVAT = IT_j_1imocust-J_1ILSTNO.
* IT_HEADER-CUSTCST = IT_j_1imocust-J_1ICSTNO.
* IT_HEADER-CUSTECC = IT_j_1imocust-J_1IEXCD.
ENDIF.
IF it_vbpa-parvw = 'WE'.
REFRESH it_kna1.
* REFRESH IT_J_1IMOCUST.
REFRESH it_adrc.
con_kunnr = it_vbpa-kunnr.
PERFORM get_con_addrno USING con_kunnr.
READ TABLE it_kna1 WITH KEY kunnr = con_kunnr.
con_addrno = it_kna1-adrnr.
PERFORM get_con_addr USING con_addrno.
READ TABLE it_adrc WITH KEY addrnumber = con_addrno.
it_header-conno = con_kunnr.
it_header-conname1 = it_adrc-name1.
it_header-conname2 = it_adrc-name2.
it_header-conname3 = it_adrc-name3.
it_header-conname4 = it_adrc-name4.
it_header-concity1 = it_adrc-city1.
it_header-concity2 = it_adrc-city2.
it_header-conpost_code1 = it_adrc-post_code1.
it_header-constreet = it_adrc-street.
it_header-contel = it_adrc-tel_number.
it_header-confax = it_adrc-fax_number.
it_header-conemail = it_adrc-str_suppl2.
* PERFORM GET_CONEXCISE USING CON_KUNNR.
* READ TABLE IT_j_1imocust WITH KEY KUNNR = CON_KUNNR.
*
* IT_HEADER-CONVAT = IT_j_1imocust-J_1ILSTNO.
* IT_HEADER-CONCST = IT_j_1imocust-J_1ICSTNO.
* IT_HEADER-CONECC = IT_j_1imocust-J_1IEXCD.
*
ENDIF.
ENDLOOP.
MODIFY it_header.
ENDLOOP.
ENDFORM. " FILL_IT_VBPA
*&---------------------------------------------------------------------*
*& Form FILL_IT_ADRC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_it_adrc .
SELECT * FROM adrc
INTO TABLE it_adrc
WHERE addrnumber = it_header-adrnr.
ENDFORM. " FILL_IT_ADRC
*&---------------------------------------------------------------------*
*& Form GET_ADDRNO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_CUST_KUNNR text
*----------------------------------------------------------------------*
FORM get_addrno USING p_cust_kunnr.
SELECT *
FROM kna1 INTO TABLE it_kna1
WHERE kunnr = p_cust_kunnr.
ENDFORM. " GET_ADDRNO
*&---------------------------------------------------------------------*
*& Form GET_CUST_ADDR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_CUST_ADDRNO text
*----------------------------------------------------------------------*
FORM get_cust_addr USING p_cust_addrno.
SELECT *
FROM adrc INTO TABLE it_adrc
WHERE addrnumber = p_cust_addrno.
ENDFORM. " GET_CUST_ADDR
*&---------------------------------------------------------------------*
*& Form GET_CON_ADDRNO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_CON_KUNNR text
*----------------------------------------------------------------------*
FORM get_con_addrno USING p_con_kunnr.
SELECT *
FROM kna1 INTO TABLE it_kna1
WHERE kunnr = p_con_kunnr.
ENDFORM. " GET_CON_ADDRNO
*&---------------------------------------------------------------------*
*& Form GET_CON_ADDR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_CON_ADDRNO text
*----------------------------------------------------------------------*
FORM get_con_addr USING p_con_addrno.
SELECT *
FROM adrc INTO TABLE it_adrc
WHERE addrnumber = p_con_addrno.
ENDFORM. " GET_CON_ADDR
*&---------------------------------------------------------------------*
*& Form FILL_IT_ITEM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_it_item .
knumv1 = it_vbrk-knumv.
PERFORM fill_it_konv USING knumv1.
READ TABLE it_vbrk INDEX 1.
SELECT *
FROM vbrp
INTO TABLE it_vbrp
FOR ALL ENTRIES IN it_vbrk
WHERE vbeln = it_vbrk-vbeln AND
posar <> 'C' AND
matkl <> '1034'.
LOOP AT it_vbrp WHERE vbeln = it_vbrk-vbeln AND
posar <> 'C' AND
matkl <> '1034'.
MOVE count TO it_item-srno.
MOVE it_vbrp-matnr TO it_item-matnr.
MOVE it_vbrp-arktx TO it_item-arktx.
MOVE it_vbrp-fkimg TO it_item-fkimg.
MOVE it_vbrp-vrkme TO it_item-vrkme.
MOVE it_vbrp-posnr TO it_item-posnr.
MOVE it_vbrp-kursk TO it_item-kursk.
MOVE it_vbrp-aubel TO it_item-aubel.
IF it_vbrp-aupos > 0.
it_vbrp-aupos = it_vbrp-aupos / 10.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = it_vbrp-aupos
IMPORTING
output = it_item-aupos.
ENDIF.
MOVE it_vbrp-vbelv TO it_item-vbelv.
MOVE it_vbrp-posnv TO it_item-posnv.
MOVE it_vbrp-vgbel TO it_item-vgbel.
MOVE it_vbrp-vgpos TO it_item-vgpos.
MOVE it_vbrp-brgew TO it_item-brgew.
MOVE it_vbrp-ntgew TO it_item-ntgew.
gntgew = gntgew + it_vbrp-ntgew.
gbrgew = gbrgew + it_vbrp-brgew.
IF gro_wei-tdline IS NOT INITIAL.
lv_gw = gro_wei-tdline.
lv_gw_total = lv_gw + gntgew.
ENDIF.
count = count + 1.
SELECT SINGLE kdmat
FROM vbap
INTO (it_item-kdmat )
WHERE vbeln = it_vbrp-aubel
AND matnr = it_vbrp-matnr
AND posnr = it_vbrp-posnr.
APPEND it_item.
* CLEAR it_item.
ENDLOOP.
******************************************************for taking distinct invoice no v
SELECT DISTINCT aubel
FROM vbrp
INTO it_buff
WHERE vbeln = docno.
APPEND it_buff.
ENDSELECT.
CLEAR it_buff.
CONCATENATE LINES OF it_buff INTO temp SEPARATED BY ' / '.
*loop at it_item.
* move it_buff-abc to it_item-exporef.
* modify it_item.
*endloop.
******************************************************manoj ^
*LOOP AT IT_ITEM.
* LOOP AT IT_HEADER.
*
* DATA : TEMP_VGBEL LIKE VBRK-VBELN.
* DATA :
*
* CONCATENATE IT_HEADER-LOADINGNO IT_ITEM-POSNR INTO IT_ITEM-VGBEL_POS.
*
*MODIFY IT_ITEM.
*
*ENDLOOP.
*ENDLOOP.
LOOP AT it_item.
LOOP AT it_konv WHERE kposn = it_item-posnr.
IF it_konv-kschl = 'PR00'.
unit = it_konv-waers.
IF unit = 'JPY'.
it_item-kbetr = it_konv-kbetr * 100.
ELSE.
it_item-kbetr = it_konv-kbetr.
ENDIF.
it_item-kpein = it_konv-kpein.
* it_item-kbetr = it_item-kbetr / it_item-kursk. "modify by manoj on 180308
it_item-kwert = it_konv-kwert.
unit = it_konv-waers.
MODIFY it_item.
* CLEAR it_item.
ENDIF.
ENDLOOP.
ENDLOOP.
************************************************************************************************
*************************************************************START BY MANOJ
DATA : it_item1 LIKE it_item OCCURS 0 WITH HEADER LINE.
DATA : cnt(3)." TYPE NUM .
DATA date(6).
*----------------------------------------------------------------------*
cnt = 0.
*LOOP AT IT_item.
* MOVE-CORRESPONDING IT_item TO IT_item1.
* APPEND IT_item1.
*ENDLOOP.
*
* LOOP AT IT_item1.
* DELETE ADJACENT DUPLICATES FROM IT_item1 COMPARING AUBEL .
* MODIFY IT_item1.
* ENDLOOP.
*
*SORT IT_item BY AUBEL.
*
* LOOP AT IT_item1.
* ON CHANGE OF IT_item-AUBEL.
* cnt = 0.
* LOOP AT IT_item where AUBEL = IT_item1-AUBEL.
* cnt = cnt + 1.
* IF cnt > 1.
* it_item-AUBEL = ' '.
* MODIFY IT_item.
* ENDIF.
* ENDLOOP.
* ENDON.
* ENDLOOP.
*********************************************ADD BY MANOJ
CLEAR it_item.
LOOP AT it_item.
*ON CHANGE OF it_item-aubel.
* SELECT bstkd bstdk "Purchase order No.,date,Exporters Ref
* FROM vbkd
* INTO (it_item-bstkd,it_item-bstdk)
* WHERE vbeln = it_item-aubel
* AND posnr = it_item-posnv.
* ENDSELECT.
* MODIFY it_item.
**endon.
* ENDLOOP.
DATA: wa_vbkd TYPE vbkd.
SELECT SINGLE * FROM vbkd INTO wa_vbkd
WHERE
vbeln = it_item-aubel AND
posnr = it_item-aupos.
IF sy-subrc = 4.
SELECT SINGLE * FROM vbkd INTO wa_vbkd
WHERE
vbeln = it_item-aubel AND
posnr = ''.
ENDIF.
it_item-bstkd = wa_vbkd-bstkd.
it_item-bstdk = wa_vbkd-bstdk.
MODIFY it_item.
ENDLOOP.
CLEAR it_item.
********************************Addition for other charges*****************
zkf2_amt = 0.
zkf3_amt = 0.
zsdf_amt = 0.
zsdp_amt = 0.
zshc_amt = 0.
zsi1_amt = 0.
zsi2_amt = 0.
zsm1_amt = 0.
zsm2_amt = 0.
zsp1_amt = 0.
zsp2_amt = 0.
zstf_amt = 0.
vprs_amt = 0.
jexp_amt = 0.
ject_amt = 0.
jaix_amt = 0.
zhdf_amt = 0.
zhdp_amt = 0.
zhp1_amt = 0.
zhp2_amt = 0.
zhhc_amt = 0.
zhk3_amt = 0.
zhm1_amt = 0.
r100_amt = 0.
LOOP AT it_header.
LOOP AT it_konv WHERE knumv = it_vbrk-knumv.
IF it_konv-kschl = 'ZKF2' AND it_konv-kposn <> ' '.
it_header-zkf2_perc = it_konv-kbetr / 10.
it_header-zkf2_amt = it_konv-kwert .
zkf2_amt = zkf2_amt + it_header-zkf2_amt.
ENDIF.
IF it_konv-kschl = 'ZKF3' AND it_konv-kposn <> ' '.
it_header-zkf3_perc = it_konv-kbetr / 10.
it_header-zkf3_amt = it_konv-kwert .
zkf3_amt = zkf3_amt + it_header-zkf3_amt.
ENDIF.
IF it_konv-kschl = 'ZHK2' AND it_konv-kposn <> ' '. " Hardik
it_header-zhk2_perc = it_konv-kbetr / 10.
it_header-zhk2_amt = it_konv-kwert .
zkf2_amt = zhk2_amt + it_header-zhk2_amt.
ENDIF.
IF it_konv-kschl = 'ZHK3' AND it_konv-kposn <> ' '. " Hardik
it_header-zhk3_perc = it_konv-kbetr / 10.
it_header-zhk3_amt = it_konv-kwert .
zhk3_amt = zhk3_amt + it_header-zhk3_amt.
ENDIF.
******************************Freight********************************
IF it_konv-kschl = 'ZHK1' AND it_konv-kposn <> ' '. " Yograj
it_header-zhk1_perc = it_konv-kbetr / 10.
it_header-zhk1_amt = it_konv-kwert .
zhk1_amt = zhk1_amt + it_header-zhk1_amt.
ENDIF.
IF it_konv-kschl = 'ZHK2' AND it_konv-kposn <> ' '. " Yograj
it_header-zhk2_perc = it_konv-kbetr / 10.
it_header-zhk2_amt = it_konv-kwert .
zhk2_amt = zhk2_amt + it_header-zhk2_amt.
ENDIF.
**********************************************************************
*
IF it_konv-kschl = 'ZSDF' AND it_konv-kposn <> ' '.
it_header-zsdf_perc = it_konv-kbetr / 10.
it_header-zsdf_amt = it_konv-kwert .
zsdf_amt = zsdf_amt + it_header-zsdf_amt.
ENDIF.
IF it_konv-kschl = 'ZHDF' AND it_konv-kposn <> ' '. "Discount fix at Header Level
it_header-zhdf_perc = it_konv-kbetr / 10.
it_header-zhdf_amt = it_konv-kwert .
zhdf_amt = zhdf_amt + it_header-zhdf_amt.
ENDIF.
IF it_konv-kschl = 'ZHDP' AND it_konv-kposn <> ' '. "Discount fix at Header level %
it_header-zhdp_perc = it_konv-kbetr / 10.
it_header-zhdp_amt = it_konv-kwert .
zhdp_amt = zhdp_amt + it_header-zhdp_amt.
ENDIF.
IF it_konv-kschl = 'ZSDP' AND it_konv-kposn <> ' '.
it_header-zsdp_perc = it_konv-kbetr / 10.
it_header-zsdp_amt = it_konv-kwert .
zsdp_amt = zsdp_amt + it_header-zsdp_amt.
ENDIF.
IF it_konv-kschl = 'ZSHC' AND it_konv-kposn <> ' '.
it_header-zshc_perc = it_konv-kbetr / 10.
it_header-zshc_amt = it_konv-kwert .
zshc_amt = zshc_amt + it_header-zshc_amt.
ENDIF.
IF it_konv-kschl = 'ZSI1' AND it_konv-kposn <> ' '.
it_header-zsi1_perc = it_konv-kbetr / 10.
it_header-zsi1_amt = it_konv-kwert .
zsi1_amt = zsi1_amt + it_header-zsi1_amt.
ENDIF.
IF it_konv-kschl = 'ZSI2' AND it_konv-kposn <> ' '.
it_header-zsi2_perc = it_konv-kbetr / 10.
it_header-zsi2_amt = it_konv-kwert .
zsi2_amt = zsi2_amt + it_header-zsi2_amt.
ENDIF.
IF it_konv-kschl = 'ZSM1' AND it_konv-kposn <> ' '.
it_header-zsm1_perc = it_konv-kbetr / 10.
it_header-zsm1_amt = it_konv-kwert .
zsm1_amt = zsm1_amt + it_header-zsm1_amt.
ENDIF.
IF it_konv-kschl = 'ZSM2' AND it_konv-kposn <> ' '.
it_header-zsm2_perc = it_konv-kbetr / 10.
it_header-zsm2_amt = it_konv-kwert .
zsm2_amt = zsm2_amt + it_header-zsm2_amt.
ENDIF.
IF it_konv-kschl = 'ZSP1' AND it_konv-kposn <> ' '.
it_header-zsp1_perc = it_konv-kbetr / 10.
it_header-zsp1_amt = it_konv-kwert .
zsp1_amt = zsp1_amt + it_header-zsp1_amt.
ENDIF.
IF it_konv-kschl = 'ZSP2' AND it_konv-kposn <> ' '.
it_header-zsp2_perc = it_konv-kbetr / 10.
it_header-zsp2_amt = it_konv-kwert .
zsp2_amt = zsp2_amt + it_header-zsp2_amt.
ENDIF.
IF it_konv-kschl = 'ZHP1' AND it_konv-kposn <> ' '.
it_header-zhp1_perc = it_konv-kbetr / 10.
it_header-zhp1_amt = it_konv-kwert .
zhp1_amt = zhp1_amt + it_header-zhp1_amt.
ENDIF.
IF it_konv-kschl = 'ZHP2' AND it_konv-kposn <> ' '.
it_header-zhp2_perc = it_konv-kbetr / 10.
it_header-zhp2_amt = it_konv-kwert .
zhp2_amt = zhp2_amt + it_header-zhp2_amt.
ENDIF.
IF it_konv-kschl = 'ZSTF' AND it_konv-kposn <> ' '.
it_header-zstf_perc = it_konv-kbetr / 10.
it_header-zstf_amt = it_konv-kwert .
zstf_amt = zstf_amt + it_header-zstf_amt.
ENDIF.
IF it_konv-kschl = 'ZSTP' AND it_konv-kposn <> ' '.
it_header-zstp_perc = it_konv-kbetr / 10.
it_header-zstp_amt = it_konv-kwert .
zstp_amt = zstp_amt + it_header-zstp_amt.
ENDIF.
* IF it_konv-kschl = 'ZHK3' AND it_konv-kposn <> ' '. "MANOJ
*
* it_header-zhk3_perc = it_konv-kbetr / 10.
*
* it_header-zhk3_amt = it_konv-kwert .
*
* zhk3_amt = zhk3_amt + it_header-zhk3_amt.
* ENDIF.
IF it_konv-kschl = 'ZHK2' AND it_konv-kposn <> ' '. " Hardik
it_header-zhk2_perc = it_konv-kbetr / 10.
it_header-zhk2_amt = it_konv-kwert .
zhk2_amt = zhk2_amt + it_header-zhk2_amt.
ENDIF.
*
IF it_konv-kschl = 'ZHM1' AND it_konv-kposn <> ' '. "MANOJ
it_header-zhm1_perc = it_konv-kbetr / 10.
it_header-zhm1_amt = it_konv-kwert .
zhm1_amt = zhm1_amt + it_header-zhm1_amt.
ENDIF.
IF it_konv-kschl = 'ZHM2' AND it_konv-kposn <> ' '. "MANOJ
it_header-zhm2_perc = it_konv-kbetr / 10.
it_header-zhm2_amt = it_konv-kwert .
zhm2_amt = zhm2_amt + it_header-zhm2_amt.
ENDIF.
IF it_konv-kschl = 'ZHI8' AND it_konv-kposn <> ' '. "MANOJ
it_header-zhi8_perc = it_konv-kbetr / 10.
it_header-zhi8_amt = it_konv-kwert .
zhi8_amt = zhi8_amt + it_header-zhi8_amt.
ENDIF.
IF it_konv-kschl = 'R100' AND it_konv-kposn <> ' '.
it_header-r100_perc = it_konv-kbetr / 10.
it_header-r100_amt = it_konv-kwert .
r100_amt = r100_amt + it_header-r100_amt.
ENDIF.
IF it_konv-kschl = 'ZHI9' AND it_konv-kposn <> ' '. "MANOJ
it_header-zhi9_perc = it_konv-kbetr / 10.
it_header-zhi9_amt = it_konv-kwert .
zhi9_amt = zhi9_amt + it_header-zhi9_amt.
ENDIF.
IF it_konv-kschl = 'ZHTF' AND it_konv-kposn <> ' '. "Hardik
it_header-zhtf_perc = it_konv-kbetr / 10.
it_header-zhtf_amt = it_konv-kwert .
zhtf_amt = zhtf_amt + it_header-zhtf_amt.
ENDIF.
IF it_konv-kschl = 'ZHTP' AND it_konv-kposn <> ' '. "Hardik
it_header-zhtp_perc = it_konv-kbetr / 10.
it_header-zhtp_amt = it_konv-kwert .
zhtp_amt = zhtp_amt + it_header-zhtp_amt.
ENDIF.
IF it_konv-kschl = 'ZHI1' AND it_konv-kposn <> ' '. "Hardik
it_header-zhi1_perc = it_konv-kbetr / 10.
it_header-zhi1_amt = it_konv-kwert .
zhi1_amt = zhi1_amt + it_header-zhi1_amt.
ENDIF.
IF it_konv-kschl = 'ZHI2' AND it_konv-kposn <> ' '. "Hardik
it_header-zhi2_perc = it_konv-kbetr / 10.
it_header-zhi2_amt = it_konv-kwert .
zhi2_amt = zhi2_amt + it_header-zhi2_amt.
ENDIF.
MODIFY it_header.
ENDLOOP.
ENDLOOP.
LOOP AT it_header.
it_header-gntgew = gntgew.
it_header-gbrgew = gbrgew.
MODIFY it_header.
ENDLOOP.
testing = zhtf_amt + zhtp_amt + zstp_amt + zstf_amt.
total_discount = zhdf_amt + zhdp_amt + zsdf_amt + zsdp_amt . "+ R100_AMT.
inspection = zsi1_amt + zsi2_amt + zhi1_amt + zhi2_amt.
insurance = zhi8_amt + zhi9_amt.
freight = zkf2_amt + zkf3_amt + zhk3_amt + zhk1_amt + zhk2_amt.
pack_amt = zhp1_amt + zhp2_amt + zsp1_amt + zsp2_amt.
miss_charg = zsm1_amt + zsm2_amt + zhm1_amt + zhm2_amt.
* miss_charg = zsm1_amt + zsm2_amt + zstf_amt + zstp_amt + zshc_amt + zsdf_amt + zhp1_amt + zhp2_amt + zsp1_amt + zsp2_amt + zhhc_amt + zshc_amt + zhm1_amt
*P_AND_F = ZHP1_AMT + ZHP2_AMT + ZSP1_AMT + ZSP2_AMT + ZHHC_AMT + ZSHC_AMT. " zsi1_amt + zsi1_amt
************************************************addition for other charges**************
******************************total amount of freifgt and misc.
*totalamtfr = freight + Miss_charg.
*************************************************************
LOOP AT it_item.
IF ( it_item-fkimg <> ' ' ) AND ( it_item-kwert <> ' ' ).
it_item-total = it_item-fkimg * ( it_item-kbetr / it_item-kpein ).
MODIFY it_item.
* CLEAR it_item.
ENDIF.
ENDLOOP.
***************************
CLEAR it_item.
LOOP AT it_item.
tot_qty = tot_qty + it_item-fkimg. "total quantity
tot_rate = tot_rate + it_item-kbetr. " total rate
tot_price = tot_price + it_item-total. " total price
ENDLOOP.
**********************
SELECT * "Customer Material No
FROM vbap
INTO TABLE it_vbap
WHERE vbeln = it_vbrp-aubel.
* LOOP AT it_item.
*
* LOOP AT it_vbap WHERE vbeln = it_vbrp-aubel AND matnr = it_item-matnr AND posnr = it_item-posnr.
*
* MOVE it_vbap-kdmat TO it_item-kdmat.
*
* MODIFY it_item.
*
* ENDLOOP.
* ENDLOOP.
SELECT *
FROM likp
INTO TABLE it_likp
WHERE vbeln = it_vbrp-vgbel.
LOOP AT it_item.
LOOP AT it_likp WHERE vbeln = it_vbrp-vgbel.
MOVE it_likp-anzpk TO it_item-anzpk.
MODIFY it_item.
ENDLOOP.
ENDLOOP.
LOOP AT it_item.
totamount = totamount + it_item-total.
ENDLOOP.
totamount = totamount + freight + miss_charg + insurance + r100_amt + total_discount + testing + inspection + pack_amt.
*******************************************************************************
stringamt = totamount.
SPLIT stringamt AT '.' INTO part5 part6.
*****************************************************************************
amt_no = totamount.
* amt_no = PART1.
PERFORM amt_in_words USING amt_no.
PERFORM conversion.
* IT_HEADER-ED_WORDS = AMT_WORD.
ENDFORM. " FILL_IT_ITEM
*&---------------------------------------------------------------------*
*& Form FILL_IT_KONV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_KNUMV1 text
*----------------------------------------------------------------------*
FORM fill_it_konv USING p_knumv1.
SELECT *
FROM konv
INTO TABLE it_konv
WHERE knumv = p_knumv1.
ENDFORM. " FILL_IT_KONV
*&---------------------------------------------------------------------*
*& Form CALL_FORM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM call_form .
SELECT SINGLE sform
INTO sfname
FROM tnapr
* WHERE kschl = 'ZEXP'
WHERE kschl = nast-kschl
AND nacha = '1'
AND kappl = 'V3'.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = sfname
* VARIANT = ' '
* DIRECT_CALL = ' '
IMPORTING
fm_name = fm_name
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
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_header.
IF it_header-fkdat GE '20171218'." Effected Date
SELECT SINGLE * FROM zinv_snd INTO wa_snd WHERE vbeln = it_header-docno.
IF sy-subrc <> 0 AND wa_snd-zestatus <> 'X'.
PERFORM f_send_email.
ENDIF.
ENDIF.
ENDLOOP.
CALL FUNCTION fm_name
EXPORTING
* ARCHIVE_INDEX =
* ARCHIVE_INDEX_TAB =
* ARCHIVE_PARAMETERS =
* CONTROL_PARAMETERS = w_ctrlop
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
* OUTPUT_OPTIONS =
* USER_SETTINGS = 'X'
wa_it_buff1 = it_buff
wa_it_header1 = it_header
totamount = totamount
amt_word = amt_word
plant1 = plant1
unit = unit
qty_unit = qty_unit
miss_charg = miss_charg
freight = freight
temp = temp
insurance = insurance
tot_qty = tot_qty
tot_rate = tot_rate
tot_price = tot_price
total_discount = total_discount
testing = testing
inspection = inspection
pack_amt = pack_amt
lv_gw = lv_gw_total
* IMPORTING
* DOCUMENT_OUTPUT_INFO =
* JOB_OUTPUT_INFO =
* JOB_OUTPUT_OPTIONS =
TABLES
it_header = it_header
it_item = it_item
it_buff = it_buff
* EXCEPTIONS
* FORMATTING_ERROR = 1
* INTERNAL_ERROR = 2
* SEND_ERROR = 3
* USER_CANCELED = 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.
CLEAR it_header.
CLEAR it_item.
CLEAR it_vbrk.
CLEAR it_vbrp.
CLEAR it_vbpa.
CLEAR it_t001w.
CLEAR it_lfa1.
CLEAR it_kna1.
CLEAR it_eikp.
CLEAR it_eipo.
CLEAR it_adrc.
CLEAR it_likp.
CLEAR it_vbak.
CLEAR it_vbap.
CLEAR it_tvzbt.
CLEAR it_vbkd.
CLEAR it_konv.
CLEAR it_header[].
CLEAR it_item[].
CLEAR it_vbrk[].
CLEAR it_vbrp[].
CLEAR it_vbpa[].
CLEAR it_t001w[].
CLEAR it_lfa1[].
CLEAR it_kna1[].
CLEAR it_eikp[].
CLEAR it_eipo[].
CLEAR it_adrc[].
CLEAR it_likp[].
CLEAR it_vbak[].
CLEAR it_vbap[].
CLEAR it_tvzbt[].
CLEAR it_vbkd[].
CLEAR it_konv[].
CLEAR total_duty .
CLEAR total_amt .
CLEAR p_and_f .
CLEAR total_educess .
CLEAR total_edduty .
CLEAR total_shecess .
CLEAR total_discount .
CLEAR total .
CLEAR total_vat .
CLEAR total_cst .
CLEAR miss_charg .
CLEAR total_ass_val .
CLEAR freight .
CLEAR insurance.
CLEAR tot_qty.
CLEAR tot_rate.
CLEAR tot_price.
ENDFORM. " CALL_FORM
*&---------------------------------------------------------------------*
*& Form AMT_IN_WORDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_AMT_NO text
*----------------------------------------------------------------------*
FORM amt_in_words USING p_amt_no.
*LOOP AT IT_ITEM.
* CALL FUNCTION 'ZIN_SPELL_AMOUNT'
* EXPORTING
* P_NUMBER = P_AMT_NO
* IMPORTING
* AMTWORD = AMT_WORD
* EXCEPTIONS
* AMOUNT_NOT_ENTERED = 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.
* CALL FUNCTION 'SPELL_AMOUNT'
* EXPORTING
* amount = p_amt_no
* currency = unit
* filler = space
* language = sy-langu
* IMPORTING
* in_words = amt_word
* EXCEPTIONS
* not_found = 1
* too_large = 2
* OTHERS = 3.
* IF sy-subrc <> 0.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
* ENDIF.
totsum1 = p_amt_no.
CALL FUNCTION 'HR_IN_CHG_INR_WRDS'
EXPORTING
amt_in_num = totsum1
IMPORTING
amt_in_words = amountinword
EXCEPTIONS
data_type_mismatch = 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.
* AMT_WORD = AMOUNTINWORD .
********************************************************************************* 1138
string = amountinword.
SPLIT string AT 'Rupees' INTO part1 part2 .
SPLIT part2 AT 'Paise' INTO part3 part4 .
CONCATENATE part1 part7 part6 part9 INTO part8 SEPARATED BY ' '.
amt_word = part8.
*ENDLOOP.
ENDFORM. " AMT_IN_WORDS
*&---------------------------------------------------------------------*
*& Form READ_MATERIAL_TEXT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
*FORM READ_MATERIAL_TEXT .
*
*NAME = IT_HEADER-LOADINGNO.
*
* SELECT COUNT( * )
* FROM STXH
* WHERE TDOBJECT = 'VBBK' AND
* TDNAME = NAME AND
* TDID = '0001' AND
* TDSPRAS = 'E'.
*
** IF SY-SUBRC = 0.
*
* CALL FUNCTION 'READ_TEXT'
* EXPORTING
* CLIENT = SY-MANDT
* ID = '0001'
* LANGUAGE = 'E'
* NAME = NAME
* OBJECT = 'VBBK'
* TABLES
* LINES = LINE
* EXCEPTIONS
* ID = 1
* LANGUAGE = 2
* NAME = 3
* NOT_FOUND = 4
* OBJECT = 5
* REFERENCE_CHECK = 6
* WRONG_ACCESS_TO_ARCHIVE = 7
* OTHERS = 8
* .
* 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.
* LOOP AT LINE where tdline <> ''.
* TRANSPORTER = LINE-TDLINE.
* ENDLOOP.
*CLEAR LINE[]. CLEAR LINE.
*ENDFORM. " READ_MATERIAL_TEXT
*&---------------------------------------------------------------------*
*& Form CONVERSION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM conversion .
LOOP AT it_item.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = it_item-anzpk
IMPORTING
output = it_item-anzpk.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = it_item-srno
IMPORTING
output = it_item-srno.
MODIFY it_item.
* CLEAR it_item.
ENDLOOP.
ENDFORM. " CONVERSION
*&---------------------------------------------------------------------*
*& Form INITIALIZATION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM initialization .
CLEAR it_header.
CLEAR it_item.
CLEAR it_vbrk.
CLEAR it_vbrp.
CLEAR it_vbpa.
CLEAR it_t001w.
CLEAR it_lfa1.
CLEAR it_kna1.
CLEAR it_eikp.
CLEAR it_eipo.
CLEAR it_adrc.
CLEAR it_likp.
CLEAR it_vbak.
CLEAR it_vbap.
CLEAR it_tvzbt.
CLEAR it_vbkd.
CLEAR it_konv.
CLEAR it_header[].
CLEAR it_item[].
CLEAR it_vbrk[].
CLEAR it_vbrp[].
CLEAR it_vbpa[].
CLEAR it_t001w[].
CLEAR it_lfa1[].
CLEAR it_kna1[].
CLEAR it_eikp[].
CLEAR it_eipo[].
CLEAR it_adrc[].
CLEAR it_likp[].
CLEAR it_vbak[].
CLEAR it_vbap[].
CLEAR it_tvzbt[].
CLEAR it_vbkd[].
CLEAR it_konv[].
CLEAR totamount.
ENDFORM. " INITIALIZATION
*&---------------------------------------------------------------------*
*& Form READ_TEXT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM read_text .
DATA : name LIKE stxh-tdname,
name1 LIKE stxh-tdname.
LOOP AT it_header.
name = it_header-loadingno.
name1 = it_header-docno.
SELECT COUNT( * ) FROM stxh
WHERE tdobject = 'VBBK'
AND tdname = name
AND tdid = 'ZEPC'
AND tdspras = 'EN'.
IF sy-subrc = 0.
CALL FUNCTION 'READ_TEXT'
EXPORTING
* CLIENT = SY-MANDT
id = 'ZEPC' " EPCG Licence No
language = 'E'
name = name
object = 'VBBK'
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
TABLES
lines = line
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8
.
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.
LOOP AT line WHERE tdline <> ''.
it_header-epcgno = line-tdline.
ENDLOOP.
CLEAR line[]. CLEAR line.
SELECT COUNT( * ) FROM stxh
WHERE tdobject = 'VBBK'
AND tdname = name
AND tdid = 'ZEPD'
AND tdspras = 'EN'.
IF sy-subrc = 0.
CALL FUNCTION 'READ_TEXT'
EXPORTING
* CLIENT = SY-MANDT
id = 'ZEPD' " EPCG Licence Date
language = 'E'
name = name
object = 'VBBK'
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
TABLES
lines = line
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8
.
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.
LOOP AT line WHERE tdline <> ''.
it_header-epcgdate = line-tdline.
ENDLOOP.
CLEAR line[]. CLEAR line.
SELECT COUNT( * ) FROM stxh
WHERE tdobject = 'VBBK'
AND tdname = name
AND tdid = 'ZDEP'
AND tdspras = 'EN'.
IF sy-subrc = 0.
CALL FUNCTION 'READ_TEXT'
EXPORTING
* CLIENT = SY-MANDT
id = 'ZDEP' " DEPB Licence No
language = 'E'
name = name
object = 'VBBK'
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
TABLES
lines = line
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8
.
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.
LOOP AT line WHERE tdline <> ''.
it_header-depbno = line-tdline.
ENDLOOP.
CLEAR line[]. CLEAR line.
SELECT COUNT( * ) FROM stxh
WHERE tdobject = 'VBBK'
AND tdname = name
AND tdid = 'ZADV'
AND tdspras = 'EN'.
IF sy-subrc = 0.
CALL FUNCTION 'READ_TEXT'
EXPORTING
* CLIENT = SY-MANDT
id = 'ZADV' " Advanced Licence No
language = 'E'
name = name
object = 'VBBK'
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
TABLES
lines = line
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8
.
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.
LOOP AT line WHERE tdline <> ''.
it_header-advanceno = line-tdline.
ENDLOOP.
CLEAR line[]. CLEAR line.
SELECT COUNT( * ) FROM stxh
WHERE tdobject = 'VBBK'
AND tdname = name
AND tdid = 'ZADV'
AND tdspras = 'EN'.
IF sy-subrc = 0.
CALL FUNCTION 'READ_TEXT'
EXPORTING
* CLIENT = SY-MANDT
id = 'ZADV' " Advanced Licence No
language = 'E'
name = name
object = 'VBBK'
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
TABLES
lines = line
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8
.
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.
LOOP AT line WHERE tdline <> ''.
it_header-nopackages = line-tdline.
ENDLOOP.
CLEAR line[]. CLEAR line.
SELECT COUNT( * ) FROM stxh
WHERE tdobject = 'VBBK'
AND tdname = name1
AND tdid = 'ZF03'
AND tdspras = 'EN'.
IF sy-subrc = 0.
CALL FUNCTION 'READ_TEXT'
EXPORTING
* CLIENT = SY-MANDT
id = 'ZF03' " NO OF PACKAGES
language = 'E'
name = name1
object = 'VBBK'
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
TABLES
lines = line
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8
.
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.
LOOP AT line WHERE tdline <> ''.
it_header-nopackages = line-tdline.
ENDLOOP.
SELECT COUNT( * ) FROM stxh
WHERE tdobject = 'VBBK'
AND tdname = name1
AND tdid = 'ZF04'
AND tdspras = 'EN'.
IF sy-subrc = 0.
CALL FUNCTION 'READ_TEXT'
EXPORTING
* CLIENT = SY-MANDT
id = 'ZF04' " KIND PACKAGES
language = 'E'
name = name1
object = 'VBBK'
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
TABLES
lines = line
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8
.
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.
LOOP AT line WHERE tdline <> ''.
it_header-kindpackages = line-tdline.
ENDLOOP.
CLEAR line[]. CLEAR line.
SELECT COUNT( * ) FROM stxh
WHERE tdobject = 'VBBK'
AND tdname = name1
AND tdid = 'ZF07'
AND tdspras = 'EN'.
IF sy-subrc = 0.
CALL FUNCTION 'READ_TEXT'
EXPORTING
* CLIENT = SY-MANDT
id = 'ZF07' " STAINLESS
language = 'E'
name = name1
object = 'VBBK'
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
TABLES
lines = line
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8
.
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.
LOOP AT line WHERE tdline <> ''.
it_header-stainless = line-tdline.
ENDLOOP.
CLEAR line[]. CLEAR line.
SELECT COUNT( * ) FROM stxh
WHERE tdobject = 'VBBK'
AND tdname = name1
AND tdid = 'ZF07'
AND tdspras = 'EN'.
IF sy-subrc = 0.
CALL FUNCTION 'READ_TEXT'
EXPORTING
* CLIENT = SY-MANDT
id = 'ZF08' " DEPB
language = 'E'
name = name1
object = 'VBBK'
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
TABLES
lines = line
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8
.
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.
LOOP AT line WHERE tdline <> ''.
it_header-depb = line-tdline.
ENDLOOP.
CLEAR line[]. CLEAR line.
*********STAINLESS
*********DEPB
SELECT COUNT( * ) FROM stxh
WHERE tdobject = 'VBBK'
AND tdname = name1
AND tdid = 'ZF09'
AND tdspras = 'EN'.
IF sy-subrc = 0.
CALL FUNCTION 'READ_TEXT'
EXPORTING
* CLIENT = SY-MANDT
id = 'ZF09' " bank
language = 'E'
name = name1
object = 'VBBK'
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
TABLES
lines = line
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8
.
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.
LOOP AT line WHERE tdline <> ''.
it_header-bank = line-tdline.
ENDLOOP.
*********Gross Weight
SELECT COUNT( * ) FROM stxh
WHERE tdobject = 'VBBK'
AND tdname = name1
AND tdid = 'ZF12'
AND tdspras = 'EN'.
IF sy-subrc = 0.
CALL FUNCTION 'READ_TEXT'
EXPORTING
* CLIENT = SY-MANDT
id = 'ZF12' " Gross Weight
language = 'E'
name = name1
object = 'VBBK'
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
TABLES
lines = gro_wei
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8
.
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.
LOOP AT gro_wei WHERE tdline <> ''.
it_header-gross_weight = gro_wei-tdline.
ENDLOOP.
********* Chapter ID ***************************************
SELECT COUNT( * ) FROM stxh
WHERE tdobject = 'VBBK'
AND tdname = name1
AND tdid = 'ZF13'
AND tdspras = 'EN'.
IF sy-subrc = 0.
CALL FUNCTION 'READ_TEXT'
EXPORTING
* CLIENT = SY-MANDT
id = 'ZF13' " Chapter ID
language = 'E'
name = name1
object = 'VBBK'
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
TABLES
lines = chap_id
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8
.
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.
LOOP AT chap_id WHERE tdline <> ''.
it_header-chapter_id = chap_id-tdline.
ENDLOOP.
IF it_header-chapter_id IS INITIAL.
it_header-chapter_id = '732690-15'.
ENDIF.
**User will not allowed if CHA name is not Mentioned.**
**This validation valid only if Bocument created after 09.02.2018**
IF it_header-fkdat >= '20180209'.
SELECT COUNT( * ) FROM stxh
WHERE tdobject = 'VBBK'
AND tdname = name1
AND tdid = 'ZF14' "CHA Name
AND tdspras = 'EN'.
IF sy-subrc = 0.
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
id = 'ZF14'
language = sy-langu
name = name1
object = 'VBBK'
TABLES
lines = cha_name
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc <> 0.
MESSAGE 'Enter CHA Name in Header Text' TYPE 'E'.
ENDIF.
ELSE.
IF sy-subrc <> 0.
MESSAGE 'Enter CHA Name in Header Text' TYPE 'E'.
ENDIF.
ENDIF.
ENDIF.
******************
*SELECT COUNT( * ) FROM stxh
* WHERE tdobject = 'VBBK'
* AND tdname = name1
* AND tdid = 'ZF10'
* AND tdspras = 'EN'.
*
* IF sy-subrc = 0.
*
* CALL FUNCTION 'READ_TEXT'
* EXPORTING
** CLIENT = SY-MANDT
* id = 'ZF10' " remarks as per lc
* language = 'E'
* name = name1
* object = 'VBBK'
** ARCHIVE_HANDLE = 0
** LOCAL_CAT = ' '
** IMPORTING
** HEADER =
* TABLES
* lines = line
* EXCEPTIONS
* id = 1
* language = 2
* name = 3
* not_found = 4
* object = 5
* reference_check = 6
* wrong_access_to_archive = 7
* OTHERS = 8
* .
* 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.
* LOOP AT line WHERE tdline <> ''.
* it_header-remarks = line-tdline.
* ENDLOOP.
MODIFY it_header.
ENDLOOP.
*****************
*data: a type i.
*a = 10.
*loop at it_header.
*do 10 times.
*SELECT COUNT( * ) FROM stxh
* WHERE tdobject = 'VBBK'
* AND tdname = name1
* AND tdid = 'ZF10'
* AND tdspras = 'EN'.
*
* IF sy-subrc = 0.
*
* CALL FUNCTION 'READ_TEXT'
* EXPORTING
** CLIENT = SY-MANDT
* id = 'ZF10' " remarks as per lc
* language = 'E'
* name = name1
* object = 'VBBK'
** ARCHIVE_HANDLE = 0
** LOCAL_CAT = ' '
** IMPORTING
** HEADER =
* TABLES
* lines = line
* EXCEPTIONS
* id = 1
* language = 2
* name = 3
* not_found = 4
* object = 5
* reference_check = 6
* wrong_access_to_archive = 7
* OTHERS = 8
* .
* 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.
* LOOP AT line WHERE tdline <> ''.
* it_header-remarks = line-tdline.
* ENDLOOP.
*
*
*enddo.
* MODIFY it_header.
*endloop.
*******************************
*LOOP AT IT_HEADER.
* IT_HEADER-GBRGEW = IT_HEADER-GNTGEW + ( it_header-nopackages * 50 ).
* MODIFY IT_HEADER.
*ENDLOOP.
*
ENDFORM. " READ_TEXT
*&---------------------------------------------------------------------*
*& Form F_SEND_EMAIL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_send_email .
DATA : gc_text(11) TYPE c VALUE 'Form Output',
gc_tst(25) TYPE c VALUE 'Invoice Details',
gc_subject(50) TYPE c.
DATA:
gs_ctrlop TYPE ssfctrlop, " Smart Forms: Control structure
gs_outopt TYPE ssfcompop, " SAP Smart Forms: Smart Composer (transfer) options
gs_otfdata TYPE ssfcrescl, " Smart Forms: Return value at end of form printing
gt_otf TYPE TABLE OF itcoo, " OTF Structure
gv_bin_filesize TYPE i, " Store the file size
gt_pdf_tab TYPE TABLE OF tline, " SAPscript: Text Lines
gs_docdata TYPE sodocchgi1, " Data of an object which can be changed
gt_reclist TYPE TABLE OF somlreci1, " SAPoffice: Structure of the API Recipient List
gs_reclist TYPE somlreci1, " SAPoffice: Structure of the API Recipient List
gs_objbin TYPE solisti1, " SAPoffice: Single List with Column Length 255
gs_message TYPE solisti1 OCCURS 0 WITH HEADER LINE, " SAPoffice: Single List with Column Length 255
gs_subject TYPE sodocchgi1-obj_descr,
gs_pdf_tab TYPE tline, " Workarea for SAP Script Text Lines
gv_pos TYPE i,
gv_len TYPE i,
gt_objbin TYPE TABLE OF solisti1, " SAPoffice: Single List with Column Length 255
gv_tab_lines TYPE i,
gs_objpack TYPE sopcklsti1, " SAPoffice: Description of Imported Object Components
gt_objpack TYPE TABLE OF sopcklsti1. " SAPoffice: Description of Imported Object Components
gs_ctrlop-getotf = 'X'.
gs_ctrlop-device = 'PRINTER'.
gs_ctrlop-preview = ''.
gs_ctrlop-no_dialog = 'X'.
gs_outopt-tddest = 'LOCL'.
DATA:wa_objhead TYPE soli_tab,
w_ctrlop TYPE ssfctrlop,
w_compop TYPE ssfcompop,
w_return TYPE ssfcrescl,
wa_doc_chng TYPE sodocchgi1,
w_data TYPE sodocchgi1,
mailtxt LIKE solisti1 OCCURS 0 WITH HEADER LINE ,
lv_sub TYPE char50,
wa_buffer TYPE string. "To convert from 132 to 255
* gv_bin_filesize type i, " Store the file size
* gt_pdf_tab type table of tline. " SAPscript: Text Lines
w_ctrlop-getotf = 'X'.
w_ctrlop-preview = 'X'.
w_ctrlop-no_dialog = 'X'.
w_compop-tdnoprev = 'X'.
DATA: it_email TYPE TABLE OF ysend_email,
wa_email TYPE ysend_email.
*data :
DATA : gt_object_header TYPE STANDARD TABLE OF solisti1.
DATA: sf_name TYPE tdsfname.
DATA : m_sub TYPE so_obj_des.
* DATA gt_otf TYPE TABLE OF itcoo. " OTF Structure
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
CLEAR gt_reclist[].
gs_reclist-rec_type = 'U'.
APPEND gs_reclist TO gt_reclist.
CLEAR : gs_reclist.
**********************************************************************
CALL FUNCTION fm_name
EXPORTING
* ARCHIVE_INDEX =
* ARCHIVE_INDEX_TAB =
* ARCHIVE_PARAMETERS =
control_parameters = w_ctrlop
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
output_options = w_compop
* USER_SETTINGS = 'X'
wa_it_buff1 = it_buff
wa_it_header1 = it_header
totamount = totamount
amt_word = amt_word
plant1 = plant1
unit = unit
qty_unit = qty_unit
miss_charg = miss_charg
freight = freight
temp = temp
insurance = insurance
tot_qty = tot_qty
tot_rate = tot_rate
tot_price = tot_price
total_discount = total_discount
testing = testing
inspection = inspection
pack_amt = pack_amt
lv_gw = lv_gw_total
IMPORTING
* DOCUMENT_OUTPUT_INFO =
job_output_info = gs_otfdata
* JOB_OUTPUT_OPTIONS =
TABLES
it_header = it_header
it_item = it_item
it_buff = it_buff
* EXCEPTIONS
* FORMATTING_ERROR = 1
* INTERNAL_ERROR = 2
* SEND_ERROR = 3
* USER_CANCELED = 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.
**********************************************************************
CLEAR gt_otf[].
gt_otf[] = gs_otfdata-otfdata[].
* Convert the OTF DATA to SAP Script Text lines
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF'
max_linewidth = 132
IMPORTING
bin_filesize = gv_bin_filesize
TABLES
otf = gt_otf
lines = gt_pdf_tab
EXCEPTIONS
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
err_bad_otf = 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.
"""""""""""""""" Get the Vendor Email Address. """"""""""""""""""""""""""
SELECT * FROM ysend_email INTO TABLE it_email WHERE werks = it_header-plant
AND programm = sy-repid.
LOOP AT it_email INTO wa_email.
gs_reclist-receiver = wa_email-email_id.
gs_reclist-copy = wa_email-copy_to.
gs_reclist-rec_type = 'U'.
APPEND gs_reclist TO gt_reclist.
CLEAR : gs_reclist.
ENDLOOP.
***....Against LC Doc will send to Following person
IF it_header-lcnum IS NOT INITIAL.
gs_reclist-receiver = 'ac@sanghviforge.com'.
gs_reclist-copy = wa_email-copy_to.
gs_reclist-rec_type = 'U'.
APPEND gs_reclist TO gt_reclist.
CLEAR : gs_reclist.
gs_reclist-receiver = 'accounts@sanghviforge.com'.
gs_reclist-copy = wa_email-copy_to.
gs_reclist-rec_type = 'U'.
APPEND gs_reclist TO gt_reclist.
CLEAR : gs_reclist.
gs_reclist-receiver = 'banking@sanghviforge.com'.
gs_reclist-copy = wa_email-copy_to.
gs_reclist-rec_type = 'U'.
APPEND gs_reclist TO gt_reclist.
CLEAR : gs_reclist.
gs_reclist-receiver = 'vrd@sanghviforge.com'.
gs_reclist-copy = wa_email-copy_to.
gs_reclist-rec_type = 'U'.
APPEND gs_reclist TO gt_reclist.
CLEAR : gs_reclist.
ENDIF.
***....Against LC Doc will send to above person
CLEAR : gs_objbin, gs_pdf_tab.
LOOP AT gt_pdf_tab INTO gs_pdf_tab.
gv_pos = 255 - gv_len.
IF gv_pos > 134. "length of pdf_table
gv_pos = 134.
ENDIF.
gs_objbin+gv_len = gs_pdf_tab(gv_pos).
gv_len = gv_len + gv_pos.
IF gv_len = 255. "length of out (contents_bin)
APPEND gs_objbin TO gt_objbin.
CLEAR: gs_objbin, gv_len.
IF gv_pos < 134.
gs_objbin = gs_pdf_tab+gv_pos.
gv_len = 134 - gv_pos.
ENDIF.
ENDIF.
ENDLOOP.
IF gv_len > 0.
APPEND gs_objbin TO gt_objbin.
ENDIF.
**************************************************************
CLEAR gs_docdata.
gs_docdata-obj_name = gc_tst.
CONCATENATE it_header-plant '- Dispatch of' it_header-conname1 INTO gc_subject SEPARATED BY ' '.
gs_docdata-obj_descr = gc_subject.
IF mailtxt[] IS INITIAL.
mailtxt-line = '<HTML><BODY>'.
APPEND mailtxt.
mailtxt-line = '<head>'.
APPEND mailtxt.
mailtxt-line = '<title>BOM, Routing & Costing Pending</title>'.
APPEND mailtxt.
mailtxt-line = '<meta http-equiv="Content-Type" content="text/html;'.
APPEND mailtxt.
mailtxt-line = 'charset=iso-8859-1">'.
APPEND mailtxt.
mailtxt-line = '</head>'.
APPEND mailtxt.
mailtxt-line = '<font size="3">Dear Sir/Madam,'.
APPEND mailtxt.
mailtxt-line = ' '.
APPEND mailtxt.
mailtxt-line = '<BR><BR>This is to inform you that dispatch of '.
APPEND mailtxt.
CONCATENATE '<B>' it_header-conname1 '</B>' INTO mailtxt-line SEPARATED BY ' '.
APPEND mailtxt.
mailtxt-line = ' has been successfully completed.'.
APPEND mailtxt.
mailtxt-line = '<BR><BR>Summarized Information of dispatch is mentioned Below:'.
APPEND mailtxt.
mailtxt-line = '<BR><BR><table>'.
APPEND mailtxt.
CONCATENATE '<TR font size="3"><TD>Invoice Number<TD>:</TD><TD>' it_header-docno '</TD></TR>'INTO mailtxt-line.
APPEND mailtxt.
CONCATENATE '<TR font size="3"><TD>Delivery Challan<TD>:</TD><TD>' it_header-loadingno '</TD></TR>'INTO mailtxt-line.
APPEND mailtxt.
CONCATENATE '<TR font size="3"><TD>PO Number<TD>:</TD><TD>' it_header-pono '</TD></TR>'INTO mailtxt-line.
APPEND mailtxt.
CONCATENATE '<TR font size="3"><TD>Sales Order<TD>:</TD><TD>' it_header-oano '</TD></TR>'INTO mailtxt-line.
APPEND mailtxt.
CONCATENATE '<TR font size="3"><TD>Total Amount in' unit '<TD>:</TD><TD>' INTO mailtxt-line SEPARATED BY ' '.
APPEND mailtxt.
mailtxt-line = totamount.
APPEND mailtxt.
mailtxt-line = '</TD></TR>'.
APPEND mailtxt.
totamtinr = totamount * it_header-exrate.
mailtxt-line = '<TR font size="3"><TD>Total Amount in INR<TD>:</TD><TD>'.
APPEND mailtxt.
mailtxt-line = totamtinr.
APPEND mailtxt.
mailtxt-line = '</TD></TR>'.
APPEND mailtxt.
mailtxt-line = '</table>'.
APPEND mailtxt.
mailtxt-line = '<BR><BR>For more details please find attached invoice copy.'.
APPEND mailtxt.
mailtxt-line = '<BR><BR>Regards,'.
APPEND mailtxt.
mailtxt-line = '<BR>Dispatch Team'.
APPEND mailtxt.
mailtxt-line = '<BR>Sanghvi Forging & Engineering Ltd </font>'.
APPEND mailtxt.
mailtxt-line = '<BR><BR><P1>*This is system generated mail, please do not reply.</P1>'.
APPEND mailtxt.
ENDIF.
DESCRIBE TABLE mailtxt LINES gv_tab_lines.
READ TABLE mailtxt INDEX gv_tab_lines.
CLEAR gs_objpack.
REFRESH gt_objpack.
gs_objpack-transf_bin = space.
gs_objpack-head_start = 1.
gs_objpack-head_num = 0.
gs_objpack-body_start = 1.
DESCRIBE TABLE mailtxt LINES gs_objpack-body_num.
gs_objpack-doc_type = 'HTML'.
APPEND gs_objpack TO gt_objpack.
* Filling the details in SAPoffice: Description of Imported Object Components table
DESCRIBE TABLE gt_objbin LINES gv_tab_lines.
CLEAR gs_objbin.
READ TABLE gt_objbin INTO gs_objbin INDEX gv_tab_lines.
IF sy-subrc = 0.
gs_objpack-doc_size = ( gv_tab_lines - 1 ) * 255 + strlen( gs_objbin ).
gs_objpack-transf_bin = 'X'.
gs_objpack-head_start = 1.
gs_objpack-head_num = 0.
gs_objpack-body_start = 1.
gs_objpack-body_num = gv_tab_lines.
gs_objpack-doc_type = 'PDF'.
gs_objpack-obj_name = 'ATTACHMENT'.
CONCATENATE 'Invoice-' it_header-docno INTO gs_objpack-obj_descr SEPARATED BY ' '.
APPEND gs_objpack TO gt_objpack.
ENDIF.
SORT gt_reclist BY receiver. """""""""""" added lbs 23032015
DELETE ADJACENT DUPLICATES FROM gt_reclist[] COMPARING receiver rec_type .
* Sending the Form Output in the PDF format to email
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = gs_docdata
put_in_outbox = 'X'
commit_work = 'X'
TABLES
packing_list = gt_objpack
contents_bin = gt_objbin
contents_txt = mailtxt
receivers = gt_reclist
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.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
* MESSAGE 'Invoice Sent Successfully.' TYPE 'I'.
wa_snd-vbeln = it_header-docno.
wa_snd-zestatus = 'X'.
MODIFY zinv_snd FROM wa_snd.
CLEAR wa_snd.
ENDIF.
ENDFORM. " F_SEND_EMAIL