Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
AbhijeetK
Active Participant

I think I should share this:

This will convert Indian Rupees(digits) into  word.

FUNCTION ZMM_AMT_WORDS_INR.

*"----------------------------------------------------------------------

*"*"Local Interface:

*"  IMPORTING

*"     REFERENCE(AMOUNT) TYPE  NETWR

*"  EXPORTING

*"     REFERENCE(WORD) TYPE  Z_CHAR160

*"----------------------------------------------------------------------

MAMOUNT = ABS( AMOUNT ).

   MSTRING = FLOOR( MAMOUNT ).

   CONDENSE MSTRING.

   MLEN = STRLEN( MSTRING ).

   IF MLEN > 10.

   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.

   PERFORMFILL_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.

   MWORD = 'Rupees'.

   MLEN1 = MLEN.

   DO.

     WHILE MLEN > 0 AND MLEN <= 16.

       IF MLEN = 16.

         MCLTH = 'Crore'.

         MCONTINUE = 'N'.

         PERFORM JAPAMT99 CHANGING MSUBSCR

                                     MLEN

                                     MCLTH

                                     MWORD

                                     MCONTINUE.

         MLEN1 = 0.

         IF MCONTINUE = 'Y'.

           CONTINUE.

         ENDIF.

       ELSEIF MLEN = 15.

         MCLTH = 'Crore'.

         MCONTINUE = 'N'.

         PERFORM JAPAMT9 CHANGING MSUBSCR

                                     MLEN

                                     MCLTH

                                     MWORD

                                     MCONTINUE.

         MLEN1 = 0.

         IF MCONTINUE = 'Y'.

           CONTINUE.

         ENDIF.

       ELSEIF MLEN = 14.

         MCLTH = 'Lakh'.

         MCONTINUE = 'N'.

         PERFORM JAPAMT99 CHANGING MSUBSCR

                                     MLEN

                                     MCLTH

                                     MWORD

                                     MCONTINUE.

         MLEN1 = 0.

         IF MCONTINUE = 'Y'.

           CONTINUE.

         ENDIF.

       ELSEIF MLEN = 13.

         MCLTH = 'Lakh'.

         MCONTINUE = 'N'.

         PERFORM JAPAMT9 CHANGING   MSUBSCR

                                    MLEN

                                    MCLTH

                                    MWORD

                                    MCONTINUE.

         IF MCONTINUE = 'Y'.

           CONTINUE.

         ENDIF.

       ELSEIF MLEN = 12.

         MCLTH = 'Thousand'.

         MCONTINUE = 'N'.

         PERFORM JAPAMT99 CHANGING MSUBSCR

                                  MLEN

                                  MCLTH

                                  MWORD

                                  MCONTINUE.

         IF MCONTINUE = 'Y'.

           CONTINUE.

         ENDIF.

       ELSEIF MLEN = 11.

         MCLTH = 'Thousand'.

         MCONTINUE = 'Y'.

         PERFORM JAPAMT9 CHANGING MSUBSCR

                                      MLEN

                                      MCLTH

                                      MWORD

                                      MCONTINUE.

         MLEN1 = 0.

         IF MCONTINUE = 'Y'.

           CONTINUE.

         ENDIF.

       ELSEIF 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.

         MLEN1 = 0.

         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'.

       CONCATENATE MWORD 'And Paise' INTO MWORD SEPARATED BY SEP.

     ELSEIF

     MLEN = 1.

     ELSE.

       EXIT.

     ENDIF.

   ENDDO.

   CONCATENATE MWORD 'only' INTO MWORD SEPARATED BY SEP.

   WORD = MWORD.

Best,

Abhijeet Kankani

ENDFUNCTION.

4 Comments
Labels in this area