ABAP 金额大小写转换



  DATA:g_char17(17) TYPE c.
  g_char17 = ''.
  g_char17 = ABS( LV_HDMBTRS ).

  CONDENSE g_char17.

  TYPES: cur6  TYPE p DECIMALS 6 ,
         cur2  TYPE p DECIMALS 2 .
  DATA va1 TYPE cur2.
  DATA str(40) TYPE c .
  va1 = g_char17.

  DATA: scr(30) TYPE c, res(60) TYPE c,fen(2) TYPE c .
  DATA: len TYPE i, c1 TYPE i, c2 TYPE i, c3 TYPE i, c4 TYPE i.
  DATA: d1(1) TYPE c, d2(1) TYPE c, d3 TYPE i.
  DATA: digit(2) TYPE c, weight(2) TYPE c.
  DATA: rule1(20) TYPE c VALUE '零壹贰叁肆伍陆柒捌玖'.
  DATA: rule2(30) TYPE c VALUE '分角元拾佰仟万拾佰仟亿拾佰仟万'.
  scr = va1 * 100.
  CONDENSE scr NO-GAPS.
  IF scr = '0'.
    res = '零元'.
  ELSE.
    len = STRLEN( scr ).
    c1 = 0.
    d1 = '0'.
    CLEAR res.
    DO len TIMES.
      c1 = c1 + 1.
      c2 = len - c1.
      d2 = scr+c2(1) .
      IF d2 = '0'.
        d3 = 0.
      ELSE.
        d3 = d2.
      ENDIF.
      digit = rule1+d3(1) .
      c3 = ( c1 - 1 ) .
      weight = rule2+c3(1) .
      IF d2 = '0'.
        IF c1 = 3.
          digit = ''.
        ELSEIF c1 = 7.
          digit = ''.
          IF len > 10 .
            c4 = len - 10.
            IF scr+c4(4) = '0000'.
              weight = ''.
            ENDIF.
          ENDIF.
        ELSEIF c1 = 11.
          digit = ''.
        ELSEIF d1 = '0'.
          digit = ''.
          weight = ''.
        ELSE.
          weight = ''.
        ENDIF.
      ENDIF.
      CONCATENATE digit weight res INTO res .
      d1 = d2.
    ENDDO.
  ENDIF.
  len = STRLEN( res ) - 1.
  fen = res+len(1).
  IF fen = '元'.
    CONCATENATE res '整' INTO str.
  ELSE.
    str = res.
  ENDIF.

  g_char17 = str.
  LV_HEJI = g_char17.





















 


版权声明:本文为only_oy原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。