quinta-feira, 5 de abril de 2012

Função - GET_KEY_FIELDS_OF_TABLE


"  Eae, vou mostrar pra vocês uma função que retorna as chaves
" de uma tabela Transparente, sabe quando vc precisa tratar as
" chaves primárias de uma tabela de forma diferente, como deixar
" de cor diferente os campos chave numa tabela em um ALV,
" ou fazer um select dinâmico pelas chave da tabela informada.

REPORT z_get_key_fields_of_table.

DATA :
" Tabela de retorna da função.
  it_keys 
TYPE TABLE OF dfies,
" Estrutura de retorno da Função
  st_keys 
TYPE dfies.

" Tela de seleção
SELECTION-
SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS : p_table TYPE dfies-tabname, " Tabela
             c_mandt 
AS CHECKBOX         " Com mandante
             .
SELECTION-
SCREEN END OF BLOCK   b1.

" Inicio do processo
START-
OF-SELECTION.

" Pega os campos chave da tabela informada pelo User.
  
PERFORM z_key_fields.
" Mostra retorno da function
  
PERFORM z_show.

END-OF-SELECTION.





*&---------------------------------------------------------------------*
*&      Form  Z_KEY_FIELDS
*&---------------------------------------------------------------------*
FORM z_key_fields .

  
CALL FUNCTION 'GET_KEY_FIELDS_OF_TABLE'
    
EXPORTING
      tabname       = p_table
      mandt_needed  = c_mandt
    
TABLES
      key_fieldtab  = it_keys
    
EXCEPTIONS
      not_supported = 
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.

ENDFORM.                    " Z_KEY_FIELDS

*&---------------------------------------------------------------------*
*&      Form  Z_SHOW
*&---------------------------------------------------------------------*
form Z_SHOW .

LOOP AT it_keys into st_keys.

IF sy-tabix = 1.
  
write :/ 'Campos',
           
'                        Posição na tabela'.
ENDIF.

  
WRITE :/ st_keys-fieldname,
           st_keys-
position.

ENDLOOP.

endform.                    " Z_SHOW
Comentários
0 Comentários

Nenhum comentário:

Postar um comentário