Banner
Banner
Banner

Attention: open in a new window. PDFPrintE-mail

2009
25
Apr

Customized Spell Amount Function

FUNCTION Z_SPELL_AMOUNT.
*"----------------------------------------------------------------------
*"*"Local interface:
*"       IMPORTING
*"             VALUE(AMOUNT)
*"             VALUE(CURRENCY) LIKE  EKKO-WAERS
*"             VALUE(SUBCURR) LIKE  EKKO-WAERS OPTIONAL
*"       EXPORTING
*"             VALUE(WORD)
*"----------------------------------------------------------------------
  REFRESH ITAB_AMT. CLEAR MWORD.
  SELECT SINGLE * FROM TCURC WHERE WAERS = CURRENCY.
  IF SY-SUBRC NE 0.
    MESSAGE E000(8I) WITH 'Invalid Currency'. EXIT.
  ENDIF.

  MAMOUNT = AMOUNT.

  MSTRING = FLOOR( MAMOUNT ).
  CONDENSE MSTRING.
  MLEN  = STRLEN( MSTRING ).
  IF MLEN > 10.
    MESSAGE E148(YF).
  ENDIF.
  MDECI = MAMOUNT - FLOOR( MAMOUNT ).
  MPAISE = MDECI * 100.
  MPAISESTATUS = 'Y'.

  ITAB_AMT-DESC = 'One'.
  APPEND ITAB_AMT.

  ITAB_AMT-DESC = 'Two'.
  APPEND ITAB_AMT.

  ITAB_AMT-DESC = 'Three'.
  APPEND ITAB_AMT.

  ITAB_AMT-DESC = 'Four'.
  APPEND ITAB_AMT.

  ITAB_AMT-DESC = 'Five'.
  APPEND ITAB_AMT.

  ITAB_AMT-DESC = 'Six'.
  APPEND ITAB_AMT.

  ITAB_AMT-DESC = 'Seven'.
  APPEND ITAB_AMT.

  ITAB_AMT-DESC = 'Eight'.
  APPEND ITAB_AMT.

  ITAB_AMT-DESC = 'Nine'.
  APPEND ITAB_AMT.

  ITAB_AMT-DESC = 'Ten'.
  APPEND ITAB_AMT.

  ITAB_AMT-DESC = 'Eleven'.
  APPEND ITAB_AMT.

  ITAB_AMT-DESC = 'Twelve'.
  APPEND ITAB_AMT.

  ITAB_AMT-DESC = 'Thirteen'.
  APPEND ITAB_AMT.

  ITAB_AMT-DESC = 'Fourteen'.
  APPEND ITAB_AMT.

  ITAB_AMT-DESC = 'Fifteen'.
  APPEND ITAB_AMT.

  ITAB_AMT-DESC = 'Sixteen'.
  APPEND ITAB_AMT.

  ITAB_AMT-DESC = 'Seventeen'.
  APPEND ITAB_AMT.

  ITAB_AMT-DESC = 'Eighteen'.
  APPEND ITAB_AMT.

  ITAB_AMT-DESC = 'Nineteen'.
  APPEND ITAB_AMT.

  ITAB_AMT-DESC = 'Twenty'.
  APPEND ITAB_AMT.
  PERFORM FILL_AMT.

  ITAB_AMT-DESC = 'Thirty'.
  APPEND ITAB_AMT.
  PERFORM FILL_AMT.

  ITAB_AMT-DESC = 'Forty'.
  APPEND ITAB_AMT.
  PERFORM FILL_AMT.

  ITAB_AMT-DESC = 'Fifty'.
  APPEND ITAB_AMT.
  PERFORM FILL_AMT.

  ITAB_AMT-DESC = 'Sixty'.
  APPEND ITAB_AMT.
  PERFORM FILL_AMT.

  ITAB_AMT-DESC = 'Seventy'.
  APPEND ITAB_AMT.
  PERFORM FILL_AMT.

  ITAB_AMT-DESC = 'Eighty'.
  APPEND ITAB_AMT.
  PERFORM FILL_AMT.

  ITAB_AMT-DESC = 'Ninety'.
  APPEND ITAB_AMT.
  PERFORM FILL_AMT.

 IF CURRENCY = 'INR'.
* MWORD = 'Rs.'.
 ELSE.
   SELECT SINGLE * FROM TCURT WHERE WAERS = CURRENCY.
   IF SY-SUBRC NE 0.
     MWORD = CURRENCY.
   ELSE.
     MWORD = TCURT-KTEXT.
   ENDIF.
 ENDIF.


  DO.
    WHILE MLEN > 0 AND MLEN <= 10.
      IF MLEN = 10.
        MCLTH = 'Hundred'.
        MCONTINUE = 'N'.

        PERFORM JAPAMT9 CHANGING MSUBSCR
                                 MLEN
                                   MCLTH
                                   MWORD
                                   MCONTINUE.
        IF MCONTINUE = 'Y'.
          CONTINUE.
        ENDIF.

      ELSEIF MLEN = 9.

       MCLTH = 'Crore'.
        MCONTINUE = 'N'.

        PERFORM JAPAMT99 CHANGING MSUBSCR
                                    MLEN
                                    MCLTH
                                    MWORD
                                    MCONTINUE.

        IF MCONTINUE = 'Y'.
          CONTINUE.
        ENDIF.

      ELSEIF MLEN = 8.

        MCLTH = 'Crore'.
        MCONTINUE = 'N'.

        PERFORM JAPAMT9 CHANGING MSUBSCR
                                   MLEN
                                   MCLTH
                                   MWORD
                                   MCONTINUE.
        IF MCONTINUE = 'Y'.
          CONTINUE.
        ENDIF.

      ELSEIF MLEN = 7.

        MCLTH = 'Lakh'.
        MCONTINUE = 'N'.

        PERFORM JAPAMT99 CHANGING MSUBSCR
                                    MLEN
                                    MCLTH
                                    MWORD
                                    MCONTINUE.

        IF MCONTINUE = 'Y'.
          CONTINUE.
        ENDIF.

      ELSEIF MLEN = 6.

        MCLTH = 'Lakh'.
        MCONTINUE = 'N'.

        PERFORM JAPAMT9 CHANGING MSUBSCR
                                   MLEN
                                   MCLTH
                                   MWORD
                                   MCONTINUE.
        IF MCONTINUE = 'Y'.
          CONTINUE.
        ENDIF.

      ELSEIF MLEN = 5.

        MCLTH = 'Thousand'.
        MCONTINUE = 'N'.

        PERFORM JAPAMT99 CHANGING MSUBSCR
                                    MLEN
                                    MCLTH
                                    MWORD
                                    MCONTINUE.

        IF MCONTINUE = 'Y'.
          CONTINUE.
        ENDIF.

      ELSEIF MLEN = 4.
        MCLTH = 'Thousand'.
        MCONTINUE = 'N'.

        PERFORM JAPAMT9 CHANGING MSUBSCR
                                   MLEN
                                   MCLTH
                                   MWORD
                                   MCONTINUE.
        IF MCONTINUE = 'Y'.
          CONTINUE.
        ENDIF.

      ELSEIF MLEN = 3.

        MCLTH = 'Hundred'.
        MCONTINUE = 'N'.

        PERFORM JAPAMT9 CHANGING MSUBSCR
                                   MLEN
                                   MCLTH
                                   MWORD
                                   MCONTINUE.
        IF MCONTINUE = 'Y'.
          CONTINUE.
        ENDIF.


      ELSEIF MLEN = 2.
        MSUBSCR = MSTRING.
        MTMPSCR = MSUBSCR.
        IF MSUBSCR = 0.
          EXIT.
        ENDIF.
        IF MSUBSCR <= 20.
          READ TABLE ITAB_AMT INTO MAMT_DESC INDEX MSUBSCR.
          MLEN = 0.
        ELSE.
          MSUBSCR = MSTRING(1).
          MSUBSCR = MSUBSCR * 10.
          READ TABLE ITAB_AMT INTO MAMT_DESC INDEX MSUBSCR.
        ENDIF.

        CONCATENATE MWORD MAMT_DESC INTO MWORD SEPARATED BY SEP.
        SHIFT MSTRING.
        MLEN = MLEN - 1.
        IF MTMPSCR > 20.
          MSUBSCR = MSTRING(1).
          IF MSUBSCR = 0.
            SHIFT MSTRING.
            MLEN = MLEN - 1.
            CONTINUE.
          ENDIF.
          READ TABLE ITAB_AMT INTO MAMT_DESC INDEX MSUBSCR.
          CONCATENATE MWORD MAMT_DESC INTO MWORD SEPARATED BY SEP.
          SHIFT MSTRING.
          MLEN = MLEN - 1.
        ELSE.
          EXIT.
        ENDIF.
      ELSEIF MLEN = 1.

        MCLTH = ''.
        MCONTINUE = 'N'.

        PERFORM JAPAMT9 CHANGING MSUBSCR
                                   MLEN
                                   MCLTH
                                   MWORD
                                   MCONTINUE.
        IF MCONTINUE = 'Y' OR MLEN = 0.
          EXIT.
        ENDIF.

      ENDIF.

    ENDWHILE.

    IF MPAISE > 0 AND MPAISESTATUS = 'Y'.
      MSTRING = MPAISE.
      CONDENSE MSTRING.
      MLEN = STRLEN( MSTRING ).
      MPAISESTATUS = 'N'.
IF CURRENCY = 'INR'.
  IF SUBCURR = ' '.
      CONCATENATE MWORD 'and Paise' INTO MWORD SEPARATED BY SEP.
  ELSE.
       CONCATENATE MWORD 'and' SUBCURR INTO MWORD SEPARATED BY SEP.
  ENDIF.
ELSE.
  IF SUBCURR = ' '.
      CONCATENATE MWORD 'Point' INTO MWORD SEPARATED BY SEP.
  ELSE.
       CONCATENATE MWORD 'and' SUBCURR INTO MWORD SEPARATED BY SEP.
  ENDIF.
ENDIF.
    ELSEIF MLEN = 1.

    ELSE.
      EXIT.
    ENDIF.
  ENDDO.

  CONCATENATE MWORD 'only' INTO MWORD SEPARATED BY SEP.
  WORD = MWORD.

ENDFUNCTION.
Last Updated (Tuesday, 30 November 1999 00:00)
Banner
Free software downloads