TCURR表取汇率问题

DATA: date LIKE sy-datum VALUE ‘20000101’,

datu(8).

datu = date.

datu = ‘99999999’ – datu.

然后拿datu去跟tcurr-gdatu比较.

即,用99999999减去TCURR~GDTAU就是实际汇率日期,OB08显示的是转换后的日期、其对应底表TCURR存储的是内部日期格式。

也可以使用函数做输入输出转化CONVERSION_EXIT_INVDT_OUTPUT

在SE16里需要输入正常的日期才能查询到数据:

在SQL语句中需要把日期换算成内部格式才能查询到。

比如,我们需要查询20190801的所有汇率信息,则先用99999999减去20190801得到内部日期79809198,再用这个日期去查询数据库才能查出。

如下演示ABAP直接去TCURR汇率:

  data(lv_date) = sy-datum.

  lv_date(4) = p_gjahr.

  lv_date+4(2) = p_monat.

  lv_date+6(2) = ’01’.

  lv_date = lv_date – 1. “上月最后一天.

  lv_date+6(2) = ’01’.   “上月第一天.

  “data(lv_gdatu) = conv d( 99999999 – lv_date ).

  data lv_gdatu type gdatu_inv. “char类型

  data lv_int1 type n length 8.

  data lv_int2 type n length 8.

  data lv_int3 type n length 8.

  lv_int1 = lv_date.

  lv_int2 = 99999999.

  lv_int3 = lv_int2 – lv_int1.

  write lv_int3 to lv_gdatu.

  “message s000 with lv_gdatu.

  select *

    into table @data(lt_tcurr)

    from tcurr

    where gdatu eq @lv_gdatu

      and kurst eq ‘M’.

发表评论