依據用戶參數的設置轉換數值格式

 FUNCTION zupd_fm.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(I_IN)
*"     VALUE(I_UNAME) TYPE  UNAME OPTIONAL
*"     VALUE(I_COUNTRY) LIKE  T005X-LAND OPTIONAL
*"  EXPORTING
*"     REFERENCE(E_OUT)
*"     REFERENCE(E_DCPFM) TYPE  XUDCPFM
*"  EXCEPTIONS
*"      USER_NAME_NOT_EXIST
*"      UNABLE_CONVERT_AS_NUMBER
*"      COUNTRY_NOT_FOUND
*"----------------------------------------------------------------------

  DATA: lw_usdefaults TYPE usdefaults,
        lv_sign LIKE usr01-dcpfm,
        lv_form LIKE usr01-datfm,
        lv_re TYPE c.

  IF i_in CO '0123456789,. '.
  ELSE.
    RAISE unable_convert_as_number.
  ENDIF.

  IF i_country IS NOT INITIAL.
    CALL FUNCTION 'C14N_COUNTRY_DATE_DECF_GET'
      EXPORTING
        i_country         = i_country
      IMPORTING
        e_deci_sign       = lv_sign
        e_date_form       = lv_form
      EXCEPTIONS
        country_not_found = 1
        OTHERS            = 2.
    IF sy-subrc <> 0.
      RAISE country_not_found.
    ENDIF.

    e_dcpfm = lv_sign.
  ELSE.
    IF i_uname IS INITIAL.
      i_uname = sy-uname.
    ENDIF.
    CALL FUNCTION 'SUSR_USER_DEFAULTS_GET'
      EXPORTING
        user_name           = i_uname
      IMPORTING
        user_defaults       = lw_usdefaults
      EXCEPTIONS
        user_name_not_exist = 1
        OTHERS              = 2.
    IF sy-subrc <> 0.
      RAISE user_name_not_exist.
    ENDIF.

    e_dcpfm = lw_usdefaults-dcpfm.
  ENDIF.

  CASE e_dcpfm.
    WHEN 'X'.
      TRANSLATE i_in USING ', '.
      CONDENSE i_in NO-GAPS.
    WHEN 'Y'.
      TRANSLATE i_in USING ',.'.
      CONDENSE i_in NO-GAPS.
    WHEN ' '.
      TRANSLATE i_in USING '. '.
      TRANSLATE i_in USING ',.'.
      CONDENSE i_in NO-GAPS.
    WHEN OTHERS.
  ENDCASE.

  MOVE i_in TO e_out.

ENDFUNCTION.
  

相關函數組:SUU1,C14N。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章