quinta-feira, 1 de setembro de 2011

ALV - Estrutura

  REPORT z_struc_alv.

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

Nenhum comentário:

Postar um comentário