*&---------------------------------------------------------------------*
*& Form output_PDF
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_OUT_TAB_LIST_1_VBELN text
* -->P_OUT_LIST_1_AUART text
*----------------------------------------------------------------------*
form. output_pdf .
data:tqty like invoicedetail-enmng.
data :hhhub like invoicedetail-matnr,
hhhubdes like invoicedetail-maktx,
hhenmng like invoicedetail-enmng.
free :invoiceheader[],invoicedetail[],invoicedetail1[],
invoicedetail2[],invoicedetail3[],pwoconpnent[],pwoamout[].
loop at out_tab_list_1 where selid = 'X'.
clear :invoiceheader,invoicedetail[],pwoconpnent[],pwoamout[].
if out_tab_list_1-erdat is initial.
out_tab_list_1-erdat = sy-datum.
endif.
if out_tab_list_1-fkart = 'ZPLB'.
**********get invoice header data***************
invoiceheader-bstnk = out_tab_list_1-bstnk. "cpo
***** get customer SO number.
clear :vbak.
select single * from vbak where vbeln = out_tab_list_1-vbelna.
invoiceheader-vbeln = vbak-xblnr. " EMC customer so
invoiceheader-vbelnf = out_tab_list_1-vbeln .
***GET SHIPPING DATE.
select single lfdat into invoiceheader-lfdat
from likp inner join lips
on likp~vbeln = lips~vbeln
where vgbel = out_tab_list_1-vbelna.
***GET SHIP TO ADDRESS = END CUSTOMER ADDRESS.
select single * from zcto_po_address
where custpo = out_tab_list_1-bstnk.
invoiceheader-ship_to = zcto_po_address-in_name.
invoiceheader-ship_adr = zcto_po_address-in_address.
invoiceheader-adr_adr1 = zcto_po_address-in_address1.
invoiceheader-adr_adr2 = zcto_po_address-in_address2.
invoiceheader-adr_adr3 = zcto_po_address-in_address3.
invoiceheader-adr_post = zcto_po_address-in_postalcode.
invoiceheader-adr_region = zcto_po_address-in_state.
invoiceheader-adr_county = zcto_po_address-in_country.
invoiceheader-in_email = zcto_po_address-in_email.
invoiceheader-telephone = zcto_po_address-in_phone.
invoiceheader-in_name = zcto_po_address-in_name.
invoiceheader-adr_name1 = zcto_po_address-in_name.
invoiceheader-in_fax = zcto_po_address-in_fax.
invoiceheader-in_city = zcto_po_address-in_city.
***get billing type
invoiceheader-fkart = out_tab_list_1-fkart.
***get HAWB
select single * from zpcesddninfo where vbeln =
out_tab_list_1-vbelnl.
invoiceheader-xblnr = zpcesddninfo-bol_no.
***get customer address
select single * from vbpa where vbeln = out_tab_list_1-vbelna
and ( parvw = 'PY' or parvw = 'RG' ).
select single * from adrc where addrnumber = vbpa-adrnr .
select single * from kna1 where kunnr = vbpa-kunnr.
select single * from t005t
where land1 = adrc-country
and spras = 'E' .
invoiceheader-bill_to = vbpa-kunnr.
invoiceheader-adr2_name1 = adrc-name1.
invoiceheader-adr2_st = adrc-street.
invoiceheader-region = adrc-city1.
invoiceheader-adr2_supply = adrc-str_suppl1.
invoiceheader-adr2_post = adrc-post_code1.
invoiceheader-adr2_county = t005t-landx..
invoiceheader-stceg = kna1-stceg.
append invoiceheader.
***************GET INVOICE DETAIL DATA.
call function 'ZRFC_SD_PCE_0085'
exporting
zcustpo = out_tab_list_1-bstnk
* IMPORTING
* ZAMOUNT =
tables
wocompnent = pwoconpnent
woamout = pwoamout .
zposnr = 1.
loop at pwoconpnent.
move-corresponding pwoconpnent to invoicedetail.
invoicedetail-vbeln = out_tab_list_1-vbeln.
invoicedetail-posnr = zposnr.
invoicedetail-enmng = pwoconpnent-bdmng.
***GET MATERIAL DESCRIPTION
select single maktx into invoicedetail-maktx from makt
where matnr = invoicedetail-matnr and spras = 'EN'.
***GET CUSTOMER PN
select single bismt into invoicedetail-bismt from mara
where matnr = invoicedetail-matnr .
if pwoconpnent-netpr = 0.
message i000 with invoicedetail-bismt'Customer PN price is 0'.
endif.
append invoicedetail.
zposnr = zposnr + 1.
endloop.
***GET PACKING PRICE
invoicedetail-vbeln = out_tab_list_1-vbeln.
invoicedetail-posnr = zposnr.
invoicedetail-matnr = 'MISC'.
invoicedetail-maktx = 'Packing Material'.
invoicedetail-bismt = 'MISC'.
call function 'ZRFC_SD_PCE_0084'
exporting
zcustpo = out_tab_list_1-bstnk
importing
zamount = invoicedetail-kbetr.
if invoicedetail-kbetr = 0 .
message e000 with out_tab_list_1-bstnk'Packing price is 0,pls
check pack code&price.'.
endif.
invoicedetail-enmng = '1'.
invoicedetail-netpr = invoicedetail-kbetr.
******* compare price with billing ,if <> then show error.
clear: zvbrpamount,zvbrpamount1.
select distinct vbeln into zvbeln from vbrp
where aubel = out_tab_list_1-vbelna
and vbeln like '5%'.
if sy-subrc = 0 .
select single *
from vbrk where sfakn = zvbeln.
if sy-subrc <> 0.
select * from vbrp where vbeln = zvbeln.
zvbrpamount = zvbrpamount + vbrp-netwr .
endselect.
endif.
endif.
clear :zvbeln.
endselect.
loop at pwoamout.
zvbrpamount1 = zvbrpamount1 + pwoamout-netpr .
endloop.
zvbrpamount1 = zvbrpamount1 + invoicedetail-kbetr .
if zvbrpamount <> zvbrpamount1.
message e000 with out_tab_list_1-vbeln' EMC billing Price
different from hh billing,pls check in vf02 '.
endif.
append invoicedetail.
clear: zposnr,zvbrpamount,zvbrpamount1.
elseif out_tab_list_1-fkart = 'ZPLC'.
invoiceheader-bstnk = out_tab_list_1-bstnk. "cpo
invoiceheader-vbeln = out_tab_list_1-vbelna. "so
invoiceheader-vbelnf = out_tab_list_1-vbeln ." BILLING
***GET SHIPPING DATE.
select single lfdat into invoiceheader-lfdat
from likp inner join lips
on likp~vbeln = lips~vbeln
where vgbel = out_tab_list_1-vbelna.
***sold to/billing to address
clear: vbpa, adrc, adrct, t005t.
select single * from vbpa where vbeln = out_tab_list_1-vbelna
and ( parvw = 'PY' or parvw = 'RG' ).
select single * from adrc where addrnumber = vbpa-adrnr .
select single * from kna1 where kunnr = vbpa-kunnr.
select single * from t005t
where land1 = adrc-country
and spras = 'E' .
invoiceheader-bill_to = vbpa-kunnr.
invoiceheader-adr2_name1 = adrc-name1.
invoiceheader-adr2_st = adrc-street.
invoiceheader-region = adrc-city1.
invoiceheader-adr2_supply = adrc-str_suppl1.
invoiceheader-adr2_post = adrc-post_code1.
invoiceheader-adr2_county = t005t-landx.
invoiceheader-stceg = kna1-stceg.
***get billing type
invoiceheader-fkart = out_tab_list_1-fkart.
***get HAWB
select single * from zpcesddninfo where vbeln =
out_tab_list_1-vbelnl.
invoiceheader-xblnr = zpcesddninfo-bol_no.
***ship to address
clear: vbpa, adrc, adrct, t005t.
select single * from vbpa
where vbeln = out_tab_list_1-vbelna and ( parvw = 'WE' or parvw
= 'SH' ) .
select single * from adrc where addrnumber = vbpa-adrnr.
select single * from adrct where addrnumber = vbpa-adrnr.
select single * from t005t
where land1 = adrc-country
and spras = 'E' .
invoiceheader-ship_to = adrc-name1.
invoiceheader-adr_name1 = adrc-name1.
invoiceheader-ship_adr = adrc-street.
invoiceheader-adr_adr1 = adrc-str_suppl1.
invoiceheader-adr_adr2 = adrc-str_suppl2.
invoiceheader-adr_adr3 = adrc-str_suppl3.
invoiceheader-adr_post = adrc-post_code1.
invoiceheader-adr_region = adrc-region.
invoiceheader-adr_county = t005t-landx.
invoiceheader-in_email = ''.
invoiceheader-telephone = adrc-tel_number.
invoiceheader-in_name = adrc-name1.
invoiceheader-in_fax = adrc-fax_number.
invoiceheader-in_city = adrc-city1.
append invoiceheader.
*********get invoice detail
clear: vbrp,zposnr,invoicedetail.
select vbeln posnr matnr fkimg as enmng
into corresponding fields of table invoicedetail
from vbrp where vbeln = out_tab_list_1-vbeln.
zposnr = 1.
loop at invoicedetail.
***GET MATERIAL DESCRIPTION
select single maktx into invoicedetail-maktx from makt
where matnr = invoicedetail-matnr and spras = 'EN'.
***GET CUSTOMER PN
select single bismt into invoicedetail-bismt from mara
where matnr = invoicedetail-matnr .
****GET PRICE
select single * from vbrk where vbeln = out_tab_list_1-vbeln.
select single * from konv where knumv = vbrk-knumv
and kposn = invoicedetail-posnr
and kschl = 'PR00'.
invoicedetail-kbetr = konv-kbetr .
if konv-waers = 'USD'.
invoicedetail-netpr = invoicedetail-kbetr * invoicedetail-enmng.
elseif konv-waers <> ''.
t_intval = invoicedetail-kbetr .
call function 'CURRENCY_AMOUNT_SAP_TO_DISPLAY'
exporting
currency = konv-waers
amount_internal = t_intval
importing
amount_display = t_disval
exceptions
internal_error = 1
others = 2.
p_disval = t_disval.
call function 'READ_EXCHANGE_RATE'
exporting
* CLIENT = SY-MANDT
date = out_tab_list_1-erdat
foreign_currency = 'USD'
local_currency = konv-waers
type_of_rate = 'M' " SAP standard exchange rates
importing
exchange_rate = t_er " exchange rates
foreign_factor = t_ff " foreign factor
local_factor = t_lf " local factor
valid_from_date = t_vfd.
if sy-subrc eq 0.
ld_erate = t_er / ( t_ff / t_lf ).
if ld_erate > 0.
p_disval = p_disval / ld_erate * konv-kpein.
else.
ld_erate = ld_erate * -1.
p_disval = p_disval / ld_erate * konv-kpein.
endif.
invoicedetail-kbetr = p_disval.
invoicedetail-netpr = invoicedetail-kbetr * invoicedetail-enmng.
endif.
endif.
invoicedetail-posnr = zposnr.
modify invoicedetail.
zposnr = zposnr + 1.
hhhub = invoicedetail-matnr.
hhhubdes = invoicedetail-maktx.
hhenmng = invoicedetail-enmng.
clear:vbrk,konv,t_intval,t_disval,p_disval,invoicedetail.
endloop.
****** APPEND HUBBING PRICE
invoicedetail-vbeln = out_tab_list_1-vbeln.
invoicedetail-posnr = zposnr.
invoicedetail-matnr = hhhub.
invoicedetail-maktx = hhhubdes.
invoicedetail-bismt = 'Hubbing Cost'.
invoicedetail-enmng = hhenmng.
select single * from vbrk where vbeln = out_tab_list_1-vbeln.
select single * from konv where knumv = vbrk-knumv
and kschl = 'ZHR0'.
invoicedetail-kbetr = konv-kbetr .
t_intval = invoicedetail-kbetr .
call function 'CURRENCY_AMOUNT_SAP_TO_DISPLAY'
exporting
currency = konv-waers
amount_internal = t_intval
importing
amount_display = t_disval
exceptions
internal_error = 1
others = 2.
invoicedetail-kbetr = t_disval.
invoicedetail-netpr = invoicedetail-kbetr * invoicedetail-enmng.
if invoicedetail-kbetr = 0 .
message e000 with out_tab_list_1-vbeln'Hubbing price is 0,pls
maintain hubbing price in vf02'.
endif.
clear:vbrk,konv,t_intval,t_disval.
append invoicedetail.
****** APPEND freight PRICE
zposnr = zposnr + 1.
invoicedetail-vbeln = out_tab_list_1-vbeln.
invoicedetail-posnr = zposnr.
invoicedetail-matnr = hhhub.
invoicedetail-maktx = hhhubdes.
invoicedetail-bismt = 'Freight Cost'.
invoicedetail-enmng = hhenmng.
select single * from vbrk where vbeln = out_tab_list_1-vbeln.
select single * from konv where knumv = vbrk-knumv
and kschl = 'ZKF0'.
invoicedetail-kbetr = konv-kbetr .
t_intval = invoicedetail-kbetr .
call function 'CURRENCY_AMOUNT_SAP_TO_DISPLAY'
exporting
currency = konv-waers
amount_internal = t_intval
importing
amount_display = t_disval
exceptions
internal_error = 1
others = 2.
invoicedetail-kbetr = t_disval.
invoicedetail-netpr = invoicedetail-kbetr * invoicedetail-enmng.
if invoicedetail-kbetr = 0 .
message e000 with out_tab_list_1-vbeln'Freight price is 0,pls
maintain freight price in vf02'.
endif.
append invoicedetail.
clear:vbrk,konv,zposnr,t_intval,t_disval,invoicedetail,hhhub,
hhhubdes,hhenmng.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14397246/viewspace-666221/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14397246/viewspace-666221/