*&---------------------------------------------------------------------*
" Vou fala agora sobre Estrutura dentro do ALV, I_STRUCTURE_NAME servirá,
" como o jah falado, igual ao parametro 'IT_FIELDCAT' da função,
" a estrutura feita tem esta cara:
" Sabe criar estrutura ? acesse :
" http://abapjuniores.blogspot.com/2011/08/dicionario-estruturas.html
" o código eh muito simples olhem abaixo.
" Tabelas
TABLES :
mara
.
TYPE-POOLs : slis
.
" Tipos
TYPES BEGIN OF ty_outtab.
" Aki eu estou aproveitando a estrutura criada para cria o tipo identico
" para a tabela de saida.
INCLUDE TYPE zst_struc_001.
TYPES END OF ty_outtab.
TYPES :
BEGIN OF ty_mara,
matnr TYPE mara-matnr,
ersda TYPE mara-ersda,
END OF ty_mara,
BEGIN OF ty_makt,
matnr TYPE makt-matnr,
maktx TYPE makt-maktx,
END OF ty_makt
.
" Tabelas Internas e Estruturas
DATA :
st_outtab TYPE ty_outtab,
it_outtab TYPE TABLE OF ty_outtab,
st_mara TYPE ty_mara,
it_mara TYPE TABLE OF ty_mara,
st_makt TYPE ty_makt,
it_makt TYPE TABLE OF ty_makt
.
" Constantes
data : c_x TYPE c VALUE 'X'.
" Tela de seleção.
SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE text-t01.
SELECT-OPTIONS : so_matnr FOR mara-matnr
.
SELECTION-SCREEN END OF BLOCK 1.
" Inicio do programa.
START-OF-SELECTION.
PERFORM :
z_busca_dados,
z_feed_outtab,
z_cria_alv
.
*&---------------------------------------------------------------------*
*& Form Z_BUSCA_DADOS
*&---------------------------------------------------------------------*
" Leitura simples das tabelas para alimentar a tabela de saida.
FORM z_busca_dados .
SELECT matnr ersda
FROM mara
INTO TABLE it_mara
UP TO 100 ROWS
WHERE matnr IN so_matnr
.
SELECT matnr maktx
FROM makt
INTO TABLE it_makt
FOR ALL ENTRIES IN it_mara
WHERE matnr = it_mara-matnr
AND spras = 'PT'
.
ENDFORM. " Z_BUSCA_DADOS
*&---------------------------------------------------------------------*
*& Form Z_FEED_OUTTAB
*&---------------------------------------------------------------------*
" Alimentação da tabela de saida.
FORM z_feed_outtab .
LOOP AT it_mara INTO st_mara.
READ TABLE it_makt INTO st_makt
WITH KEY matnr = st_mara-matnr
.
st_outtab-check = ' '.
st_outtab-matnr = st_mara-matnr.
st_outtab-ersda = st_mara-ersda.
st_outtab-maktx = st_makt-maktx.
APPEND st_outtab TO it_outtab.
ENDLOOP.
ENDFORM. " Z_FEED_OUTTAB
*&---------------------------------------------------------------------*
*& Form Z_CRIA_ALV
*&---------------------------------------------------------------------*
" Cria o ALV.
form Z_CRIA_ALV .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
" Nome do programa.
I_CALLBACK_PROGRAM = sy-repid
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
" Inserção da estrutura para a substituição do Fieldcatolog
I_STRUCTURE_NAME = 'ZST_STRUC_001'
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
* IS_LAYOUT =
* IT_FIELDCAT =
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
I_SAVE = c_x
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = it_outtab
EXCEPTIONS
PROGRAM_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.
endform. " Z_CRIA_ALV