ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SAP 越南小写金额转大写金额 amount in word

2021-11-04 19:58:26  阅读:262  来源: 互联网

标签:CONCATENATE REGEX word INTO 金额 value REPLACE amount OCCURRENCES


FUNCTION zfun_convert_money_vi.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(I_INPUT) TYPE  WERTV12
*"  EXPORTING
*"     VALUE(E_OUTPUT) TYPE  STRING
*"----------------------------------------------------------------------
  DATA: i_value   TYPE char100,        "入参
        e_value   TYPE char255,        "出参
        v_intege  TYPE c LENGTH 23,   "整数部分   最大23位
        v_decimal TYPE c LENGTH 2.    "小数部分   默认2位

  DATA: text_tab    TYPE TABLE OF char_4,
        wa_text_tab TYPE  char_4,
        length      TYPE i.

  DATA: v_lenth TYPE i,                           "整数部分长度
        v_cache TYPE c LENGTH 1.                  "缓存

  "输入
  i_value = i_input.

  SHIFT i_value LEFT DELETING LEADING '0'.          "删除前导0
  CONDENSE i_value NO-GAPS.                         "删除空格

  "拆分金额的整数小数
  SPLIT i_value AT '.' INTO v_intege v_decimal.

  PERFORM frm_string_reverse CHANGING v_intege.     "翻转intege sting

  CALL FUNCTION 'SCMS_STRING_TO_FTEXT'             "四个一拆分
    EXPORTING
      text      = |{ v_intege }|
    IMPORTING
      length    = length
    TABLES
      ftext_tab = text_tab.

  LOOP AT text_tab INTO wa_text_tab.
    CASE sy-tabix.
      WHEN 1.
        CONCATENATE e_value 'Đồng'  INTO e_value.
      WHEN 2.
        IF wa_text_tab <> '0000'.
          CONCATENATE 'Mười nghìn' e_value INTO e_value.
        ENDIF.
      WHEN 3.
        IF wa_text_tab <> '0000'.
          CONCATENATE 'Trăm triệu' e_value INTO e_value.
        ENDIF.
      WHEN 4.
        IF wa_text_tab <> '0000'.
          CONCATENATE 'Nghìn tỷ' e_value INTO e_value.
        ENDIF.
      WHEN 5.
        IF wa_text_tab <> '0000'.
*          CONCATENATE '亿亿' e_value INTO e_value.
        ENDIF.
      WHEN 6.
        IF wa_text_tab <> '0000'.
*          CONCATENATE '万亿亿' e_value INTO e_value.
        ENDIF.
    ENDCASE.

    CLEAR: v_lenth.
    DO strlen( wa_text_tab ) TIMES.
      v_cache = wa_text_tab+v_lenth(1).
      IF v_cache <> 0.
        CASE v_lenth.
          WHEN 0.
            CONCATENATE v_cache e_value INTO e_value.
          WHEN 1.
            CONCATENATE v_cache 'Mười' e_value INTO e_value.
          WHEN 2.
            CONCATENATE v_cache 'Trăm' e_value INTO e_value.
          WHEN 3.
            CONCATENATE v_cache 'Nghìn' e_value INTO e_value.
        ENDCASE.
      ELSE.
        CONCATENATE v_cache e_value INTO e_value.
      ENDIF.
      v_lenth = v_lenth + 1.
    ENDDO.
  ENDLOOP.

  IF e_value <> '0Đồng'.
*    REPLACE ALL OCCURRENCES OF REGEX '0+万亿亿' IN e_value WITH '万亿亿0'.
*    REPLACE ALL OCCURRENCES OF REGEX '0+亿亿' IN e_value WITH '亿亿0'.
    REPLACE ALL OCCURRENCES OF REGEX '0+Nghìn tỷ' IN e_value WITH 'Nghìn tỷ0'.
    REPLACE ALL OCCURRENCES OF REGEX '0+Trăm triệu' IN e_value WITH 'Trăm triệu0'.
    REPLACE ALL OCCURRENCES OF REGEX '0+Mười nghìn' IN e_value WITH 'Mười nghìn0'.
    REPLACE ALL OCCURRENCES OF REGEX '0+Đồng' IN e_value WITH 'Đồng'.               "排除掉  100000.01 显示 壹拾万零元零壹分 的情况
  ENDIF.

CONCATENATE e_value 'Chẵn' INTO e_value.                        "单独加 整 字

  "处理小数部分;越南语无小数部分处理
*  IF v_decimal = '00'.
*    CONCATENATE e_value '整' INTO e_value.
*  ELSE.
*    IF v_decimal+1(1) <> 0.
*      IF v_decimal+0(1) <> 0.
*        CONCATENATE e_value v_decimal+0(1)  '角' INTO e_value.
*      ELSE.
*        CONCATENATE e_value v_decimal+0(1) INTO e_value.
*      ENDIF.
*      CONCATENATE e_value v_decimal+1(1)  '分' INTO e_value.
*    ELSE.
*      CONCATENATE e_value v_decimal+0(1)  '角' INTO e_value.
*    ENDIF.
*
*  ENDIF.

  "  替换e_value中的数字  正则表达式
  REPLACE ALL OCCURRENCES OF REGEX '0+'   IN e_value WITH ''.        "多个零时,只输出一个零
  REPLACE ALL OCCURRENCES OF REGEX '1{1}' IN e_value WITH 'Một'.
  REPLACE ALL OCCURRENCES OF REGEX '2{1}' IN e_value WITH 'Hai'.
  REPLACE ALL OCCURRENCES OF REGEX '3{1}' IN e_value WITH 'Ba'.
  REPLACE ALL OCCURRENCES OF REGEX '4{1}' IN e_value WITH 'Bốn'.
  REPLACE ALL OCCURRENCES OF REGEX '5{1}' IN e_value WITH 'Năm'.
  REPLACE ALL OCCURRENCES OF REGEX '6{1}' IN e_value WITH 'Sáu'.
  REPLACE ALL OCCURRENCES OF REGEX '7{1}' IN e_value WITH 'Bảy'.
  REPLACE ALL OCCURRENCES OF REGEX '8{1}' IN e_value WITH 'Tám'.
  REPLACE ALL OCCURRENCES OF REGEX '9{1}' IN e_value WITH 'Chín'.

  "输出
  e_output = e_value.

ENDFUNCTION.

标签:CONCATENATE,REGEX,word,INTO,金额,value,REPLACE,amount,OCCURRENCES
来源: https://blog.csdn.net/qq_30797051/article/details/121150117

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有