SAP 取汇率接口 OB08

作者:SAP养家 约 3 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, 开发
SAP 取汇率接口 OB08 - 封面图
SAP 取汇率接口 OB08 - 封面图

业务背景:

其他系统需要从SAP取OB08汇率

我们知道,SAP可以仅维护3月和5月两条汇率,如果4月没有维护,则会取3月的汇率。

但接口要求,3月那条生效日期为3月1日, 失效日期为4月30号 ,SAP本身是没有的,需要程序里面处理下。

输入参数为可以为空,返回所有 。

(对于顾问亦可以作为FS开发说明书,懂基础ABAP的,可以找我免费领取源码)

SAP 取汇率接口 OB08 - 封面图
SAP 取汇率接口 OB08 - 封面图
SAP 取汇率接口 OB08 - 封面图
SAP 取汇率接口 OB08 - 封面图
SAP 取汇率接口 OB08 - 封面图
SAP 取汇率接口 OB08 - 封面图
SAP 取汇率接口 OB08 - 封面图
SAP 取汇率接口 OB08 - 封面图
FUNCTION ZRFC_OA_004 .

*"----------------------------------------------------------------------

*"*"本地接口:

*" TABLES

*" T_OUT STRUCTURE ZBAPI1093_0

*"----------------------------------------------------------------------

DATA : BEGIN OF gs_tcurr ,

fcurr LIKE tcurr \- fcurr ,

gdatu LIKE tcurr \- gdatu ,

END OF gs_tcurr .

DATA : gt_tcurr LIKE TABLE OF gs_tcurr .

DATA : ls_out2 LIKE zbapi1093_0 .

DATA : lt_out2 LIKE TABLE OF zbapi1093_0 .

DATA : HILF1 ( 9 ) TYPE C ,

OUTDATUM TYPE D .

DATA : ls_exch_rate LIKE bapi1093_0 .

DATA : ls_out LIKE zbapi1093_0 .

DATA : lv_date TYPE c 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 0 . lv_tabix = sy \- tabix .

READ TABLE lt_out2 INTO ls_out2 INDEX lv_tabix + 1 .

ls_out \- invalid = ls_out2 \- valid_from \- 1 .
ENDIF .
MODIFY t_out FROM ls_out .

CLEAR : ls_out , ls_out2 .

ENDLOOP .
ENDFUNCTION .
SAP 取汇率接口 OB08 - 封面图
SAP 取汇率接口 OB08 - 封面图
SAP 取汇率接口 OB08 - 封面图
SAP 取汇率接口 OB08 - 封面图
SAP养家

关于作者:SAP养家

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「SAP取汇率接口OB08.md」整理生成,仅用于内部技术分享与学习交流。