Curso ABAP C&C2

download Curso ABAP C&C2

of 56

Transcript of Curso ABAP C&C2

Curso de ABAP 2006 Emmanuel Lima PG: 1 ABAP Treinamento prtico.

Autor e Instrutor:

1 - Introduo.RESUMO DE CONCEITOS SAP R3 Sistema Integrado de grande suporte , modulado. Principais mdulos *FI - Sistema financeiro (este mdulo essencial) *CO - Controlling - Contabilidade de custos *AM - Gerenciamentos Ativos *SD - Gesto de pedidos de clientes - Vendas e Distribuio *MM - Administrao de Materiais *PP - Manufatura para Indstria Discreta e de Processo *QM - Administrao de Qualidade *PM - Manuteno *RH - Recursos Humanos *PS - Administrao de projetos *WF - Workflow *IS - Soluo de Indstria ABAP/4 Linguagem de programao onde se desenvolveu o SAP, linguagem de customizao. Algumas ferramentas ABAP/4 Dicionrio de Dados (Tabelas e ferramentas gerenciadoras de tabelas) Editor ABAP (Cdigos da linguagem) DEBUG Formulrios Sapscript / Smarforms (Relatrios para impresso especficos) Mdulos de Funo ABAP/4 Function Builder (Construtor de Funo) Screen Painter (Construtor de tela) Menu Painter (Construtor de menu) Open SQL Structured Query Language = Pesquisa de linguagem estruturada Onde se escreve um programa de acesso e gerenciamento de banco de dados SAPGUI Grafics Uses Interfaces Interface para se trabalhar em ABAP/4 R3 3 nveis O SAP funciona em 3 nveis: 1) Front end - Terminal do usurio 2) Servidor onde se processa as informaes 3) Servidor onde se controla o banco de dados 3. Ambientes Bsicos No se trabalha diretamente na produo 1) Ambiente de Desenvolvimento (DEV) 2) Ambiente de Teste ou Qualidade (QAS)

Curso de ABAP 2006 Emmanuel Lima PG: 2 3) Ambiente de Produo - Dia a dia do cliente, onde no pode haver falhas.

Autor e Instrutor:

O Desenvolvimento e o teste podem estar na mesma mquina ou instncia Client ou Mandante Setores lgicos separados no mesmo ambiente. Objetos Dependentes S podem ser acessados no Client onde foi criado. Ex: formulrio, logotipos, grficos (Sapscript). Exigem transporte no mesmo ambiente. Objetos Independentes Podem ser acessados em qualquer Client do mesmo ambiente. Ex: programas Em ambientes diferentes tem que transportar. Classe de desenvolvimento Geralmente so pacotes relacionados ao mdulo do objeto. No curso de ABAP usamos a Classe $TMP - Temporrio - local no transportvel. Transporte entre Ambientes Transporte do objeto entre os ambientes de desenvolvimento, teste e produo. Navegao Parece Windows - Abre-se mltiplas sesses Os cones so padronizados, recomenda-se us-los sempre. Transaes Cada tipo de ao dentro do SAP tratado como transao. Atalho para transao As transaes esto descritas em um Tree de menu, porm podem-se usar atalhos. Ex: SE11 Dicionrio de Dados SE80 - Navegador /O Abre uma segunda janela mantendo a atual aberta - ex: /ose11 /N Abre uma outra janela fechando a atual ex: /nse80 Veremos as transaes bsicas no decorrer do curso. Objeto Standard Todo objeto prprio do SAP: Tabela, Report, Funo, etc. Objeto Customizado Todo objeto criado pelo ABAP. O nome de qualquer objeto customizado dever comear com as letras Z ou Y para diferenci-lo do Objeto Standard. mais usado com Z.

Curso de ABAP 2006 Emmanuel Lima PG: 3

Autor e Instrutor:

2 - Logon.

Logo aps a instalao do SAP GUI, o LOGON deve ser configurado com o IP do servidor de aplicao, ID do sistema e N do sistema , lembrando que estes dados devem vir do administrador do sistema. Uma vez instalado, o SAP GUI servir para qualquer SAP em qualquer empresa, podendo ser criado um LOGON para cada empresa, muito usado em note-book. Cada ambiente, DEV, QAS ou PRD exige um LOGON diferente, pois normalmente esto em servidores diferentes. Depois de configurado, basta logar para visualizar a tela do SAP.

Curso de ABAP 2006 Emmanuel Lima PG: 4

Autor e Instrutor:

3 - Dicionrio de dados SE11.O gerenciamento de banco de dados no SAP feito pela SE11, o Dicionrio de Dados uma interface entre o SAP e o banco utilizado pelo cliente, que pode ser qualquer um, Oracle, SQL Server, etc. Para os desenvolvedores, funcionais e usurios, o banco utilizado no faz diferena nenhuma, todo gerenciamento, como , criao de campos e tabelas, consultas, alteraes, excluses, ndices, chaves e tudo mais, feito no Dicionrio de Dados do SAP que traduz todo esse gerenciamento direto no Bando de Dados. Existem basicamente trs tipos de tabelas no DDADOS, tabelas Standard: 1) Tabela Transparente: Tabela comum, como conhecemos, com campos separados, chaves, ndices, etc. 2) Tabela Cluster: Normalmente so as tabelas gigantescas do SAP, com milhes de registros, chamadas de Tabelas MESTRES, e devido a quantidade imensa de linhas armazenas, para facilitar o arquivamento e buscas as chaves so reduzidas e os campos formam uma nica coluna string com os campos chaves no incio, sesta maneira a busca instantnea desde que sejam respeitados as regras para isso, essas regras sero tratadas no tpico especfico. 3) Tabela Customizada: Tabela comum, criada. Tudo no SAP que customizado, somente pode comear com as letras Z ou Y, sendo mais usada letra Z, todas as outras letras so reservadas para os objetos Standard. Ento vamos criar uma tabela. No campo de transaes digite SE11 e tecle enter.

Curso de ABAP 2006 Emmanuel Lima PG: 5

Autor e Instrutor:

3.1 - Domnio. Mas antes de criar uma tabela, precisamos entender uns conceitos: As tabelas so formadas por colunas e as colunas (campos) tm duas caractersticas: 1) rtulo ttulo e mscaras 2) fsico tipo e tamanho. Estas duas caractersticas so declaradas fora da tabela e relacionadas posteriormente coluna. De forma que uma mesma caracterstica pode ser relacionada com vrios campos ao mesmo tempo. Para que isso? Vamos supor que uma caracterstica fsica como MOEDA (numrico de 9 com 2 decimais) com o rtulo CRUZEIRO - seja relacionada vrios campos de vrias tabelas que so citados em vrios programas e telas, ento vem o governo e corta 3 zeros e muda o nome pra REAL, proto, l vem a confuso, mudar todos os campos, todos os cdigos e todas as telas e relatrios... danou-se. Mas na verdade basta mudar duas caractersticas: 1) rtulo ELEMENTO DE DADOS e o 2) fsico DOMNIO. Ento vamos comear criando uns domnios que vamos utilizar, lembrando que j existem vrios domnios Standard que poderamos utilizar, porm algumas vezes precisamos de um domnio especfico que no existe. Depois de entrar na SE11, marque o radiobutton Domnio e digite o nome no campo frente, igual tela abaixo, clique em Criar.

Comeando a criar o DOMNIO, preencha a Descrio breve e escolha pelo matchcode o tipo CHAR.

Curso de ABAP 2006 Emmanuel Lima PG: 6

Autor e Instrutor:

Preencha o campo Num. Posies com 100. E tecle enter para validar a tela. Existem trs passos em quase todos os processos de criao dentro do SAP para efetivar a criao, 1) SALVAR, independente de estar certo , errado ou concludo, 2) VERIFICAR, para verificar erros no processo de criao e 3) ATIVAR, somente aps a ativao do objeto ele passa a existir para ser utilizado. Ento vamos passo a passo: Clique no cone 1). SALVAR.

Esta tela aparecer sempre que um objeto qualquer estiver sendo criado, nela se define qual o Pacote de desenvolvimento ser usado, os pacotes so predefinidos pela gerncia de projeto, mas quando no tiver necessidade de se indicar um pacote especfico, pode ser colocado como objeto local ($temp). Clique no boto Objeto local ou escreva $TEMP no campo pacote e salve.

Curso de ABAP 2006 Emmanuel Lima PG: 7 O prximo passo 2). VERIFICAR , clique no cone , se tiver tudo certo aparecer no rodap a mensagem :

Autor e Instrutor:

o cone 3).ATIVAR , estando tudo ok e no tendo outros objetos pra serem ativados, aparecer a mensagem:

E para finalizar e efetivar a criao do DOMNIO ou de qualquer outro objeto no SAP, clique Como exerccio crie os DOMNIOS que usaremos : ZD_CHAR50 (caractere de 50 espaos), ZD_CHAR20 (caractere de 20 espaos), ZD_CHAR10 (caractere de 10 espaos), ZD_NUNC03 (numrico de 3 dgitos). 3.2 - Elemento de dados. Para criar o 1 elemento de dados , v a se11, marque o radiobutton Categoria dados, coloque o nome ZE_NOMES, clique em Criar, um prximo popup abrir, marque o Elemento de dados e clique em Avanar.

Preencha a Descrio breve e no campo Domnio relacione o DOMNIO ZD_CHAR100, criado anteriormente, tecle enter para validar a tela, trazendo as informaes do domnio escolhido.

Curso de ABAP 2006 Autor e Instrutor: Emmanuel Lima PG: 8 Passe para aba Denomin.campo, nesta aba, existem 4 campos para denominao ou rtulo do campo, em 4 tamanhos diferentes, no caso do elemento de dados para NOME, a descrio poder ser somente Nome mesmo , mas para outros que exigem uma denominao mais complexas, o ideal colocar as 4 descries, sendo um ttulo bem completo e outras descries menos longas at que se chegue em uma abreviao simplificada na descrio BREVE. Isso acontece porque o SAP vai tentar usar o rtulo que melhor se encaixe no espao disponvel de visualizao ou impresso da descrio do campo. Um exemplo de rtulo completo. Depois de digitar os textos, d um enter que o comprimento ser calculado e mostrado.

Agora SALVE como objeto local, VERIFIQUE e ATIVE. Crie os elementos de dados: ZE_COD Cdigo, Numrico de 3 ZE_ENDE Endereo, 50 caracteres ZE_NUM Nmero, Numrico de 3 ZE_COMP - Complemento, 10 caracteres ZE_BAIRRO Bairro, 20 caracteres ZE_CID - Cidade, 20 caracteres. 3.3 - Tabela Transparente. Ento vamos criar uma tabela. Na SE11 marque Tab. banco dados e preencha o nome com ZAGENDA, clique em criar.

Preencha a Descrio breve com Agenda de endereo , marque a Classe de entrega com A e escolha Exibio/atualizao permitida, passe para aba Campos.

Curso de ABAP 2006 Emmanuel Lima PG: 9

Autor e Instrutor:

Nesta aba aparecer um grid em branco, preencha o nome de cada campo na primeira coluna, sendo que o primeiro campo de qualquer tabela transparente sempre o campo mandt, que relativo ao mandante da tabela, nele que o SAP controla em qual mandante o registro pertence, ex: se o registro for gravado na produo, o campo MANDT receber o nmero da produo e s ser visto no ambiente de produo, e assim acontecer nos outros ambientes: Qualidade e Desenvolvimento. Preencha o elemento de dados relativos a cada campo, lembrando que o elemento de dados do mandante Standard (MANDT) depois d um enter para validar a tela e completar automaticamente com a caracterstica dos domnios que j esto ligados aos elementos de dados. Vamos marcar os 3 primeiros campos como chave... o MANDT sempre chave. Tudo pronto? Salve como objeto local e clique em Configuraes tcnicas.

Curso de ABAP 2006 Emmanuel Lima PG: 10 Em Tipo de dados escolha no matchcode APPL0, que define a tabela como transparente .

Autor e Instrutor:

E em Categor.tamanho coloque 0 que aloca um espao estimado no banco de dados.

Salve e Volte , na tela de criao de tabela ela est pronta para ser Verificada e Ativada. A tabela ZAGENDA j existe no banco de dados. 3.4 - Ajuda de pesquisa. Quando vamos editar um campo e temos um matchcode muito bom, no s para ajudar na busca do texto ideal como para diminuir a digitao. Mas pra isso temos que criar uma ajuda de pesquisa e relacion-la com o campo da tabela ou com o campo da tela que queremos que este matchcode aparea. Ma SE11, marque o radiobutton Ajuda de pesquisa preencha o nome da ajuda de pesquisa que vamos criar: ZH_NOME. No prximo popup escolha Ajuda p/pesquisa elementar

Preencha a Descrio breve e no campo Mtodo de seleo coloque o nome da tabela transparente da qual ser exibido o contedo. Abra o matchcode na coluna Parmetro de ajuda p/pesquisa no grid abaixo e selecione o campo CODIGO, confirme.

Curso de ABAP 2006 Emmanuel Lima PG: 11

Autor e Instrutor:

Preencha a Descrio breve e no campo Mtodo de seleo. coloque o nome da tabela transparente da qual ser exibido o contedo. Abra o matchcode na coluna Parmetro de ajuda p/pesquisa no grid abaixo e selecione o campo CODIGO, confirme. Repita o procedimento para o campo NOME. Marque o NOME com campo de importao o CODIGO como importao e exportao ao mesmo tempo, para que ele possa ser importado para ajuda de pesquisa e exportado para o campo da tela correspondente, nas colunas da frente deve ser colocado uma numerao seqencial e repetido para quantos forem os campos escolhidos. Deve ficar assim. Salve como objeto local, verifique e ative. A ajuda de pesquisa est pronta para ser usada, temos agora que colar esta ajuda de pesquisa na tabela ou em uma tela. 3.4.1 - Ajuda de pesquisa em campo de tabela. Entre, pela SE11, modificando a tabela ZGENDA.

Curso de ABAP 2006 Emmanuel Lima PG: 12

Autor e Instrutor:

Marque o campo que deseja relacionar a ajuda de pesquisa, clique no boto Ajuda ps. , no popup aberto coloque o nome da ajuda de pesquisa criada anteriormente e confirme.

Na prxima tela , clique no boto transferir, a resposta deve ser positiva, caso contrrio mande primeiramente Gerar proposta. possvel que no se possa relacionar diretamente a ajuda de pesquisa ao campo, ento vai aparecer um popup de informao, basta confirmar e continuar.

BOM CORRIGIR OS FANTASMAS DO SAP: TROQUE NMERO POR CODIGO NA MO MESMO. A mensagem de ser assim:

Depois de salvar , verificar e ativar a tabela novamente, est pronto, quando for executar o cdigo onde o campo da tela tiver sido declarado relacionado com o campo da tabela ZAGENDA-

Curso de ABAP 2006 Autor e Instrutor: Emmanuel Lima PG: 13 CODIGO este vai trazer o matchcode com a ajuda de pesquisa ZH_NOME associado. Teste na SE16, onde voc pode dar manuteno direta na tabela transparente. 3.4.2 - Ajuda de pesquisa em campo de tela. Neste caso colamos a ajuda de pesquisa direto no cdigo que define a tela , com o comando MATCHCODE OBJECT.

Nos dois casos o resultado deve ser o mesmo: Clique no matchcode e abrir uma lista para escolha do valor. D duplo-clique em uma linha e o campo assume o valor dela. Se existirem mais campos na tela com o mesmo tipo que na ajuda de pesquisa e este campo na ajuda for de exportao, o campo da tela tambm recebe o valor do campo da ajuda de pesquisa.

Ento fica assim:

Curso de ABAP 2006 Emmanuel Lima PG: 14

Autor e Instrutor:

3.5 - Viso. Muitas vezes interessante ter uma VISO de duas tabelas ao mesmo tempo, tabelas com grande nmero de colunas e que se relacionam por alguns campos ou por ao menos um dos campos. Para isso existem as Vises que fundem tabelas em uma nica viso funcionando como uma tabela nica, permitindo buscas e pesquisas em uma s ao. Bomcriando uma viso: Vamos usar tabelas Standard e criar uma viso Z, v a SE11, marque o radiobutton Viso, digite o nome ZV_TEXTO e clique o boto Criar. Neste popup escolha Viso de banco de dados e clique no boto Transferir .

Nesta primeira tela , temos que colocar as tabelas que vo participar da viso e os campos que se relacionam entre elas. A viso que vamos criar do mdulo de MM e faz uma relao entre os materiais (MARA) e o texto do material (MAKT). Na tabela transparente MARA temos nmero do material , na MAKT temos os . O interessante na Viso uma composio de campos que sejam chave entre as duas e os que s existem em uma e em outra. Mas por enquanto preencha a tela como abaixo, com a descrio breve, com as tabelas e os campos que se relacionam, no pode esquecer do campo MANDT.

Na aba Cpos. Viso colocamos os campos que vo pertencer viso, com a tabela e o campo de tabela de onde vem o contedo. Salve, verifique e ative, vai dar um log de informao pois falta relacionar um campo chave, mas j funciona assim, bola pra frente , ative, neste caso pode desconsiderar o log de mensagem. Esta viso substituir uma tabela transparente no momento de uma busca via select, por exemplo.

Curso de ABAP 2006 Emmanuel Lima PG: 15

Autor e Instrutor:

3.6 - Estrutura. Uma estrutura parecida com uma tabela transparente , porm no guarda dados no banco, usada cdigo como referncia para criao de tabelas internas temporrias , estruturas de tela, de funo , etc. Sua criao igual a de tabela transparente, porm dispensa o campo mandante e chave. Na SE11 marque o radiobutton Categoria dados coloque o nome e clique em Criar .

Marque o radiobutton Estrutura e confirme. Preencha no campo Componente o nome dos campos e no Tipo componente o elemento de dados do campo, tecle enter para validar a tela , salve como objeto local, verifique e ative.

Curso de ABAP 2006 Emmanuel Lima PG: 16

Autor e Instrutor:

Pode usar nos cdigo agora.

4 - Open SQL.ALGUNS COMANDOS E SINTAX 4.1 - Finalizao e separao: -------------------------------------------------------------------------------------- Todo comando finalizado por ponto e a separao de campos feita por espao. Ex: READ TABLE it_bsis WITH KEY bukrs = v_bukrs hkont = v_hkont augdt = v_augdt. - Quando houver uma repetio do mesmo comando, a sintaxe pode ser simplificada pelo uso de dois pontos separando os comandos por vrgula, sempre encerrando com ponto. READ TABLE: it_bsis index 1, It_bsis2 index 1, It_bsis3 index 1. 4.2 - Comentrios: -------------------------------------------------------------------------------------------------- Comentrio geral comea com * (asterisco) e muda o texto para azul. Ex: * Incio das declaraes.

Curso de ABAP 2006 Emmanuel Lima PG: 17 - Comentrio de linha comea com ( aspa dupla ) e no precisa fechar. Ex: Data v_exemplo(10) type c. Varivel de exemplo Caractere de 10.

Autor e Instrutor:

4.3 - Declaraes:-------------------------------------------------------------------------------------------------Variveis e constantes: Data Declara variveis, constantes , tabelas internas e estruturas Type Declara o tipo , ou referencia ao Dicionrio de Dados Like Assume as caractersticas de campos , tabelas e estruturas Value Declara o contedo inicial Obs: O contedo numrico declarado diretamente e o contedo tipo texto declarado entre aspa simples. - O tamanho declarado entre parnteses, sem espao. Caso no seja declarado o tamanho a varivel assume o valor inicial do tipo declarado (De acordo com a tabela de tipos). Ex: DATA v_exemplo(10) TYPE C . Varivel de exemplo texto, tamanho 10 . - O tipo declarado com o comando TYPE seguido do tipo de acordo com a tabela abaixo: Type C N D T X I P F Explanation Text (Character) Numeric text Date (YYYYMMDD) Time (HHMMSS) Hexadecimal (HEX code) Integer Packed number Floating point number SL 1 1 8 6 1 4 8 8 Initial value space '00...0' '00000000' '000000' X'00' 0 0 0 Obs Qualquer Caracter No ideal para contas Assume data em qualquer formato Na soma, vira o dia aps as 24:00 praticamente infinito S assume a parte inteira

Ex: DATA v_exemplo(10) TYPE C. DATA v_exemplo TYPE I. DATA v_exemplo TYPE N.

Varivel de exemplo tipo texto de 10 espaos. Varivel de exemplo tipo inteiro . Varivel de exemplo tipo Numrico de 1 dgito.

- Tambm pode assumir todas as caractersticas de um campo de tabela. Usando o comando TYPE para Banco de Dados e LIKE para referncias dentro do programa. Ex: CONSTANT c_exemplo TYPE ztexemplo-cod VALUE 100. Constante de exemplo , numrico de 3 , com contedo = 100 Onde ztexemplo = tabela transparente e cod=campo da tabela. CONSTANT c_exemplo2 LIKE c_exemplo. - Caso no sejam declarados o tamanho nem o tipo assume-se o tipo C tamanho 1. Ex: CONSTANT c_exemplo VALUE A Constante de exemplo , texto de 1, contedo = A OBS: A diferencia de varivel e constante que uma constante uma vez declarada com um valor , nunca assume outro valor dentro do cdigo, mas na prtica varivel funciona pra todas situaes. De forma que constante pra mim uma varivel fixa. 4.4 - Tabelas

Curso de ABAP 2006 Autor e Instrutor: Emmanuel Lima PG: 18 - As tabelas transparentes (customizadas) e as tabelas Standard, quando forem usadas em um report deveram ser declaradas com o comando TABLES. Ex: TABLES ztexemplo. Estruturas e Tabelas Internas Data Declara variveis, constantes , tabelas internas e estruturas Begin off /endoff Declara uma tabela interna com campos escolhidos Include Structurs- Soma uma estrutura nova em uma tabela interna Occurs 10 Define uma I.T. com 10 linhas, se for Occurs 0, o nmero indefinido. Heder line Linha de cabealho da tabela interna. TYPE Declara um tipo, que ser usado como forma de uma estrutura ou tabela interna. -Tabela interna - uma tabela temporria usada somente no report que ela foi declarada, com o objetivo de receber os dados que vo ser trabalhados, evitando um acesso constante no banco de dados em busca destes dados. A tabela interna pode ser do mesmo tipo de uma tabela transparente criada na SE11 ou ter campos escolhidos pelo desenvolvedor, de acordo com a lgica. - Estrutura - idntica a tabela interna porm no pode receber mais de um registro. - Tipo - no recebe dados, servindo apenas de referncia para outras declaraes dentro do report. - As estruturas e tabelas internas inicialmente so criadas da mesma maneira, podendo usar variaes de sintaxe com os mesmos ou outros objetivos. - Declarar uma estrutura com os mesmos campos de uma tabela Z. Ex: DATA s_exemplo TYPE ztexemplo. Obs: Se a varivel s_exemplo do mesmo tipo de uma tabela Z, ento ela no simplesmente uma varivel, uma estrutura com os mesmos campos da tabela Z. -Declarar uma estrutura com campos definidos. Ex: DATA BEGIN OF s_exemplo, cod LIKE v_cod, nome(40) TYPE C, END OF s_exemplo.

-Declarar uma tabela interna com as caractersticas de uma tabela Z. Ex: DATA it_exemplo TYPE ztexemplo OCCURS 0. -Declara uma tabela interna com as caractersticas de uma estrutura. Ex: DATA it_exemplo LIKE s_exemplo OCCURS 0. -Declara uma tabela interna com campos escolhidos. Ex: DATA BEGIN OF it_exemplo OCCURS 0, cod LIKE ztexemplo-cod, nome(40) TYPE C, END OF it_exemplo. -Somar uma estrutura nova e um campo novo em uma tabela interna. Ex: DATA BEGIN OF it_exemplo OCCURS 0, INCLUDE STRUTURE s_exemplo, endereco(40) TYPE C. DATA END OF it_exemplo.

Curso de ABAP 2006 Emmanuel Lima PG: 19

Autor e Instrutor:

Obs: O comando INCLUDE STRUTURE pede o ponto final, ento preciso do comando DATA END OF para encerrar a declarao da I.T. -Declarar um tabela interna com HEADER LINE. DATA it_exemplo LIKE ztexemplo OCCURS 0 WITH HEADER LINE. Obs: O comando WITH HEADER LINE declara uma tabela interna com cabealho que recebe o contedo do ponteiro (linha atual) para poder ser lido. Quando uma tabela interna declara usando o DATA BEGIN OF, o Header Line automtico. 4.5 - Entradas de tela.-------------------------------------------------------------------------------------------4.5.1 - Parameters O comando parameters usado para receber entradas na tela. Ele por si s, gera um on-line com uma tela contendo o campo de entrada de acordo com sua declarao. Ex: PARAMETERS p_exe1(10) TYPE C. Obs.: A varivel p_exe1 recebe a entrada (input). 4.5.2 - Select-options O comando select-options tem a mesma funo do parameters, usado para receber entradas na tela, porm recebe dois valores e gera uma ranger em forma de tabela contendo um perodo de valores entre o menor e o maior valor das entradas. Ele tambm por si s, gera um on-line com uma tela contendo os 2 campos de entrada de acordo com sua declarao. Ex: SELECT-OPTIONS p_exe2 TYPE sy-datum. SY-DATUM um campo do sistema que contm a data do dia, fazendo com que p_exe2 tenha o tipo de data. Obs: Os 2 comandos podem receber a clausula ...OBLIGATORY, dando consistncia ao campo de entrada. Ex: PARAMETERS p_exe1(10) TYPE C OBLIGATORY. 4.6 Desenvolvimentos--------------------------------------------------------------------------------------------4.6.1 - If / Endif -O comando IF funciona como em qualquer SQL, a nica caracterstica a finalizao de todas linhas do comando com ponto final. Ex: IF v_exemplo INITIAL. Se a v-exemplo no tiver o valor inicial. v_exemplo = v_exemplo +1. Acumula + 1 ENDIF. Fim de Se 4.6.2 - Case/ When/ Endcase -O comando CASE/ENDCASE tambm padro e suas linhas terminam com ponto final. Ex: CASE sy-ucomm. Caso o ltimo boto clicado. WHEN back. for back Leave program. sai do programa WHEN ente. for ente Leave screen 200. vai para tela 200 WHEN OTHERS. for outro Message e000. d mensagem de erro ENDCASE. Fim de Caso.

Curso de ABAP 2006 Emmanuel Lima PG: 20 4.6.3 - Loop At tabela_interna /Endloop

Autor e Instrutor:

-O comando LOOP AT faz um processamento acontecer para cada registro de uma tabela interna e encerra o processamento aps o ltimo registro ou com uma condio de parada. Ex: LOOP AT it_exemplo. Para cada registro da it_exemplo It_exemplo-salario = It_exemplo-salario * 1,10 . aumenta o valor do salrio em 10% END LOOP. Fim do loop. LOOP AT it_exemplo It_exemplo-salario = It_exemplo-salario * 1,10 . EXIT - Sai do loop. END LOOP. LOOP AT it_exemplo IF It_exemplo-salario < 1000. CONTINUE. Pula para o prximo registro. ENDIF. It_exemplo-salario = It_exemplo-salario * 1,10 . END LOOP. 4.6.4 - Select / into/ from/ where - atravs do comando SELECT que acessamos o banco buscando os dados para uma varivel ou mais normalmente para uma tabela interna de acordo com uma condio, e a partir da tabela interna carregada que executamos todo o processamento diminuindo o trfego na rede e o nmero de acesso no banco de dados. So vrias as formas do SELECT, para vrios objetivos, a velocidade do processamento depende muito do bom uso deste comando. -No formato bsico do SELECT os dados so selecionado para uma estrutura, a partir de uma tabela do banco de dados de acordo uma condio especificada no report. Ex: SELECT SINGLE nome Seleciona o campo nome INTO v_exemplo Para dentro da varivel v_exemplo FROM z_exemplo De dentro da z_exemplo WHERE cod = 010. Quando o contedo do campo cod for 010 Obs: S tem ponto final quando acaba por completo o comando. -Seleciona todos os campos e imprime. Ex: SELECT * Seleciona estes todos os campos INTO s_exemplo Para dentro da s_exemplo FROM z_exemplo De dentro da z_exemplo WERE DATA < sy-datum. Quando a data for menor que a data do sistema. WRITE s-exemplo-cod. Imprime o contedo do campo cdigo END SELECT. Fim do Select. Neste caso o SELECT traz o primeiro registro que atenda a condio where e joga na estrutura s_exemplo. Da imprime o cdigo. Quando ele acha o endselect ele d um loop na tabela pega o segundo registro do banco e joga na estrutura s_exemplo (sobrepondo o que estava l). Imprime novamente o cdigo. Quando chega no endselect de novo, ele d um loop na tabela, pega o 3 registro do banco, joga na s_exemplo (sobrepondo de novo) e assim por diante at o fim da tabela. ATENO: S use esse critrio (SELECT / END SELECT) quando souber com certeza que a tabela tem poucos campos ou se realmente voc quer usar todos os campos (*) da tabela e que a tabela tem poucos registros . Algumas tabelas Standard tem mais de 100 campos e milhes de registros , ficando invivel um processamento deste tamanho. -Seleciona para uma tabela interna e imprime com uma performance mais ideal.

Curso de ABAP 2006 Emmanuel Lima PG: 21

Autor e Instrutor:

SELECT cod nome endereo bairro Seleciona estes 4 campos INTO TABLE it_exemplo Para dentro da s_exemplo FROM z_exemplo De dentro da z_exemplo WERE DATA < sy-datum. Quando a data for menor que a data do sistema. LOOP AT it-exemplo. WRITE s-exemplo-cod. EDLOOP Neste caso o select traz todos os registros que atendam a condio where e joga na tabela interna it_exemplo. Da faz o loop e imprime os cdigos . Obs.: Esta forma a MAIS utilizada porque voc l todos os registros em um s acesso, joga na tabela interna, libera o banco e passa a trabalhar s com a memria. O resultado dos 1 e 2 caso o mesmo s que o 2 eficiente. 4.6.5 - Read Table -O comando READ TABLE, l uma tabela com um campo como chave e evita fazer um SELECT dentro de outro ou SELECT dentro de um LOOP , processamentos que muitas vezes acabam em DUMP. Ex. LOOP AT it_exe1. Loop na it_exe1 READ TABLE it_exe2 WITH KEY cod = it_exe1-cod. L a it_exe2 com o mesmo cod da it_exe1. WRITE: / Funcionrio:, it_exe1-nome, Imprime o nome do pai Filho : , it_exe2-nome Imprime o nome do Filho. ENDLOOP. 4.6.6 - Perform /Form / Endform -O comando PERFORM permite direcionar o processamento para um cdigo que se encontra dentro de um FORM / ENDFORM e quando finaliza este processamento retorna para o ponto anterior, possibilitando a codificao em blocos de forms de maneira mais organizada. Ex: REPORT zrexemplo. Incio do REPORT seqncia de processamento PERFORM f_imprime_cabecalho. direciona o processamento para FORM f_imprime_cabecalho. ********FIM DO REPORT*************** ********FORMS************************ FORM f_imprime_cabealho. Write:/ Nome do Pai , Nome do Filho . ENDFORM. *********FIM DE FORMS*************** 4.6.7 -Call Funcion -O comando CALL FUNCION executa uma funo externa ao report, exportando parmetros e importando o resultado do processamento da funo de acordo com o parmetro passado. Ex: CALL FUNCTION 'GUI_UPLOAD' Inicia o FORM imprime o cabealho Fim do FORM, o processamento retorna para abaixo do PERFORM.

Curso de ABAP 2006 Emmanuel Lima PG: 22 EXPORTING filename = filetype = 'ASC' has_field_separator ='' header_length =0 read_by_line = 'X' dat_mode ='' codepage ='' ignore_cerr = abap_true replacement = '#' check_bom ='' IMPORTING filelength = header = tables data_tab = exceptions file_open_error =1 file_read_error =2 no_batch =3 gui_refuse_filetransfer = 4 invalid_type =5 no_authority =6 OTHERS = 7. IF sy-subrc 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. 4.6.8 - SY-SUBRC.

Autor e Instrutor:

A tabela SYST guarda a maioria das variveis de sistema, hora, data, status de um monte de coisa, e o SUBRC justamente o status de erro de processamento, todo processamento como , select, read table, call function e outros geram um SUBRC e quando este SUBRC = 0 significa que o processamento deu certo ou que O ERRO FOI ZERO , caso contrrio retorna o nmero do erro. 4.7 - Sada. --------------------------------------------------------------------------------------------Basicamente o reporte utilizado para processar relatrios que so impressos na tela e/ou na impressora e o comando usado WRITE, que tem uma infinidade de variaes que merecem ser estudas, veremos as principais: -Imprime um string. Ex; Write Joo. -Imprime o contedo de uma varivel. Ex: Write v_tempo. -Imprime o contedo de um campo. Ex: Write sy-datum.

-Imprime vrios campos com quebra de linha Ex: Write: / Imprime um quebra de linha data: , Imprime o string data: sy-datum , Imprime a data do sistema / Imprime um quebra de linha usurio: , Imprime o string usurio: sy-uname , Imprime o usurio do sistema / Imprime um quebra de linha nome do pai:, Imprime o string nome do pai: it_exe1-nome , Imprime o contedo do campo / Imprime um quebra de linha nome do filho, Imprime o string nome do filho: it_exe2-nome . Imprime o contedo do campo

Curso de ABAP 2006 Emmanuel Lima PG: 23

Autor e Instrutor:

5 - SE38 - REPORT ( Editor de cdigo )Na tela principal do SAP , abaixo da 1 barra de menu, ao lado direito do cone confirma (CAMPO DE TRANSAES), digite SE38 e ENTER. Vamos criar o ZCALCULA, um reporte que simula um calculadora simples. Digite o nome do reporte no campo Programa e clique em Criar.

Preencha o campo Ttulo com CALCULADORA SIMPLES , o campo Tipo com Programa executvel, o campo Status com Programa standard-SAP produtivo. Salve e classifique como Objeto Local.

Curso de ABAP 2006 Emmanuel Lima PG: 24

Autor e Instrutor:

Esta a tela do ABAP EDITOR onde desenvolvido o cdigo de programas. Ela j inicia com a primeira declarao: REPORT ZCALCLULA. E um rtulo para preenchimento.

Eu poderia deixar o cdigo em ponto de copiar e colar no editor de texto, mas interessante que seja digitado, para melhor fixao de sintax. Ento, digite o cdigo , como est na tela abaixo. Logo aps: salvar, verificar, ativar, e executar.

Curso de ABAP 2006 Emmanuel Lima PG: 25

Autor e Instrutor:

O resultado deve ser: Uma tela de entrada que aps e preenchimento e a execuo, gera um relatrio em outra tela. 1 Resultado Tela de parmetro de entrada

2 Resultado Tela de Relatrio.

Curso de ABAP 2006 Emmanuel Lima PG: 26

Autor e Instrutor:

Obs: O Back na 2 tela retorna para 1 tela e o back na 1 tela abandona o cdigo, voltando para transao SE38. Para imprimir o relatrio, basta clicar no cone de impresso, escolha a impressora que deve estar pr-configurada, No campo Dispositivo de sada e clique em avanar.

No apropriado deixar o nome dos parmetros de tela se apresentarem para o usurio como foram declarados no cdigo, o ideal que exista uma mscara apropriada.

Para realizar esta mudana, volte para o editor de texto e clique em Ir para / Elemento de texto / Textos de seleo , se aparecer um popup para salve, salve o cdigo.

Curso de ABAP 2006 Emmanuel Lima PG: 27

Autor e Instrutor:

O grid abaixo aparecer, com o nome declarado no cdigo para que seja colocado a mscara para cada parameters e select-options que existirem. Preencha com o texto ideal, salve , ative, volte para o cdigo e execute novamente.

Para colocar este cdigo em um padro ABAP mais ideal, blocar o processamento sempre mais usual, para isso criamos PERFORMS e FORMS: inclua no cdigo os dois performs abaixo e clique duas vezes no nome do perform declarado, confirme os popups a seguir. Ser criado o form correspondente para criao da sub-rotina.

Curso de ABAP 2006 Emmanuel Lima PG: 28

Autor e Instrutor:

Escolha o mesmo programa (Programa bsico) a no ser que queira criar um include externo ao cdigo, esta opo interessante quando outros cdigos tambm iro utilizar esta mesma sub-rotina.

Um form / endform com rtulo ser criado automaticamente abaixo da ltima linha de cdigo existente, permitindo a incluso da sub-rotina.

Faa o mesmo para o form de impresso. Veja que o resultado e a performance no vo mudar, porm o cdigo fica com um a estruturao mais adequada para futuras manutenes.

Curso de ABAP 2006 Emmanuel Lima PG: 29

Autor e Instrutor:

5.1 - PRETTY PRINTER Formatando automaticamente uma edio de report. Para facilitar a edio de texto e ajudar na correo da sintaxe , o ABAP conta com uma funo de ajuste de texto automtico: Pretty Printer. Vejamos um cdigo digitado aleatoriamente.

Primeiro , configuramos o Pretty Print.: clicar em Utilitrios / Configuraes, aba Editor ABAP/Pretty Printer, o mais usual colocar as palavras chaves em maisculo, o que significa que os comandos ficam em caixa alta e as variveis em caixa baixa, porm string respeitado.

Bom agora basta clicar no boto PRETTY PRINTER para que o texto fique assim. Indentado e configurado. Se no houver configurao, porque existe erro na sintax.

Curso de ABAP 2006 Emmanuel Lima PG: 30

Autor e Instrutor:

5.2 - MODELO 5.2.1 - MODELO para MENSAGEM Outra ferramenta muito til a funo de MODELO que te permitem gerar comandos completos, funes, declaraes de estruturas, etc. Para test-la , vamos incluir uma mensagem de Erro para sinal incorreto no WHEN OTHERS. No editor de cdigo, Marque a linha do comando Write, que ser substituda e clique o no boto Modelo.

Marque o radiobuton , MESSAGE e preencha o ID com su , Tp, com E e o N com 000. Clique em avanar.

Curso de ABAP 2006 Emmanuel Lima PG: 31

Autor e Instrutor:

Existem alguns tipos de mensagens; Erro (E), Informao (I), Warning (W), Abortagem (A), Sucesso (S) e o Exit (X). As mensagens so guardadas em tabelas, com nome ID, N. EX: a Classe ID SU, N 000

Esta mensagem composta de nenhum texto e 4 parmetros que podem ser substitudos por string ou variveis compondo um texto dinmico. Substitua os parmetros & de acordo com o texto abaixo, salve, verifique, ative e execute o programa , colocando qualquer coisa no campo Operao, veja o resultado.

Este tipo de mensagem E, dada no rodap e trava o processamento. Cada tipo tem uma funo diferente.

Curso de ABAP 2006 Autor e Instrutor: Emmanuel Lima PG: 32 Eu indico o uso da mensagem tipo I que gera um popup na tela aguardando uma confirmao de leitura e com o auxilio do comando STOP retorna o processamento para tela de entrada da rotina.

Popup gerado pela mensagem tipo I.

5.2.2 - MODELO / FUNO Para editar uma funo usando o modelo: coloque o cursor no ponto do cdigo que deseja incluir a funo, clique em modelo, marque o radiobutton CALL FUNCTION , preencha o nome da funo desejada e clique em avanar.

No cdigo ser includo uma sintaxe especfica da funo escolhida, com todos os parmetros de importao, exportao, tabelas e tudo mais relativo funo, em preto estar tudo que obrigatrio pra o funcionamento da funo e em forma de comentrio, em azul, estar que facultativo.

Curso de ABAP 2006 Emmanuel Lima PG: 33

Autor e Instrutor:

Em todos os casos a funo de MODELO j monta um teste de SUBRC com a mensagem Standard comentada. sempre bom usar o retorno de mensagem Standard, bastando que se tire o asterisco do cdigo. E isso vale para cada parmetro que ser usado na funo.

5.2.3 - MODELO / TABELA INTERNA, ESTRURURA. A edio de tabela interna pela funo de MODELO, facilita muito para diminuio de erro de ordem de campos , quando a tabela interna relacionada com uma tabela transparente ou estrutura do DDADOS. Localize o cursor, clique em MODELO, marque o radiobutton Objeto dados estruturado e preencha o campo Com campos de estrutura o nome da tabela transparente de onde se deseja buscar a estrutura de campos e clique em avanar.

Na prxima tela , marque os campos que vo fazer parte da tabela interna, clique em aceitar, no popup seguinte escolha o nome da tabela interna e confirme.

Curso de ABAP 2006 Emmanuel Lima PG: 34

Autor e Instrutor:

No cdigo aparecer a estrutura montada, para que transforme em uma tabela interna basta acrescentar o OCURRS 0 . Sem o OCURRS 0 a declarao ser de um estrutura simples.

5.2.4 - MODELO / SELECT. A edio de um select segue o mesmo caminho da tabela interna, logicamente tem que se escolher o radiobutton Select * From. O resultado um SELECT * com WHERE nos campos escolhidos e ENDSELECT, podendo ser simplesmente alterado manualmente para os outros tipos de selects possveis.

Curso de ABAP 2006 Emmanuel Lima PG: 35

Autor e Instrutor:

6 - Function builder (Construtor de Funes.)6.1 - GRUPO de FUNES Para criar uma funo no SAP, usamos a transao SE38, que funciona com todas funcionalidades da SE37 mais as funcionalidades especficas para construo de funes. Vamos criar a Calculadora agora , s que em formato de funo e depois utiliz-la em um cdigo. Antes de entrar na SE38, temos de criar o GRUPO de FUNES que ser pedido. Pra isso v primeiramente na SE80, escolha Grupo de funes.

Coloque o nome do Grupo de funes, e confirme o popup que abrir.

Curso de ABAP 2006 Emmanuel Lima PG: 36

Autor e Instrutor: Preencha o Texto breve e grave como objeto local.

Neste ponto , o grupo de funes onde esta funo ser relacionada, est criado e poder receber outras funes com o mesmo objetivo, que possam vir a pertencer a este mesmo grupo, neste caso para outras funes basta citar o nome deste mesmo grupo de funes, sem a necessidade de criar outros grupos.

6.2 - FUNO Agora, podemos criar a funo: Entre na SE38, coloque o nome da funo e clique em Criar.

Vai abrir um popup pedindo o grupo de funes, coloque o nome do grupo criado na SE80, veja que o nome o mesmo da funo, mas poderia ser qualquer outro, preencha tambm um texto breve referente esta nova funo a ser criada, clique em gravar, um segundo popup aparecer, ele de informao, basta clicar em avanar.

Curso de ABAP 2006 Emmanuel Lima PG: 37

Autor e Instrutor:

Uma funo constituda basicamente por parmetros de importao, exportao, tabelas e excees, estes so tpicos que se usados devem ser declarados antes de comearmos a codificar o texto fonte. Na calculadora temos trs parmetros de entrada, que a funo vai importar do cdigo, e um valor a ser exportado, o resultado, ento a declarao destes parmetros devem ser da forma abaixo:

Obs: o tipo de referncia um elemento de dados que encaixa no tipo da varivel declarada, depois de digitado, basta um enter para que o texto breve aparea. A partir da declarao dos parmetros de importao e exportao declarados poderemos ir para edio do texto fonte. Os

Curso de ABAP 2006 Autor e Instrutor: Emmanuel Lima PG: 38 parmetros j apareceram na edio como comentrio, mas eles j estaro existindo para o cdigo. O cdigo dever ser inserido entre o functin/endfunction.

Acrescente o cdigo abaixo, salve, verifique e ative.

Para testar a funo criada: clique no cone Testar / executar . Preencha os parmetros e execute, pelo F8. A funo est pronta, vamos us-la em um cdigo criado na SE37. V para SE37 e copie a ZCALCULA para ZCALCULA2 usando o cone de copiar, s dar o nome do cdigo novo, clicar em copiar, marcar todos os flags , clicar em copiar novamente e salvar como objeto local. 6.3 - COPIAR CDIGO.

Curso de ABAP 2006 Emmanuel Lima PG: 39

Autor e Instrutor:

Para editar o cdigo novo, clique em modificar

.

Para editar a funo ZCALCULA neste cdigo: localize o cursor no texto, substuindo o cdigo do form f_calccula_valor, onde voc deve colar a funo, clique no boto MODELO, coloque o nome da funo no campo de CALL FUNCTION e clique em Avanar.

A funo aparecer como padro e deve ser completada com as variveis com cdigo, como abaixo. Use o boto PRETTY PRINTER para formatar o texto, salve, verifique, ative e execute o novo cdigo, o resultado do ZCALCULA2 dever ser o mesmo do report ZCALCLULA.

Curso de ABAP 2006 Emmanuel Lima PG: 40

Autor e Instrutor:

Como estamos dentro do cdigo do REPORT, estamos EXPORTANDO os valores do cdigo para serem processados pela funo e o cdigo do REPORT vai IMPORTAR o resultado. Quando estamos no cdigo da FUNO estes conceitos so invertidos: A FUNO IMPORTA dados do report e EXPORTA o resultado.

Curso de ABAP 2006 Emmanuel Lima PG: 41

Autor e Instrutor:

7 - RelatriosNo SAP temos basicamente 4 meios de gerar um relatrio: 1) Lista simples, via comando WRITE que imprime linha por linha de processamento. 2) ALV, relatrio dinmico, via funes ALV, que so preenchidas no cdigo de acordo com seus parmetros e produzem um relatrio com uma varivel gama de funcionalidades Standard. 3) SAPSCRIPT , poderosa ferramenta que permite uma impresso localizada de texto, variveis e de logotipos, funciona por um conjunto de funes stardadas no decorrer do cdigo. 4) SMARTFORMS , tem as mesmas funcionalidades do SAPSCRIPT porm, uma ferramenta nica, mais amigvel, com uma visualizao parcial do resultado durante o desenvolvimento que em forma de TREE e que gera uma nica funo para ser startada em cdigo. Neste curso veremos somente a lista simples, pois todos os outros tpicos merecem um curso especfico para cada um. Vamos fazer um cdigo onde , 1-declaramos uma tabela interna, e de acordo com alguns 2- parmetros de entrada de tela , 3-buscamos os dados de uma tabela transparente para popular a tabela interna declarada e depois vamos 4-imprimir o contedo desta tabela em forma de lista simples, porm bem desenhada , com cores, zebra, cabealho e tudo que forma um bom layout. Ento podemos dividir nosso cdigo em 4 aes, 2 de declaraes e 2 de processamento. Declaraes: 1 - Tabela interna, 2- Tela de parmetros Processamento: 3 Busca de dados, 4- impresso dos dados. Na SE38, crie o ZLISTA e v para o editor de report com o ttulo Lista Simples e grave como local. Por enquanto vamos editar estes comentrios dividindo e organizando o cdigo.

Este o ponto de partida para qualquer cdigo, o mnimo de blocos organizacionais que devemos ter em uma edio de cdigo, a partir da , encaixamos o restante de acordo com a especificao do objetivo. Vamos montar as declaraes e a tela com a mscara.

Curso de ABAP 2006 Emmanuel Lima PG: 42

Autor e Instrutor:

O perform f_busca_dados via select.

Para no finalizar: o form f_imprime_dados que na verdade ser subdividido em mais dois forms: 1) f_imprime_cabec - onde ser tratado a impresso do cabealho do relatrio 2) f_imprime_conte onde ser tratado a impresso do contudo do relatrio.

F_IMPRIME_CABEC.

Curso de ABAP 2006 Emmanuel Lima PG: 43

Autor e Instrutor:

Montado este Form, faa um teste, comente a linha PERFORM f_imprime_conte, salve, verifique, ative e execute o cdigo, o resultado deve ser este: 1 a tela de parmetro, onde deve ser colocado o nome de um dos registros existentes e depois: F8.

Caso o nome digitado no exista ainda includo na tabela, deve aparecer um popup como este:

Neste caso , confirme e reedite o nome na tela principal do programa. 2 o cabealho do relatrio na tela, com os botes Standard ativados.

Curso de ABAP 2006 Autor e Instrutor: Emmanuel Lima PG: 44 Obs: a barra / faz a quebra da linha, o termo sy-uline e sy-vline, so campos da tabela SYST que contm respectivamente uma linha contnua e um barra vertical e o nmero colocado antes do itens a ser impresso localiza a coluna inicial de impresso do item. F_IMPRIME_CONTE. Descomente a linha PERFORM f_imprime_conte, crie e monte o este form desta maneira:

Ative o cdigo e execute, imaginando que o cdigo pode se repetir classificando os nomes de alguma maneira, escolha um cdigo do qual exista repeties no arquivo , para que seja impresso mais de um registro.

Vamos destacar o cabealho com uma cor e zebrar o contedo.

Curso de ABAP 2006 Emmanuel Lima PG: 45

Autor e Instrutor:

Zebrando.

Ficou assim, bem colorido:

Por enquanto est bom, mas se a pgina foi definida com 65 linhas, como fazer o controle de quebra de pgina para repetio do cabealho? Existem duas maneiras, uma seria via controle de

Curso de ABAP 2006 Autor e Instrutor: Emmanuel Lima PG: 46 lgica, com a declarao de uma varivel contadora de linha que quando atingisse o valor de 65 , imprimiria novamente o cabealho e continuaria imprimindo o contedo da tabela interna. Porm em ABAP , normalmente este controle feito via EVENTOS de impresso, como o START-OF-SELECTION que dispara o processamento quando acionado o F8. O evento que vamos usar para repetir o cabealho na quebra de pgina o TOP-OF-PAGE e ele normalmente declarado logo aps a declarao dos parmetros de tela, mas pode ficar em qualquer lugar do cdigo, no sendo no meio de outro evento. Como o cabealho est dentro de um form fica fcil alterar o cdigo para usar este evento.

O form f_imprime_dados pode ser excludo e no seu lugar fica o form f_imprime_conte. E agora sempre que o cdigo atingir o primeiro comando WRITE ele, antes de executlo, vai executar o que est no evento TOP-OF-PAGE , que o cabealho e isso vai acontecer sempre que houver a quebra de pgina.

8 - Batch Input / InterfaceNa implantao do SAP geralmente um sistema de informatizao LEGADO ser substitudo, porm os dados dos processos atuais sero transferidos para o SAP que passar a gerenci-los. Porm , mesmo usando o mesmo banco de dados, o SAP exige um nvel de consistncia e validaes dos dados imputados e por isso eles no podem simplesmente serem jogados diretamente nas tabelas do SAP, esses dados precisam passar pelas transaes Standard, a fim de receberem as devidas consistncias e validaes de cada transao executando uma CARGA perfeita . Em um processo semelhante o SAP transporta arquivos tipo TXT , EXCEL, etc, que venham de outros sistemas que funcionem paralelo ao SAP, no seria um sistema legado, mas um funcionamento de DELTA. O sistema paralelo exporta seus arquivos para um arquivo formatado para um endereo especfico e o processo de INTERFACE do SAP importa este arquivo dando entrada

Curso de ABAP 2006 Autor e Instrutor: Emmanuel Lima PG: 47 nas transaes Standard, como se os arquivos fossem digitados registro por registro manualmente, mantendo a consistncia e guardando o log de erro em uma tabela prpria permitindo o processamento dos dados aps os devidos acertos. 8.1 SHDB (Mapeamaneto de transao) Para conseguirmos incluir via cdigo uma carga de dados, temos que MAPEAR a transao que vai receber estes dados, para possamos imputar na ordem certa, nos campos de tela certos, dando os comandos e trocando de telas no momento correto, de acordo com a necessidade de cada processo. Para isso temos uma ferramenta que grava passo a passo entrada manual de dados e gera um mapeamento da transao do incio ao ltimo comando, para que baseado neste mapeamento possamos construir o cdigo com perfeio. Ento o primeiro passo para se construir uma carga ou uma interface gravar o mapeamento da transao que vai receber os dados. Entre na transao SHDB. Clique em Nova gravao .

No campo Registro, coloque o nome do mapeamento, no campo Cdigo de transao coloque o nome da transao que ser gravada. A partir da prxima tela , voc j estar dentro da transao e cada tela ser gravada com todo seu contedo digitado, campos preenchidos e campos em branco e o comando que for dado, (boto clicado, enter, etc). Antes de passar para o prximo passo, abra outra seo e entre na transao que vamos gravar, a FI01, que cria bancos, estude a transao, verifique quais os campos e comandos sero utilizados, para que a gravao seja a mais enxuta possvel, sem nada desnecessrio. Depois de alguns testes e com a transao bem conhecida, volte para o SHDB e continue, clique em Avanar. Caso voc esteja fazendo este treinamento no Mini SAP, a transao deve uma customizada anteriormente, porm o processo o mesmo.

Curso de ABAP 2006 Emmanuel Lima PG: 48

Autor e Instrutor:

A transao FI01 pode ser utilizada atravs de 2 telas. Na primeira, entre com o Pas : BR e com um nmero seqencial como Chave do Banco. Tecle ENTER para passar para prxima tela. Na segunda tela entre somente com os dados de Endereo e SALVE. Eis o MAPEAMENTO da FI01. Para cada comando dados no mapeamento foi gravado um bloco que comea com o nome do programa e a tela do momento do comando,aa primeira e segunda colunas, a terceira coluna indica com um X se a linha do grid de tela ou de campos, a partir da prxima linha somente a colunas de campos so preenchidas: a quarta coluna , primeira linha o cursor (BDC_CRUSOR) e sua posio na tela est na quinta coluna (campo BNKA-BANKL), na quarta coluna, segunda linha temos o comando (BDC_OKCODE) e na quinta coluna a representao do comando ENTER (/00). A partir das prximas linhas temos na quarta coluna o nome do campo da tela e na quinta coluna o contedo do campo. Linha cursor Campo onde estava o cursor comando dado Linha comando O

Curso de ABAP 2006 Emmanuel Lima PG: 49 Indica o Indica que a linha Contedo do campo digitado programa e a tela de programa e tela.

Autor e Instrutor: Nome dos campos

8.2 Carga Na SE38 crie o programa ZCARGA como na tela abaixo. Atribua o pacote como Objeto Local.

Comece a construir o cdigo com os comentrios padres e comece a determinar as declaraes como abaixo. Em ABAP pouca coisa se cria e muita coisa se copia, este cdigo pode servir de base para todas as cargas via CALL TRASACTION da vida. Construa esse cdigo incluindo todos os comentrios, que sempre sero muito teis para o entendimento de cada parte.

Declaraes

Curso de ABAP 2006 Emmanuel Lima PG: 50

Autor e Instrutor:

Em relao tabela interna que vai receber os dados do txt temos que atentar para duas questes: 1) bom que o nome dos campos sejam idnticos aos seus correspondentes na tela de entrada, fica mais fcil de dar manuteno futuramente, nunca use campo1... campo2... fica fcil de fazer porm mais difcil de entender e alterar, tem mapeamentos com dezenas de campos. 2) sobre o tipo do campo, melhor que seja sempre (type c) caracter, afinal normalmente o arquivo importado estar em formato txt e a entrada do campo na tela fica melhor desta forma, mesmo que seja um nmero, valor ou data. Para saber o tamanho do campo a ser declarado , conhea o arquivo a ser importado, l tem o tamanho de cada campo, mas se ainda no existir o arquivo uma das maneiras, trabalhosa , mas a mais ideal: siga a trajetria de telas e cliques: 8.2.1 Informaes tcnicas de um campo de tela Entre na transao desejada (FI01). Coloque o cursor no contedo do campo que deseja ver suas informaes tcnicas,

Localize o cursor e CLIQUE 2X Esta tela j contm uma grande quantidade de informaes funcionais sobre o campo, clique no cone acima .

Curso de ABAP 2006 Emmanuel Lima PG: 51

Autor e Instrutor:

O tamanho do campo est no domnio vinculado ao Elemento de dados, clique 2X no nome o elemento.

Aqui tem o tamanho, o tipo, o rtulo, etc. clique em voltar para retorna s telas anteriores, quando no houver esta opo, feche a tela o X.

Para compor cada campo da tabela interna, execute esses passos, so passos usados no resto da vida de um ABAP. Continuando o cdigo...

Tela

Eventos.

Curso de ABAP 2006 Emmanuel Lima PG: 52

Autor e Instrutor:

Processamento.

Sub-rotinas. Importando os dados. A funo GUI_UPLOAD s aceita o filename type string e o parameters no aceita ser declarado desta forma , ento usamos o recurso de declara uma varivel local type string e mover o contedo do parameters para ela, usando a varivel na funo.

Curso de ABAP 2006 Emmanuel Lima PG: 53

Autor e Instrutor:

Caso a funo d ERRO.

Modo de execuo.

Neste form, para cada linha importada pela funo GUI_UPLOAD vamos executar 2 forms efetivando as entradas nas transaes. Ento colocamos os forms dentro do loop na tabela interna com os dados importados:

Curso de ABAP 2006 Emmanuel Lima PG: 54

Autor e Instrutor:

Transferindo o MAPEAMENTO. Este form a alma do batch input nele que o mapeamento e os valores dos campos so estruturados para entrar na transao FI01. Este form chama mais dois forms: um para tela e outro para campos, passando os parmetros que vo carregar os dados da tabela interna tipo BDCDATA. Para construir este form usamos o mapeamento gravado no SHDB. Abra outra seo, entre na transao SHDB, clique 2 X no nome do mapeamento e visualizando a gravao , monte este form.

Curso de ABAP 2006 Emmanuel Lima PG: 55 CALL TRANSACTION FI01.

Autor e Instrutor:

Carrega LOG de mensagens.

Impresso do LOG de mensagens.

Curso de ABAP 2006 Emmanuel Lima PG: 56

Autor e Instrutor:

8.3 Interface.