terça-feira, 18 de setembro de 2012

Função - CONVERSION_EXIT_CUNIT_OUTPUT

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



*&---------------------------------------------------------------------*
*&      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+.
Comentários
0 Comentários

Nenhum comentário:

Postar um comentário