汇率日期转换TCURR-GDATU

FORM frm_get_data.

  DATA:lv_date_out TYPE char20,
       lv_date_in  TYPE char20.
  DATA:lv_ukurs_sign TYPE char50.

  DATA:ls_alv   TYPE ty_alv,
       lv_index TYPE sy-tabix.

  DATA:lr_gdatu     TYPE RANGE OF tcurr-gdatu,
       lv_gdatu_low TYPE tcurr-gdatu.

  IF s_gdatu[] IS NOT INITIAL.

    CONVERT DATE s_gdatu-low INTO INVERTED-DATE lv_gdatu_low.

    lr_gdatu = VALUE #( ( sign = 'I' option = 'EQ'
                        low = lv_gdatu_low ) ).

  ENDIF.

*期初 日期不输入 查全量
  SELECT
         kurst,
         fcurr,
         tcurr,
         gdatu,
         ukurs
    FROM tcurr
    WHERE kurst = 'M'
      AND fcurr IN @s_fcurr
      AND tcurr IN @s_tcurr
      AND gdatu IN @lr_gdatu
     INTO TABLE @DATA(lt_tcurr).


  CLEAR lv_index.
  LOOP AT lt_tcurr INTO DATA(ls_tcurr).

    MOVE-CORRESPONDING ls_tcurr TO ls_alv.

    CALL FUNCTION 'CONVERSION_EXIT_INVDT_OUTPUT'
      EXPORTING
        input  = ls_tcurr-gdatu
      IMPORTING
        output = lv_date_out.

    CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
      EXPORTING
        date_external            = lv_date_out
*       ACCEPT_INITIAL_DATE      =
      IMPORTING
        date_internal            = lv_date_in
      EXCEPTIONS
        date_external_is_invalid = 1
        OTHERS                   = 2.

*日期转换 YYYY-MM-DD
    CALL METHOD zcl_abap_comm=>zconv_date_out
      EXPORTING
        iv_date_in  = lv_date_in
      IMPORTING
        ev_date_out = ls_alv-gdatu_out.

    lv_ukurs_sign = ls_tcurr-ukurs.
    CONDENSE lv_ukurs_sign.

    CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
      CHANGING
        value = lv_ukurs_sign.

    ls_alv-ukurs_out = lv_ukurs_sign.

    lv_index = lv_index + 1.
    ls_alv-line_index = lv_index.

    APPEND ls_alv TO gt_alv.
    CLEAR ls_alv.

  ENDLOOP.

ENDFORM.

 

image

 

posted @ 2026-08-28 20:34  Lan_dev  阅读(5)  评论(0)    收藏  举报