treinamento abap

224

Click here to load reader

Upload: rmcms

Post on 28-Sep-2015

187 views

Category:

Documents


55 download

DESCRIPTION

Treinamento Abap

TRANSCRIPT

Treinamento ABAP

Treinamento ABAPTtulo del documenton|NDICECurso BsicoData Dictionary TransportesReportPerformanceBDC SessionOn LineSapscriptSmartform

Ttulo del documenton|Curso Bsico InstnciaInstalao tpica composta de 3 ambientes

Cada ambiente composto de 1 banco de dados,1 instncia central, n servidores de aplicao e m servidores de apresentao

Arquitetura 3 camadas

Ttulo del documenton|3Curso BsicoMandantes e objetos do repositrioViso das aplicaes por mandante (em cada ambiente)

MandtChaveValor100A1100B2100C3200A2200B3200D4300C2Tabela dependente de mandante = Primeira chave o mandanteTtulo del documenton|4Curso BsicoOrdens de transporteDois tipos principais: Configurao (customizing): dados, usualmente dependente de mandante Repositrio (workbench): levam contedo independente de mandante (objetos do repositrio), mas podem levar dados, inclusive os dependente de mandante.

Ordem aberta Ordem fechada

OrdemMandtChaveValor100A1100C3Ttulo del documenton|5Curso BsicoTransaesChamadas aos programas

SE80 transao central de desenvolvimentoSE38 abre o editor ABAP/4SE37 criao de funesSE16 permite a visualizao do contedo de tabelas do SAP SE11 permite a visualizao da arquitetura de uma tabela/estrutura do SAP e criao de demais objetos do dicionrioSE43 criao de menusSE93 criao de transaesSE71 criao e manuteno de formulrios SAPscriptsCMOD criao de projetos Enhancements (Field Exits, User Exits, ...)Principais transaes para desenvolvedores:

Ttulo del documenton|6Curso BsicoPadres de nomenclaturaNota SAP 16466

Maioria dos objetos: Y* e Z*Exemplo de exceo: funes Y_* ou Z_*Ttulo del documenton|7Curso BsicoBARRA DE BOTESBarra de botes da primeira tela SE38

Verificar: verifica a sintaxe e consistncia do cdigo. Ativar: ativa o programa, alm de efetuar a verificao de sintaxe e consistncia do cdigo. Executar: executa o programa (opo vlida apenas para programas do tipo executvel). Lista de utilizaes: verifica onde existem chamadas do programa. Anlise do ambiente: avalia os componentes do programa e lista um relatrio no final que permite a navegao nestes componentes. Ajuda online: exibe ajuda online da documentao do SAP. Eliminar: elimina programas. Copiar: efetua cpia de programas. Renomear: renomeia programas. : Depurao: executa programa em modo de depurao (opo vlida apenas para programas do tipo executvel). : Executar c/ variante: executa programa com variante de seleo j carregada em tela (opo vlida apenas para programas do tipo executvel). : Variantes: permite o gerenciamento das variantes de seleo.

Ttulo del documenton|8Barra de botes do editor ABAP

Objeto anterior: permite a navegao ao objeto anterior.Objeto seguinte: permite a navegao ao objeto seguinte (caso tenha ocorrido retorno no editor).Exibir/Modificar: permite exibir ou modificar o programa.Ativo/Inativo: permite navegar entre as verses ativa e inativa do programa.Outro objeto: permite navegar entre outros objetos.Ampliar: permite utilizar pontos de ampliao disponveis no programa.Verificar: verifica a sintaxe e consistncia do cdigo.Ativar: ativa o programa, alm de efetuar a verificao de sintaxe e consistncia do cdigo.Executar: executa o programa (opo vlida apenas para programas do tipo executvel).Lista de utilizaes: verifica onde existem chamadas do programa.Curso BsicoBARRA DE BOTESTtulo del documenton|9Barra de botes do editor ABAP (continuao)

Exibir lista de objetos: exibe lista de projetos ligados ao programa (includes, tabelas, telas, variveis, tabelas internas, etc).Exibir janela de navegao: exibe pilha de navegao de objetos. Ajuda online: exibe ajuda online da documentao do SAP.Definir/eliminar ponto parada sesso: permite definir um ponto de parada para depurao para a sesso ativa.Definir/eliminar ponto parada externo: permite definir um ponto de parada para depurao para uma chamada externa (RFC, por exemplo). Modelo: permite incluir modelos de chamadas funes, mensagens, classes, etc. Pretty Printer: efetua identao e efetua converses de maisculas e minsculas de acordo com a configurao do editor.Curso BsicoBARRA DE BOTESTtulo del documenton|10Curso BsicoPrimeiros exemplos de ABAPExemplo 1REPORTZEXEMP_01.

WRITE:'111111'.WRITE:'222222','333333'.WRITE:/'111111'.WRITE:15'333333'.WRITE:/text-001.ULINE.ULINE8(6).SKIP.SKIP2.WRITE:8sy-langu.WRITE:/sy-datumUNDERsy-langu.

Variveis de ambiente: estrutura SYST

Ttulo del documenton|11Curso BsicoPrimeiros exemplos de ABAPExemplo 2REPORTZEXEMP_02.

TOP-OF-PAGE.

WRITE: 'EXEMPLO 2 - CURSO ABAP/4', 80 'Page', SY-PAGNO.

Ttulo del documenton|12Curso BsicoPrimeiros exemplos de ABAPExemplo 3REPORTZEXEMP_03.

FORMAT COLOR COL_HEADING.

WRITE : 'FUNDO AZUL'.

Ttulo del documenton|13Curso BsicoPrimeiros exemplos de ABAPExemplo 4REPORTZEXEMP_04.

DATA: nome(20) TYPE c, rg TYPE i, data TYPE bkpf-budat, hora(8) VALUE '14:05:45'.

MOVE 'Solution Center' TO nome.

COMPUTE rg = 42159818 + 1.

data = '19970530'. "aaaammdd

Ttulo del documenton|14Curso BsicoPrimeiros exemplos de ABAPExemplo 5REPORTZEXEMP_05.

PARAMETER: P_NOME1(15) TYPE C OBLIGATORY, P_NOME2(15) TYPE C DEFAULT 'Abap Factory' LOWER CASE, P_BOTAO1 RADIOBUTTON GROUP G1, P_BOTAO2 RADIOBUTTON GROUP G1.SELECT-OPTIONS: s_data FOR sy-datum.

Ttulo del documenton|15Curso BsicoPrimeiros exemplos de ABAP

Ttulo del documenton|16Curso BsicoPrimeiros exemplos de ABAPExemplo 6REPORTZEXEMP_06.

DATA: ti_t005h TYPE TABLE OF t005h, wa_t005h TYPE t005h.SELECT * FROM t005h INTO TABLE ti_t005h WHERE land1 = p_pais AND spras = sy-langu ORDER BY cityc.

Ttulo del documenton|17Curso BsicoPrimeiros exemplos de ABAPExemplo 7REPORTZEXEMP_07.

LOOP AT tg_t005h INTO wa_t005h.

ON CHANGE OF wa_t005h-land1. IF v_var1 = 0. NEW-PAGE. ENDIF.

FORMAT COLOR OFF. WRITE 'COUNTRY CITY'.

CLEAR v_var1. ENDON.

() ENDLOOP.

Ttulo del documenton|18Curso BsicoPrimeiros exemplos de ABAPExemplo 8REPORTZEXEMP_08.

CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING filename = v_arquivo write_field_separator = 'X' TABLES data_tab = ti_spfli EXCEPTIONS file_write_error = 1 no_batch = 2 OTHERS = 22.

Ttulo del documenton|19Curso BsicoPrimeiros exemplos de ABAPExemplo 9REPORTZEXEMP_09.

CALL FUNCTION 'GUI_UPLOAD' EXPORTING filename = vg_arquivo TABLES data_tab = tg_spfli EXCEPTIONS file_open_error = 1 file_read_error = 2 OTHERS = 17.

Ttulo del documenton|20Curso BsicoEditor ABAPUpload/Download de cdigos

Todo cdigo ABAP aberto!Ttulo del documenton|21Curso BsicoExerccio IDesenvolver o programa ZEXER01_## conforme print:Variveis de sistema utilizadas: SY-DATUM SY-UZEIT

IMPORTANTEAo salvar, indicar o pacote TRN e salvar.O SAP pedir uma request, clique em e digite a seguinte descrio:Academia de Talentos Grupo 01 Aluno ##Anotar o nmero da change request para ser utilizado durante todo este curso

Ttulo del documenton|22Curso BsicoExerccio IIDesenvolver o programa ZEXER02_## que resulte o cabealho seguinte:Variveis de sistema utilizadas: SY-UNAME SY-DATUM

Ttulo del documenton|23Curso BsicoExerccio IIIDesenvolver o programa ZEXER03_## que simule uma calculadora com 4 operaes ( +, -, /, * ) e dois campos obrigatrios para entrada de nmeros (decimais). Layout:

Ttulo del documenton|24Curso BsicoCriando transaesTransao SE93

Ttulo del documenton|25Curso BsicoCriando transaesTransao SE93

Atributos da transao

Ttulo del documenton|26Curso BsicoCriando transaesTransao SE93

Atributos da transao

Ttulo del documenton|27Data DictionaryModelo relacionalModelo Entidade Relacionamento

Entidade: agrupamento de objetos do mesmo tipoClientes, fornecedores, banco, moedas Atributo: qualificador de uma entidadeNome, RG, nmero da agncia, cdigo internacional Domnio: conjunto de valores permissveis a um atributoTexto at 40 caracteres, quatro nmeros, meses Relacionamento: associao entre duas entidadesConta de um cliente, conta de uma agnciaTtulo del documenton|28Data DictionaryModelo relacionalCardinalidades

Um-para-um: uma ocorrncia da Entidade A est relacionada com apenas uma ocorrncia da Entidade BPessoa RG e Pessoa Me

Um-para-N: uma ocorrncia da Entidade A est relacionada com uma ou vrias ocorrncias da Entidade BPessoa Telefone e Pessoa Nacionalidade

N-para-N: vrias ocorrncias da Entidade A esto relacionadas com vrias ocorrncias da Entidade BPessoa Chefe e Autor LivroTtulo del documenton|29Data DictionaryModelo relacionalFormas Normais

Evitar as redundncias, ajudando a estabelecer as entidades.

As trs primeiras so:1 FN: No ter elementos multivalorados2 FN: Em chaves primrias compostas, nenhum campo depende s de parte da chave3 FN: No deve haver dependncias entre atributosTtulo del documenton|1FN - 30Data DictionaryBanco de dados relacionalImplementao fsica do modelo relacional

Entidades Tabelas (linhas x colunas) Atributos Colunas Ocorrncias Linhas (registros)

Chave = conjunto de atributos que garantes a unicidade das ocorrncias

Toda tabela deve ter pelo menos um campo chave, que ser denominado chave primria

Chave estrangeira = atributo que chave primria de outra tabelaTtulo del documenton|31Data DictionaryBanco de dados relacionalSQL - Structured Query Language

DDL:Data Definition Language Comandos especficos para definio de objetos do banco de dados.

Ambiente SAP pelo dicionrio de dados (SE11)DML:Data Manipulation Language - Comandos especficos para tratamento dos dados armazenados nos objetos do banco

ABAP define Open SQLTtulo del documenton|32Data DictionaryDicionrio de dadosTransao SE11

Ttulo del documenton|33Data DictionaryDicionrio de dados - TabelaEstrutura de uma tabela

Ttulo del documenton|34Data DictionaryDicionrio de dados - TabelaEntradas possveis e verificaes

Ttulo del documenton|35Data DictionaryDicionrio de dados - TabelaOpes tcnicas

Ttulo del documenton|36Data DictionaryDicionrio de dados - TabelaCategoria de ampliao

No menu: Suplementos Categoria de ampliao...

Ttulo del documenton|37Data DictionaryDicionrio de dados - Tabelandices

O ndice para chave primria obrigatrio e criado automaticamente~0

Ttulo del documenton|38Data DictionaryDicionrio de dados - VisoTabelas e condies de joinA viso criada no banco de dados

Ttulo del documenton|39Data DictionaryDicionrio de dados - VisoCampos da viso

Ttulo del documenton|40Data DictionaryDicionrio de dados - ElementoCategoria de dados

Ttulo del documenton|41Data DictionaryDicionrio de dados - ElementoCaractersticas adicionais

Ttulo del documenton|42Data DictionaryDicionrio de dados - ElementoDenominao do campo

Ttulo del documenton|43Data DictionaryDicionrio de dados - DomnioDefinio e rotina de converso

Ttulo del documenton|44Data DictionaryDicionrio de dados - DomnioIntervalo de valores

Ttulo del documenton|45Data DictionaryExemplosCriao de uma tabela

Ttulo del documenton|46Data DictionaryExemplosCriao de uma tabela

Ttulo del documenton|47Data DictionaryExemplosCriao de uma tabela

Ttulo del documenton|48Data DictionaryExemplosCriao do dilogo de manuteno

Ttulo del documenton|49Data DictionaryExemplosCriao do dilogo de manuteno

Ttulo del documenton|50Data DictionaryExemplosCriao da transao para o dilogo de manuteno

Ttulo del documenton|51Data DictionaryExemplosCriao da transao para o dilogo de manuteno

Ttulo del documenton|52Data DictionaryAjuda de pesquisaCriando ajuda de pesquisa

Ttulo del documenton|53

Data DictionaryAjuda de pesquisaDefinindo a fonte e caractersticasTtulo del documenton|54Data DictionaryAjuda de pesquisaUtilizando a ajuda de pesquisa (F4)

Ttulo del documenton|55Data DictionaryExerccio 1Criar uma ESTRUTURA com as seguintes caractersticas:Nome: ZESTRUT_##Descrio: Estrutura de preenchimento do layout

Field NameKeyData ElementTypeLengthShort TextMANDTxMANDTCLNT 3ClientBELNRxBELNR DCHAR10Acc. Doc NumTXT50TXT50_SKATCHAR50G/L acct long txtTtulo del documenton|56Data DictionaryExerccio 2Criar uma tabela com as seguintes caractersticas:

Nome: ZTBL_##Descrio: Tabela para manuteno via transao SM30

Field name Data elem. Type Length Short text _ MANDTMANDTCLNT3MandanteHKONTHKONTCHAR10Conta do RazoBELNRBELNR_DCHAR10N documento contbilGJAHRGJAHRNUMC4ExerccioBKTXTBKTXTCHAR25Texto de cabealho de doc.BLARTBLARTCHAR2Tipo de documentoBLDATBLDATDATS8Data no documento

Criar um dilogo de manuteno com as seguintes caractersticas:Function Group: ZCURSOFG##Utilizar a transao SM30 para manuteno desta tabela.Ttulo del documenton|57Data Dictionary Comando SELECTDetalhando o comando de leitura de dados

1-) SELECT * FROM dbtab.....ENDSELECT. if SY-SUBRC

1a-)WHERE Condition

1b-)ORDER BY f1fn ORDER BY PRIMARY KEY

1c-)UP TO n ROWSTtulo del documenton|58Data Dictionary Comando SELECTDetalhando o comando de leitura de dados

2-) SELECT * FROM dbtab INTO TABLE itab.2a-) WHERE 2b-) ORDER BY2c-) UP TO n ROWS

3-) SELECT * FROM dbtab APPENDING TABLE itab.3a-) WHERE 3b-) ORDER BY3c-) UP TO n ROWS

4-) SELECT SINGLE * FROM dbtab INTO wa WHERE f1 = g1 AND Ttulo del documenton|59Data Dictionary Comando SELECTDetalhando o comando de leitura de dados

5-) SELECT * FROM dbtab APPENDING CORRESPONDING FIELDS OF TABLE itab.5a-) SELECT * FROM dbtab INTO CORRESPONDING FIELDS OF TABLE itab.

6-) SELECT * FROM dtab FOR ALL ENTRIES IN itab where

Nota: verificar se a tabela no est vazia, caso em que todos registros sero selecionados

IF NOT ( itab[] IS INITIAL ). SELECT * FROM dtab FOR ALL ENTRIES in itab where campo = itab-campo ENDIF.Ttulo del documenton|60Data Dictionary Comando SELECTConsideraes sobre os vrios tipos de SELECTs

1 - SELECT * FROM

2 - SELECT * FROM WHERE EQ

3 - SELECT * FROM WHERE BETWEEN and .

4 - SELECT * FROM WHERE LIKE ._R%.

5 - SELECT * FROM WHERE IN (var1,var2).

6 - SELECT * FROM WHERE IN .Ttulo del documenton|61Data Dictionary Comando SELECTConsideraes sobre os vrios tipos de SELECTs

7 - SELECT * FROM ORDER BY PRIMARY KEY.

8 - SELECT * FROM BYPASSING BUFFER.(Usado para ler diretamente da tabela original, e no do buffer).

9 - SELECT * FROM APPENDING TABLE .

10 - SELECT FROM INTO TABLE .Ttulo del documenton|62Data Dictionary Comando SELECTConsideraes sobre os vrios tipos de SELECTs

11 - SELECT . INTO CORRESPONDING FIELDS OF TABLE .

12 - SELECT .. APPENDING CORRESPONDING FIELDS OF TABLE .

13 - SELECT SINGLE * FROM SPFLI WHERE .... EQ

14 - SELECT INTO (, , ) FROM . WHERE .Ttulo del documenton|63Data Dictionary Comando SELECTConsideraes sobre os vrios tipos de SELECTs

15 - SELECT MAX(campo) MIN(campo) AVG(campo) COUNT(*)FROM INTO (..,,..,.)WHERE .

AVG e SUM: somente para campos numricos.No se usa endselect.Ttulo del documenton|64Data Dictionary Comando SELECTConsideraes sobre os vrios tipos de SELECTs

16 - SELECT * FROM SFLIGHT WHERE PRICE IN ITAB.17 - SELECT * FROM () INTO .

Exemplo:

data: begin of WA, line(100), end of WA.

Parameters: tabname(10) default SPFLI.

Select * from (tabname) into WA Write / WA .Endselect.Ttulo del documenton|65Data Dictionary Comando SELECTConsideraes sobre os vrios tipos de SELECTs

18- SELECT * FROM FOR ALL ENTRIES IN WHEREcampo1 = and campo2 =

19 - SELECT MIN( price ) max (price ) INTO (minimum, maximum) FROM sflight WHERE ...

19a - SELECT carrid MIN( price ) max (price ) INTO TABLE itab FROM sflight WHERE GROUP BY carrid.Ttulo del documenton|66EXERCCIOS EXTRASExerccio IVDesenvolver o programa ZEXER04_## que possua as seguintes caractersticas:Parmetros: SPFLI-CITYFROM e SPFLI-CITYTO com valores defaultOpes: Informaes e ReservaValidaes: buscar dados dos vos que correspondam aos parmetros informados; exibir a aeronave utilizada e o preo da passagem apenas quando for uma operao de reserva.Campos para seleo: SPFLI-CARRID SPFLI-CITYFROM SPFLI-CITYTO SPFLI-FLTIME SPFLI-ARRTIME SPFLI-DEPTIME SFLIGHT-FLDATE SFLIGHT-PLANETYPE SFLIGHT-PRICE

Ttulo del documenton|67EXERCCIOS EXTRAS Exerccio IV

Ttulo del documenton|68EXERCCIOS EXTRAS Exerccio VDesenvolver o programa ZEXER05_## que a partir de um arquivo texto contendo o tipo de aeronave, seja capaz de criar um novo arquivo com o tipo de aeronave e o nome da companhia area. Exibio de mensagem tanto no caso de sucesso na criao do arquivo final como no caso da ocorrncia de algum erro.Campos utilizados: SFLIGHT-CARRID e SFLIGHT-PLANETYPE

Arquivo de entrada: Tipo de aeronave (1 linha por tipo)

Arquivo de sada: Tipo de aeronave ; (separador fixo) Companhia area

Ttulo del documenton|69EXERCCIOS EXTRAS Exerccio V

Ttulo del documenton|70TransporteOrdens de transportePrincipais tipos de ordens de transporte

Transaes SE09 ou SE10

Ttulo del documenton|71TransporteOrdens de transporteTelas iniciais SE09 ou SE10

Ttulo del documenton|72TransporteOrdens de transporteLocalizando as ordens j criadas

Ttulo del documenton|73TransporteOrdens de transporteLista das ordens de transporte

Ttulo del documenton|74TransporteOrdens de transporteHistricos: ao e transporte

Ir para Log de ao Log de transporte

Ttulo del documenton|75TransporteOrdens de transporteCaractersticas das ordens de transporte

Ttulo del documenton|76TransporteOrdens de transporteLista de objetos das ordens/tarefas

Ttulo del documenton|77TransporteOrdens de transporteDocumentao da ordem de transporte

Ttulo del documenton|78RelatriosProgramao de ReportsConceito: Programao estruturada baseada em eventos

No apenas destinada a relatrios, podemos construir programas de atualizao de dados com esta tcnica. Podemos acrescentar elementos adicionais (botes, menus, ttulos e telas adicionais) Tela de seleo Exibio Detalhes de uma linha

Tela 1000 Ttulo del documenton|79RelatriosProgramao de ReportsProcesso geral de programao de relatriosNome e Descrio do ProgramaMontagem e Impresso do Relatrio ou outra lgicaMontagem da Tela de parmetros do usurioDeclarao de VariveisTtulo del documenton|80RelatriosProgramao de ReportsModelo de um programa (template)Nome do Programa e Descrio (cabealho)Declarao de dados (variveis, constantes e tabelas internas)Parmetros de entrada da tela do usurioNo. de linhas e colunas classe de mensagemSeo das Sub-rotinas (forms)Lgica da tela de seleoAo comando do usurio (caso haja algum boto)Seleo e Impresso de Dados ou outra lg. (performs)Cabealho e Rodap Ttulo del documenton|81RelatriosProgramao de ReportsDescrio do modelo (comandos utilizados)

Nome do Programa e Descrio (cabealho):Nome do ProgramaDataltima atualizaoDescrioHistrico de ModificaesReport: No. de Linhas, Colunas e Classe de Mensagem:No Standard Page HeadingLine-SizeLine-CountMessage - IDComentrios(padro cliente)Ttulo del documenton|82RelatriosProgramao de ReportsDescrio do modelo (comandos utilizados)

Declarao de Dados:Include ZZIHEADRTabelasConstantes e VariveisTabelas InternasParmetros de Entrada:Select-OptionParametersSelection-screen Lgica da Tela de Seleo (eventos):InitializationAt Selection-ScreenTtulo del documenton|83RelatriosProgramao de ReportsDescrio do modelo (comandos utilizados)

Seleo e Impresso de Dados:Start-of-Selection

Ao Comando do Usurio:At User-CommandAt Line Selection

Cabealho e RodapTop-of-pageEnd-of-pageSeo das Sub-rotinasForms SectionTtulo del documenton|84RelatriosProgramao de ReportsProgramas exemplos

ZEXEMP_10a - Navegao em telas drill down ZEXEMP_10b Acrescentando ttulos e status. Respondendo a comandos do usurio.Ttulo del documenton|85RelatriosExercciosExerccio 1

Desenvolver um programa ZEXER_REP_01_## que mostre as conexes (tabela SPFLI) para a seleo do usurio realizada com os seguintes campos: SPFLI-CARRID e SPFLI-CONNID

A primeira tela deve mostrar: ID da empresa, Conexo, Origem e Destino.

O usurio pode selecionar qualquer linha com conexo, para obter as datas de vos para a conexo selecionada (tabela SFLIGHT).Opcional: na primeira tela, realizar uma quebra a cada companhia area, indicando o total de conexes encontradas.

Dica: dentro do loop utilize AT END OF carrid. ... ENDATTtulo del documenton|86RelatriosExercciosExerccio 1

Ttulo del documenton|87RelatriosExercciosExerccio 2

Desenvolver um programa ZEXER_REP_02_##, relatrio de reservas, que imprima os campos abaixo:Nome de uma companhia area (SCARR-CARRNAME)Cdigo da conexo de vo individual (SPFLI-CONNID)Durao do vo (SPFLI- FLTIME)Data do vo (SFLIGHT-FLDATE)Preo do vo (SFLIGHT-PRICE)N de marcao (SBOOK-BOOKID)Nome do passageiro (SCUSTOM- NAME)Classe vo (SBOOK-CLASS)Nome da agncia de viagens (STRAVELAG- NAME)Data marcao (SBOOK- ORDER_DATE)

A tela de seleo deve conter as chaves das tabelas consultadas. (companhia area deve ser obrigatria)Ttulo del documenton|88RelatriosExercciosExerccio 2

Ttulo del documenton|89PerformanceExercciosExerccio 3

Copiar o programa ZEXER_REP_01_## com o nome ZEXER_REP_03_##.

Acrescentar ttulo (TITLE BAR) e status na primeira tela. Incluir botes para ordenao da lista, de forma crescente e decrescente.

Voc pode inserir os comandos do status PRINCIPAL do programa exemplo ZEXEMP_10B (Suplemento Ajustar Modelo)Ttulo del documenton|90PerformanceTpicos Pensando em performance Acesso ao banco de dados Manipulao dos dados Caso particular de migraesTtulo del documenton|Performance em programas um assunto de muita complexidade e no consider-la pode trazer a um conjunto de mitos que podem at mesmo prejudicar a qualidade da soluo.A principal causa desta complexidade que existem muitos fatores que afetam a performance e estes fatores so muito variveis. Recomendaes passadas ficaram obsoletas e, provavelmente, as recomendaes atuais tambm podero deixar de serem vlidas.Dentre os fatores que afetam as solues de melhoria de performance podemos destacar: Linguagem ABAP: novos comandos e mudana na implementao de comandos existentes Ambiente Tecnolgico: sistema operacional e ambiente SAP sofrem mudanas. Caractersticas de servidores, repositrio de dados e redes mudam a relao de tempos envolvidos quando decidimos o local de processamento. A arquitetura do SAP, centralizada no banco de dados e distribuda nos servidores de aplicao traz a necessidade de considerar a soluo particular adotada em cada implantao. Banco de dados: os bancos de dados evoluram muito e novos mecanismos de funcionamento resultam em regras opostas s utilizadas anos atrs. A necessidade funcional: processos so alterados e podem impactar na soluo obrigando o redesenho. O valor semntico das informaes podem ser alterados , com impacto direto na performance. Passagem do tempo e ambiente produtivo: a massa crescente de dados podem degradar a performance. O ambiente produtivo pode sofrer alteraes. Estes fatores so particularmente impactantes na capacidade real de realizarmos testes representativos

Apenas trs regras so absolutas, ainda que sofram limitaes de ordem prtica. Na ordem de importncia: pensar (considerar todos fatores envolvidos), pesquisar ( aprofundar o conhecimento nas caractersticas dos fatores envolvidos ), testar (utilizar as ferramentas disponveis e considerar as diferenas em relao aos ambientes produtivos futuros)91PerformanceRegras e exceesAo tratarmos de performance em programas estaremos continuamente tratando de regras e excees Porque tanta excees: o nmero de componentes envolvidos e a contnua mudana trazem uma complexidade que no deve ser desprezada Apenas trs regras so absolutas:PensarPesquisarTestarTtulo del documenton|Performance em programas um assunto de muita complexidade e no consider-la pode trazer a um conjunto de mitos que podem at mesmo prejudicar a qualidade da soluo.A principal causa desta complexidade que existem muitos fatores que afetam a performance e estes fatores so muito variveis. Recomendaes passadas ficaram obsoletas e, provavelmente, as recomendaes atuais tambm podero deixar de serem vlidas.Dentre os fatores que afetam as solues de melhoria de performance podemos destacar: Linguagem ABAP: novos comandos e mudana na implementao de comandos existentes Ambiente Tecnolgico: sistema operacional e ambiente SAP sofrem mudanas. Caractersticas de servidores, repositrio de dados e redes mudam a relao de tempos envolvidos quando decidimos o local de processamento. A arquitetura do SAP, centralizada no banco de dados e distribuda nos servidores de aplicao traz a necessidade de considerar a soluo particular adotada em cada implantao. Banco de dados: os bancos de dados evoluram muito e novos mecanismos de funcionamento resultam em regras opostas s utilizadas anos atrs. A necessidade funcional: processos so alterados e podem impactar na soluo obrigando o redesenho. O valor semntico das informaes podem ser alterados , com impacto direto na performance. Passagem do tempo e ambiente produtivo: a massa crescente de dados podem degradar a performance. O ambiente produtivo pode sofrer alteraes. Estes fatores so particularmente impactantes na capacidade real de realizarmos testes representativos

Apenas trs regras so absolutas, ainda que sofram limitaes de ordem prtica. Na ordem de importncia: pensar (considerar todos fatores envolvidos), pesquisar ( aprofundar o conhecimento nas caractersticas dos fatores envolvidos ), testar (utilizar as ferramentas disponveis e considerar as diferenas em relao aos ambientes produtivos futuros)92PerformanceO que performance?O conceito de performance est diretamente ligado ao conceito de tempo requerido para realizar determinada tarefa em determinadas condies.Mais rpido = mais performticoIndiretamente, uma vez que trabalhamos com recursos limitados, valores como menor consumo de memria e menor utilizao de processamento tambm esto associados a melhor performance, uma vez que a performance total que nos interessa, e esta ocorrer em ambiente com disputa pelos recursos limitadosMais econmico = mais performtico Estes dois requisitos podem resultar em decises conflitantes. No raro desenvolvedores negligenciarem demasiadamente o segundo requisito.

Ttulo del documenton|Em um conceito estrito de performance, apenas o fator tempo considerado. Esta viso pode levar a programas que so muito rpidos individualmente mas que podem degradar significativamente o ambiente, por consumir recursos demasiados.

Exemplo: Existe uma regra referente a carregar de uma nica vez em memria do programa (tabela interna) uma tabela para realizar a consulta internamente no programa, evitando repetidos acessos ao banco. Exceo mais bvia: se a tabela buferizada, os acessos individuais tambm ocorrem na memria do servidor de aplicao, porm repetidas cpias dos vrios programas em andamento provocam uma utilizao desnecessria de memria, alm do tempo de transferncia de todas informaes repetidas vezes.Ainda exceo a esta regra os acessos s tabelas cujos valores necessrios ao programa so poucos em relao a todos armazenados, mesmo que a tabela no seja buferizada. O trfego de informaes em grande quantidade provocados pela carga total da tabela pode impactar a comunicao entre banco e servidores, degradando o conjunto todo. Os bancos contam com mecanismos de buferizao interna que reduz o tempo de acesso a poucas informaes repetidamente lidas, mas que no podem ser efetivos se a quantidade de informao demandada grande.

"Nenhum programa uma ilha" 93PerformanceSempre melhorar a performance?Boa performance apenas uma das dimenses de qualidade de um desenvolvimento.Outras dimenses podem ser conflitantes com a otimizao da performance: Manutenabilidade Finalidade Usabilidade Robustez Consistncia ConfiabilidadeA soluo de compromisso entre estas dimenses determina o ponto adequado para a otimizao da performance do desenvolvimento.

Levar em conta o uso do desenvolvimento e o ganho real com a melhoria de performance para o negcio.Ttulo del documenton|A busca de melhor performance no o nica dimenso de qualidade e o atendimento exagerado nesta dimenso pode comprometer a qualidade do desenvolvimento como um todo.

Exemplos de impacto nas demais dimenses provocados por uma busca de melhor performance:Manutenabilidade: criar um cdigo demasiadamente complexo para melhorar os acessos ao banco de dados, mas que resulta em rotinas de difcil entendimento e manuteno. Criar rotinas com mltiplas finalidades ou "efeitos colaterais" , cuja implementao de mudana de requisitos fica comprometida. Finalidade: deixar de atender algum requisito, funcional ou no, para ter uma performance melhorada. Usabilidade: comprometer as informaes apresentadas ao usurio e at mesmo a navegao para otimizar a performance.Robustez: postergar verificaes e atualizaes para momentos especficos, sem levar em conta a possibilidade de interrupes intermedirias. No investigar e tratar situaes de excees adequadamente.Consistncia: transferncias pela memria podem trazer inconsistncias se no corretamente administradas. Normalmente esta administrao mais complexa e performtica que a gravao de dados.Confiabilidade: buferizar uma tabela cuja a leitura de dados antigos no pode ser permitida para o negcio, realizar otimizaes que aumentem os requisitos para a resposta correta. Por exemplo, assumir que apenas um registro existir, quando o modelo de dados permite mais que um registro. Supor que um dado no foi atualizado, apesar de no bloquear a atualizao em paralelo. Deixar de impor condies na seleo de forma completa, para otimizao, mas que podem resultar e resultados errados. Utilizar tabelas intermedirias cujo contedo pode estar inconsistente com os demais dados ( duplicidade de informao ).94Acesso ao banco de dadosHierarquia de acessoSELECT campos FROM tabela(s) WHERE condies

Ttulo del documenton|A criao adequada de ndices um recurso eficaz na otimizao de performance, mas vrios cuidados devem ser levados em conta.A operao pode ser acelerada atravs de ndices ( ou mesmo prejudicada se o ndice errado for selecionado ). Existem casos em que a leitura direta de uma tabela mais rpida que a leitura pelo ndice, mesmo quando o ndice formado pelos campos da busca ( o otimizador do banco de dados sabe disto ).A opo do ndice a ser utilizado ( ou mesmo nenhum ) determinada pelo otimizador, que leva em conta as estatsticas do banco de dados. Portanto, comportamentos diferentes podem ser observados entre ambientes e um comportamento inesperado pode ser atribudo a uma estatstica obsoleta.Existem ferramentas que permitem avaliar a qualidade dos ndices criados com base nos valores reais da instalao.A transao ST05 muito til para avaliaes bsicas, seja avaliando os traces de programas existentes ou atravs da avaliao direta de consultas.

A transao DB05 til na avaliao de alternativas para a criao de novos ndices.

Muitas vezes, este o nico recurso para melhorar performance em programas originais da SAP.95Arquitetura SAPArquitetura Cliente Servidor

O banco nicoComunicao Banco x AplicaoLimitao nos servidores de aplicaoRede e estaesTtulo del documenton|O caminho seguido pelo servidor de aplicao e o servidor de banco de dados determina quais sero os agentes envolvidos at uma consulta ser satisfeita.O entendimento desta tecnologia permite a otimizao de programas, porm tem-se que considerar que esta mesma tecnologia sofre mudanas significativas e algumas regras podem ficar obsoletas.O caminho mais performtico aquele que aproveita o bufer no servidor de aplicao.Pode-se evitar o acionamento do otimizador, que consome tempo, com a repetio de consultas iguais ( uma regra neste sentido recomenda utilizar a seqncia de declarao nas tabelas como padronizao ).O otimizador muito impactado pela qualidade das estatsticas. Isto particularmente importante em implantaes, quando as caractersticas das tabelas mudam muito.Conhecer como o otimizador define o acesso permite criar ndices e selees otimizadas.

96Acesso ao banco de dadosComo ocorre o acessoQuando um programa realiza uma requisio de dado, o seguinte caminho seguido (simplificado):

O servidor de aplicao determina se o dado est no buffer local e pode ser lido (tabelas buferizadas). O servidor do banco de dados verifica se a consulta tem uma estratgia j definida (cache de estratgias SQL). Realiza a consulta com a estratgia encontrada.O otimizador determina a melhor estratgia de consulta, levando em conta as estatsticas disponveis.Caches de dados do banco de dados so considerados para as consultas.Acesso aos dados em arquivos do banco de dado com a melhor estratgia (leitura completa ou via ndice)

Ttulo del documenton|O caminho seguido pelo servidor de aplicao e o servidor de banco de dados determina quais sero os agentes envolvidos at uma consulta ser satisfeita.O entendimento desta tecnologia permite a otimizao de programas, porm tem-se que considerar que esta mesma tecnologia sofre mudanas significativas e algumas regras podem ficar obsoletas.O caminho mais performtico aquele que aproveita o bufer no servidor de aplicao.Pode-se evitar o acionamento do otimizador, que consome tempo, com a repetio de consultas iguais ( uma regra neste sentido recomenda utilizar a seqncia de declarao nas tabelas como padronizao ).O otimizador muito impactado pela qualidade das estatsticas. Isto particularmente importante em implantaes, quando as caractersticas das tabelas mudam muito.Conhecer como o otimizador define o acesso permite criar ndices e selees otimizadas.

97Acesso ao banco de dadosBuferizao de tabelasNem todas tabelas permitem buferizao.

As regras negcio devem permitir acesso a dados obsoletos sem impactos ( sincronizao da ordem de 1 a 2 minutos ).Dados que sofrem muitas mudanas ( + 1% dos acessos for de atualizao ) podem degradar a performance do ambiente se as tabelas forem buferizadas. Tipicamente recomendada para dados de configurao e para alguns dados mestres.Diferentes tipos de buferizao e regras em que o servidor pula o bufer e fora a leitura no banco devem ser consideradas. Ttulo del documenton|A buferizao um recurso que permite que consultas sejam resolvidas localmente nos servidores de aplicao.

Tipicamente dados de configurao e alguns dados mestres mais estveis e com poucos dados utilizados so buferizados. Tabelas muito grandes no podem ser buferizadas pelos limites de memria envolvidos.

A buferizao pode degradar a performance do ambiente nos momentos de atualizao das informaes.

Pontos de ateno:Algumas instrues provocam a no utilizao do bufer. Instrues que podem ser ineficientes em tabelas no buferizadas podem ser as melhores com tabelas deste tipo ( select single dentro de loop, por exemplo ).Buferizar em programas tabelas j buferizadas no servidor um desperdcio de memria alm do tempo gasto na cpia dos dados.Existem casos em que deseja-se no utilizar os bufers. Nestes casos ndices secundrios podem ser necessrios (mito: no se criam ndices secundrios para tabelas buferizadas ).98Acesso ao banco de dadosOtimizador do banco de dadosO otimizador define a estratgia de acesso e guarda esta estratgia em um cache para utilizao futura.As estratgias consideradas:Em uma nica tabela: Leitura completa (full scan) Leitura direta por ndice (index unique scan) Leitura com apoio de ndices (index range scan)

Em vrias tabelas: Seqncia de acesso entre as tabelas (Join)

A escolha definida pelo custo estimado (quantidade de acessos e dados transferidos), baseado nas estatsticas disponveis.

Ttulo del documenton|O otimizador se baseia nos custos estimados para definir a melhor estratgia de acesso. Estes custos so calculados a partir de estatsticas levantadas no prprio banco de dados: nmero de registros e quantidade de dados diferentes ( seletividade de cada informao ). Usualmente estas estatsticas so calculadas em amostras da tabela ( 10%, por exemplo ) e com freqncia definida pelos administradores do banco de dados.Estatsticas erradas provocam escolhas erradas! Cuidado com tabelas com crescimento exagerado aps o clculo das estatsticas, tal como em condies de carga ou incio de utilizao.

A leitura completa no passa pelos ndices e pode ser a mais eficiente para quantidades menores de dados ou quando nenhum ndice aplicvel. A leitura por ndice sempre envolve um passo a mais que o acesso aos ndices e depois aos dados. Pela caracterstica de armazenamento, blocos de dados so lidos a cada consulta de dados e uma leitura por ndices pode provocar a leitura repetidas vezes do mesmo bloco, resultado em que o volume de dados lidos da tabela pode ser maior que uma leitura completa.O otimizador deve escolher entre os ndices disponveis. Esta tarefa facilitada se os ndices forem bem seletivos e disjuntos ( no possurem campos em comum ).Campos de pouca seletividade devem ser evitados, como MANDT (mandante) e BUKRS (empresa).O uso de HINTS impede que o otimizador possa realizar sua escolha ( isto pode ser uma vantagem, mas deve ser utilizado com cuidado ).

Acessos com vrias tabelas podem ser otimizados quanto a seqncia de acesso entre as tabelas ( join entre tabelas ).99Acesso ao banco de dadosRedao das consultasA ordem que as tabelas aparecem em uma consulta com "join", a ordem dos campos consultados e a ordem dos campos na clusula "where" no afetam a estratgia do otimizador, que preparado para procurar a melhor opo da ordem de consulta.

Porm, expresses iguais permitem evitar o acionamento do otimizador e ganhar este tempo de anlise.

Recomenda-se utilizar a ordem que os elementos aparecem no banco de dados como padronizao das expresses de acesso ao banco.

A utilizao de HINTS tambm evita a utilizao do otimizador, mas neste caso, podendo fazer uma consulta por uma estratgia pior. Evite usar, a menos que for necessrio.

Ttulo del documenton|O otimizador um programa eficiente para definir a estratgia de consulta, independente da seqncia que os campos so escritos no programa, porm pode-se evitar de ativ-lo com a redao igual a consultas anteriores, otimizando a utilizao do cache de consultas SQL.

Mito: utilizao do sintaxe CLIENT SPECIFIED para aumentar a performance.

A utilizao de HINTS tambm evita a utilizao do otimizador, forando a utilizao de um ndice ou mesmo a leitura completa. Deve-se levar em conta que isto pode trazer vrias desvantagens: Limita a portabilidade Pode no fazer uso de estratgias melhores, inclusive as que futuramente forem disponibilizadas

Existem casos em que o HINTS deve ser utilizado. Exemplo: uma tabela tem grande nmero de registros em uma condio e poucos em outra; a busca dos poucos registros deve ser feita pelo campo referente a condio, porm o otimizador no escolhe o ndice correto pela pouca seletividade deste campo. Neste caso, ns temos uma informao adicional que a estatstica no reflete.100Acesso ao banco de dadosndicesOs ndices so tabelas auxiliares, organizadas como um estrutura "rvore", cujos registros esto ordenados segundo os campos do ndice.

Principais cuidados: No criar ndices demasiados para tabelas com muita atualizao, pois os ndices degradam estas operaes. Criar ndices disjuntos (campos distintos) e bem seletivos. Levar em conta a semntica do campo. Campo MANDT no necessrio (foi no passado)Ttulo del documenton|A criao adequada de ndices um recurso eficaz na otimizao de performance, mas vrios cuidados devem ser levados em conta.A operao pode ser acelerada atravs de ndices ( ou mesmo prejudicada se o ndice errado for selecionado ). Existem casos em que a leitura direta de uma tabela mais rpida que a leitura pelo ndice, mesmo quando o ndice formado pelos campos da busca ( o otimizador do banco de dados sabe disto ).A opo do ndice a ser utilizado ( ou mesmo nenhum ) determinada pelo otimizador, que leva em conta as estatsticas do banco de dados. Portanto, comportamentos diferentes podem ser observados entre ambientes e um comportamento inesperado pode ser atribudo a uma estatstica obsoleta.Existem ferramentas que permitem avaliar a qualidade dos ndices criados com base nos valores reais da instalao.A transao ST05 muito til para avaliaes bsicas, seja avaliando os traces de programas existentes ou atravs da avaliao direta de consultas.

A transao DB05 til na avaliao de alternativas para a criao de novos ndices.

Muitas vezes, este o nico recurso para melhorar performance em programas originais da SAP.101Acesso ao banco de dadosRecomendaes gerais Diminua os valores possveis (WHERE)

Mantenha o custo da pesquisa pequeno. Ateno estratgia de acesso: ndices podem ter grande impacto nas leituras, porm degradam as atualizaes

Diminua a quantidade de dados transferida entre o banco de dados e o servidor de aplicao

Diminua o nmero de acessos ao banco de dadosTtulo del documenton|A criao adequada de ndices um recurso eficaz na otimizao de performance, mas vrios cuidados devem ser levados em conta.A operao pode ser acelerada atravs de ndices ( ou mesmo prejudicada se o ndice errado for selecionado ). Existem casos em que a leitura direta de uma tabela mais rpida que a leitura pelo ndice, mesmo quando o ndice formado pelos campos da busca ( o otimizador do banco de dados sabe disto ).A opo do ndice a ser utilizado ( ou mesmo nenhum ) determinada pelo otimizador, que leva em conta as estatsticas do banco de dados. Portanto, comportamentos diferentes podem ser observados entre ambientes e um comportamento inesperado pode ser atribudo a uma estatstica obsoleta.Existem ferramentas que permitem avaliar a qualidade dos ndices criados com base nos valores reais da instalao.A transao ST05 muito til para avaliaes bsicas, seja avaliando os traces de programas existentes ou atravs da avaliao direta de consultas.

A transao DB05 til na avaliao de alternativas para a criao de novos ndices.

Muitas vezes, este o nico recurso para melhorar performance em programas originais da SAP.102Manipulao dos dadosTabelas internasEnorme mito: sempre melhor trazer os dados e manipul-los internamente no programa

Levar em contra o consumo de memria e o tempo na manipulao de grandes volumes de dados. (particularmente se uma seleo menor for possvel)

Considerar a otimizao dos programas tambm na manipulao interna dos dados.Ttulo del documenton|Muitos programas utilizam unicamente a estratgia de buscar o mximo de dados e realizar as operaes internamente no programa. Algumas vezes, isto justificvel, mas so inmeras as excees: Restringir a seleo melhor que trafegar muitos dados entre o servidores do banco de dados e da aplicao A ordenao pode ser feita eficientemente pelo banco de dados, quando a mesma segue os campos do ndice utilizado ( o ndice j ordenado ). A estratgia de ler todos dados podem provocar consumo de memria excessivo, pela duplicao dos dados. Tabelas buferizadas j esto no servidor de aplicao, tornando a leitura intensiva sem nenhuma vantagem.

Uma vez que a leitura dos dados decidida, existem muitos pontos de otimizao na manipulao dos dados: Escolha correta do tipo de tabela interna ( standard, sorted ou hashed ) em funo do volume, necessidades de ordenao e caractersticas do acesso planejado aos dados. Uso de comandos mais eficientes ( por exemplo: uso de field symbols e comandos em massa )103Manipulao dos dadosRecomendaes gerais Escolha o tipo adequado de tabela interna, utilize SORTED e HASHED se necessrio Utilize binary search em tabelas standard grandes Libere a memria de tabelas internas aps o uso (REFRESH) Ordene tabelas internas apenas pelos campos necessrios Transfira apenas os campos necessrios Utilize ponteiros para manipular grandes tabelas Evite converses desnecessrias, indique os valores no formato das variveis

Ttulo del documenton|Muitos programas utilizam unicamente a estratgia de buscar o mximo de dados e realizar as operaes internamente no programa. Algumas vezes, isto justificvel, mas so inmeras as excees: Restringir a seleo melhor que trafegar muitos dados entre o servidores do banco de dados e da aplicao A ordenao pode ser feita eficientemente pelo banco de dados, quando a mesma segue os campos do ndice utilizado ( o ndice j ordenado ). A estratgia de ler todos dados podem provocar consumo de memria excessivo, pela duplicao dos dados. Tabelas buferizadas j esto no servidor de aplicao, tornando a leitura intensiva sem nenhuma vantagem.

Uma vez que a leitura dos dados decidida, existem muitos pontos de otimizao na manipulao dos dados: Escolha correta do tipo de tabela interna ( standard, sorted ou hashed ) em funo do volume, necessidades de ordenao e caractersticas do acesso planejado aos dados. Uso de comandos mais eficientes ( por exemplo: uso de field symbols e comandos em massa )104Cuidado com o excesso de otimizao!

A anlise e otimizao de performance importantssima e falhas podem impactar a utilizao do sistema, porm sempre considere as demais dimenses da qualidade

Ganhos de otimizao encontram-se na escala de segundos, minutos e at mesmo horas, para programas longos

Capacidade de manuteno encontra-se na escala de horas, dias e at mesmo meses

Nosso foco atender o negcio, no ter apenas os programas mais performticos!

PERFORMANCEPODE SER DEMAIS?Ttulo del documenton| 105PerformanceMigrao de dadosTipos de programas de carga

Direct input BAPI iDoc Call transaction Pasta batch input

Estes mtodos podem ser utilizados via transao LSMW ou diretamente a partir de programaoMelhorperformanceTtulo del documenton|Performance em programas um assunto de muita complexidade e no consider-la pode trazer a um conjunto de mitos que podem at mesmo prejudicar a qualidade da soluo.A principal causa desta complexidade que existem muitos fatores que afetam a performance e estes fatores so muito variveis. Recomendaes passadas ficaram obsoletas e, provavelmente, as recomendaes atuais tambm podero deixar de serem vlidas.Dentre os fatores que afetam as solues de melhoria de performance podemos destacar: Linguagem ABAP: novos comandos e mudana na implementao de comandos existentes Ambiente Tecnolgico: sistema operacional e ambiente SAP sofrem mudanas. Caractersticas de servidores, repositrio de dados e redes mudam a relao de tempos envolvidos quando decidimos o local de processamento. A arquitetura do SAP, centralizada no banco de dados e distribuda nos servidores de aplicao traz a necessidade de considerar a soluo particular adotada em cada implantao. Banco de dados: os bancos de dados evoluram muito e novos mecanismos de funcionamento resultam em regras opostas s utilizadas anos atrs. A necessidade funcional: processos so alterados e podem impactar na soluo obrigando o redesenho. O valor semntico das informaes podem ser alterados , com impacto direto na performance. Passagem do tempo e ambiente produtivo: a massa crescente de dados podem degradar a performance. O ambiente produtivo pode sofrer alteraes. Estes fatores so particularmente impactantes na capacidade real de realizarmos testes representativos

Apenas trs regras so absolutas, ainda que sofram limitaes de ordem prtica. Na ordem de importncia: pensar (considerar todos fatores envolvidos), pesquisar ( aprofundar o conhecimento nas caractersticas dos fatores envolvidos ), testar (utilizar as ferramentas disponveis e considerar as diferenas em relao aos ambientes produtivos futuros)106ST05 Performance analysisDB05 Anlise de tabelas relativamente a campos indexadosSAT Run time analysis (antiga SE30)

Comando GET RUN TIME na anlise de performance de comandos

PerformanceTRANSAES ANALISADASTtulo del documenton| 107READ TABLE [INTO ][WITH KEY = ][INDEX n][BINARY SEARCH][TRANSPORTING NO FIELDS]Performanceread tableTtulo del documenton| 108PerformanceExercciosExerccio 1

Criar o programa ZEXER_PER_01_##

Objetivo: comparar a performance dos comandos READ TABLE e READ TABLE BINARY SEARCH.

Para a tarefa criar uma tabela interna de nmeros inteiros.O programa deve preencher esta tabela com n nmeros inteiros, seqenciais (1, 2, 3... ), onde n informado por parmetro do usurio.

O programa deve fazer a busca do nmero m informado tambm por parmetro, utilizando as duas opes de busca.

Comparar os tempos obtidos utilizando o comando GETRUNTIMEFIELDTtulo del documenton|109BDC SessionConceitos iniciais O que so sesses BDCBatch Data CommunicationUso da transao SM35Uso da transao SHDB

Relao com Call transactionTtulo del documenton|110BDC SessionTabela BDCCampoTipoDescrioprogramChar(40)Nome do programa da transaodynproNumc(4)Nmero da tela da transaodynbeginChar(1)Indicador de uma nova telafnamChar(132)Nome do campo da telafvalChar(132)Valor a ser colocado no campoA tabela BDC uma tabela interna com estrutura BDCDATA.Esta tabela deve ser enviada para a Sesso Batch Input ou a instruo call transaction

Como obter as informaes nas telas SAPTtulo del documenton|111BDC SessionPreenchendo a tabela BDCREPORTzxxxxxxx.

DATA:BEGINOFtbdcOCCURS100.INCLUDESTRUCTUREbdcdata.DATA:ENDOFtbdc.

*Inciodoprogramaprincipal

MOVEsapmf02kTOtbdc-program.MOVE0100TOtbdc-dynpro.MOVExTOtbdc-dynbegin.APPENDtbdc.

MOVErf02k-lifnrTOtbdc-fnam.MOVE0010010TOtbdc-fval.APPENDtbdc.

MOVErf02k-ekorgTOtbdc-fnam.MOVEcntlTOtbdc-fval.APPENDtbdc.Ttulo del documenton|Muitos programas utilizam unicamente a estratgia de buscar o mximo de dados e realizar as operaes internamente no programa. Algumas vezes, isto justificvel, mas so inmeras as excees: Restringir a seleo melhor que trafegar muitos dados entre o servidores do banco de dados e da aplicao A ordenao pode ser feita eficientemente pelo banco de dados, quando a mesma segue os campos do ndice utilizado ( o ndice j ordenado ). A estratgia de ler todos dados podem provocar consumo de memria excessivo, pela duplicao dos dados. Tabelas buferizadas j esto no servidor de aplicao, tornando a leitura intensiva sem nenhuma vantagem.

Uma vez que a leitura dos dados decidida, existem muitos pontos de otimizao na manipulao dos dados: Escolha correta do tipo de tabela interna ( standard, sorted ou hashed ) em funo do volume, necessidades de ordenao e caractersticas do acesso planejado aos dados. Uso de comandos mais eficientes ( por exemplo: uso de field symbols e comandos em massa )112

BDC SessionTRANSAO SHDBTtulo del documenton| 113

BDC SessionTRANSAO SHDBTtulo del documenton| 114

BDC SessionTRANSAO SHDBTtulo del documenton| 115

BDC SessionTRANSAO SHDBTtulo del documenton| 116Processando como pasta batch input Uso da transao SM35

Funes para criao da pasta:BDC_OPEN_GROUPAbre a sesso de BDC e necessita ser chamada antes de qualquer processamento.BDC_INSERTChamada para cada transao no processamento Batch.BDC_CLOSE_GROUPChamada aps todo processamento para que a pasta de processamento Batch seja criada.BDC SessionUTILIZANDO A TABELA BDCTtulo del documenton| 117Funo BDC_OPEN_GROUPOs seguintes parmetros so passados para a funo:CLIENT - Mandante do SAP que ser processada a sessoGROUP - Nome para a pasta de Batch input (no precisa ser nico)HOLDDATE - Suspende o processamento da pasta de Batch input at a data especificadaKEEP - Mantm a pasta de Batch Input aps o processamentoUSER - Nome de usurio que executar o Batch Input.BDC Sessioncriando a pasta batch inputTtulo del documenton| 118Funo BDC_INSERTOs seguintes parmetros so passados para a funo:TCODE - Cdigo da transao na qual ser executada a tabela BDCDYNPROTAB - Nome da tabela interna utilizada para gerar a pasta de Batch (tabela BDC)

Funo BDC_CLOSE_GROUP No existem parmetros a serem passados para esta funo. Pasta criadaBDC Sessioncriando a pasta batch inputTtulo del documenton| 119BDC SessionSM35

Ttulo del documenton| 120Instruo CALL TRANSACTION

CALL TRANSACTION [USING MODE MESSAGE ].Onde: - TYPE TABLE OF bdcdata - TYPE TABLE OF bdcmsgcoll

Os modos para executar este comando so:AMostra todas as telasEMostra apenas telas com errosNNo mostra as telasPEm background e depurvel (break-point)

Alm do SY-SUBRC, na tabela t_msg teremos todas as mensagens de retorno da transao (sucesso, alertas e erros)

BDC SessionUTILIZANDO A TABELA BDCTtulo del documenton| 121Exerccio

Criar um programa ZEXER_BATCH_## que recebe um arquivo de entrada com uma nica coluna de valores. O programa deve ler o arquivo e executar a transao FB01 para cada linha. Imprimir as mensagens de retorno da transao na tela.

BLDAT = sy-datum no formato dd.mm.aaaaBUDAT = sy-datum no formato dd.mm.aaaaWRBTR = valor do arquivoZFBDT = sy-datum no formato dd.mm.aaaaVALUT = sy-datum no formato dd.mm.aaaa

Demais campos passar valor do SHDB entre aspas simples

BDC SessionEXERCCIOTtulo del documenton| 122Exerccio SHDB FB01 (EXER_BATCH)

SAPMF05A0100X BDC_CURSORRF05A-NEWKO BDC_OKCODE/00 BKPF-BLDAT05.04.2013 BKPF-BLARTAB BKPF-BUKRS0005 BKPF-BUDAT05.04.2013 BKPF-WAERSEUR FS006-DOCID* RF05A-NEWBS31 RF05A-NEWKO100 BDC_SUBSCRSAPMF05A 1300APPL_SUB_T BDC_SUBSCRSAPLSEXM 0200APPL_SUBSAPMF05A0302X BDC_CURSORRF05A-NEWKO BDC_OKCODE/00 BSEG-WRBTR100 BSEG-MWSKZV1 BSEG-ZFBDT05.04.2013 RF05A-NEWBS40 RF05A-NEWKO10900050SAPMF05A0300X BDC_CURSORBSEG-WRBTR BDC_OKCODE=BU BSEG-WRBTR100 BSEG-MWSKZV1 BSEG-VALUT05.04.2013 BDC_SUBSCRSAPLKACB 0001BLOCK DKACB-FMOREXSAPLKACB0002X BDC_CURSORCOBL-GSBER BDC_OKCODE=ENTE BDC_SUBSCRSAPLKACB 9999BLOCK1BDC SessionEXERCCIOTtulo del documenton| 123Online ou Dialog programming: processamento de telas, que alterna com o processamento de uma listagem. O processamento transferido entre estes dois processadores alternadamente.ON LINEPROGRAMAO ON LINETtulo del documenton| 124PAI Process After InputOn lineProgramao On lineTelaPBO Process Before OutputExibio (campos)A execuo de cada tela dividida em dois eventos: PBO execuo antes da exibio PAI execuo aps a exibioTtulo del documenton|125Programa PrincipalScreen 1Screen 2Screen 3GUI-01GUI-02Mdulos PBO tela 1Mdulos PAI tela 1Mdulos PBO tela 2Mdulos PAI tela 2Mdulos PBO tela 3Mdulos PAI tela 3ON LINEPROGRAMAO ON LINETtulo del documenton| 126Programa principal

On lineProgramao On lineEstrutura de um programaInclude TOPInclude Mdulos PAIInclude Subrotinas (Forms)Include Mdulos PBOA estruturao de programas on line em includes no obrigatria, porm facilita a organizao do cdigo e incentivada pelo editor.Ttulo del documenton|127On lineProgramao On lineProcesso geral de programao on line

TOP

Telas

Mdulos

FormsNome e Descrio do Programa e declarao das variveis Programao da lgica (encapsulada em subrotinas)Definio dos mdulos PBO e PAIDefinio das telas e camposTtulo del documenton|128Exemplo de Programa OnlineOn lineProgramao On line

Ttulo del documenton| 129Exemplo de Programa OnlineOn lineProgramao On line

Ttulo del documenton| 130Exemplo de Programa OnlineOn lineProgramao On line

Ttulo del documenton| 131Exemplo de Programa OnlineOn lineProgramao On line

Ttulo del documenton| 132Exemplo de Programa OnlineOn lineProgramao On line

Ttulo del documenton| 133Exemplo de Programa OnlineOn lineProgramao On line

Ttulo del documenton| 134Exemplo de Programa OnlineOn lineProgramao On line

Ttulo del documenton| 135Exemplo de Programa OnlineOn lineProgramao On line

Ttulo del documenton| 136Exemplo de Programa OnlineOn lineProgramao On line

Ttulo del documenton| 137Exemplo de Programa OnlineOn lineProgramao On line

Ttulo del documenton| 138Exemplo de Programa OnlineOn lineProgramao On line

Ttulo del documenton| 139Exemplo de Programa OnlineOn lineProgramao On line

Ttulo del documenton| 140Exemplo de Programa OnlineOn lineProgramao On line

Ttulo del documenton| 141Exemplo de Programa OnlineOn lineProgramao On line

Ttulo del documenton| 142Exemplo de Programa OnlineOn lineProgramao On line

Ttulo del documenton| 143Exemplo de Programa OnlineOn lineProgramao On line

Ttulo del documenton| 144Exemplo de Programa OnlineOn lineProgramao On line

Ttulo del documenton| 145Exemplo de Programa OnlineOn lineProgramao On line

Ttulo del documenton| 146Exemplo de Programa OnlineOn lineProgramao On line

Ttulo del documenton| 147Exemplo de Programa OnlineOn lineProgramao On line

Ttulo del documenton| 148Exemplo de Programa OnlineOn lineProgramao On line

Ttulo del documenton| 149On lineEXERCCIO 1Criar o programa online ZEXER_ON_01_## para dar manuteno na tabela criada no mdulo de dicionrio de dados ZTBL_##.Opes de criar, exibir e alterar dados.Registro no deve existir para ser criado, e registro deve existir para alterar ou exibir.Na exibio, deixar os campos fechados utilizando o comando abaixo:

LOOPATSCREEN.IFscreen-group1='G1'.CLEARscreen-input.MODIFYSCREEN.ENDIF.ENDLOOP.

Ttulo del documenton|150On lineEXERCCIO 1

Ttulo del documenton|151On lineExerccio 2Criar um programa online para simular uma calculadora no SAP, com o nome ZEXER_ON_02##.

Ttulo del documenton|152On lineUso de tablestripPara incluir o tablestrip na tela, utilizar o assistente.

Ttulo del documenton|153On lineUso de tablestrip

Ttulo del documenton|154On lineUso de tablestrip

Ttulo del documenton|155On lineUso de tablestrip

Ttulo del documenton|156On lineUso de tablestrip

Ttulo del documenton|157On lineUso de tablestrip

Ttulo del documenton|158On lineUso de tablestrip

Ttulo del documenton|159On lineUso de tablestrip

Ttulo del documenton|160On lineUso de tablestrip

Ttulo del documenton|161On lineTable controlTable control um componente que permite a exibio e manipulao de dados de tabelas internas de forma muito amigvel pelo usurio, com exibio semelhante a uma planilha.A visualizao realizada em vrias linhas simultaneamente e, quando corretamente codificado, pode contar com paginao e seleo das linhas para posterior ao.

As table controls so declaradas como controles nos programas e seus dados associados a tabelas internas do programa.

Considere utilizar o assistente para a criao de table controls.

Ttulo del documenton|162On lineTable control

Ttulo del documenton|163On lineTable control

Ttulo del documenton|164On lineTable control

Ttulo del documenton|165On lineTable control

Ttulo del documenton|166On lineTable control

Ttulo del documenton|167On lineTable control

Ttulo del documenton|168On lineTable control

Ttulo del documenton|169On lineTable control

Ttulo del documenton|170On lineTable control

Ttulo del documenton|171On lineTable control

Ttulo del documenton|172On lineEXERCCIO 3Criar o report ZEXER_ON_03_##, com um parmetro obrigatrio com o cdigo da empresa area (CARRID) e um intervalo de valores, no obrigatrio da data do vo (SFLIGHT-FLDATE).A primeira tela de resultados deve mostrar os seguintes valores: SCARR-CARRID - Denominao breve SCARR-CARRNAME Nome da companhia

Em uma tabela:SPFLI-CONNID ConexoCITYFROM OrigemCITYTO Destino Total de vos no intervalo de datas (pode ser zero)Ttulo del documenton|173O usurio apenas poder selecionar linhas com quantidade de vos maior que zero, caso em que uma segunda tela de detalhes mostra a lista dos vos disponveis para a conexo selecionada, com os seguintes campos:SPFLI-CARRID Denominao breveSPFLI-CONNID Conexo

Em uma tabela:SFLIGHT-FLDATESFLIGHT-PRICESFLIGHT-CURRENCY

Nota: o programa deve mostrar mensagem de erro se a empresa indicada no tem conexes cadastradas, deixando o campo aberto para outra empresa.On lineEXERCCIO 3Ttulo del documenton|174SapscriptFormulrios sapscriptConceitos iniciais

O Sapscript a forma original de criar formulrios com preciso dentro do SAP. Os formulrios so gravados em separado em repositrio acessvel pela transao SE71.

Os formulrios Sapscript so utilizados em vrios pontos do SAP, gerados por programas. Estes programas recebem o nome de programa de povoamento.

Lgica de negcio

FormataoPrograma de povoamento(abap)Formulrio SapscriptDadosTtulo del documenton|175SapScriptPrograma de povoamentoPrograma ABAP

Um programa de povoamento deve seguir a seguinte estrutura: Abertura de um formulrio Inicializao de um formulrio Seleo dos dados do formulrio Impresso dos dados nas janelas do formulrio Finalizao do formulrio Fechamento do formulrioTtulo del documenton|176SapscriptPrograma de povoamentoAbertura de formulriocall function 'OPEN_FORM' exporting DEVICE = 'PRINTER' * DIALOG = 'X' FORM = (Nome do Formulrio) LANGUAGE = (Idioma do Formulrio) OPTIONS = ITCPO exceptions canceled = 1 device = 2 form = 3 options = 4 unclosed = 5 others = 6.A estrutura ITCPO define parmetros de impresso: n cpias, Impressora, sada imediata, etc.Ttulo del documenton|177Sapscript Programa de povoamentoInicializao de formulriocall function 'START_FORM' exporting FORM = ' ' LANGUAGE = ' ' exceptions form = 1 format = 2 unended = 3 unopened = 4 unused = 5 others = 6.

No obrigatrio para o primeiro formulrio, pois o comando de abertura inicializa automaticamente. Necessrio quando utilizamos mais de um formulrio (a partir do segundo)Ttulo del documenton|178Sapscript Programa de povoamentoImpresso dos dadosOs dados so enviados em estruturas

A janela MAIN tem comportamento diferente das demais janelas.call function 'WRITE_FORM' exporting ELEMENT = ' ' WINDOW = 'MAIN' exceptions element = 1 function = 2 type = 3 unopened = 4 unstarted = 5 window = 6 others = 7.Ttulo del documenton|179Sapscript Programa de povoamentoFinalizao de formulrioFinaliza os formulrios inicializadosCALL FUNCTION 'END_FORM'.* IMPORTING* RESULT =* EXCEPTIONS* UNOPENED = 1* BAD_PAGEFORMAT_FOR_PRINT = 2* OTHERS = 3Ttulo del documenton|180Sapscript Programa de povoamentoFechando o formulrioFecha os formulrios abertosCALL FUNCTION 'CLOSE_FORM'.* IMPORTING* RESULT =* RDI_RESULT =* TABLES* OTFDATA =* EXCEPTIONS* UNOPENED = 1* BAD_PAGEFORMAT_FOR_PRINT = 2* SEND_ERROR = 3* OTHERS = 4Ttulo del documenton|181Sapscript FormulrioTransao SE71

Criar novos formulrios (definir o idioma do formulrio)

Copiar de outros formulrios no mandante, com ou sem mudana de idioma

Traduzir formulrios

Copiar de outros mandantes

A SAP disponibiliza muitos formulrios para serem copiados e alterados (p.ex.: cartas, comunicados, boletos, cheques)Ttulo del documenton|182Sapscript FormulrioTipos de janelas Janelas MAIN

Janela principal e a nica obrigatria.Podemos ter mais de uma janela MAINPreenchimento seqencial das janelas(forado com /: NEXT-WINDOW)

Ttulo del documenton|183Sapscript FormulrioTipos de janelas

Janelas VARDados podem mudar, durante o preenchimento do formulrio

Janelas CONSTDados permanecem constantes aps o primeiro preenchimento.Ttulo del documenton|184Sapscript Programa de povoamentoExemplo SAPSCRIPT SE71

Ttulo del documenton|185Sapscript Programa de povoamentoExemplo SAPSCRIPT SE71

Ttulo del documenton|186Sapscript Programa de povoamentoExemplo SAPSCRIPT SE71

Ttulo del documenton|187Sapscript Programa de povoamentoExemplo SAPSCRIPT SE71

Ttulo del documenton|188Sapscript Programa de povoamentoExemplo SAPSCRIPT SE71

Ttulo del documenton|189Sapscript Programa de povoamentoExemplo SAPSCRIPT SE71

Ttulo del documenton|190Sapscript Programa de povoamentoExemplo SAPSCRIPT SE71

Utilizao: similar a HTML: TextoTtulo del documenton|191Sapscript Programa de povoamentoExemplo SAPSCRIPT SE71Ttulo del documenton|192Sapscript Programa de povoamentoExemplo SAPSCRIPT SE71Ttulo del documenton|193Sapscript Programa de povoamentoExemplo SAPSCRIPT SE71Ttulo del documenton|194Sapscript FormulrioComandos dentro do formulrio Os comandos so indicados por /:IF..ELSE..ENDIFCASE..WHENDEFINEPERFORM..USING..CHANGINGBOX..FRAMEINCLUDEExemplo:/: INCLUDE name OBJECT object ID id LANGUAGE sprasTtulo del documenton|195Sapscript FormulrioTabuladoresDefinidos nos pargrafos, com posicionamento em caracteres(CH), centmetros (CM) ou milmetros (MM)IL Linha de item Atributos standard Espacej.linhas 1.00 LN Alinhamento Alinh.esq. Tabuladores 6.00 CH Alinh. esquerda 25.00 CH Alinh. esquerda 54.00 CH Alinh. esquerda 73.00 CH Alinh. esquerdaUso:IL &EKPO-EBELP&,,&EKPO-EMATN&,,&EKPO-TXZ01&Ttulo del documenton|196Sapscript Programa de povoamentoExemplo SAPSCRIPT SE71Ttulo del documenton|197SapscriptEXERCCIOCriar programa de povoamento ZEXERC_SS_## com parmetro de entrada CARRID e um formulrio Sapscript ZEXERSS_## para imprimir os vos (SFLIGHT) para a companhia selecionada.Exemplo de sada:DADOS DE VO DA COMPANHIA LH_______________________________Relatrio de VosCompanhiaVoDataLH040028.02.1995LH045417.11.1995LH998121.12.2002Ttulo del documenton|198 Nova tecnologia para substituir o Sapscript Transao SMARTFORMS Impresso atravs de funo geradaA funo contm todo o processamento do formulrioO nome da funo gerado dinamicamente por ambienteExiste outra funo para encontrar o nome funo do formulrio no ambienteFuno do formulrioFormulrio SmartformDadosRecuperar o nome dinamicamenteSMARTFORMSO QUE ?Ttulo del documenton|199SmartformsBenefcios Ambiente grfico para desenvolvimento Maior flexibilidade no desenvolvimento e manuteno O programa de impresso, basicamente, s seleciona os dados Alteraes no layout do formulrio no requerem alterar o programa, exceto nos casos em que se altere a quantidade ou tipo de dados independente de mandante.Ttulo del documenton|200SmartformsSAP Smartforms 1 telaNa transao SMARTFORMS possvel criar:Formulrio: a interface de sada dos dados, onde criado o layout do formulrio.Estilo: um conjunto de pargrafos e formatos de caracteres que sero associados ao formulrio.Mdulo de texto: serve para se armazenar textos padres que podem ser utilizados em mais de um formulrio.Ttulo del documenton|201Quadro de ManutenoForm PainterMenu de navegaoSmartformsSmartform BUILDERTtulo del documenton|202Menu de navegao: Exibe os ns contidos no formulrio, e permite incluir novos ns, alterar posio no formulrio, eliminar, etc.Quadro de manuteno: Exibe as propriedades do n selecionado no menu de navegao.Form Painter: Exibe e permite manipular as janelas e alguns outros objetos(ns) do formulrio em formato grfico.SmartformsSmartform BUILDERTtulo del documenton|203Funo para obter o nome da funo do formulrio:CALLFUNCTION'SSF_FUNCTION_MODULE_NAME'EXPORTINGFORMNAME='ZEXEMPLO_00'IMPORTINGFM_NAME=V_SMARTEXCEPTIONSNO_FORM=1NO_FUNCTION_MODULE=2OTHERS=3. SmartformsFUNES DE EXECUOTtulo del documenton|204Funo do formulrio. Onde V_SMART indica o nome da funo do formulrio (chamada dinmica).CALLFUNCTIONV_SMARTTABLEST_SPFLI=T_SPFLIT_SFLIGHT=T_SFLIGHTT_SCARR=T_SCARRT_SAPLANE=T_SAPLANEEXCEPTIONSFORMATTING_ERROR=1INTERNAL_ERROR=2SEND_ERROR=3USER_CANCELED=4OTHERS=5. SmartformsFUNES DE EXECUOTtulo del documenton|205SmartformsexemploTtulo del documenton|206SmartformsexemploTtulo del documenton|207SmartformsexemploTtulo del documenton|208SmartformsexemploTtulo del documenton|209SmartformsexemploTtulo del documenton|210SmartformsexemploTtulo del documenton|211SmartformsexemploTtulo del documenton|212SmartformsexemploTtulo del documenton|213SmartformsexemploTtulo del documenton|214SmartformsexemploOpes de sada: definir linha e colunaTtulo del documenton|215SmartformsexemploTtulo del documenton|216SmartformsexemploTtulo del documenton|217SmartformsexemploTtulo del documenton|218SmartformsexemploTtulo del documenton|219SmartformsexemploTtulo del documenton|220SmartformsexemploTtulo del documenton|221SmartformsexemploTtulo del documenton|222SmartformsexemploTtulo del documenton|223Desenvolver um programa que selecione a companhia area e exiba os vos e datas desta companhia num Smartform. (mesmo layout do Sapscript criado)Opcional: incluir imagem no cabealho conforme exemplo abaixoSmartformsATIVIDADETtulo del documenton|224