update packing price

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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值