ABAP 金钱数量小写转换成大写

FUNCTION zfi_amount_to_cn.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     REFERENCE(RMBXX) TYPE  WRBTR
*"  EXPORTING
*"     REFERENCE(RMBDX1) TYPE  C
*"----------------------------------------------------------------------
  DATA: BEGIN OF rmb,
          by TYPE c,
          sy TYPE c,
          y  TYPE c,
          qw TYPE c,
          bw TYPE c,
          sw TYPE c,
          w  TYPE c,
          q  TYPE c,
          b  TYPE c,
          s  TYPE c,
          g  TYPE c,
          d  TYPE c,
          j  TYPE c,
          f  TYPE c,
          n  TYPE c,
        END OF rmb.
  DATA: BEGIN OF rmbdx,
          by(2)  TYPE c,
          by1(4) TYPE c,
          sy(2)  TYPE c,
          sy1(4) TYPE c,
          y(2)   TYPE c,
          y1(2)  TYPE c,
          qw(2)  TYPE c,
          qw1(4) TYPE c,
          bw(2)  TYPE c,
          bw1(4) TYPE c,
          sw(2)  TYPE c,
          sw1(4) TYPE c,
          w(2)   TYPE c,
          w1(4)  TYPE c,
          q(2)   TYPE c,
          q1(4)  TYPE c,
          b(2)   TYPE c,
          b1(4)  TYPE c,
          s(2)   TYPE c,
          s1(4)  TYPE c,
          g(2)   TYPE c,
          d(2)   TYPE c,
          j(2)   TYPE c,
          j1(2)  TYPE c,
          f(2)   TYPE c,
          f1(2)  TYPE c,
          z(2)   TYPE c,
        END OF rmbdx.
  DATA: y(1) TYPE c.
  rmb = rmbxx.
  IF NOT ( rmb-by IS INITIAL ) AND rmb-by NE '0'.
    PERFORM dx USING rmb-by CHANGING rmbdx-by.
    y = 'X'.
    IF rmb-by NE '0'.
      IF rmb-sy EQ '0' AND rmb-y EQ '0'.
        rmbdx-by1 = '佰亿'.
      ELSE.
        rmbdx-by1 = '佰'.
      ENDIF.
    ENDIF.
  ENDIF.
  IF NOT ( rmb-sy IS INITIAL ).
    IF rmb-sy NE '0' OR rmb-y NE '0'.
      PERFORM dx USING rmb-sy CHANGING rmbdx-sy.
      y = 'X'.
      IF rmb-sy NE '0'.
        IF rmb-y EQ '0'.
          rmbdx-sy1 = '拾亿'.
        ELSE.
          rmbdx-sy1 = '拾'.
        ENDIF.
      ENDIF.
    ENDIF.
  ENDIF.
  IF NOT ( rmb-y IS INITIAL ).
    IF rmb-y NE '0' OR rmb-qw NE '0'.
      PERFORM dx USING rmb-y CHANGING rmbdx-y.
      y = 'X'.
      IF rmb-y NE '0'.
        rmbdx-y1 = '亿'.
      ENDIF.
    ENDIF.
  ENDIF.
  IF NOT ( rmb-qw IS INITIAL ).
    IF rmb-qw NE '0' OR rmb-bw NE '0'.
      PERFORM dx USING rmb-qw CHANGING rmbdx-qw.
      y = 'X'.
      IF rmb-qw NE '0'.
        IF rmb-bw EQ '0' AND rmb-sw EQ '0' AND rmb-w EQ '0'.
          rmbdx-qw1 = '仟万'.
        ELSE.
          rmbdx-qw1 = '仟'.
        ENDIF.
      ENDIF.
    ENDIF.
  ENDIF.
  IF NOT ( rmb-bw IS INITIAL ).
    IF rmb-bw NE '0' OR rmb-sw NE '0'.
      PERFORM dx USING rmb-bw CHANGING rmbdx-bw.
      y = 'X'.
      IF rmb-bw NE '0'.
        IF rmb-sw EQ '0' AND rmb-w EQ '0'.
          rmbdx-bw1 = '佰万'.
        ELSE.
          rmbdx-bw1 = '佰'.
        ENDIF.
      ENDIF.
    ENDIF.
  ENDIF.
  IF NOT ( rmb-sw IS INITIAL ).
    IF rmb-sw NE'0' OR rmb-w NE '0'.
      PERFORM dx USING rmb-sw CHANGING rmbdx-sw.
      y = 'X'.
      IF rmb-sw NE '0'.
        IF rmb-w EQ '0'.
          rmbdx-sw1 = '拾万'.
        ELSE.
          rmbdx-sw1 = '拾'.
        ENDIF.
      ENDIF.
    ENDIF.
  ENDIF.
  IF NOT ( rmb-w IS INITIAL ).
    IF rmb-w NE '0' OR rmb-q NE '0'.
      PERFORM dx USING rmb-w CHANGING rmbdx-w.
      y = 'X'.
      IF rmb-w NE '0'.
        rmbdx-w1 = '万'.
      ENDIF.

    ENDIF.
  ENDIF.
  IF NOT ( rmb-q IS INITIAL ).
    IF rmb-q NE '0' OR rmb-b NE '0'.
      PERFORM dx USING rmb-q CHANGING rmbdx-q.
      y = 'X'.
      IF rmb-q NE '0'.
        rmbdx-q1 = '仟'.
      ENDIF.
    ENDIF.
  ENDIF.
  IF NOT ( rmb-b IS INITIAL ).
    IF rmb-b NE '0' OR rmb-s NE '0'.
      PERFORM dx USING rmb-b CHANGING rmbdx-b.
      y = 'X'.
      IF rmb-b NE '0'.
        rmbdx-b1 = '佰'.
      ENDIF.
    ENDIF.
  ENDIF.
  IF NOT ( rmb-s IS INITIAL ).
    IF rmb-s NE'0' OR rmb-g NE '0'.
      PERFORM dx USING rmb-s CHANGING rmbdx-s.
      y = 'X'.
      IF rmb-s NE '0'.
        rmbdx-s1 = '拾'.
      ENDIF.
    ENDIF.
  ENDIF.
  IF NOT ( rmb-g IS INITIAL ) AND rmb-g NE '0'.
    PERFORM dx USING rmb-g CHANGING rmbdx-g.
    y = 'X'.
  ENDIF.
  IF y EQ 'X'.
    rmbdx-d = '圆'.
  ENDIF.
  IF NOT ( rmb-j IS INITIAL ) AND rmb-j NE '0'.
    PERFORM dx USING rmb-j CHANGING rmbdx-j.
    rmbdx-j1 = '角'.
  ENDIF.
  IF NOT ( rmb-f IS INITIAL ) AND rmb-f NE '0'.
    PERFORM dx USING rmb-f CHANGING rmbdx-f.
    rmbdx-f1 = '分'.
  ELSE.
    rmbdx-z = '整'.
  ENDIF.
  CONDENSE rmbdx NO-GAPS.
  IF rmbxx = 0.
    rmbdx1 = '零'.
    CLEAR rmbdx.
  ENDIF.
  rmbdx1 = rmbdx.
  CLEAR y.

ENDFUNCTION.

猜你喜欢

转载自blog.csdn.net/wx774891/article/details/112233781