BC415 - ALV

  • View
    53

  • Download
    5

Embed Size (px)

DESCRIPTION

BC415 - ALV

Text of BC415 - ALV

ABAP LIST VIEW

SAP R/3

MDULO ABAP

REPORT ALV

ndice:3Viso Geral:

6Criao do Report ALV:

61) Em forma de LISTA

72) Em forma de GRID

8Declarao de dados para ALV:

10Variantes

10Busca de Variantes previamente geradas:

10Escolha de Variantes para execuo do ALV:

11Incio Lgico do programa:

12Processamento do ALV:

13Definio de CABEALHO:

13Definio das COLUNAS A SEREM IMPRESSAS:

15Definio de LAYOUT:

15Definio de EVENTOS:

16Definio de QUEBRA / SORT:

17Definio de CALLBACK do programa.

17Definio do ALV:

18Criao de FORMS:

18FORM USER_COMMAND:

19FORM TOP_OF_PAGE:

19FORM XEND_OF_LIST:

20Opes Gerais do ALV:

20cones:

22Alterando cor de linha:

23Alterando o PF-STATUS de um ALV:

24ALV Mltiplo:

25Lgica de ALV Mltiplo:

25Chamada do ALV Mltiplo dentro do ALV Simples:

26Construo do ALV Mltiplo

26Module-Pool

27Container:

28Codificao / Explicao:

30Estruturas ZKNA1 / ZLFA1:

31PF-STATUS:

Viso Geral:ALV Abap List View - Basicamente uma funo Standard que pega a sua tabela interna de dados e transforma em um relatrio. Existem algumas funcionalidades como gerar um arquivo Excel, grficos, somatrias de campos, "links" para chamar uma outra transao, etc.. etc..

O ALV trabalha com as tabelas do type-pools slis.

Exemplos de ALV.

Relatrio ALV (Fig 01).

Fig. 01Exemplo Excel ALV: clicando no boto que chama o Excel, monta-se dentro do ALV uma planilha Excel.

Fig. 02Opo de grfico:

Fig. 03** Esta opo no foi utilizada no exemplo

Criao do Report ALV:

O Report ALV (Abap List View) pode ser gerado de 2(duas) maneiras:

1) Em forma de LISTA

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

Fig. 042) Em forma de GRID

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

Fig. 05Declarao de dados para ALV:*Primeiramente, definiremos algumas constantes, variveis, etc no nosso programa. No esquecer de definir o type-pools SLIS!!

*Definio das tabelas. Essa so tabelas que carregamos as informaes necessrias para passar pra funo. So tabelas que armazenam o layout do seu relatrio, a classificao, os campos, e o cabealho .

Exemplo:

*----------------------------------------------------------------------*

* DECLARAO DE VARIVEIS, CONSTANTES, TABELAS PARA ALV

*----------------------------------------------------------------------*

* Variveis/Tabelas para ALV

TYPE-POOLS: slis.

DATA: t_alv_fieldcat TYPE slis_t_fieldcat_alv,Tab. Com os campos s_alv_layout TYPE slis_layout_alv,Tab. De Layout do ALV l_repid LIKE sy-repid,

t_alv_events TYPE slis_t_event,

t_alv_listheader TYPE slis_t_listheader,

* Tab./Estrut. De Ordenao ou Quebra

h_sort_alv TYPE slis_sortinfo_alv, " header

t_sort_alv TYPE slis_t_sortinfo_alv, " sem header

* Definio da Variante gerada pelos usurios

variante LIKE disvariant.

* Constantes p/ ALV

CONSTANTS:

c_display LIKE sy-ucomm VALUE 'DISPLAY',

c_listheader_typ_headline TYPE slis_listheader-typ VALUE 'S'.

Definio de tabela(s) interna(s) para utilizao no ALV:*Vamos criar a nossa tabela interna. Essa tabela interna seria a ultima tabela (aquela que temos j todas as informaes gravadas nela).

*----------------------------------------------------------------------*

* DECLARAO DE TABELAS INTERNAS

*----------------------------------------------------------------------*

* Tab. p/ Impresso em ALV principal

DATA: BEGIN OF t_final OCCURS 0,

bukrs LIKE bseg-bukrs,

belnr LIKE bseg-belnr,

gjahr LIKE bseg-gjahr,

augdt LIKE bseg-augdt,

gsber LIKE bseg-gsber,

dmbtr LIKE bseg-dmbtr,

wrbtr LIKE bseg-wrbtr,

pswsl LIKE bseg-pswsl,

sgtxt LIKE bseg-sgtxt,

lifnr LIKE bseg-lifnr,

kunnr LIKE bseg-kunnr,

ICON(30),

END OF t_final,

* Tab. p/ Impresso em ALV de Clientes

BEGIN OF t_kna1 OCCURS 0,

kunnr LIKE kna1-kunnr,

land1 LIKE kna1-land1,

name1 LIKE kna1-name1,

ort01 LIKE kna1-ort01,

END OF t_kna1,

* Tab. p/ Impresso em ALV de Fornecedores

BEGIN OF t_lfa1 OCCURS 0,

lifnr LIKE lfa1-lifnr,

land1 LIKE lfa1-land1,

name1 LIKE lfa1-name1,

ort01 LIKE lfa1-ort01,

END OF t_lfa1.

Variantes

Busca de Variantes previamente geradas:INITIALIZATION.

PERFORM alv_init.

FORM alv_init.

.

.

* Esta funo busca as variantes para o programa, se existirem

CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'

EXPORTING

i_save = 'A'

CHANGING

cs_variant = variante

EXCEPTIONS

not_found = 2.

.

.

.ENDFORM. " ALV_INIT

Escolha de Variantes para execuo do ALV:*----------------------------------------------------------------------*

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_varia.

*----------------------------------------------------------------------*

PERFORM alv_f4.

FORM alv_f4.

.

.

* Com esta funo escolhe-se a Variante para executar o ALV, caso

* a funo anterior tenha tido sucesso...

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

EXPORTING

is_variant = variante

i_save = 'A'

IMPORTING

es_variant = variante

EXCEPTIONS

not_found = 2.

.

.

.

ENDFORM. " ALV_F4

Incio Lgico do programa:*----------------------------------------------------------------------*

* INCIO LGICO

*----------------------------------------------------------------------*

START-OF-SELECTION.

PERFORM busca_dados.

IF NOT t_final[] IS INITIAL.

PERFORM alv.

ENDIF.

END-OF-SELECTION.

No PERFORM busca_dados, gera-se as tabelas a serem utilizadas pelo ALV.

Processamento do ALV:

FORM alv.

* DEFINIO DO CABEALHO

PERFORM: alv_build_header,

* DEFINIO DAS COLUNAS A SEREM IMPRESSAS

alv_build_fieldcat CHANGING t_alv_fieldcat,

* DEFINIO DO LAYOUT

alv_set_layout CHANGING s_alv_layout,

* DEFINIO DE EVENTOS

alv_build_eventtab CHANGING t_alv_events,

* DEFINIO DE QUEBRAS

definir_quebras_alv.

* set callback program

* DEFINIO DE: CALLBACK DO PROGRAMA* sy-repid guarda o nome do programa em execuo... l_repid = sy-repid.

* display ALV grid.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

* display ALV list.

* CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_background_id = ' '

i_callback_program = l_repid

i_callback_top_of_page = 'ALV_TOP_OF_LIST'

i_callback_user_command = 'ALV_USER_COMMAND'

* QND. TEM OUTRO STATUS A SER GERADO...

i_callback_pf_status_set = 'SET_PF_STATUS'

is_layout = s_alv_layout

i_save = 'A'

it_fieldcat = t_alv_fieldcat

it_events = t_alv_events

it_sort = t_sort_alv

TABLES

t_outtab = t_final

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.

Definio de CABEALHO:

* DEFINIO DO CABEALHO

PERFORM: alv_build_header,

*&---------------------------------------------------------------------*

*& Form ALV_BUILD_HEADER

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

FORM alv_build_header.

...

DATA: ls_listheader LIKE LINE OF t_alv_listheader.

ls_listheader-typ = c_listheader_typ_headline.

ls_listheader-key = 'Usurio : '.

ls_listheader-info = sy-uname.

APPEND ls_listheader TO t_alv_listheader.

ENDFORM. " ALV_BUILD_HEADER

Definio das COLUNAS A SEREM IMPRESSAS:

* DEFINIO DAS COLUNAS A SEREM IMPRESSAS

PERFORM alv_build_fieldcat CHANGING t_alv_fieldcat.

FORM alv_build_fieldcat CHANGING et_fieldcat TYPE slis_t_fieldcat_alv.

DATA: l_fieldcat TYPE slis_fieldcat_alv,

l_count TYPE i.

CLEAR: l_fieldcat, l_count, t_alv_fieldcat.

REFRESH: t_alv_fieldcat.

* Add header data

. . .

*EMPRESA

CLEAR l_fieldcat.

l_count = l_count + 1.

l_fieldcat-col_pos =