1. WA - Customer Control - ALV OO

download 1. WA - Customer Control - ALV OO

of 23

description

ALV OO - Step by step

Transcript of 1. WA - Customer Control - ALV OO

Fbrica Software ABAP LSMW

. Maria Coelho Aguiar, 215

CENESP Bloco C 4. Andar

05804-900 So Paulo SP

Tel.: 3741-4040 Fax : 3741-3562

ALV OO Guia de Implementaondice

3ALV Simples

3Passo 1:

3Passo 2:

4Passo 3:

4Passo 4:

5Passo 5:

5Passo 6:

7ALV Total

7Passo 1:

8ALV Sub-Total

8Passo 1:

8Passo 2:

8Passo 3:

9ALV Hotspot

9Passo 1:

9Passo 2:

10Passo 3:

10Passo 4:

10Passo 5:

11ALV Salvar Layout

11Passo 1:

11Passo 2:

11Passo 3:

12Passo 4:

12Passo 5:

13ALV Exibio cone / Colorir linha

13Passo 1:

13Passo 2:

13Passo 3:

14Passo 4:

14ALV Refresh

14Passo 1:

15ALV Exemplo

ALV SimplesPasso 1: Desenhar o layout da tela, incluindo o container onde ser exibido o ALV. (SE80)

Passo 2: Declarar as variveis globais conforme sintaxe abaixo:

Passo 3: Executar a busca dos dados a serem exibidos no grid.

Passo 4: Setar as propriedades gerais e das colunas do alv.

Passo 5: Chamar o mtodo para exibir o Grid na tela.

Passo 6:Passo 7:Passo 6: Limpar as classes aps a finalizao do relatrio

ALV Total

Passo 1: Setar o campo do_sum da estrutura fieldcat com o valor X.

ALV Sub-Total

Passo 1: Declarar as variveis globais conforme sintaxe abaixo:

Passo 2: Preencher a tabela sort com o campo pelo qual deve ser feita a sub-quebra.

Passo 3: Acrescentar ao mtodo de exibir o ALV a tabela Sort.

ALV Hotspot

Passo 1: Declarar as seguintes variaveis.

Passo 2: Acrescentar a classe de definio do evento Hotspot.

Passo 3: Acrescentar a classe de implementao do evento Hotspot.

Passo 4: Acrescentar o seguinte trecho de cdigo aps o mtodo de exibio do grid.

Passo 5: Setar o campo hotspot da estrutura fieldcat com o valor X.

ALV Salvar Layout

Passo 1: Declarar as variveis globais conforme sintaxe abaixo:

Passo 2: Declarar parameter para captura de layouts salvos:

Passo 3: Acrescente o seguinte trecho de cdigo nas propriedades do ALV.

Passo 4: No evento AT SELECTION-SCREEN ON VALUE REQUEST do parmetro acima, acrescentar o seguinte cdigo:

Passo 5: Acrescentar ao mtodo de exibir o ALV os seguintes parmetros:

ALV Exibio cone / Colorir linhaPasso 1: Acrescentar campo na estrutura da tabela final.

Passo 2: Declarar as variveis globais

Passo 3: Modificar a tabela interna a ser exibida pelo ALV.

Passo 4: Acrescentar as seguintes propriedades ao ALV.

ALV Refresh

Passo 1: Chamar o mtodo abaixo.

ALV Exemplo

*&---------------------------------------------------------------------**&ReportZLUCIANA_38*&*&---------------------------------------------------------------------*REPORTzluciana_38.

*-----------------------------------------------------------------------*Tables*-----------------------------------------------------------------------TABLES:vbap.

*-----------------------------------------------------------------------*Types*-----------------------------------------------------------------------TYPES:BEGINOFty_vbap,vbelnTYPEvbap-vbeln,matnrTYPEvbap-matnr,netwrTYPEvbap-netwr,linecolor(4)TYPEc,"Colorirlinhasicon(1)TYPEc,"FarolENDOFty_vbap.

*-----------------------------------------------------------------------*TabelasInternas*-----------------------------------------------------------------------DATA:t_vbapTYPETABLEOFty_vbap.

*-----------------------------------------------------------------------*Estruturas*-----------------------------------------------------------------------DATA:s_vbapTYPEty_vbap.

*-----------------------------------------------------------------------*DefiniesALVGridControl,ContainereEvento*-----------------------------------------------------------------------CLASSlcl_event_receiverDEFINITIONDEFERRED.

DATA:gridTYPEREFTOcl_gui_alv_grid,containerTYPEREFTOcl_gui_custom_container,event_receiverTYPEREFTOlcl_event_receiver.

*-----------------------------------------------------------------------*DefiniesCatlogo,Soma,LayouteVariantedeExibio*-----------------------------------------------------------------------DATA:t_fieldcatTYPETABLEOFlvc_s_fcat,s_fieldcatTYPElvc_s_fcat,t_sortTYPETABLEOFlvc_s_sort,s_sortTYPElvc_s_sort,gs_layoutTYPElvc_s_layo,gs_variantTYPEdisvariant.

DATA:ls_layoutTYPEsalv_s_layout_info,ls_keyTYPEsalv_s_layout_key.

DATA:icon_nameTYPElvc_cifnmVALUE'ICON'.

*-----------------------------------------------------------------------*TeladeSeleo*-----------------------------------------------------------------------SELECT-OPTIONS:so_vbelnFORvbap-vbelnNOINTERVALS.PARAMETERS:p_variTYPEslis_vari.

*----------------------------------------------------------------------*ATSELECTIONSCREEN*----------------------------------------------------------------------ATSELECTION-SCREENONVALUE-REQUESTFORp_vari.PERFORMf_buscar_layouts.

*-----------------------------------------------------------------------*Start-Of-Selection*-----------------------------------------------------------------------START-OF-SELECTION.PERFORMf_call_screen.

*---------------------------------------------------------------------**CLASSlcl_event_receiverDEFINITION*---------------------------------------------------------------------**defineomtododehotspot*---------------------------------------------------------------------*CLASSlcl_event_receiverDEFINITION.

PUBLICSECTION."SeoPblica

"DefiniodoeventohotspotMETHODS:hotspot_click"NomeparaoeventoFOREVENThotspot_clickOFcl_gui_alv_gridIMPORTINGe_row_ide_column_ides_row_no.

PRIVATESECTION."SeoPrivada

ENDCLASS."lcl_event_receiverDEFINITION

*---------------------------------------------------------------------**CLASSlcl_event_receiverIMPLEMENTATION*---------------------------------------------------------------------*CLASSlcl_event_receiverIMPLEMENTATION.

"ImplementaodoeventohotspotMETHODhotspot_click.

READTABLEt_vbapINTOs_vbapINDEXe_row_id-index.IFsy-subrc=0.SETPARAMETERID'AUN'FIELDs_vbap-vbeln.CALLTRANSACTION'VA03'ANDSKIPFIRSTSCREEN.ENDIF.

ENDMETHOD."handle_double_click

ENDCLASS."lcl_event_receiverIMPLEMENTATION

*&---------------------------------------------------------------------**&FormF_SELECIONA_DADOS*&---------------------------------------------------------------------*FORMf_seleciona_dados.

"AbandonararotinacasooALVjestejapreenchidoIFNOTt_vbap[]ISINITIAL.EXIT.ENDIF.

SELECTvbelnmatnrnetwrFROMvbapINTOTABLEt_vbapWHEREvbelnINso_vbeln.

LOOPATt_vbapINTOs_vbap.

"SetaracordalinhaIFsy-tabixfreeEXCEPTIONScntl_error=1cntl_system_error=2.ENDIF.

"VoltaparaatelaanteriorLEAVETOSCREEN0.

WHEN'BT_DEL'.

DELETEt_vbapINDEX1.

PERFORMf_grid.

ENDCASE.

ENDMODULE."USER_COMMAND_1001INPUT

*&---------------------------------------------------------------------**&FormF_DECLARA_ALV*&---------------------------------------------------------------------*FORMf_declara_alv.

*mximaexibiodacolunags_layout-cwidth_opt='X'.

*linhaszebradasnoALVgs_layout-zebra='X'.

*ttuloALVgs_layout-grid_title=TEXT-000.

*Colorirlinhasgs_layout-info_fname='LINECOLOR'."nomedacoluna

*layoutgs_variant-report=sy-repid.

*exibevarianteescolhidags_variant-variant=p_vari.

*Farolgs_layout-excp_fname=icon_name.

*Montarfieldcat(colunasdoalv)FREE:t_fieldcat.

PERFORMf_monta_alvUSING'VBELN''14''ORDEMVENDA''X'''.PERFORMf_monta_alvUSING'MATNR''20''MATERIAL'''''.PERFORMf_monta_alvUSING'NETWR''20''VALORLIQ.''''X'.

ENDFORM."F_DECLARA_ALV

*&---------------------------------------------------------------------**&FormF_MONTA_ALV*&---------------------------------------------------------------------*FORMf_monta_alvUSINGp1TYPElvc_s_fcat-fieldnamep2TYPElvc_s_fcat-outputlenp3TYPElvc_s_fcat-coltextp4TYPElvc_s_fcat-hotspotp5TYPElvc_s_fcat-do_sum.

s_fieldcat-fieldname=p1."Nomedocampos_fieldcat-outputlen=p2."Tamanhodacolunas_fieldcat-coltext=p3."Labeldacolunas_fieldcat-hotspot=p4."Hotspots_fieldcat-do_sum=p5."SomaAPPENDs_fieldcatTOt_fieldcat.

ENDFORM."F_MONTA_ALV

*&---------------------------------------------------------------------**&FormF_DECLARA_SORT*&---------------------------------------------------------------------*FORMf_declara_sortUSINGp1TYPElvc_s_sort-fieldnamep2TYPElvc_s_sort-subtot.

CLEARs_sort.s_sort-fieldname=p1."Nomedocampos_sort-subtot=p2."SubtotalAPPENDs_sortTOt_sort.

ENDFORM."F_DECLARA_SORT

*&---------------------------------------------------------------------**&FormGRID*&---------------------------------------------------------------------*FORMf_grid.

IFcontainerISINITIALANDt_vbap[]ISNOTINITIAL.

CREATEOBJECTcontainerEXPORTINGcontainer_name='CONTAINER'.

CREATEOBJECTgridEXPORTINGi_parent=container.

"MetodoparaexibirogridCALLMETHODgrid->set_table_for_first_displayEXPORTINGis_variant=gs_varianti_save='A'is_layout=gs_layoutCHANGINGit_outtab=t_vbapit_sort=t_sortit_fieldcatalog=t_fieldcat.

"MetododehotspotCREATEOBJECTevent_receiver.SETHANDLERevent_receiver->hotspot_clickFORgrid.

ELSE.

"MetododerefreshdoALVCALLMETHODgrid->refresh_table_display.

ENDIF.

ENDFORM."F_GRID

*&---------------------------------------------------------------------**&FormF_BUSCAR_LAYOUTS*&---------------------------------------------------------------------*FORMf_buscar_layouts.

ls_key-report=sy-repid.

ls_layout=cl_salv_layout_service=>f4_layouts(s_key=ls_keyrestrict=if_salv_c_layout=>restrict_none).

p_vari=ls_layout-layout.

ENDFORM."F_BUSCAR_LAYOUTSResultado:

*Configurar as colunas a serem preenchidas s_fieldcat-fieldname='VBELN'. "Nomedocampos_fieldcat-outputlen='10'. "Tamanhodacolunas_fieldcat-coltext='N OV'. "Labeldacolunas_fieldcat-hotspot=''. "Hotspots_fieldcat-do_sum=''. "SomarizadoAPPENDs_fieldcatTOt_fieldcat.

s_fieldcat-fieldname='NETWR'. "Nomedocampos_fieldcat-outputlen='12'. "Tamanhodacolunas_fieldcat-coltext='Valor'. "Labeldacolunas_fieldcat-hotspot=''. "Hotspots_fieldcat-do_sum='X'. "SomarizadoAPPENDs_fieldcatTOt_fieldcat.

"LimpaoGrid

IF grid ISNOTINITIAL. CALLMETHODgrid->free EXCEPTIONS cntl_error=1 cntl_system_error=2. ENDIF.

"LimpaoContainerIFcontainerISNOTINITIAL.CALLMETHODcontainer->freeEXCEPTIONScntl_error=1cntl_system_error=2.

ENDIF.

CREATEOBJECTcontainerEXPORTINGcontainer_name='CONTAINER'.CREATEOBJECTgridEXPORTINGi_parent=container."MetodoparaexibirogridCALLMETHODgrid->set_table_for_first_displayEXPORTINGis_layout=gs_layoutCHANGINGit_outtab=t_vbapit_fieldcatalog=t_fieldcat.

*Configurar as colunas a serem preenchidas s_fieldcat-fieldname='VBELN'. "Nomedocampos_fieldcat-outputlen='10'. "Tamanhodacolunas_fieldcat-coltext='N OV'. "Labeldacolunas_fieldcat-hotspot=''. "Hotspots_fieldcat-do_sum=''. "SomarizadoAPPENDs_fieldcatTOt_fieldcat.

s_fieldcat-fieldname='NETWR'. "Nomedocampos_fieldcat-outputlen='12'. "Tamanhodacolunas_fieldcat-coltext='Valor'. "Labeldacolunas_fieldcat-hotspot=''. "Hotspots_fieldcat-do_sum=''. "SomarizadoAPPENDs_fieldcatTOt_fieldcat.

*Tamanho das colunas otimizadas gs_layout-cwidth_opt='X'.*linhaszebradas gs_layout-zebra='X'.*ttuloALVgs_layout-grid_title=ALV: Ordem de Vendas.

"AbandonararotinacasooALVjestejapreenchidoIFNOTt_vbap[]ISINITIAL.EXIT.ENDIF.SELECTvbelnmatnrnetwrFROMvbapINTOTABLEt_vbap.

*-----------------------------------------------------------*Declaraes tabela interna a ser exibida no ALV

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

TYPES:BEGINOFty_vbap, vbelnTYPEvbap-vbeln, matnrTYPEvbap-matnr, netwrTYPEvbap-netwr,ENDOFty_vbap.DATA:t_vbapTYPETABLEOFty_vbap.DATA:s_vbapTYPEty_vbap.

*-----------------------------------------------------------*Declaraes ALV

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

DATA:gridTYPEREFTOcl_gui_alv_grid,containerTYPEREFTOcl_gui_custom_container.

DATA:t_fieldcatTYPETABLEOF lvc_s_fcat,s_fieldcatTYPE lvc_s_fcat.DATA:gs_layout TYPE lvc_s_layo.

Boto: DELETAR

Cd. Fnc. : BT_DEL

*-----------------------------------------------------------*Declaraes ALV

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

DATA:t_sortTYPETABLEOFlvc_s_sort,s_sortTYPElvc_s_sort.

"MetododerefreshdoALV CALLMETHODgrid->refresh_table_display.

Tela 1001

Container: CONTAINER

Boto: DELETAR

Cd. Fnc. : BT_DEL

Boto: SAIR

Cd. Fnc. : BT_SAIR

*Colorirlinhasgs_layout-info_fname='LINECOLOR'. "nomecoluna da tab.*Farolgs_layout-excp_fname=icon_name. "nomevar. declarada

LOOPATt_vbapINTOs_vbap.

IFsy-tabix='100'ANDs_vbap-netwr