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