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