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