ABAP 101

Dando seus primeiros passos no mundo ABAP.

ABAP 101 header image 1

Você tem medo de ensinar? (parte 2)

July 7th, 2008 · No Comments

No meu post Você tem medo de ensinar, eu critiquei o comportamento que algumas pessoas têm com relação a ensinar. De acordo com elas, se elas ensinarem o que sabem, vão perder seus empregos ou terem seus salários diminuídos.

Eu estou há um ano ministrando treinamentos de ABAP e já formamos muitas pessoas que, na sua maioria, já estão atuando no mercado. Foram 8 turmas onde pude solidificar os meus conhecimentos e com isso aplicá-los melhor no meu trabalho.

Quero dizer que o meu conhecimento de ABAP e do ambiente SAP só tem crescido, pois ensinar é a melhor forma de se aprender um determinado assunto. Veja a figura abaixo:

Triângulo do aprendizado

Figura 1 - Cone do Aprendizado

De acordo com o Cone do Aprendizado, a forma mais eficiente de se aprender algo, é usando. Ou seja, a melhor forma de aprender programação é… programando.

A terceira forma mais eficiente é apresentando e ensinando.

Ou seja, quando você explica alguma coisa para outra pessoa na verdade você está reforçando o que você já sabe. Muitas vezes você acaba enxergando pontos que não tinha visto anteriormente.

Então, se você não quer ensinar, pense duas vezes. Você pode ser o próprio prejudicado.

→ No CommentsTags: Mercado

Validação de Números e Letras

July 3rd, 2008 · 1 Comment

Problema

Criar um programa ABAP que receba o valor da placa do veículo e imprima na tela qual o dia do rodízio na cidade de São Paulo. Se a placa não for no formato AAANNNN, deverá ser impresso uma mensagem de erro.

[Read more →]

→ 1 CommentTags: Receita ABAP · Tecnica de Programação

Questão sobre Classes Globais

May 20th, 2008 · No Comments

Questão de certificação:

Identify the statement about Global Classes that is NOT true:

  1. A method to be transported is identified in transport organiser as LIMU METH
  2. Access to a global class is done as a reference variable using TYPE REF TO
  3. Global classes are stored in TADIR with key R3TR CLAS
  4. Programs that are available to Global Classes must be associated in Class Builder
  5. Class Builder can be used to test global classes [Read more →]

→ No CommentsTags: Questão Comentada

What is the Effect of not Typing Formal parameters in a Form?

May 14th, 2008 · 2 Comments

Questão de Certificação:

What is the Effect of not Typing Formal parameters in a Form?

  1. Forms are less flexible and are guaranteed no chance of a run time error
  2. Conversion never occurs
  3. No effect
  4. Conversion always occurs
  5. Forms are more flexible but prone to a short dump if conversion does not work [Read more →]

→ 2 CommentsTags: Questão Comentada

O que um ERP faz? - Parte 2

April 28th, 2008 · 1 Comment

Continuando a nossa discussão sobre ERP, vamos explorar mais sobre os processos dentro de uma empresa.

Aquela empresa do Zé da Esquina, ela precisa vender seus produtos para seus clientes, então pensando nisso, temos as possíveis funcionalidades necessárias: [Read more →]

→ 1 CommentTags: Processo de Negócio

O que um ERP faz? - Parte 1

April 23rd, 2008 · No Comments

Uma das maiores dificuldades para os ABAPeiros inexperiêntes (e até mesmo experientes) é ter um conhecimento geral dos processos que eles estão trabalhando.

Cansei de ver programadores trabalharem horas a fio sem saber exatamente qual a utilidade do seu programa. Não estou dizendo o que ele faz, mas em qual processo no dia-a-dia do usuário ele está inserido.

Trabalhamos com um sistema integrado, chamado de Enteprise Resouce Planning, ou mais conhecido como ERP. Sabemos o que a sigla significa, mas sabemos o realmente o que um ERP faz? Pois bem, vou explicar para que serve um ERP. [Read more →]

→ No CommentsTags: Processo de Negócio

O Que São Dispacher e Workprocess?

April 19th, 2008 · 3 Comments

Dispacher e Workprocess (WP) são componentes do SAP Web Application Server (WAS).

Workprocess e Dispacher

Figura 1 - Dispacher e Workprocess.

Os WPs são responsáveis por executar as diversas tarefas dentro do sistema. Então temos o dispacher que recebe todas as requisições (seja por ação do usuário, ou por execução do batch job, ou algum updade de banco de dados, ou qualquer outra ação dentro do sistema). O dispacher designa o WP responsável por responder aquela requisição.

Temos diversos tipos de WP, dependendo da tarefa a ser realizada. Entre na transação SE53, e você visualizará os WP usados na instalação atual de onde você está logado.

SE53 - Process overview

Figura 2 - SM50 - Process overview.

Os tipos de WP são para atender uma necessidade de especialização, ou seja, as tarefas necessárias para responder uma requisição do usuário são diferentes das requisições de execução de programa em backgound e que são diferentes das requisições de update em banco de dados e assim por diante.

Basis (nome geralmente dado para equipe que cuida da infra-estrutura do SAP) designa mais WP de Dialog (DIA), pois esse tipo de requisição são as mais usadas, seguido do tipo BGD.

→ 3 CommentsTags: Conceitos · Configuração e Ambiente

Regras de Ouro do Acesso ao Banco de Dados.

April 16th, 2008 · 2 Comments

Em programação ABAP ou em qualquer outra linguagem, devemos ter grandes preocupações com a performance, ou seja, no tempo que o programa leva para retornar algum resultado ao usuário.

Na maioria dos casos de problemas de performance em ABAP, o grande vilão é o acesso ao banco de dados. Um programa com acessoo ao banco feito de maneira não performática, não atentando para regras básicas, pode causar muita dor de cabeça quando chegar em produção.

É muito comum, um programa rodar perfeitamente bem em ambientes de desenvolvimento e chegar na produção, termos muita demora e até short dump por time out. Isso porque em desenvolvimento a quantidade de dados não é significativa. Ou seja, um relatório que retorna 100 linhas em desenvolvimento, pode retornar 500.000 em produção.

Uma série de técnicas são adotadas na hora de fazer seus acessos ao banco de dados. Para resumir, temos as 5 Regras de Ouro do Acesso ao Banco de Dados:

1 - Mantenha o número de linhas baixo.

2 - Mantenha a quantidade de dados transferido do banco de dados baixo.

3 - Mantenha o número de acessos ao banco de dados baixo.

4 - Mantenha o esforço de busca baixo.

5 - Mantenha a carga do banco de dados baixa.

Com essas 5 regrinhas na cabeça, fica fácil de identificar quando estamos fazendo um SELECT que será uma verdadeira bomba em produção.

Em posts futuros em vou detalhar os 5 itens, com exemplos e ferramentas que o R/3 nos fornece para analisar programas e identificar problemas de performance.

→ 2 CommentsTags: Conceitos · Performance · Tecnica de Programação

Aula Inaugural ABAP Objects

April 14th, 2008 · No Comments

O que qualquer pessoa que começa o curso ABAP Workbench do SAP Professionals precisa saber antes de começar o curso? Alguma literatura, paper, artigo, site etc?

São dúvidas comuns a quase todos os alunos inscritos no curso. Nesse post vou colocar algumas informações úteis sobre a linguagem, algumas características e o quais os pontos em que os alunos têm mais problemas de entendimento.

O ABAP Objects é uma linguagem proprietária, executada em um sistema proprietário e não pode ser aplicada em nenhum outro ambiente. Foi escrita originalmente para desenvolver relatórios, logo foi extendida para desenvolver aplicativos de negócio. O que ela faz muito bem.

ABAP Objects é interpretada e hoje todas as aplicações no R/3 são escritas em ABAP Objects. Somente a parte do kernel (gerenciamento de memória, acesso a disco etc.) é feito em C/C++.

O ABAP Objects é uma extensão do ABAP/4 para incluir as funcionalidades de orientação a objeto.

Não é necessário nenhuma outra biblioteca externa de código para funcionar. Graças ao repositório, tudo o que você precisa (programas, classes, funções etc.) já está disponível globalmente no sistema. Umas das coisas mais legais do Workbench (ambiente de desenvolvimento) é a capacidade de navegar pelos diversos objetos com apenas um duplo clique. Ou seja, se você tem uma variável e deseja ver com ela foi declarada, é só dar um duplo clique e o editor ABAP coloca o cursos na declaração da mesma. Isso é fantástico! Isso deixa o pessoal de Eclipse e .Net babando ;-)

É muito fácil depurar (ou “debugar) um programa. É possível debugar qualquer programa, seja standard ou em produção. É possível visualizar qualquer código de programa, mesmo código standard SAP.

O ABAP possui um ótimo suporte a acesso a banco de dados usando o Open SQL. O interpretador traduz as instruções Open SQL para o SQL nativo (Oracle, DB2, SQL Server etc.). Isso garante 100% de portabilidade dos programas. É 100% garantido que qualquer comando Open SQL irá funcionar em qualquer ambiente SAP, sem necessidade de ajuste no comando. Outra coisa espetacular!

String de conecção de banco de dados? Comandos do tipo DB.open.dataset(”banco qualquer”).comando_complicado? Esqueça. Apenas SELECT * FROM sflight INTO TABLE t_sflight. Pronto, seu SELECT já está feito!

A maior parte dos programas ABAP Objects seguem o fluxo:

  • Tela de Seleção
  • Validação da tela de seleção
  • Seleção dos dados no banco de dados
  • Processamento dos dados selecionados
  • Apresentação de um relatório

Programa com Tela de seleção, processamento e apresentação de relatório, você encontra no exemplo de calculadora em ABAP.

Lógico que não existe somente programas do tipo report (como descrito acima), existem outros, como Module Pool, Function Modules, Exits etc. Todos eles escritos em ABAP.

O curso é exetenso e cansativo. Demanda dedical total por parte do aluno e é muito puxado. Mas quantidade de material é muito extensa e fornece TODA a base para programar em ABAP.

O público das aulas é muito heterogênio, variando de pessoas vindas do mundo mainframe, web, PL/SLQ, Microsiga etc. Cada um desses públicos têm dificuldades em pontos diferentes, mas que no final todos acabam aprendendo bastante.

Para maiores informações acessem: KA Solutions.

→ No CommentsTags: Anotação de Aula

Alterando Dados nas Tabelas Transparentes

April 10th, 2008 · 1 Comment

Problema

Inserir, modificar e alterar dados em tabelas transparentes.

Solução

Os comandos Open SQL para modificar dados em tabelas transparentes são INSERT, UPDATE, MODIFY e DELETE.

Todos os comandos incluem formas de atualizar linhas individuais e várias linhas de uma vez.

INSERT INTO spfli VALUES wa_spfli

ou

INSERT spfli FROM wa_spfli.

Os dois comandos acima tem o mesmo resultado, insere o conteúdo da work area wa_spfli na tabela spfli. Esta operação somente é possível se a chave ainda não existe na tabela. Caso contrário, o sy-subrc será 4.

INSERT spfli FROM TABLE it_spfli.

Este comando insere todas as linhas da tabela interna it_spfli na tabela spfli. Se alguma chave já existir, o programa será terminado com short dump. Para evitar isso adicione … ACCEPTING DUPLICATE KEYS. Dessa maneira as linhas da internal table que já existirem, simplesmente não serão incluidas e o sy-subrc será 4. O número de linhas adicionadas pode ser consultado pelo sy-dbcnt.

UPDATE sflight
SET plante type = …
price = …
WHERE …

Com esse comando, a tabela sflight terá todas as linhas seleciondas pela cláusula WHERE, de acordo com a cláusula SET. Sem a cláusula WHERE todas as linhas da tabela serão alteradas.

UPDATE sflight FROM wa_sflight.

ou

UPDATE sflight FROM TABLE it_sflight.

Nesse caso, o comando UPDATE atualiza a tabela sflight com os dados da work area wa_sflight ou com as linhas da tabela interna it_sflight.

MODIFY spfli FROM wa_sflight.

ou

MODIFY spfli FROM TABLE it_sflight.

Se você não estiver seguro se a chave na wa_sflight ou it_sflight já existir, você pode usar o comando MODIFY. Esse comando verifica se a chave a ser atualizada já existe, se sim, o registro será modificado, caso contrário a linha será inserida.

DELETE FROM spfli WHERE …

Este comando elimina todas as linhas da tabela spfli de acordo com o cláusula WHERE.

DELETE spfli FROM wa_spfli.

ou

DELETE spfli FROM TABLE it_spfli.

Como nos outros casos, esse comando elimina todas as linhas da spfli de acordo com a chave contidas na wa_spfli ou it_spfli.

Discussão

Quando você utiliza qualquer um dos métodos acima, nenhuma consistência de dados ou verificação de autorização é realizada. Por esse motivo, esses métodos não são aconselháveis para atualizar tabelas transparentes standard. Em algumas empresas, essa prática é até proibida.

Nesses casos é comum usarmos batch input ou BAPIs para efetuarmos atualizações em tabelas standards de maneira segura, garantindo todas as consitências dados e ou autorizações.

→ 1 CommentTags: Conceitos · Receita ABAP · Tecnica de Programação