CE PLUS - Nota 004132

Módulo: DOC. EXPORTAÇÃO

Funcionalidade: CE Reports

Data/Hora da Publicação: 06/07/2007 00:00:00

Data/Hora Última Alteração: 21/02/2011 17:39:39

Descrição da Nota: ESCREVER UM MONTANTE POR EXTENSO

Sintoma

Saques gerados em outra língua, o programa executa uma função para trazer o valor por extenso. Porém

a DESCRIÇÃO DA MOEDA está fixa no programa.

 

 

 

Solução

Transformar o Perform que chama a função SPELL_AMOUNT, em função, assim será possível criar

elementos de textos para qualquer língua.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

REPORT EXCEL AUTOMATIZAÇÃO DO IDIOMA

LEITURA DE TEXTOS NOS REPORTS EM EXCEL

EXIBIR TEXTOS NOS REPORTS EXCEL

REPORT EXCEL PARA A EMISSÃO DO DOCUMENTO SAQUE A PRAZO

Informações Complementares

----------------------------------------------------------------------------------------------------

Nota Número 04132 Data: 06/07/2007 Hora: 16:47:16

----------------------------------------------------------------------------------------------------

 

----------------------------------------------------------------------------------------------------

Nota Número              : 04132

Categoria                : Melhoria

Prioridade               : Baixa

Versão PW.CE             : 7.0

Pacote                   : 00002

Agrupamento              : 00002

----------------------------------------------------------------------------------------------------

Referência às notas relacionadas:

Número - Ordem - Versão - Pacote - Descrição Breve

 

03365  - 00001 - 6.0    - 00026  - REPORT EXCEL PARA A EMISSÃO DO DOCUMENTO SAQUE A PRAZO

03603  - 00002 - 7.0    - 00001  - REPORT EXCEL AUTOMATIZAÇÃO DO IDIOMA

03696  - 00003 - 7.0    - 00001  - LEITURA DE TEXTOS NOS REPORTS EM EXCEL

03840  - 00004 - 7.0    - 00001  - EXIBIR TEXTOS NOS REPORTS EXCEL

----------------------------------------------------------------------------------------------------

ESCREVER UM MONTANTE POR EXTENSO

----------------------------------------------------------------------------------------------------

Palavras Chave:

AMOUNT, TRANSLATIO, CURRENCY.

 

----------------------------------------------------------------------------------------------------

Objetos da nota:

FUNC /PWS/ZYCR_TRANSLATOR_AMOUNT

REPS /PWS/ZYCRI002

REPT /PWS/SAPLZYCRGF4

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em FUNC /PWS/ZYCR_TRANSLATOR_AMOUNT

 

Criado o módulo de função /PWS/ZYCR_TRANSLATOR_AMOUNT.

Classe de desenvolvimento: /PWS/ZYCR

Texto breve (PT): CR - Escreve um montante por extenso

Grupo de funções: /PWS/ZYCRGF4

 

FUNCTION /PWS/ZYCR_TRANSLATOR_AMOUNT.

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

*"*"Interface local:

*"  IMPORTING

*"     VALUE(AMOUNT) TYPE  P DEFAULT 0

*"     VALUE(CURRENCY) TYPE  WAERS DEFAULT SPACE

*"     VALUE(LANGUAGE) TYPE  LANG DEFAULT SY-LANGU

*"  EXPORTING

*"     VALUE(IN_WORDS) TYPE  SPELL-WORD

*"  EXCEPTIONS

*"      WRITE_ERROR

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

 

  DATA: spell                  TYPE spell,

        integer_qualifier(255) TYPE c,

        decimal_qualifier(255) TYPE c.

 

  SET LANGUAGE language.

 

  CLEAR in_words.

 

  CHECK amount > 0.                                       "#EC PORTABLE

 

  CALL FUNCTION 'SPELL_AMOUNT'

       EXPORTING

            amount    = amount

            currency  = currency

            filler    = ' '

            language  = language

       IMPORTING

            in_words  = spell

       EXCEPTIONS

            not_found = 1

            too_large = 2

            OTHERS    = 3.

 

  IF sy-subrc = 0.

 

    IF spell-number > 1.

 

      CASE currency.

 

        WHEN 'USD'.

 

          integer_qualifier = text-001.

 

        WHEN 'EUR' OR 'EURX'.

 

          integer_qualifier = text-002.

 

        WHEN 'BRL'.

 

          integer_qualifier = text-003.

 

        WHEN 'JPY'.

 

          integer_qualifier = text-004.

 

        WHEN OTHERS.

 

      ENDCASE.

 

    ELSE.

 

      CASE currency.

 

        WHEN 'USD'.

 

          integer_qualifier = text-005.

 

        WHEN 'EUR' OR 'EURX'.

 

          integer_qualifier = text-006.

 

        WHEN 'BRL'.

 

          integer_qualifier = text-007.

 

        WHEN 'JPY'.

 

          integer_qualifier = text-008.

 

        WHEN OTHERS.

 

      ENDCASE.

 

    ENDIF.

 

    IF spell-currdec > 0

        AND spell-decimal(spell-currdec) > 1.             "#EC PORTABLE

 

      CASE currency.

 

        WHEN 'USD' OR 'EUR' OR 'EURX' OR 'BRL'.

 

          decimal_qualifier = text-009.

 

        WHEN OTHERS.

 

      ENDCASE.

 

    ELSE.

 

      CASE currency.

 

        WHEN 'USD' OR 'EUR' OR 'EURX' OR 'BRL'.

 

          decimal_qualifier = text-010.

 

        WHEN OTHERS.

 

      ENDCASE.

 

    ENDIF.

 

  ELSE.

 

    RAISE write_error.

 

  ENDIF.

 

  IF spell-number > 0 AND spell-decimal > 0.

 

    CONCATENATE spell-word

                integer_qualifier

                text-011

                spell-decword

                decimal_qualifier

      INTO in_words

      SEPARATED BY space.

 

  ELSE.

 

    IF spell-number > 0.

 

      CONCATENATE spell-word

                  integer_qualifier

        INTO in_words

        SEPARATED BY space.

 

    ELSE.

 

      CONCATENATE spell-decword

                  decimal_qualifier

        INTO in_words

        SEPARATED BY space.

 

    ENDIF.

 

  ENDIF.

 

ENDFUNCTION.

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/ZYCRI002

 

...

            OTHERS                       = 9.

  p_subrc = sy-subrc.

ENDFORM.

FORM spell_currency_amount

     USING

         amount   TYPE p

         currency TYPE currency

         v_langu  TYPE /pws/zycrt009-spras

     CHANGING

         in_words TYPE c.

 

* >> Início da exclusão: FORM SPELL_CURRENCY_AMOUNT

  DATA: spell                  TYPE spell,

        integer_qualifier(255) TYPE c,

        decimal_qualifier(255) TYPE c.

 

  CLEAR in_words.

 

  CHECK amount > 0.

 

  CALL FUNCTION 'SPELL_AMOUNT'

       EXPORTING

            amount    = amount

            currency  = currency

            filler    = ' '

            language  = v_langu

       IMPORTING

            in_words  = spell

       EXCEPTIONS

            not_found = 1

            too_large = 2

            OTHERS    = 3.

 

  IF sy-subrc = 0.

 

    IF spell-number > 1.

 

      CASE currency.

 

        WHEN 'USD'.

 

          integer_qualifier = 'DÓLARES'.

 

        WHEN 'EUR' OR 'EURX'.

 

          integer_qualifier = 'EUROS'.

 

        WHEN 'BRL'.

 

          integer_qualifier = 'REAIS'.

 

        WHEN 'JPY'.

 

          integer_qualifier = 'IENES'.

 

        WHEN OTHERS.

 

      ENDCASE.

 

    ELSE.

 

      CASE currency.

 

        WHEN 'USD'.

 

          integer_qualifier = 'DÓLAR'.

 

        WHEN 'EUR' OR 'EURX'.

 

          integer_qualifier = 'EURO'.

 

        WHEN 'BRL'.

 

          integer_qualifier = 'REAL'.

 

        WHEN 'JPY'.

 

          integer_qualifier = 'IENE'.

 

        WHEN OTHERS.

 

      ENDCASE.

 

    ENDIF.

 

    IF spell-currdec > 0

        AND spell-decimal(spell-currdec) > 1.             "#EC PORTABLE

 

      CASE currency.

 

        WHEN 'USD' OR 'EUR' OR 'EURX' OR 'BRL'.

 

          decimal_qualifier = 'CENTAVOS'.

 

        WHEN OTHERS.

 

      ENDCASE.

 

    ELSE.

 

      CASE currency.

 

        WHEN 'USD' OR 'EUR' OR 'EURX' OR 'BRL'.

 

          decimal_qualifier = 'CENTAVO'.

 

        WHEN OTHERS.

 

      ENDCASE.

 

    ENDIF.

 

  ELSE.

 

    MESSAGE a026(/pws/zycrm).

 

  ENDIF.

 

  IF spell-number > 0 AND spell-decimal > 0.

 

    CONCATENATE spell-word

                integer_qualifier

                'E'

                spell-decword

                decimal_qualifier

      INTO in_words

      SEPARATED BY space.

 

  ELSE.

 

    IF spell-number > 0.

 

      CONCATENATE spell-word

                  integer_qualifier

        INTO in_words

        SEPARATED BY space.

 

    ELSE.

 

      CONCATENATE spell-decword

                  decimal_qualifier

        INTO in_words

        SEPARATED BY space.

 

    ENDIF.

 

  ENDIF.

* << Fim da exclusão

 

* >> Início da inclusão

  CALL FUNCTION '/PWS/ZYCR_TRANSLATOR_AMOUNT'

       EXPORTING

            amount      = amount

            currency    = currency

            language    = v_langu

       IMPORTING

            in_words    = in_words

       EXCEPTIONS

            write_error = 1

            OTHERS      = 2.

 

  IF sy-subrc <> 0.

 

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

 

  ENDIF.

* << Fim da inclusão

 

ENDFORM.

...

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPT /PWS/SAPLZYCRGF4

 

------------------------------------------------------------------------

Incluído símbolo de texto:

 

Idioma: EN

 

Símbolo: 006

 

Texto: (4 caracteres)

"EURO"

 

Comprimento máximo: 30

 

------------------------------------------------------------------------

Incluído símbolo de texto:

 

Idioma: EN

 

Símbolo: 007

 

Texto: (4 caracteres)

"Real"

 

Comprimento máximo: 30

 

------------------------------------------------------------------------

Incluído símbolo de texto:

 

Idioma: EN

 

Símbolo: 008

 

Texto: (3 caracteres)

"YEN"

 

Comprimento máximo: 30

 

------------------------------------------------------------------------

Incluído símbolo de texto:

 

Idioma: EN

 

Símbolo: 009

 

Texto: (5 caracteres)

"CENTS"

 

Comprimento máximo: 30

 

------------------------------------------------------------------------

Incluído símbolo de texto:

 

Idioma: EN

 

Símbolo: 010

 

Texto: (4 caracteres)

"CENT"

 

Comprimento máximo: 30

 

------------------------------------------------------------------------

Incluído símbolo de texto:

 

Idioma: EN

 

Símbolo: 001

 

Texto: (7 caracteres)

"DOLLARS"

 

Comprimento máximo: 132

 

------------------------------------------------------------------------

Incluído símbolo de texto:

 

Idioma: EN

 

Símbolo: 002

 

Texto: (5 caracteres)

"EUROS"

 

Comprimento máximo: 30

 

------------------------------------------------------------------------

Incluído símbolo de texto:

 

Idioma: EN

 

Símbolo: 003

 

Texto: (5 caracteres)

"REALS"

 

Comprimento máximo: 30

 

------------------------------------------------------------------------

Incluído símbolo de texto:

 

Idioma: EN

 

Símbolo: 004

 

Texto: (4 caracteres)

"YENS"

 

Comprimento máximo: 30

 

------------------------------------------------------------------------

Incluído símbolo de texto:

 

Idioma: EN

 

Símbolo: 005

 

Texto: (6 caracteres)

"DOLLAR"

 

Comprimento máximo: 30

 

------------------------------------------------------------------------

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 001

 

Texto: (7 caracteres)

"DÓLARES"

 

Comprimento máximo: 132

 

------------------------------------------------------------------------

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 002

 

Texto: (5 caracteres)

"EUROS"

 

Comprimento máximo: 30

 

------------------------------------------------------------------------

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 003

 

Texto: (5 caracteres)

"REAIS"

 

Comprimento máximo: 30

 

------------------------------------------------------------------------

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 004

 

Texto: (5 caracteres)

"IENES"

 

Comprimento máximo: 30

 

------------------------------------------------------------------------

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 005

 

Texto: (5 caracteres)

"DÓLAR"

 

Comprimento máximo: 30

 

------------------------------------------------------------------------

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 006

 

Texto: (4 caracteres)

"EURO"

 

Comprimento máximo: 30

 

------------------------------------------------------------------------

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 007

 

Texto: (4 caracteres)

"REAL"

 

Comprimento máximo: 30

 

------------------------------------------------------------------------

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 008

 

Texto: (4 caracteres)

"IENE"

 

Comprimento máximo: 30

 

------------------------------------------------------------------------

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 009

 

Texto: (8 caracteres)

"CENTAVOS"

 

Comprimento máximo: 30

 

------------------------------------------------------------------------

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 010

 

Texto: (7 caracteres)

"CENTAVO"

 

Comprimento máximo: 30

 

 

------------------------------------------------------------------------

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 011

 

Texto: (1 caractere)

"E"

 

Comprimento máximo: 30

 

------------------------------------------------------------------------

Incluído símbolo de texto:

 

Idioma: EN

 

Símbolo: 011

 

Texto: (3 caracteres)

"AND"

 

Comprimento máximo: 30