将数字转换为英文输出的SAP程序(for abap)

*&---------------------------------------------------------------------*
*& Report  ZTEST
*&
*&---------------------------------------------------------------------*
*&
*& create by 冲击波   2008.10.06
*&---------------------------------------------------------------------*

REPORT  ztest.

DATA num(16) TYPE p DECIMALS 0  .

DATA temp1 TYPE i .
DATA temp2 TYPE i .
DATA temp3 TYPE i .
DATA temp4 TYPE i .

DATA tempq TYPE i .
DATA tempw TYPE i .
DATA tempe TYPE i .
DATA tempr TYPE i .


DATA temp(16) TYPE p DECIMALS 0  .
DATA tempii TYPE i .
****
num = 123456789123 .
****
*************************************************
temp = num .

temp1 = temp DIV 1000000000 .
temp = temp MOD 1000000000 .

temp2 = temp DIV 1000000 .
temp = temp MOD 1000000 .

temp3 = temp DIV 1000 .
temp = temp MOD 1000 .

temp4 = temp .
********************************************************
IF temp1 <> 0 .
  tempii = temp1 .

  tempw = tempii DIV 100 .
  tempii = tempii MOD 100 .

  tempe = tempii DIV 10 .
  tempii = tempii MOD 10 .

  tempr = tempii .
*********************
  IF tempw <> 0 .
    tempii = tempw .
    CASE tempii.

      WHEN  1 .
        WRITE 'one' .
      WHEN  2 .
        WRITE 'two' .
      WHEN  3 .
        WRITE 'three' .
      WHEN  4 .
        WRITE 'four' .
      WHEN  5 .
        WRITE 'five' .
      WHEN  6 .
        WRITE 'six' .
      WHEN  7 .
        WRITE 'seven' .
      WHEN  8 .
        WRITE 'eight' .
      WHEN  9 .
        WRITE 'nine' .
    ENDCASE.
    WRITE 'hundred' .
  ENDIF .
*********************

  tempii = tempe .
  CASE tempii.
    WHEN  1 .
      tempii = temp1 MOD 100.

      CASE tempii.

        WHEN  11 .
          WRITE 'eleven' .
        WHEN  12 .
          WRITE 'twelve' .
        WHEN  13 .
          WRITE 'thirteen' .
        WHEN  14 .
          WRITE 'fourteen' .
        WHEN  15 .
          WRITE 'fifteen' .
        WHEN  16 .
          WRITE 'sixteen' .
        WHEN  17 .
          WRITE 'seventeen' .
        WHEN  18 .
          WRITE 'eighteen' .
        WHEN  19 .
          WRITE 'nineteen' .


      ENDCASE.

    WHEN  0 .

      IF tempr <> 0 .
        WRITE 'and'.
        tempr = tempii .
        CASE tempii.

          WHEN  1 .
            WRITE 'one' .
          WHEN  2 .
            WRITE 'two' .
          WHEN  3 .
            WRITE 'three' .
          WHEN  4 .
            WRITE 'four' .
          WHEN  5 .
            WRITE 'five' .
          WHEN  6 .
            WRITE 'six' .
          WHEN  7 .
            WRITE 'seven' .
          WHEN  8 .
            WRITE 'eight' .
          WHEN  9 .
            WRITE 'nine' .
        ENDCASE.

      ENDIF .

    WHEN  2 .
      WRITE 'twenty' .
    WHEN  3 .
      WRITE 'thirty' .
    WHEN  4 .
      WRITE 'fourty' .
    WHEN  5 .
      WRITE 'fifty' .
    WHEN  6 .
      WRITE 'sixty' .
    WHEN  7 .
      WRITE 'seventy' .
    WHEN  8 .
      WRITE 'eighty' .
    WHEN  9 .
      WRITE 'ninty' .
  ENDCASE.

***********************
IF tempr <> 0 and tempe <> 0.
        tempii = tempr .
        CASE tempii.

          WHEN  1 .
            WRITE 'one' .
          WHEN  2 .
            WRITE 'two' .
          WHEN  3 .
            WRITE 'three' .
          WHEN  4 .
            WRITE 'four' .
          WHEN  5 .
            WRITE 'five' .
          WHEN  6 .
            WRITE 'six' .
          WHEN  7 .
            WRITE 'seven' .
          WHEN  8 .
            WRITE 'eight' .
          WHEN  9 .
            WRITE 'nine' .
        ENDCASE.

      ENDIF .

***********************


  write 'billion' .
  write / .
ENDIF .

***************************************************************
IF temp2 <> 0 .
WRITE 'and' .
tempii = temp2 .



tempw = tempii DIV 100 .
tempii = tempii mod 100 .

tempe = tempii DIV 10 .
tempii = tempii mod 10 .

tempr = tempii .
*********************
IF tempw <> 0 .
  tempii = tempw .
  CASE tempii.

    WHEN  1 .
      WRITE 'one' .
    WHEN  2 .
      WRITE 'two' .
    WHEN  3 .
      WRITE 'three' .
    WHEN  4 .
      WRITE 'four' .
    WHEN  5 .
      WRITE 'five' .
    WHEN  6 .
      WRITE 'six' .
    WHEN  7 .
      WRITE 'seven' .
    WHEN  8 .
      WRITE 'eight' .
    WHEN  9 .
      WRITE 'nine' .
  ENDCASE.
  WRITE 'hundred' .
ENDIF .
*********************

tempii = tempe .
CASE tempii.
  WHEN  1 .
 tempii =   temp2 mod 100 .

    CASE tempii.

      WHEN  11 .
        WRITE 'eleven' .
      WHEN  12 .
        WRITE 'twelve' .
      WHEN  13 .
        WRITE 'thirteen' .
      WHEN  14 .
        WRITE 'fourteen' .
      WHEN  15 .
        WRITE 'fifteen' .
      WHEN  16 .
        WRITE 'sixteen' .
      WHEN  17 .
        WRITE 'seventeen' .
      WHEN  18 .
        WRITE 'eighteen' .
      WHEN  19 .
        WRITE 'nineteen' .


    ENDCASE.

  WHEN  0 .

    IF tempr <> 0 .
      WRITE 'and' .
      tempr = tempii .
      CASE tempii.

        WHEN  1 .
          WRITE 'one' .
        WHEN  2 .
          WRITE 'two' .
        WHEN  3 .
          WRITE 'three' .
        WHEN  4 .
          WRITE 'four' .
        WHEN  5 .
          WRITE 'five' .
        WHEN  6 .
          WRITE 'six' .
        WHEN  7 .
          WRITE 'seven' .
        WHEN  8 .
          WRITE 'eight' .
        WHEN  9 .
          WRITE 'nine' .
      ENDCASE.

    ENDIF .

  WHEN  2 .
    WRITE 'twenty' .
  WHEN  3 .
    WRITE 'thirty' .
  WHEN  4 .
    WRITE 'fourty' .
  WHEN  5 .
    WRITE 'fifty' .
  WHEN  6 .
    WRITE 'sixty' .
  WHEN  7 .
    WRITE 'seventy' .
  WHEN  8 .
    WRITE 'eighty' .
  WHEN  9 .
    WRITE 'ninty' .
ENDCASE.

***********************
IF tempr <> 0 and tempe <> 0.
        tempii = tempr .
        CASE tempii.

          WHEN  1 .
            WRITE 'one' .
          WHEN  2 .
            WRITE 'two' .
          WHEN  3 .
            WRITE 'three' .
          WHEN  4 .
            WRITE 'four' .
          WHEN  5 .
            WRITE 'five' .
          WHEN  6 .
            WRITE 'six' .
          WHEN  7 .
            WRITE 'seven' .
          WHEN  8 .
            WRITE 'eight' .
          WHEN  9 .
            WRITE 'nine' .
        ENDCASE.

      ENDIF .

***********************
  write 'million' .
  write / .
ENDIF .



***************************************************************
IF temp3 <> 0 .
WRITE 'and' .
tempii = temp3 .

tempw = tempii DIV 100 .
tempii = tempii mod 100 .

tempe = tempii DIV 10 .
tempii = tempii mod 10 .

tempr = tempii .
*********************
IF tempw <> 0 .
tempii = tempw .
CASE tempii.

  WHEN  1 .
    WRITE 'one' .
  WHEN  2 .
    WRITE 'two' .
  WHEN  3 .
    WRITE 'three' .
  WHEN  4 .
    WRITE 'four' .
  WHEN  5 .
    WRITE 'five' .
  WHEN  6 .
    WRITE 'six' .
  WHEN  7 .
    WRITE 'seven' .
  WHEN  8 .
    WRITE 'eight' .
  WHEN  9 .
    WRITE 'nine' .
ENDCASE.
WRITE 'hundred' .
ENDIF .
*********************

tempii = tempe .
CASE tempii.
WHEN  1 .
  tempii = temp3 mod 100 .

  CASE tempii.

    WHEN  11 .
      WRITE 'eleven' .
    WHEN  12 .
      WRITE 'twelve' .
    WHEN  13 .
      WRITE 'thirteen' .
    WHEN  14 .
      WRITE 'fourteen' .
    WHEN  15 .
      WRITE 'fifteen' .
    WHEN  16 .
      WRITE 'sixteen' .
    WHEN  17 .
      WRITE 'seventeen' .
    WHEN  18 .
      WRITE 'eighteen' .
    WHEN  19 .
      WRITE 'nineteen' .


  ENDCASE.

WHEN  0 .

  IF tempr <> 0 .
    WRITE 'and' .
tempr = tempii .
    CASE tempii.

      WHEN  1 .
        WRITE 'one' .
      WHEN  2 .
        WRITE 'two' .
      WHEN  3 .
        WRITE 'three' .
      WHEN  4 .
        WRITE 'four' .
      WHEN  5 .
        WRITE 'five' .
      WHEN  6 .
        WRITE 'six' .
      WHEN  7 .
        WRITE 'seven' .
      WHEN  8 .
        WRITE 'eight' .
      WHEN  9 .
        WRITE 'nine' .
    ENDCASE.

  ENDIF .

WHEN  2 .
  WRITE 'twenty' .
WHEN  3 .
  WRITE 'thirty' .
WHEN  4 .
  WRITE 'fourty' .
WHEN  5 .
  WRITE 'fifty' .
WHEN  6 .
  WRITE 'sixty' .
WHEN  7 .
  WRITE 'seventy' .
WHEN  8 .
  WRITE 'eighty' .
WHEN  9 .
  WRITE 'ninty' .
ENDCASE.

***********************
IF tempr <> 0 and tempe <> 0.
        tempii = tempr .
        CASE tempii.

          WHEN  1 .
            WRITE 'one' .
          WHEN  2 .
            WRITE 'two' .
          WHEN  3 .
            WRITE 'three' .
          WHEN  4 .
            WRITE 'four' .
          WHEN  5 .
            WRITE 'five' .
          WHEN  6 .
            WRITE 'six' .
          WHEN  7 .
            WRITE 'seven' .
          WHEN  8 .
            WRITE 'eight' .
          WHEN  9 .
            WRITE 'nine' .
        ENDCASE.

      ENDIF .

***********************
  write 'thound' .
  write / .

ENDIF .




***************************************************************

IF temp4 <> 0 .
WRITE 'and' .
tempii = temp4 .

tempw = tempii DIV 100 .
tempii = tempii mod 100 .

tempe = tempii DIV 10 .
tempii = tempii mod 10 .

tempr = tempii .
*********************
IF tempw <> 0 .
tempii = tempw .
CASE tempii.

WHEN  1 .
  WRITE 'one' .
WHEN  2 .
  WRITE 'two' .
WHEN  3 .
  WRITE 'three' .
WHEN  4 .
  WRITE 'four' .
WHEN  5 .
  WRITE 'five' .
WHEN  6 .
  WRITE 'six' .
WHEN  7 .
  WRITE 'seven' .
WHEN  8 .
  WRITE 'eight' .
WHEN  9 .
  WRITE 'nine' .
ENDCASE.
WRITE 'hundred' .
ENDIF .
*********************

tempii = tempe .
CASE tempii.
WHEN  1 .
tempii = temp2 mod 100.

CASE tempii.

  WHEN  11 .
    WRITE 'eleven' .
  WHEN  12 .
    WRITE 'twelve' .
  WHEN  13 .
    WRITE 'thirteen' .
  WHEN  14 .
    WRITE 'fourteen' .
  WHEN  15 .
    WRITE 'fifteen' .
  WHEN  16 .
    WRITE 'sixteen' .
  WHEN  17 .
    WRITE 'seventeen' .
  WHEN  18 .
    WRITE 'eighteen' .
  WHEN  19 .
    WRITE 'nineteen' .


ENDCASE.

WHEN  0 .

IF tempr <> 0 .
  WRITE 'and' .
tempr = tempii .
  CASE tempii.

    WHEN  1 .
      WRITE 'one' .
    WHEN  2 .
      WRITE 'two' .
    WHEN  3 .
      WRITE 'three' .
    WHEN  4 .
      WRITE 'four' .
    WHEN  5 .
      WRITE 'five' .
    WHEN  6 .
      WRITE 'six' .
    WHEN  7 .
      WRITE 'seven' .
    WHEN  8 .
      WRITE 'eight' .
    WHEN  9 .
      WRITE 'nine' .
  ENDCASE.

ENDIF .

WHEN  2 .
WRITE 'twenty' .
WHEN  3 .
WRITE 'thirty' .
WHEN  4 .
WRITE 'fourty' .
WHEN  5 .
WRITE 'fifty' .
WHEN  6 .
WRITE 'sixty' .
WHEN  7 .
WRITE 'seventy' .
WHEN  8 .
WRITE 'eighty' .
WHEN  9 .
WRITE 'ninty' .
ENDCASE.


***********************
IF tempr <> 0 and tempe <> 0.
        tempii = tempr .
        CASE tempii.

          WHEN  1 .
            WRITE 'one' .
          WHEN  2 .
            WRITE 'two' .
          WHEN  3 .
            WRITE 'three' .
          WHEN  4 .
            WRITE 'four' .
          WHEN  5 .
            WRITE 'five' .
          WHEN  6 .
            WRITE 'six' .
          WHEN  7 .
            WRITE 'seven' .
          WHEN  8 .
            WRITE 'eight' .
          WHEN  9 .
            WRITE 'nine' .
        ENDCASE.

      ENDIF .

***********************

ENDIF .



***************************************************************
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值