quarta-feira, 29 de junho de 2011

ALV - Parte 1

  " hahuahua, tava dando uma olhadinha nos posts que já fiz e
" percebi que tah faltando uma das coisas principais para um
" Abap Junior que eh saber mexer pelomenos no basico do ALV pois
" hoje a maioria dos relatorios solicitados são em ALV, o
" usuário tem uma maior flexibilidade com os dados podendo organizar,
" toda a vez que falarem um report pra vc a primeira coisa que tem
" que vir na sua cabeça eh um ALV, muitos consultores que eu conheço
" já tem um arquivinho com o ALV padrão deles, façam o de vcs tb, mas
" por favor não façam por fazer entendam oq cada coisa significa que
" assim vc conseguirá dar manutenção em qualquer ALV, aki estarei
" colocando um alv basico e com este arquivo estarei trabalhando pra
" fala tudo sobre isso, como colocar botão no ALV, eventos, layout,
" pf-status, e todas as propriedades que essa função pode ter entaum
" vamos lá...


REPORT z_alv_basico.

" Tabelas transparentes ....
TABLES : mara
  .
" type-pools .....
" Essa declaração e necessária pois e o grupo de tipos usados no ALV.
TYPE-POOLS: slis
           .

" Tipos .....
TYPES :

  BEGIN OF ty_mara,
    matnr TYPE mara-matnr,  " Nº do material
    ersda TYPE mara-ersda,  " Data de criação
    ernam TYPE mara-ernam,  " Nome do responsável que adicionou o objeto
    pstat TYPE mara-pstat,  " Status de atualização
    mtart TYPE mara-mtart,  " Tipo de material
  END OF   ty_mara .

" Estruturas ....
DATA : st_mara TYPE ty_mara
      .

" Tabelas Internas ....
DATA : it_mara TYPE TABLE OF ty_mara
      .

" Declarações usadas no ALV.
" Declaração da tabela e da estrutura que estaram com as informações dos campos
" do ALV
DATA : it_fieldcat TYPE slis_t_fieldcat_alv,
       st_fieldcat TYPE slis_fieldcat_alv
      .

" Tela de seleção .....
SELECTION-SCREEN BEGIN OF BLOCK b1.
SELECT-OPTIONS :
    so_matnr FOR mara-matnr NO INTERVALS,   " Nº do material
    so_pstat FOR mara-pstat NO INTERVALS    " Status de atualização
                .

SELECTION-SCREEN END OF BLOCK b1.

START-OF-SELECTION.

  PERFORM : z_feed_table,
            z_fieldcat,
            z_alv
           .

*&---------------------------------------------------------------------*
*&      Form  Z_feed_table
*&---------------------------------------------------------------------*
" Fazendo um select simples pra traze algum dado pra nos podemos visualizar
" no nosso ALV bunitão.

" não entende sobre select, clique aki :

" http://abapjuniores.blogspot.com/2011/06/for-all-entries-in-basico.html

FORM z_feed_table .

  SELECT matnr
         ersda
         ernam
         pstat
         mtart
    INTO TABLE it_mara
    FROM mara
    UP TO 100 ROWS
    WHERE matnr IN so_matnr
    AND   pstat IN so_pstat
    .

ENDFORM.                    " Z_feed_table

*&---------------------------------------------------------------------*
*&      Form  Z_FIELDCAT
*&---------------------------------------------------------------------*
" Por melhores praticas eu criei um form pra trata com o fieldcat que significa
" catalogo de campos,
FORM z_fieldcat .
  " Este perfome alimenta a tabela que será utilizada na função que cria um ALV
  " pois na função eh necessário informar os campos é suas propriedades, entrando
  " no tipo da estrutura e da tabela di fieldcat vc verá o tanto de parametros que
  " um campo pode ter .

  " Não lembra muita coisa sobre Perform, clique aki :

  " http://abapjuniores.blogspot.com/2011/04/performs.html

    PERFORM z_feed_fieldcat USING :
      "Fname  Seltext                 check   Edit  Col_pos
      'MATNR' 'Material'              ' '    ' '    0        ,
      'ERSDA' 'Data de criação'       ' '    ' '    1        ,
      'ERNAM' 'Nome do responsável'   ' '    ' '    2        ,
      'PSTAT' 'Status'                ' '    ' '    3        ,
      'MTART' 'Tipo de material'      ' '    ' '    4
              .

ENDFORM.                    " Z_FIELDCAT

*&---------------------------------------------------------------------*
*&      Form  Z_FEED_FIELDCAT
*&---------------------------------------------------------------------*
FORM z_feed_fieldcat  USING    fieldname
                               seltext_m
                               checkbox
                               edit
                               col_pos .

  st_fieldcat-fieldname   = fieldname.      " Nome do campo
  st_fieldcat-seltext_m   = seltext_m.      " texto do campo
  st_fieldcat-checkbox    = checkbox.       " se o campo é do tipo CheckBox
  st_fieldcat-edit        = edit.           " se o campo pode ser editavel
  st_fieldcat-col_pos     = col_pos.        "Em que posição fica a coluna
  " Coloca a estrutura alimentada na Tabela.
  APPEND st_fieldcat TO it_fieldcat.
  " Limpa a estrutura e volta pra poxima linha do form.
  CLEAR  st_fieldcat.
ENDFORM.                    " Z_FEED_FIELDCAT

*&---------------------------------------------------------------------*
*&      Form  Z_ALV
*&---------------------------------------------------------------------*
form Z_ALV .
"  Aki tah o prato principal deste Post, a function que torna o ALV em
" realidade, como vc pode ver esta function tem muitos parametros de exporting
" cada um com seu objetivo para que o ALV saia bunitinho, eu ia colocar
" um post falando sobre essa function, mas são muitas as propriedades
" entaum vou fazer ao contrário essa, depois que fala sobre cada propriedade
" eu lanço um post sobre esta function com o link explicando cada
" parametro, não sei quando, mais um dia eu termino rsrs.
" Aki eu soh estou preenchendo os parametros minimos pra que a function
" funcione,
" Obs.: se vc naum quiser colocar o field catalog tudo bem mas aih vc vai
" ter que colocar uma estrutura z ou naum no parametro 'I_STRUCTURE_NAME'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
*   I_INTERFACE_CHECK                 = ' '
*   I_BYPASSING_BUFFER                = ' '
*   I_BUFFER_ACTIVE                   = ' '
    i_callback_program                = sy-repid    " Nome do programa
*   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       = ' '
*   I_STRUCTURE_NAME                  =
*   I_BACKGROUND_ID                   = ' '
*   I_GRID_TITLE                      =
*   I_GRID_SETTINGS                   =
*   is_layout                         =
    it_fieldcat                       = it_fieldcat " catalogo de campos
*   IT_EXCLUDING                      =
*   IT_SPECIAL_GROUPS                 =
*   IT_SORT                           =
*   IT_FILTER                         =
*   IS_SEL_HIDE                       =
*   I_DEFAULT                         = 'X'
*   i_save                            = '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_mara   " Tabela com os dados
   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_ALV
Comentários
0 Comentários

Nenhum comentário:

Postar um comentário