FORM. FRM_KONDI_WERT_980.
*{ INSERT SDQK9A1SJD 2
******20100325 by five
DATA : custpo LIKE vbak-bstnk,
amount LIKE konp-kbetr,
zvbeln LIKE vbrp-vbeln,
zposnr LIKE vbrp-posnr,
zwaerk LIKE komk-waerk,
zknumv LIKE vbrk-knumv,
zcount type i,
zflag(1) type c,
zreason(100) type c,
zint type i.
DATA: v_vbeln LIKE vbak-vbeln,
s_vbeln LIKE vbak-vbeln,
v_posnr LIKE vbap-posnr.
DATA: t_er TYPE tcurr-ukurs, " exchange rates
t_ff TYPE tcurr-ffact, " from currency
t_lf TYPE tcurr-tfact, " to currency
ld_erate LIKE komk-kurrf.
IF komk-vkorg = 'PELH' AND komk-vtweg = 'C0'.
clear:v_vbeln,v_posnr,custpo.
**** get SO number
SELECT SINGLE vgbel vgpos INTO (v_vbeln, v_posnr)
FROM lips
WHERE vbeln = komp-vgbel
AND posnr = komp-vgpos.
*******get customer po
SELECT SINGLE vbak~bstnk
INTO (custpo)
FROM vbak
WHERE vbak~vbeln = v_vbeln.
********check billing if has packing price
select distinct vbeln into S_VBELN from lips where VGBEL = v_vbeln.
if zflag <> 'Y'.
clear :ZVBELN,ZPOSNR,ZKNUMV.
tableS:VBRK.
SELECT distinct VBRP~VBELN VBRP~POSNR VBRK~KNUMV
INTO (ZVBELN,ZPOSNR,ZKNUMV)
FROM VBRP INNER JOIN VBRK
ON VBRP~VBELN = VBRK~VBELN
WHERE VBRP~VGBEL = S_VBELN
and VBRP~VBELN like '5%'.
if sy-subrc = 0.
SELECT SINGLE *
FROM VBRK WHERE SFAKN = ZVBELN.
if sy-subrc <> 0.
clear :zcount.
SELECT count( * ) into zcount
FROM KONV
WHERE KNUMV = ZKNUMV
AND KSCHL = 'ZPK0'
and KPOSN = ZPOSNR .
if zcount >= 1 .
zflag = 'Y'.
exit.
endif.
endif.
endif.
endselect.
ENDIF.
endselect.
IF ZFLAG = 'Y'
and ( ZKNUMV = xkomv-KNUMV )
and ( ZPOSNR = xkomv-kposn ).
ELSEif ZFLAG = 'Y' .
concatenate ZVBELN ' has append packing price in line: ' ZPOSNR
' for PO :' custpo into zreason.
CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
EXPORTING
TITEL = 'Warning !!'
textline1 = zreason
textline2 = 'So price will be zero'
START_COLUMN = 10
START_ROW = 6 .
ENDIF.
IF ZFLAG = ''.
IF NOT custpo IS INITIAL.
CALL FUNCTION 'ZRFC_SD_PCE_0084'
EXPORTING
zcustpo = custpo
IMPORTING
zamount = amount.
zwaerk = 'USD'.
IF komk-waerk <> zwaerk .
CALL FUNCTION 'READ_EXCHANGE_RATE'
EXPORTING
* CLIENT = SY-MANDT
date = sy-datum
foreign_currency = zwaerk
local_currency = komk-waerk
type_of_rate = 'M' " SAP standard exchange rates
* type
* EXACT_DATE = ' '
IMPORTING
exchange_rate = t_er " exchange rates
foreign_factor = t_ff " foreign factor
local_factor = t_lf " local factor
* DERIVED_RATE_TYPE =
* FIXED_RATE =
* OLDEST_RATE_FROM =
EXCEPTIONS
no_rate_found = 1
no_factors_found = 2
no_spread_found = 3
derived_2_times = 4
overflow = 5 .
IF sy-subrc = 0.
ld_erate = t_er / ( t_ff / t_lf ).
ENDIF.
IF xkomv-kbetr = '' .
xkwert = ( amount * ld_erate ) / 10000000.
xkomv-kbetr = amount.
ELSE.
xkwert = ( xkomv-kbetr * ld_erate ) / 10000000.
ENDIF.
ELSE.
ld_erate = '1.00000'.
IF xkomv-kbetr = ''.
xkwert = ( amount * ld_erate ) / 100000.
xkomv-kbetr = amount.
ELSE.
xkwert = ( xkomv-kbetr * ld_erate ) / 100000.
ENDIF.
ENDIF.
xkomv-waers = zwaerk.
xkomv-kkurs = ld_erate.
if xkwert = 0.
CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
EXPORTING
TITEL = 'Warning !!'
textline1 = 'packing price is zero'
textline2 = 'pls check FG pack code & price'
START_COLUMN = 10
START_ROW = 6 .
endif.
ENDIF.
ENDIF.
ENDIF.
*} INSERT
ENDFORM.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14397246/viewspace-665761/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14397246/viewspace-665761/