* As vezes estamos trabalhando com unidades de medidas e dependendo do modo
* de exibição aparece uma unidade que a gente não sabe daonde veio, então
* essas unidades são unidade padrões da SAP que são relacionadas com unidades
* conforme o idioma, para não mostrar as unidades do SAP usamos uma função
* mostrar as unidades que queremos que é a 'CONVERSION_EXIT_CUNIT_OUTPUT',
* no exemplo abaixo estarei usando o Input 'ST' e o idioma do User.
* O resultado será muito interessante.
*&---------------------------------------------------------------------*
REPORT conversion_exit_cunit_output.
DATA :
vg_meins_out TYPE meins.
SELECTION-SCREEN BEGIN OF block b1 WITH FRAME.
PARAMETERS :
* What f*&% s this, eu coloco ST e aparece outra coisa.
pi_meins TYPE meins DEFAULT 'ST',
cb_with as CHECKBOX .
SELECTION-SCREEN end of BLOCK b1.
BREAK-POINT.
IF cb_with IS INITIAL.
else.
PERFORM z_trata_unidade.
ENDIF.
WRITE :
pi_meins, /
vg_meins_out.
* de exibição aparece uma unidade que a gente não sabe daonde veio, então
* essas unidades são unidade padrões da SAP que são relacionadas com unidades
* conforme o idioma, para não mostrar as unidades do SAP usamos uma função
* mostrar as unidades que queremos que é a 'CONVERSION_EXIT_CUNIT_OUTPUT',
* no exemplo abaixo estarei usando o Input 'ST' e o idioma do User.
* O resultado será muito interessante.
*&---------------------------------------------------------------------*
REPORT conversion_exit_cunit_output.
DATA :
vg_meins_out TYPE meins.
SELECTION-SCREEN BEGIN OF block b1 WITH FRAME.
PARAMETERS :
* What f*&% s this, eu coloco ST e aparece outra coisa.
pi_meins TYPE meins DEFAULT 'ST',
cb_with as CHECKBOX .
SELECTION-SCREEN end of BLOCK b1.
BREAK-POINT.
IF cb_with IS INITIAL.
else.
PERFORM z_trata_unidade.
ENDIF.
WRITE :
pi_meins, /
vg_meins_out.
*& Form Z_TRATA_UNIDADE
*&---------------------------------------------------------------------*
form Z_TRATA_UNIDADE .
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
EXPORTING
input = pi_meins
language = sy-langu
IMPORTING
* LONG_TEXT =
output = vg_meins_out " Retorno
* SHORT_TEXT =
EXCEPTIONS
unit_not_found = 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.
BREAK-POINT.
endform. " Z_TRATA_UNIDADE
* Meio de doido né, mas a transformação de ST para a unidade conforme
* o idioma logado acontece pq essa função que eu mostrei acima ela já está
* aplicado como Rotina de conversão para o dominio Meins. Para confirmar isso
* que eu falei, mude o type do parametro e executa dinovo.... agora pra ter
* certeza e só clicar duas vezes no elemento de dados 'Meins' e depois no
* seu dominio que é 'Meins' também, entrando na aba 'Definição' vá no
* campo 'Rotina de conversão' clique duas vezes dinovo.
* Tem um monte da dominios com rotinas de conversão, que será necessário
* porque quando você exibe num Write ou ALV ele passa pela rotina de conversão
* normalmente mas quando usamos essas informações num Sapscript, ele soh pega
* os dados e naum passa por nenhuma rotina do dominio da variável...
* Por ter muito porisso eu mostrei como chegar nessas rotinas pela sua
* própria variável.
* t+.