Baixe o app para aproveitar ainda mais
Prévia do material em texto
Instrutor: Felipe Fernandes Pacheco Jr. felipe.junior@resource.com.br Consultor MM Treinamento Básico de ABAP para Funcionais Abril/2013 OBJETIVO Capacitar os consultores funcionais nas principais características dos elementos que compõe a linguagem de programação ABAP: as transações que geralmente são executadas para facilitar o trabalho de pesquisa de estruturas, as ampliações (exits, enhancements, melhorias)- disponíveis no ambiente ERP SAP e ainda a utilização de Debug para depuração de programas. Será apresentado um (overview-Resumo) de tabelas, campos, domínios, elemento de dados e suas importâncias dentro da hierarquia ABAP. OBJETIVO Formas de alterar o comportamento Standard – Fluxo da Decisão. Conteúdo » Objetivo » Linguagem ABAP » Dicionário de Dados » Tracing » Programas » Comandos ABAP » Transportes » Funções » Ampliações » Carga de Dados » Dicas Especificações Funcionais » Debug Linguagem ABAP Advanced Business Application Programming(ABAP) é uma linguagem de programação alto nível desenvolvida pela empresa SAP. É a linguagem utilizada no ERP SAP, onde todo desenvolvimento é armazenado na base de dados. C COBOL Dicionário de Dados É onde definimos tabelas, domínios, elementos de dados, índices, etc. SE11 Tabelas Transparentes Tabelas de Customizing Tabelas para armazenamento de dados transacionais e de configuração Views São visualizações totais ou parciais de uma ou uma junção de tabelas Domínio Define propriedades técnicas de campos, como tipo de dado, tamanho, etc. Elemento de Dados Armazena as propriedades semântica s dos campos, por exemplo, rótulos de campos(field labels) Tabela de Verificação Relacionamento(Foreign Key) en tre as tabelas Estruturas São registros(linhas de tabelas, barras d e campos), utilizados para definição de variáveis em programas Dicionário de Dados Tabelas estão divididas em: Tabelas Transparentes Tabelas de Customizing SE11 Oracle DB2 SQL Server * Chave Primária, Chave Estrangeira ou Secundária e Índice. Dicionário de Dados Domínios Elemento de dados Principais tipos de dados: CHAR – Cadeia de Caracteres CURR – Moeda DATS – Data DEC – Decimal (+/-) INT – Inteiro NUMC – Numérico(Algarismos) QUAN – Quantidade formato UNIT STRING - Strings SE11 Dicionário de Dados Estruturas Exemplo: Estruturas de Tela, MEPO1211 é uma estrutura utilizada na ME2*N. SE11 Dicionário de Dados Views EX: MDRV SE11 Tracing Em algumas situações não conseguimos encontrar qual a tabela é utilizada para exibir informações na tela de uma transação, por tratar-se de uma estrutura, ou então precisamos saber como uma determinada transação compôs o valor que esta sendo apresentado, ou até mesmo a performance de leitura de uma tabela, para isso podemos fazer um tracing do banco de dados e mapear quais os acessos da transação ao banco de dados durante uma determinada operação. ST05 Tracing Para executar uma Trace, primeiramente, deve-se clicar no botão “Activate Trace”, e então, executar a transação ou trecho no qual deseja buscar a informação de tabela ou dados. A Trace estará ativada, então qualquer ação realizada no SAP, seja execução de transações ou em transações, estará gravando quais SQL são lidas. Tracing Execute a transação ou processo do qual deseja encontrar a tabela, neste exemplo usaremos as XD03. Tracing Logo após executar o trecho desejado, clique em “Desactivate” para parar o registro e em “Display Trace”. Surgirá uma janela com as restrições de período e tabelas, então em Ok. Tracing Uma lista com todas tabelas executadas na Trace serão listadas, selecionando uma linha e indo em GoTo->Display ABAP Source é possível ir para o código onde trecho é utilizado. Programas Um programa ABAP por ser criado, editado ou exibido através das transações SE38 ou SE80. Quase todos os componentes SAP podem ser customizados, isto é, desenvolvidos para adequarem-se aos processos de determinada empresa. O nome de todos os objetos desenvolvidos são iniciados com as letras Z ou Y, e os objetos standard, normalmente, com os demais caracteres Programas Estão dentre o principais tipos de programa ABAP: � Programa Executável - Report � Programa Include – Include � Grupo de Funções – Conjunto de funções � Módulo Pool – Programa Pool SE38 Programas Um programa ABAP por estar atribuído a uma transação para execução pelo usuário e pode ser visualizada pela SE93 ou acessado através da própria transação no Menu Sistema->Status. Neste também pode ser visualizada a Tela inicialização atribuída. SE93 Programas Através da SE38 e em exibir lista de objetos é possível visualizar toda a composição de um programa ABAP. SE38 / SE38 / SE80 Programas Sub-rotinas - São módulos dentro de um programa usados para estruturar e organizar o código, e portanto, facilitar a interpretação. A chamada é realizada através do comando PERFORM, este comando permite a passagem de parâmetros, isto é, valores externos que serão utilizados internamente quando esta é chamada. Os tipos de passagens de parâmetro são USING(normalmente utilizada para variáveis), TABLES(utilizada para tabelas internas) e CHANGING(normalmente variável que será alterada). Um Perform pode ser chamada de outro programa usando a chamada IN PROGRAM mais o nome do programa. SE38 Programas Eventos - Programa de diálogo SE38 Programas Eventos - Report SE38 Programas Report - Geralmente a Saída do relatório acontece por meio de comandos ABAP como “Write”, usualmente o Report possui o layout abaixo. SE38 Programas ALV Existem várias maneiras de um ALV ser gerado, o mais comum é através do comando: CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’ ou através de Programas Orientados a Objetos. SE38 Mensagens Mensagens - Na Classe de mensagem ZSD numero 000 temos a seguinte mensagem: Apontamento de produção na ordem & maior ou igual a quantidade. No programa vemos uma sintaxe semelhante à abaixo: MESSAGE E000 with ‘10’. Onde o “E” significa: E = Erro 000 = número da mensagem ‘10’ = esse valor é substitui o “&” da mensagem contida na classe. SE91 Comandos ABAP Toda ação que será executada por programa são realizados através de comandos. No entanto, há a necessidade de declarações de valores em objetos para manipulação da informação, isto é, variáveis, tabelas, internas,... • Principais Comandos: � Data � Tables � Constant � Range � Select � Read Table � Loop � Insert/Modify � Delete � Append � Write � Submit: � Perform � Call Screen � Call Function � Call Transaction � Commit and Wait Comandos ABAP • Valor de Retorno: SYST – SY: Estrutura com valores de retorno do Sistema. Os comandos SY mais usuais são: SY-SUBRC: Retorna o valor execução de comandos ABAP. Sendo 0 quando o retorno é verdadeiro, isto é, correto. Diferente de 0 valor falso, isto é, incorreto SY-UCOMM: Retorna o comando de interação do usuário. Transportes Repositório de Objetos Transportes Ambientes Transportes Change Request SE09 Transportes Log de Transporte SE09 Transportes Versões de um objeto ABAP SE80 Transportes Versões de um objeto ABAP SE80 Transportes Comparando versões entre ambientes – DEV X QAS SE80 Transportes Comparando versões entre ambientes – DEV X PRD SE80 Funções Funções são pequenos programas utilizados por vários programas para executar determinadas tarefas, tais como, validar uma informação, executar determinado calculo e retornar o valor, ect. Tipos de Funções: Módulo de Função Normal Módulo de Acesso Remoto (RFC). BAPI SE37 Funções Quando chamamos um modulo de função temos os parâmetros de importação(onde preenchemos a entrada da função) os parâmetros de exportação( informação que recebemos da função) e tabelas(hora recebemos e hora inserimos informação dependendo da função) SE37 Funções BAPI (Business Aplication Programing Interface) As BAPIs são funções mantidas pela SAP, que contemplam todas as regras de negócio do processo em questão. Estas funções também pode ser visualizadasna transação BAPI. SE37 Funções RFC (Remote Function Call) SE37 SAP ECC Sistema de 3ºs RFC Funções RFCs x Web Services SE37 SAP ECC SAP PI RFC Sistema de 3ºs HTTP / XML Ampliações O Sistema SAP permite fazer a inserção códigos do cliente em alguns trechos de códigos standard, são as chamadas Exits ou ampliações. Estas podem ser utilizadas para modificação de dados, inserção de novos dados, inclusão de novas telas com chamadas em transações standard, validar informações e outras funcionalidades atendem as necessidade do cliente. Principais tipos de Ampliações: • User-Exits • Field-Exits • Badis CMOD, SMOD, CMOD, SMOD, SE18, SE19 e SE20. Ampliações Business Add-Ins(BADI) CL_EXITHANDLER=>GET_INSTANCE SE24 Ampliações Como localizar uma Exit? Pode-se localizar uma Exit através do SPRO, em cada modulo tem a opção abaixo, ou ainda existe alguns programas Z’s que facilitam a localização. Exemplo: Z_FIND_USEREXIT (o código fonte deste programa pode ser encontrado facilmente na web). Ampliações Enhencement Point – São ponto dentro do código standard, que a SAP permite a customização. Para visualizar os pontos de ampliações disponíveis em uma include standard acessar a transação SE38 clicar em em seguida -> Processar -> Operações de Ampliação -> Visualizar pontos de Ampliação Implícito. Onde mostrar as setinhas são os pontos possíveis para ampliações. Carga de Dados (CALL TRANSACTION) Tento esses pontos na transação SHDB será gerado o mapeamento, conforme abaixo, vamos alterar a descrição de um material na MM02. Transação SHDB, clicamos em nova gravação, e preenchemos o nome do registro e a transação que utilizaremos para gravar Carga de Dados (CALL TRANSACTION) SHDB – Exemplo: Carga de Dados (CALL TRANSACTION) A transação irá gerar a tela abaixo onde temos em vermelho o nome do programa e a tela, e temos em preto o nome do campo contido na tela juntamente com o valor do campo durante a gravação Carga de Dados (BAPI) BAPI são funções criadas pela SAP que executam determinadas ações: Exemplo: BAPI_MATERIAL_SAVEDATA – Cadastra o material no SAP. BAPI_SALESORDER_CREATEFROMDATA – Cria Ordem de Vendas. Carga de Dados (BAPI) BAPI Debug Esta ferramenta é muito importante na busca de erros, para encontrar valores de variáveis ou tabelas dentro do código executado, facilitando nas alterações. Existem várias formas de entrar no modo de depuração, o principal deles é o comando /h na barra de comando durante a execução do programa. Outra forma é diretamente dentro do código do programa. SE38 Debug Debug Dentro do código é possível criar pontos de parada clicando na barra lateral ou clicando em F9 e para torná-los fixos basta salvá-los. A través da seleção de ponto de parada F9 é possível incluir pontos de parada múltiplo em comandos(Message), performs, funções, ... Por meio do CTRL+F é possível buscar variáveis e dados necessários. Debug Os detalhes das variáveis podem ser visualizados clicando duas vezes nela e seu valor alterado. Esta ferramenta é excelente para execução de testes com valores diferentes. É possível verificar o conteúdo das variáveis selecionadas, variáveis locais e globais. Debug Detalhes do debug Durante o debug é possível ter informações do programa, include e evento em processamento, retorno de execução e índice de tabelas internas. Também é possível posicionar a tela no local onde o cursor esta executando. Comandos Percorrer debug através comandos de teclas: F5 – Execução de etapa individual, executa passo a passo o debug. F6 – Execução na qual é possível pular eventos, por exemplo, Perform sem necessidade de entrar nestes. F7 – Retorno de execução dentro de uma perform, por exemplo, é possível sair dele. F8 – Execução completa. Obs.: No caso de existir pontos de parada na frente no código todos as ações anteriores irão parar neste. Debug Outros comandos /h – Executa modo debug(depuração) quando digitado na barra de comando antes da execução de uma transação por exemplo. /hex – Finaliza modo depuração quando digitado na barra de comando. /n – Finaliza a execução atual, quando acompanhado de uma código de transação navegará para esta. /nend – Finaliza SAP com uma mensagem de confirmação. /nex – Finaliza SAP e processos do usuário sem mensagem de confirmação. Shift+F12 – Quando em modo depuração é possível retornar para o evento anterior, no entanto, as variáveis carregadas não são re-inicializadas. Debug Debug Janela Popup No programa ABAP, telas do tipo Popup não possuem barra de comando para habilitar o modo depuração. Uma maneira de contornar este problema é criar um arquivo do tipo .txt com o código abaixo. Este deverá ser movido para tela popup e então o modo depuração estará habilitado. [FUNCTION] Command=/H Title=Debugger Type=SystemCommand C:\Users\DIEGO\ Desktop\Debug_popup.txt Debug Debug em Background Para depurar um programa em Background, basta selecionar o Job e inserir o código JDBG na barra de comando. Debug Watch Point É uma tipo de ponto de parada, no entanto, busca uma condição lógica, isto é, busca variáveis ou atribuições. Por exemplo, variável X ou variável X = 2. É uma excelente forma de busca quando se possui a variável a ser buscada. Remoção e Desativação de pontos de paradas Durante o modo depuração também é possível remover e desativar todos os pontos de parada. Debug Ir para a instrução Menu: Debugger / Ir para a instrução Vai diretamente para a instrução na qual está posicionado o cursor, sem executar as demais instruções. Esta funcionalidade permite voltar no fluxo do processamento do programa. Especificações Funcionais Objetivo Informações para análise de impacto Descrição do Processo Regras de Negócio Transações Envolvidas Mapeamento dos campos (Tabelas / Estruturas) Layouts de entrada e saída (Telas / Relatórios) Parâmetros de Seleção Dados para Testes e resultado esperado Validações de campos com devidas mensagens Seguir a lógica. Outros Assuntos • Diálogo de atualização de tabelas (SM30) • SHD0 – Criação de Variantes de tela e de transação • Tabelas Internas • Recuperar dados da base • Alterar dados na base Outros Assuntos • Diálogo de atualização de tabelas (SM30) SM30 Criação do diálogo de atualização de tabelas na SE11: SM30 Utilização do diálogo de atualização de tabelas na SM30: SM30 Associar transação ao diálogo de atualização de tabelas, na SE93: SM30 Como encontrar transação associada ao diálogo de atualização da tabela Z04001, através da SE16: SHD0 Personalização de Transação Como exemplo, desabilitar o campo Organização de Compra da tela de um relatório: Outros Assuntos • SHD0 – Criação de Variantes de tela e de transação SHD0 Personalização de Transação Será solicitado a confirmação de personalização tela a tela: SHD0 Personalização de Transação Quando a tela da variante for exibida, o campo Organização de Compras deve ser protegido, e a variante deve ser salva: SHD0 Personalização de Transação Após o salvamento da personalização, o campo ficará desabilitado: SHD0 Personalização de Tela Como exemplo, tornar um campo de um relatório obrigatório: SHD0 Personalização de Tela Como resultado, o campo “Centro” tornou-se obrigatório: Outros Assuntos • Tabelas Internas Tabelas Internas São objetos de dados (variáveis), que só existem em tempo de execução de um programa, que permitem armazenar vários registros com a mesma estrutura. Existem várias formas de definir uma tabela interna Exemplo: DATA: ti_flight TYPE sflight occurs 0. Tabelas Internas Utilizando uma tabela interna LOOP ti_flight AT INTO e_flight. WRITE: / e_flight-carrid, e_flight-connid, e_flight-fldate. ENDLOOP. Neste exemplo está sendo lida a tabela interna TI_FLIGHT, seu conteúdo está sendo armazenado na estrutura E_FLIGHT, e os valores estão sendo escritos em tela. Tabelas Internas Principais operações com uma tabela interna Na Tabela inteira Uma ou mais linhasRefresh - Deleta todo o conteúdo da Tabela Interna Read - ler dados Sort - Ordenar a tabela Modify - altera dados Delete - deleta dados Insert - insere dados Append - insere no final Outros Assuntos • Recuperar dados da base Recuperar dados da base • Maneiras de recuperar dados da base SELECT... INTO TABLE... SELECT carrid connid fldate FROM sflight INTO TABLE itab_focc WHERE carrid = pa_car SELECT... ENDSELECT SELECT carrid connid fldate FROM sflight INTO wa_sbc400_focc WHERE carrid = pa_car ENDSELECT. SELECT SINGLE * FROM ... SELEC SINGLE * FROM scarr INTO wa_scarr WHERE CARRID = pa_car. Recuperar dados da base • Maneiras de recuperar dados da base SELECT... FROM Tabela 1, Tabela 2, Tabela N. INTO TABLE... SELECT splif~campo1 ... scarr~campoN FROM spfli INNER JOIN scarr ON spfli~carrid = scarr~carrid INTO TABLE itab_focc WHERE ... Outros Assuntos • Alterar dados na base Alterar dados na base • Comandos Utilizados: INSERT, UPDATE, DELETE e MODIFY • Conceito IMPORTANTE NÃO é possível alterar dados de tabelas standard. Estas alterações são feitas por funções chamadas BAPI (Business Aplication Programing Interface). As BAPIs são mantidas pela SAP, e contemplam todas as regras de negócio. Caso a tabela em questão não possua uma BAPI, o consultor funcional deve gravar uma sequência de passos de utilização de alguma transação que atualize esta tabela, e passar para o consultor ABAP providenciar a implementação. Exercícios • Meu primeiro programa. Hello World!... Acesse o editor ABAP (SE38) e codifique um programa executável (Report) . Dúvidas?
Compartilhar