博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

sap 取货币之间汇率

Posted on 2016-05-13 09:30  jansum  阅读(979)  评论(0)    收藏  举报
FORM FRM_GET_KURSK  USING PV_KURST            "M
                           PV_FCURR
                           PV_TCURR
                           PV_PRSDT
                  CHANGING PV_KURSK.

  DATA: LV_RATE   LIKE BAPI1093_0,
        LV_RETURN LIKE BAPIRET1.

  CALL FUNCTION 'BAPI_EXCHANGERATE_GETDETAIL'
    EXPORTING
      RATE_TYPE  = PV_KURST
      FROM_CURR  = PV_FCURR
      TO_CURRNCY = PV_TCURR
      DATE       = PV_PRSDT
    IMPORTING
      EXCH_RATE  = LV_RATE
      RETURN     = LV_RETURN.

  IF LV_RETURN-TYPE = 'E'.
    MESSAGE E000 WITH LV_RETURN-TYPE LV_RETURN-NUMBER LV_RETURN-MESSAGE.
  ELSEIF LV_RETURN-TYPE <> ''.
    PV_KURSK = LV_RATE-EXCH_RATE.
    MESSAGE S000 WITH LV_RETURN-TYPE LV_RETURN-NUMBER LV_RETURN-MESSAGE.
  ELSE.
    PV_KURSK = LV_RATE-EXCH_RATE.
  ENDIF.

  " 如果取不到正向汇率, 再取一次反向汇率.
  IF LV_RETURN-NUMBER = '024'.
    CALL FUNCTION 'BAPI_EXCHANGERATE_GETDETAIL'
      EXPORTING
        RATE_TYPE  = PV_KURST
        FROM_CURR  = PV_TCURR
        TO_CURRNCY = PV_FCURR
        DATE       = PV_PRSDT
      IMPORTING
        EXCH_RATE  = LV_RATE
        RETURN     = LV_RETURN.

    IF LV_RETURN-TYPE = 'E'.
      MESSAGE E000 WITH LV_RETURN-TYPE LV_RETURN-NUMBER LV_RETURN-MESSAGE.
    ELSEIF LV_RETURN-TYPE <> ''.
      PV_KURSK = LV_RATE-EXCH_RATE.
      MESSAGE S000 WITH LV_RETURN-TYPE LV_RETURN-NUMBER LV_RETURN-MESSAGE.
    ELSE.
      PV_KURSK = LV_RATE-EXCH_RATE * -1.
    ENDIF.

  ENDIF.

ENDFORM.