Anda di halaman 1dari 18

1.

Sugestes genricas
II Ferramentas e Aceleradores Sapscript: Para Formulrio. Quando se falar em formulrios, interessante utilizar o SAPScript, pois funciona como uma ferramenta integrada para gerao de formulrios. O SAPScript uma ferramenta importante. Caso a equipe da no tenha conhecimento tcnico, interessante pensar em treinamento. Report Writer : Ferramenta dentro do mdulo de FI para construo de relatrios sem conhecimento em Abap. possvel definir relatrios complexos sem uma estrutura grfica de relatrio. Porm, seu uso complexo, sendo necessrio conhecimento e prtica. Esta ferramenta interessante na medida em que reduz a programao ABAP para relatrios. Existe treinamento disponvel para esta ferramenta. Interessante que algumas pessoas da rea funcional tenham conhecimento. Report Painter: Ferramenta para gerao de relatrios. Amigvel para uso. A definio do Report Painter ser convertida em um equivalente Report Writer, em background. Tambm no necessrio conhecimento em Abap, sendo facilmente aprendida por usurios. Possui aparncia grfica da estrutura de relatrio. Esta ferramenta interessante na medida em que reduz a programao ABAP para relatrios. Interessante que algumas pessoas da rea funcional tenham conhecimento. Abap Query: Ferramenta para usurio final para gerao de relatrios. No significa que todos os relatrios possam ser substitudos por Queries, mas h casos onde o uso de uma Query interessante. Verifiquem se interessante e a possibilidade de algumas pessoas estarem fazendo este curso (rea funcional e ABAP). Report Navigator: Est dentro do ASAP e ajuda na identificao de relatrios j existentes no sistema de forma que possa comparar relatrios atuais com os existentes no R/3, ajudando desta forma a reduzir o nmero de relatrios para desenvolvimento. Interface Adviser: Um espcie de help (pode ser solicitado para SAP via pagina na internet) contendo todos os tipos de interfaces j existentes no R/3. Desta forma possvel identificar interfaces prontas que no precisam ser construdas. Made Easy: Existem diversos made-easy na ferramenta SAP, como exemplo podemos citar: Data transfer Made-easy (sobre converso de dados para o R/3). Printout design Made-easy (sobre SAPScript). So escritos de forma clara e ajudam o entendimento de algumas ferramentas.

Existem tambm algumas ferramentas que auxiliam os desenvolvedores a descobrir erros (errors, warnings, etc.), bem como avaliar a performance de seus programas. Runtime Analysis (SE30) Existe um pushbutton chamado Tips and Tricks Clicando nele poder ser feita comparao entre comandos Select (diferentes tipos). Dando double-click sobre um dos exemplos voc passar para outra tela, onde voc visualizar a medida do tempo em microsegundos de ambos, servindo de base de comparao. Tambm na SE30, voc poder utilizar as facilidades do Runtime Analysis para verificar a performance de seu programa. Ao final da execuo voc poder acessar informaes sobre o seu programa (grficos, acesso a tabelas, etc.). Para tanto clique o pushbutton ANALYSE, que somente aparecer depois que for informado o nome do programa e/ou transao e clicado execute. OBS: A ferramenta de Runtime Analysis emite um Warning para mquinas com mais de um processador, neste warning adverte para o fato de no ser precisa para mquinas com mais de um processador, porm mesmo assim aconselhamos o uso pois em termos proporcionais para se encontrar os gargalos do programa a preciso perdida dispensvel. O SQL Trace outra facilidade que pode ser utilizada para trilhar a lgica de sua aplicao e verificar possveis pontos de correo. Voc poder visualizar os comandos de acesso a banco de dados, obter informaes sobre um comando especfico, visualizar os ndices que esto sendo utilizados. O Extended Program Check outra facilidade que deve ser empregada visando manter o seu cdigo o mais correto possvel. Nesta opo voc poder selecionar os itens que voc deseja que sejam checados e o sistema apontar o seu parecer. Para tanto basta clicar os itens e o pushbutton PERFORM CHECK Selecionando uma linha voc poder ver os detalhes, bem como posicionando o cursor em uma linha e clicando o pushbutton DISPLAY ALL CHANGES.

Pgina:

2 de 18

III Tcnicas de confeco de interfaces e converses Online: CPI-C / RFC Via documentao do help-online, podemos verificar os tipos de interface que podem ser geradas via CPI-C e RFC. Assunto amplo. Porm, cabe alguns esclarecimentos : possvel estabelecer uma comunicao online entre R/3 com R/3, R/3 com R/2 e R/3 ou R/2 com sistemas externos. Justifica-se o uso de RFC e CPI-C para casos em que uma demora na atualizao nos dados poderia trazer prejuzo aos negcios da empresa. No Caso do CPI-C (Common Programming Interface for Communications) possvel que dois programas ou duas aplicaes se comuniquem um com o outro. Um programa start a conexo, enquanto o outro aceita a conexo. Assim, os dados da aplicao podem ser trocados at que o link seja fechado por uma das partes. A RFC (Remote Function Call) mais fcil de manusear porque os dados so trocados via parmetros definidos. Dados tcnicos: A comunicao via sistemas R/3 sempre TCP-IP. Plataformas IBM se comunicam via protocolo SNA LU 6.2. Todas as outras plataformas suportam TCP-IP. Algumas caractersticas da RFC: Converso automtica de dados Logon automtico ao sistema parceiro SAP (user-name e logon so armazenados na tabela RFCDES). Controle automtico do fluxo de informao. Ambiente de desenvolvimento: Remote Debugging e RFC Generator. Cria-se uma funo e da um click a opo de Remote Function Call Supported no ambiente que ir aceitar a comunicao. A funo no necessita existir em ambos os sistemas. Quando da chamada necessrio especificar o destination. Interfaces Batch ou Converses: Existem trs mtodos para converso: Direct input Call transaction

Pgina:

3 de 18

Batch Input Direct Input: um dos mtodos para transferncia de dados do sistema legado para o sistema R/3. considerado o mtodo mais rpido. Um arquivo seqencial com dados gerado como um arquivo texto para processamento por alguns function modules especiais. Estas funes executam todas as checagens normais para garantir a integridade de dados. Quando os registros so processados com sucesso, eles so gravados diretamente nas correspondentes tabelas do banco de dados da aplicao. Na ocorrncia de erros, os dados errados so passados para uma rotina de manuseio de exceo. O gargalo associado com o processamento do dialog e update so eliminados neste caso. Para todas as necessidades de transferncia de dados, especialmente com transaes de alto volume, o direct input o mtodo mais indicado. Nota: este mtodo deveria ser usado em todas as situaes nas quais funes de aplicao utilizando esta tecnologia existam. Call Transaction: o prximo mtodo mais rpido para processamento de dados do sistema legado para o sistema R/3. Neste caso, o programa de transferncia de dados processa os dados do arquivo seqencial e chama a transao desejada usando um comando Abap. Dados de um arquivo seqencial so processados via telas de aplicao para uma nica transao. A lgica de aplicao executa todos os checks e a validao dos dados. Quando o processamento do dialog realizado com sucesso, o processamento do update chamado pela aplicao correspondente para executar todas as solicitaes do banco de dados. A escolha pode ser feita entre update sncrono ou assncrono. Nenhum protocolo de erros ou sada para lidar com os erros fornecida por esta tcnica. responsabilidade do programador da aplicao incorporar rotinas de execuo e funes dos protocolos desejados como parte do programa de transferncia de dados. O Call Transaction pode ser usado nos casos em que no existe um programa Direct Input. Somente em situaes de lidar com erros ns recomendamos que o batch-input tradicional seja realizado para posterior processamento. Resumo: em contraste com o Batch Input, o Call Transaction permite que sejam passados dados diretamente ao dialog interface sem usar uma fila. Para armazenar estes dados temporariamente, voc usa uma internal table (uma tabela BDC, a qual tem a mesma estrutura daquela utilizada no batchinput). Antes de colocar os dados na BDC table necessrio fazer um check nos dados. Call transaction: pode ser executado imediatamente. Batch Input: o batch-input tem sido tradicionalmente selecionado como um mtodo de implementao de programas de transferncia de dados. Um benefcio que este mtodo traz sobre o Call Transaction que o batch-input tem um utilitrio responsvel pela administrao e gerenciamento das funes do batch-input. Alm do mais, utilitrios existem para monitorar e dar manuteno em tarefas associadas com este mtodo. Assim, no h necessidade de nenhuma programao adicional para anlise de excees e funes de protocolo. Dados vindos de um arquivo seqencial so

Pgina:

4 de 18

processados via telas de aplicao e armazenados numa sesso batch-input. Por definio, uma sesso uma coleo de dados de transao para uma ou mais transaes. As sesses batch-input so fisicamente armazenadas pelo sistema num banco de dados como uma fila. Estas sesses podem conter tanto registros de dados corretos quanto incorretos. O mtodo batchinput, em contraste com o mtodo Call Transaction, pode transferir dados do sistema legado para o sistema R/3 para mltiplas transaes da aplicao. Todavia, nenhuma nova transao disparada at que a transao anterior tenha sido gravada no correspondente banco de dados durante o processamento das sesses de batch-input. A sesso de batch-input pode ser processada de trs modos: foreground, display errors only ou background. Este mtodo oferece excelente capacidade para gerenciamento de erros e detalhado para anlise do protocolo da transao. Resumo: gerado um log e pode ser programada a execuo. Em caso de erro, o registro pode ser corrigido e inserido novamente. Atravs deste recurso, todos os dados so inseridos na transao original SAP, ou seja, seguindo todas as consistncia necessrias, evitando assim que erros de integridade sejam cometidos. AVALIAO: Sempre execute alguns testes dentro do processo de transferncia de dados e avalie qual o mtodo mais apropriado para uso, dado o volume de dados, tamanho, recursos e performance do sistema. Todos os fatores sendo iguais, o mtodo Direct Input deve ser usado em todos os casos em que tais funes estejam disponveis ou novas funes para transferncia de dados precisem ser desenvolvidas. Para escolher entre o Call Transaction e o Batch Input, pode se adotar chamar o Call Transaction primeiro e manusear as excees ento atravs do mtodo de batch-input. Esta estratgia altamente recomendada em implementao de solues de programao para transferncia de dados com sistemas legados. No deixe de usar os programas prontos no R/3 para fazer a carga de dados ou interfaces, consulte para isto o Data transfer Made Easy e o Interface Adviser.

Pgina:

5 de 18

IV Arquitetura Client-Server O R/3 trabalha com uma filosofia de cliente/servidor de 3 nveis, logo temos o front-end que s processa os grficos, o servidor de aplicao que processa a aplicao e o servidor de banco de dados que responsvel pelo atualizao dos dados. E, como se sabe, a alocao dos servidores de aplicao feita automaticamente no momento da carga do programa. Para aproveitar ao mximo os recursos computacionais de cada nvel, a SAP criou um conceito de atualizao em update task. Caso seja feita uma pesquisa em todos os programas "on-line" da SAP ser verificado que a atualizao sempre em funes que s fazem o update, e que no retornam valores nem mesmo exceptions se estas ocorrerem. (CALL FUNCTION .... IN UPDATE TASK). Logo todas as aplicaes fazem todas as checagens possveis e imaginveis antes de chamar estas funes, ou seja, as exceptions que podem ocorrer so somente as de BD (por exemplo table space, ou algo no previsto). Se uma aplicao faz "n" atualizaes esta ir chamar "n" funes (uma para cada update de um conjunto de tabelas) e, ao final, dar um commit work. O que o R/3 faz simplesmente ir criando todos estes dados em uma espcie de log. No momento do commit work ele cria uma outra LUW no servidor de BD e passa esta tarefa para este. Note que o programa (que esta sendo processado no servidor de aplicao), no fica esperando a resposta se o update ocorreu corretamente ou no, ele continua o processamento e termina a transao muitas vezes antes do servidor de DB ter terminado o processamento. A vantagem bvia deste processo a diminuio de gargalos via este "tratamento de mensagens" entre as duas camadas (DB e aplicao). Quando se utiliza o comando SET UPDATE TASK LOCAL o servidor de aplicao passa a executar o update (ou seja, no criado uma outra LUW no servidor de DB) e este fica esperando a resposta se tudo ocorreu OK. Um SET UPDATE TASK LOCAL suficiente para todo o processamento do commit ser efetuado como local. Por isso, todos os updates da SAP procuram no utilizar o comando Set update task local. O default o SET UPDATE (em funes). Isso evita que a performance seja degradada.

Pgina:

6 de 18

V Boas prticas de codificao Use o comando FREE para liberar espao em internal tables; Sempre usar os comandos CLEAR / REFRESH aps o fim de um LOOP; Evite comparaes num SELECT com campos numricos versos campos alfanumricos; o sistema perde tempo para converso; Testar SY-SUBRC aps cada acesso ao banco de dados; O comando MOVE-CORRESPONDING bom para tabelas pequenas. interessante que a tabela interna contenha os campos na seqncia em que sero movimentados; Ao utilizar o comando CASE, codificar sempre a clusula WHEN OTHERS; Sempre identifique se um SORT ASCENDING ou DESCENDING e especifique a clusula BY <fields>. Caso contrrio, todos os campos sero classificados. Evitar lgicas do tipo: IF NOT CPOA = CPOB. mais claro codificar IF CPOA NE CPOB. Evitar construes do tipo: SORT tabela1, SORT tabela2, SORT tabela3. LOOP tabela1, LOOP tabela2, LOOP tabela3 Para cada SORT fazer o LOOP correspondente. A ento iniciar novo SORT e LOOP, e assim por diante. Campos chave devem ser sempre os primeiros campos da tabela. Assim, todos os demais campos sero comprimidos; SELECT (para Transparent e Pool Tables): a clusula WHERE deve conter, preferencialmente, os campos chaves e demais campos que possam restringir a pesquisa; evitar comandos IF e CHECK que possam ser evitados na clusula WHERE SELECT (para Cluster Tables): s os campos chaves (da cluster table) devem ser especificados na clusula WHERE. Os demais devem ser checados atravs do comando CHECK, desde que pertencentes ao mesmo cluster de acesso. Ex.: Tabela BSEG todas as linhas de um dado documento contbil ficam armazenadas em um nico registo no Banco de Dados, logo devo acessar o documento da BSEG via clusula WHERE (independente de quantos registros lgicos forem ser somente um registro fsico) e ento delimitar esta seleo por CHECK.

Pgina:

7 de 18

O conhecimento do contedo dos dados de uma tabela pode auxiliar no momento da codificao do comando SELECT. O campo que ocorrer em nmero menor de vezes dever constar na clusula WHERE antes daquele que ocorre um nmero maior de vezes, caso seja necessrio satisfazer a ambas condies. Isso faz com que o processamento seja mais gil. Manuseio de tabelas: Estudar a possibilidade de manuseio em tabelas internas para agilizar o processo. Analisar tambm o uso de comando SELECT, sendo o que melhor se adapte a situao em questo. Todo comando SELECT procurar verificar se existe um ndice para acesso ou se este pode ser usado com uma pequena mudana de lgica

Pgina:

8 de 18

VI Comandos Select Visando garantir a performance e evitar problemas futuros, cuidado com os comandos empregados. Existem alguns tipos de select mais eficientes que outros. Normalmente, o maior tempo de processamento est localizado no acesso ao DB server. Assim, toda vez que for reduzida a comunicao entre o Application Server e o Database Server, ser obtido um ganho em termos de performance. Analise a aplicao que ser desenvolvida e faa a melhor escolha. 1. SELECT FROM <table> INTO TABLE <INTERNAL TABLE>. A estrutura da tabela interna deve corresponder estrutura da tabela que est sendo acessada. O sistema l os registros em conjunto, no individualmente, e os coloca dentro de uma internal table. Este processo mais rpido que ler individualmente atravs de um LOOP e ir gravando os registros, um a um. 2. SELECT FROM <table> APPENDING TABLE <internal table>. L os registros e os inclui - no sobrepe - em uma internal table. 3. SELECT FROM <table> INTO CORRESPONDING FIELDS OF TABLE <itab>. Neste caso a estrutura da tabela interna no precisa corresponder estrutura da tabela que est sendo acessada. <itab> o nome da internal table. Movimentar os registros para as colunas definidas na internal table que possuam nome igual ao da tabela acessada. 4. SELECT FROM <table> APPENDING CORRESPONDING FIELDS OF TABLE <itab>. L e inclui (no sobrepe) os dados em uma internal table que possua nomes idnticos aos nomes da tabela que est sendo lida. 5. SELECT SINGLE FROM <table> WHERE <campo> = <contedo>

Pgina:

9 de 18

Toda vez que se usa select single a chave primria completa deve ser especificada. Se a chave especificada no qualificada, voc receber uma mensagem de warning durante o check e a performance ficar prejudicada. Deve-se sempre com SINGLE utilizar a chave primria completa na chave. (particularidade do ABAP). No caso de haver a necessidade de acessar um nico registro via select, as opes so: SELECT FROM <table> WHERE <campo> = <contedo>. EXIT. ENDSELECT. ou SELECT FROM <table> UP TO 1 ROWS WHERE <campo> = <contedo>. ENDSELECT. Neste caso no necessrio especificar a chave completa. 6. SELECT FROM <table> Quando no se impe nenhum tipo de restrio, ocorre uma varredura seqencial dos registros da tabela. Quando se utiliza grandes tabelas, isso obviamente afeta o runtime. 7. SELECT * FROM <table> Select * seleciona todas as colunas de uma tabela. melhor sempre especificar as colunas, pois em caso de tabelas com muitas colunas, prejudicar performance. 8. SELECT FROM <table> WHERE <campo> = <contedo>. ENDSELECT. L todos os registros da tabela especificada onde o campo igual ao contedo especificado.

Pgina:

10 de 18

9. SELECT <a1> <a2> INTO (<f1>, <f2>, ) FROM .<tabela> WHERE . L as colunas especificadas (a1, a2). Aps INTO devero ser especificadas as reas de trabalho auxiliares (f1, f2). O nmero de colunas lidas dever ser igual ao nmero de work-areas especificadas. 10. SELECT FROM <table> WHERE <table field> BETWEEN <field1> and <field2>.

Ex.: field1 = 100 e field2 = 500. Pega inclusive 100 e 500. Voc trabalha com o range. 11. SELECT FROM <table> WHERE <table field> LIKE ._R%.

_ = a primeira letra no importa o que vir a segunda dever ser R (foi definido) % = no importa a seqncia de caracteres que vir. 12. SELECT MAX(campo) MIN(campo) AVG(campo) COUNT(*) FROM <table> INTO (,,,) WHERE .

AVG e SUM: somente para campos numricos. No se usa ENDSELECT. 13. SELECT FROM <table> WHERE <table field> IN (,,).

Exemplo: select from <table> where campo1 in (123,1000) - podem ser valores ou literais. igual a perguntar se campo1 123 ou 1000. 14. SELECT FROM <table> WHERE <table field> IN <internal table>.

Exemplo:

Pgina:

11 de 18

DATA : BEGIN OF ITAB OCCURS 10, SIGN(1), OPTION(2), LOW LIKE SFLIGHT-PRICE, HIGH LIKE SFLIGHT-PRICE, END OF ITAB. ou RANGES: ITAB for sflight-table (este comando eqivale ao acima. A estrutura de tabela interna gerada e a mesma do select-options) MOVE: I BT 500 1000 APPEND ITAB. TO TO TO TO ITAB-SIGN, ITAB-OPTION, ITAB-LOW, ITAB-HIGH.

MOVE: I TO ITAB-SIGN, BT TO ITAB-OPTION, 440 TO ITAB-LOW, 450 TO ITAB-HIGH. APPEND ITAB. 15. SELECT FROM <table> INTO <work area>.

Move os valores do registro lido para a rea de trabalho. 16. SELECT FROM (TABNAME) . ENDSELECT.

Obs.: especificando o nome da tabela pode ser especificado dinamicamente no select statement, porm sempre consome mais tempo de CPU que especificando estaticamente no programa. 17. SELECT FROM <table> FOR ALL ENTRIES IN <internal table> WHERE campo1 = <internal table>-cmp1 AND campo2 = <internal table>-cmp2.

Defino uma tabela interna. Alimento os campos desta tabela interna. (move e append). No select campo1 e campo2 sero os campos definidos e alimentados da tabela interna.

Pgina:

12 de 18

O comando select for all entries extremamente interessante, pois faz a funo de um join. Somente na verso 4.0 existe e pode-se utilizar o comando JOIN para o ABAP. 18. SELECT FROM <table> WHERE ORDER BY <field1>, <field2>. SELECT FROM <table> WHERE ORDER BY PRIMARY KEY.

Obs.: Classifica a tabela interna numa rea auxiliar, sem afetar a tabela original. Evitar o uso de sorts dentro de um select. Consome mais tempo que descarregar os dados em uma tabela interna e classific-los. A no ser que se esteja acessando via primary key ou seja ndice primrio ou os campos definidos no order by tenham um ndice apropriado. 19. SELECT carrid MIN( price ) MAX( price ) INTO (carrid, minimum, maximum) FROM sflight WHERE GROUP BY carrid.

Todos os campos que eu quero que apaream na minha lista eu preciso especificar aps a clusula GROUP BY. carrid, maximum e minimum so campos auxiliares. Se o nome do database no conhecido at runtime no se pode especificar a clusula GROUP BY. 20. SELECT FROM <table> WHERE BYPASSING BUFFER.

Usado para ler diretamente da tabela original, e no do buffer.

Pgina:

13 de 18

VII Check list de Tuning em ABAP O programa est usando o comando SELECT * ? Troque por SELECT coluna1, coluna2 ou use projection views Existem comandos CHECK para campos de tabelas que poderiam ser includos no SELECT ENDSELECT? Incorpore o comando CHECK dentro da clusula WHERE do comando SELECT. Existem SELECTs em campos no chaves usando um apropriado ndice do DB ou utilizando o buffer da tabela? Crie ndice para esta tabela no dicionrio de dados ou tabelas buferizadas se estas forem somente para leitura. Antes de criar ndices verifique se com alguma pequena mudana de lgica no possvel utilizar um ndice j existente. O programa est utilizando SELECTs aninhados para recuperar dados? Converta os SELECTs aninhados para database views, DB joins (4.0) ou SELECT FOR ALL ENTRIES IN ITAB. Existem SELECTs sem a condio WHERE em tabelas que crescem constantemente (BSEG, MKPF, VBAK, J_1BNFDOC)? Desenho do programa est errado, volte para a especificao do mesmo.. Existem SELECTs acessando tabelas mestres sem utilizao de buffer (isto sem acesso duplicados para uma mesma chave)? Utilize acessos com buffer a dados mestre armazenando os dados em uma tabela interna, ordenando-a de acordo com o acesso a ser utilizado e utilize READ TABLE BINARY SEARCH. O programa est usando a tcnica SELECT APEND ITAB ENDSELECT para preencher tabelas internas? Altere o processamento para ler os dados diretamente para a tabela interna usando SELECT VBELN AUART INTO TABLE IVBAK FROM VBAK O programa est utilizando o comando SELECT ORDER BY? Dados devem ser lidos para uma tabela interna primeiramente e ento ordenados (SORT) a no ser que se tenha um ndice apropriado para as colunas a serem ordenadas. Est o programa fazendo clculos e somas que podem ser feitos no banco de dados via SUM, AVG, MIN ou MAX funes do comando SELECT? Use as capacidades de clculo do banco de dados via SELECT SUM AVG

Pgina:

14 de 18

Existem tabelas internas sendo processadas usando READ TABLE itab WITH KEY sem utilizao da tcnica de BINARY SEARCH? Altere os acessos para utilizar o mtodo de BINARY SEARCH. Est o programa inserindo, atualizando ou deletando dados em um programa on-line (dialog) sem utilizar funes em UPDATE TASK? Tenha certeza de que o programa est utilizando o comando COMMIT WORK quando uma ou mais LUW esto sendo processadas. Utilize sempre que possvel para programas dialog a atualizao via UPDATE TASK. Performance em batch Input O batch-input um tipo de programa que permite a simulao de uma transao online como se fosse batch, permitindo por exemplo a entrada de vrios itens numa opo online de incluso. A performance deste tipo de programa costuma ser muito boa, porm quando este no for o caso, peo que consultem via OSS se existem notas associadas a transao que est sendo utilizada ou ao programa. Para realizar a pesquisa, informar a transao (exemplo: MM01) ou o nome do programa, juntamente com a palavra performance, como critrios de seleo. A alterao sugerida na nota da SAP no se referir ao cdigo do programa do Batch Input, mas ao cdigo da transao SAP.

Pgina:

15 de 18

VIII Enhancements Tipos de exits (menu-exit, field-exit, customer-exit, user-exit, etc.). Em alguns casos, durante o andamento do projeto, se fazer necessrio a incluso de algum cdigo ABAP para atender a alguma particularidade do negcio em meio ao cdigo standard SAP, cdigo este desenvolvido pelo cliente. Nestas situaes estaria entrando o conceito de enhancements, o que poder facilitar muito o trabalho do desenvolvedor. Os enhancements so sadas j previstas pela SAP, ou seja, em alguns casos (no todos) existem customer-exits, user-exits, etc., j criadas em meio ao cdigo standard, local no qual pode ser includo cdigo desenvolvido pelo cliente. Isso no configura numa alterao do objeto standard, pois o programa no qual ser inserido o cdigo comea por Z. Para mais dados, consultar a documentao existente no Help Online do R/3.

Pgina:

16 de 18

IX Testes Montar procedimentos de teste para os programas. Testes individuais e globais, com mdio e alto volume de dados para testar a performance deste programas. Testar sob todas as condies lgicas existentes no programa. Aps o teste pelo programador, deve haver uma equipe responsvel por averiguar se, realmente, todos os testes foram realizados. Seria uma equipe para o controle de qualidade dos cdigos. Abaixo segue algumas sugestes que podem ser utilizadas no esquema de testes (caso o parceiro de implementao de ABAP j possua algumas normas e padres de testes, podero ser utilizados, desde que considerados apropriados e completos pelo cliente). Porm, lembre-se que durante a nossa reunio, foram dadas uma srie de sugestes que podem ser muito interessantes. Por exemplo: sempre que usado um CASE, codificar sempre o When Others, em situaes que houver SORT, utilizar SORT seguido de um LOOP; nunca fazer todos os SORTs primeiro e depois fazer todos os LOOPs, e assim por diante. Sugerimos considerar, para montagem do check-list de teste, o tpico Algumas dicas fornecido no captulo. Padronizar, documentar e divulgar o esquema de testes.

Pgina:

17 de 18

Programas do tipo Interface: Analisar o processo com baixo/alto volume de dados para checar desempenho/procedimentos Conferir as posies do arquivo de entrada/sada Comportamento do programa com arquivo vazio Arquivo de entrada com massa de testes completa, ou seja, contendo todas as possibilidades do fluxo lgico Contedo dos campos de sada conforme o tipo Programas do tipo Report Analisar o processo com baixo/alto volume de dados para checar desempenho/procedimentos Chamada a outros Reports Mensagens Totais Validar as informaes do Report com a base de dados sobre a qual foram extrados os dados Verificar quebras de pgina Programas do tipo SAPScript Verificar se o layout est de acordo com o esperado Procedimento de quebras de pgina Spool de Impresso gerado corretamente Gerao do formulrio mesmo que no existam informaes Informaes impressas ocupam as posies esperadas Objetos grficos (ex.: logotipos) esto sendo impressos corretamente Os quadros, caracteres (negrito, itlico, etc.), tabulaes, fontes e margens esto sendo impressos corretamente Comportamento do formulrio quando impresso em diferentes impressoras Programas do tipo Batch Input Conferir as posies do arquivo de entrada/sada Comportamento do programa com arquivo vazio Arquivo de entrada consta na pasta especificada no parmetro de entrada Mensagens Contedo dos campos de sada conforme o tipo O cdigo possui a definio dos passos devidos para a criao da sesso de batch input Job / Pasta gerado corretamente Testar a execuo em background / foreground Carga de dados cm arquivo vazio e arquivo inexistente Os botes constantes na tela executam suas respectivas funes corretamente As PFs constantes na tela executam suas respectivas funes, corretamente

Pgina:

18 de 18

Anda mungkin juga menyukai