BDC 调用中 金额格式转换

Posted jackeylove

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BDC 调用中 金额格式转换相关的知识,希望对你有一定的参考价值。

在BDC调用中,由于用户设置不同,导致金额、日期等字段的输入格式不正确。此处给出 自创 金额转换FM 并配有 调用方式。

function zgm_conver_cuur.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     REFERENCE(I_STRIN)
*"     REFERENCE(I_DECIMALS) TYPE  I
*"  EXPORTING


 

*"     REFERENCE(E_STROUT)
*"----------------------------------------------------------------------
  data:l_dcpfm   like usr01-dcpfm,
       l_strin   type char20,
       l_reverse type char20,
       l_strout  type char20,
       l_str1    type string,
       l_str2    type string,

       l_mask    type string.
  data:l_lenth type i.
  data:l_lenth2 type i.
  clear l_mask.
  l_str2 = ___.
  case i_decimals.
    when 2.
      l_str1 = __.
    when 3.
      l_str1 = ___.
    when 4.
      l_str1 = ____.
    when others.
  endcase.

  l_strin = i_strin.
  "remove Punctuation by space
  replace . with ‘‘ into l_strin.
  condense l_strin no-gaps.
  l_lenth = strlen( l_strin ).
  l_lenth2 = l_lenth - i_decimals.

  case l_lenth2.
    when 1 or 2 or 3.
    when 4 or 5 or 6.
    when others.
  endcase.
  "reverse string
  call function STRING_REVERSE
    exporting
      string  = l_strin
      lang    = sy-langu
    importing
      rstring = l_reverse.


  select single dcpfm into l_dcpfm from usr01 where bname = sy-uname.

  case l_dcpfm.
    when ‘‘.
      case l_lenth2.
        when 1 or 2 or 3.
          concatenate l_str1 l_str2 into l_mask separated by ,.
        when 4 or 5 or 6.
          concatenate l_str2 l_str2 into l_mask separated by ..
          concatenate l_str1 l_mask into l_mask separated by ,.
        when 7 or 8 or 9.
          concatenate l_str2 l_str2 l_str2 into l_mask separated by ..
          concatenate l_str1 l_mask into l_mask separated by ,.
        when 10 or 11 or 12.
          concatenate l_str2 l_str2 l_str2 l_str2 into l_mask separated by ..
          concatenate l_str1 l_mask into l_mask separated by ,.
        when others.
      endcase.
    when X.
      case l_lenth2.
        when 1 or 2 or 3.
          concatenate l_str1 l_str2 into l_mask separated by ..
        when 4 or 5 or 6.
          concatenate l_str2 l_str2 into l_mask separated by ,.
          concatenate l_str1 l_mask into l_mask separated by ..
        when 7 or 8 or 9.
          concatenate l_str2 l_str2 l_str2 into l_mask separated by ,.
          concatenate l_str1 l_mask into l_mask separated by ..
        when 10 or 11 or 12.
          concatenate l_str2 l_str2 l_str2 l_str2 into l_mask separated by ,.
          concatenate l_str1 l_mask into l_mask separated by ..
        when others.
      endcase.
    when Y.
      case l_lenth2.
        when 1 or 2 or 3.
          concatenate l_str1 l_str2 into l_mask separated by ,.
        when 4 or 5 or 6.
          concatenate l_str2 l_str2 into l_mask separated by space.
          concatenate l_str1 l_mask into l_mask separated by ,.
        when 7 or 8 or 9.
          concatenate l_str2 l_str2 l_str2 into l_mask separated by space.
          concatenate l_str1 l_mask into l_mask separated by ,.
        when 10 or 11 or 12.
          concatenate l_str2 l_str2 l_str2 l_str2 into l_mask separated by space.
          concatenate l_str1 l_mask into l_mask separated by ,.
        when others.
      endcase.
  endcase.

  write  l_reverse using edit mask l_mask to l_strout.

  if sy-subrc = 0.
    "reverse string
    call function STRING_REVERSE
      exporting
        string  = l_strout
        lang    = sy-langu
      importing
        rstring = e_strout.
  endif.
endfunction.
  DATA:l_wrbtr LIKE bdcdata-fval.       "BDC Amount

    l_wrbtr = <lfs_post>-kwert.

    CONDENSE l_wrbtr NO-GAPS.

    CALL FUNCTION ZGM_CONVER_CUUR
      EXPORTING
        i_strin    = l_wrbtr
        i_decimals = 2"两位小数,也可三位  四位
      IMPORTING
        e_strout   = l_wrbtr.

 

以上是关于BDC 调用中 金额格式转换的主要内容,如果未能解决你的问题,请参考以下文章

BDC中日期和数量格式的转换处理

BDC程序步骤

小写数字自动转换成大写人民币金额两张表怎么在桌面找不同吗?

BDC 用户输入日期转系统日期格式: CONVERT_DATE_TO_EXTERNAL

vue输入框输入数字后自动转换为金额格式

vue输入框输入数字后自动转换为金额格式