分享

SAP取汇率接口 OB08

 万里潮涌 2023-06-06 发布于浙江

业务背景:
其他系统需要从SAP取OB08汇率
我们知道,SAP可以仅维护3月和5月两条汇率,如果4月没有维护,则会取3月的汇率。
但接口要求,3月那条生效日期为3月1日,失效日期为4月30号,SAP本身是没有的,需要程序里面处理下。
输入参数为可以为空,返回所有
(对于顾问亦可以作为FS开发说明书,懂基础ABAP的,可以找我免费领取源码)

图片

图片

图片

图片

FUNCTION ZRFC_OA_004.

*'----------------------------------------------------------------------
*'*'本地接口:
*'  TABLES
*'      T_OUT STRUCTURE  ZBAPI1093_0
*'----------------------------------------------------------------------


  DATABEGIN OF gs_tcurr,
          fcurr LIKE tcurr-fcurr,
          gdatu LIKE tcurr-gdatu,
        END OF gs_tcurr .
  DATAgt_tcurr LIKE TABLE OF gs_tcurr .

  DATAls_out2 LIKE zbapi1093_0 .
  DATAlt_out2 LIKE TABLE OF zbapi1093_0 .

 DATAHILF1(9)   TYPE C,
      OUTDATUM   TYPE D.
  DATA:  ls_exch_rate LIKE  bapi1093_0 .
  DATA:  ls_out LIKE zbapi1093_0 .
  DATA:  lv_date TYPE LENGTH 10 .
  DATA:  lv_date2 TYPE bapi1093_2-trans_date .
  SELECT DISTINCT  fcurr gdatu
   INTO TABLE gt_tcurr
   FROM tcurr
   WHERE kurst EQ 'M' .


  LOOP AT gt_tcurr INTO gs_tcurr .
    CALL FUNCTION 'CONVERSION_EXIT_INVDT_OUTPUT'
      EXPORTING
        input  gs_tcurr-gdatu
      IMPORTING
        output lv_date.

    CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
      EXPORTING
        date_external            lv_date
        accept_initial_date      'X'
      IMPORTING
        date_internal            lv_date2
      EXCEPTIONS
        date_external_is_invalid 1
        OTHERS                   2.
    IF sy-subrc <> 0.
* Implement suitable error handling here
    ENDIF.

   if lv_date2 >= '20230101' .
    CALL FUNCTION 'BAPI_EXCHANGERATE_GETDETAIL'
      EXPORTING
        rate_type  'M'
        from_curr  gs_tcurr-fcurr
        to_currncy 'CNY'
        date       lv_date2
      IMPORTING
        exch_rate  ls_exch_rate
*       RETURN     =
      .
    MOVE-CORRESPONDING  ls_exch_rate TO ls_out .
    ls_out-exch_rate2 ls_out-exch_rate  / ls_out-from_factor .

    APPEND ls_out TO t_out .
    APPEND ls_out TO lt_out2 .
   endif .

  ENDLOOP .

   SORT t_out BY   FROM_CURR  TO_CURRNCY VALID_FROM .
   SORT lt_out2 BY   FROM_CURR  TO_CURRNCY VALID_FROM .
   DELETE ADJACENT DUPLICATES FROM t_out COMPARING  FROM_CURR  TO_CURRNCY VALID_FROM.
   DELETE ADJACENT DUPLICATES FROM lt_out2 COMPARING  FROM_CURR  TO_CURRNCY VALID_FROM .


  SORT t_out BY    from_curr valid_from .
  SORT lt_out2 BY  from_curr valid_from .

  DATA lv_tabix TYPE sy-tabix .
  LOOP AT t_out INTO ls_out .
    READ TABLE lt_out2 WITH KEY   from_curr ls_out-from_curr
                                  valid_from  ls_out-valid_from
                                  TRANSPORTING NO FIELDS .
    IF sy-subrc EQ .
      lv_tabix =  sy-tabix  .
      READ TABLE lt_out2 INTO ls_out2  INDEX  lv_tabix + .
      ls_out-invalid ls_out2-valid_from .

    ENDIF .

    MODIFY t_out FROM  ls_out .
    CLEAR ls_out ,ls_out2 .

  ENDLOOP .

ENDFUNCTION.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约