TREINAMENTO - ABAP
ABAP – Conceito
Conceito breve do SAP
O SAP é um sistema que trabalha com um número muito grande de tabelas interligadas, que armazenam e manipulam os valores de controle dos processos. Essas tabelas são responsáveis pelo armazenamento dos valores do sistema e são divididas em grupos que se interligam em um todo. Assim, existem tabelas responsáveis pelas informações de FI, outras pelas informações de SD, outras ainda por MM, mas todas elas apresentam campos chaves que permitem, pelos mais diferentes e complicados caminhos, a interligação e consistência de todo o sistema.
Embora a ferramenta ABAP/4 dentro do SAP seja muito poderosa e praticamente capaz de permitir qualquer customização do sistema, é muito importante manter os conceitos originais sempre em mente, e nunca tentar forçar alguma coisa que deveria ter um comportamento natural.
Por exemplo, nunca tente alterar um valor de uma tabela do SAP (embora perfeitamente possível, com o comando UPDATE), sem um minucioso estudo de suas implicações anteriormente. Isso pode comprometer a integridade dos dados do sistema, se não forem atualizados todos os valores de todas as tabelas relacionadas a essa alteração.
ABAP – Conceito
MANDANTE – Em uma mesma máquina pode-se Ter mais de um mandante ( client ) com o R/3, Trata-se uma divisão lógica de informações, num mesmo espaço físico, com o tempo irá se perceber que muitas coisas são dependentes de mandantes e outras não. Por exemplo o primeiro campo de 95 % das tabelas é o campo mandante, logo, quando nos logamos em um mandante ‘n’, não iremos acessar as informações desta tabela armazenadas para o mandante ‘n+1’. Por outro lado os programas desenvolvidos em uma máquina irão estar disponíveis para todos os mandantes.
TRANSAÇÃO – São códigos alfanuméricos, os quais estão relacionados com programas on-line ( Relatórios, Batch input, geração de arquivo texto etc... ), módulos de diálogo ou sub-menus. Além de agilizar a chegada ao programa pretendido, são a base para a montagem dos perfis de usuários finais. (Uma vez dominadas, muitas pessoas acabam digitando a transação ao invés de percorrer o Menu ).
ABAP WORKBENCH – ( Transação S001 ) Ambiente de desenvolvimento, onde se cria/altera dicionários de dados, programas, funções, Menus, etc ... ABAP -> Advanced Business Application Programming.
IMG ou CUSTOMIZING – Parametrização básica de todo o ambiente funcional do SAP, como Empresas, Estruturas de Empreendimentos, Plantas das Fábricas, Bancos, Moedas, etc ...
CLASSE DE DESENVOLVIMENTO – Ou development Class, trata-se da forma a qual o programa, o dicionário de dados, a transação etc.. serão gravadas para o R/3, ou seja normalmente sugere-se gerá-los em Objeto Local ( $TMP ), para futuramente ( depois de testes ) deslocá-los para uma classe de desenvolvimento possibilitando-se o transporte deste objeto para outras máquinas.
REQUEST – Sempre que um objeto estiver em uma classe de desenvolvimento diferente de $TMP, todas as alterações deste precisarão de um request, o qual será transportados para outras máquinas mantendo-se assim a integridade.
ABAP – Conceito
PROGRAMAS ON-LINE – Trata-se dos programas de manipulação de dados, na maioria das vezes somente para extração em arquivo texto, ou relatório. Também são programas on-line, os Batch Inputs (os quais alteram a base por executar transações ), mas principalmente divergem dos módulos de diálogo ( Módulo Pool ).
MODULE POOL – São a grande maioria de programas que manipulam telas e fazem manutenção de dados ( Standard ) tipo Inclusão, Alteração e Exclusão. Possui alguns conceitos novos tipo PBO e PAI, os quais serão explanados mais adiante.
BATCH INPUT – São programas que executam de forma automática ( todos os registros de um arquivo texto por exemplo ), qualquer transação do R3.
VARIANTES – São valores fixo pré-definidos, para qualquer tela de seleção de parâmetros de programas, ou seja, quando um usuário sempre informa os mesmos dados, ou para execução de um job. Difere do perfil de usuário > Manutenção de dados, o qual fixa dados para qualquer tela, para um usuário.
STATUS – Indica qual a transação, nome do programa, tela e outras informações, a qual o processo em questão se refere.
CLASSE DE MENSAGENS – Divisão física das Mensagens de erros e/ou sucessos para os diversos módulos e sub-divisões.
ANÁLISE DE DUMPS – Normalmente são gerados dumps, quando se ocorre um erro não previsto, tipo “Zero Divide”. Caminho para análise de dumps gerados: Ferramentas > Administração > Monitoramento > Análise Dump.
ABAP – Navegador
NAVEGAÇÃO BASICA
Menu Principal do R/3: ( Neste Menu estão todos os Módulos Funcionais e mais o ambiente de desenvolvimentos: Ferramentas > ABAP/4 Workbench ).
ABAP – Data Dictionary
DICIONÁRIO DE DADOS
O dicionário de dados do ABAP/4 (DD) é uma fonte central de informações provenientes do sistema gerenciador de dados do SAP. Sua principal função é suportar a criação e o gerenciamento das definições de dados, também conhecidas como “metadados”.
Este é o ambiente de dicionário de dados, display, criação e alteração de tabelas, e principalmente pela ferramenta de Data Browse – Utilitários > Table contents ( também disponível na transação SE16 ).
Escolha display de uma tabela qualquer por exemplo T001W ( Tabela de Centros ), para uma familiarização com alguns conceitos. ( Trata-se de uma tabela de 53 campos, dependente de mandante, com a chave primária de um só campo WERKS ).
�Muita coisa funciona no ABAP/4, com duplos cliques, por exemplo, dando duplo clique no DATA ELEMENT “NAME1”, é similar a voltar uma tela escolher o radio buttons Elemento de Dados com o nome “NAME1”. Podemos também navegar pelas tabelas que possuem chave estrangeira da tabela que estamos. No caso a T001W, possui chave estrangeira somente da tabela T000 ( Tabela de Mandantes ).
Data Element – Trata-se de um referência a qual pode ser a mesma para diferentes campos de diferentes tabelas, onde se define labels ( curtos e longos ) para o campo, e principalmente referencia-se ao domínio dele. ( domain ).
Domain – Trata-se como o próprio nome diz do domínio da informação que este campo pode conter. Este domínio pode ser uma outra tabela ou um domínio fixo.
Caminho: Ferramentas > ABAP/4 Workbench > Dictionary. ( SE11 )
ABAP – Data Dictionary
DICIONÁRIO DE DADOS
ABAP – Data Dictionary
Exercício: Visualizar Conteúdo das Tabelas
Exercício – Visualizar conteúdo das Tabelas:
Para alterar os campos de filtro:
Menu Configurações -> Critérios de Seleção
Para alterar os campos de exibição:
Menu Configurações -> Formato de Lista -> Seleção Coluna
Para alterar os campos de filtro:
Menu Configurações -> Critérios de Seleção
Para alterar os campos de exibição:
Menu Configurações -> Formato de Lista -> Seleção Coluna
ABAP – Tabela
ABAP Dictionary
Campo3
Campo2
Campo1
Campo3
Campo2
Campo1
Database – Definição Física
Definição Lógica
A definição de uma tabela no SAP contém os seguintes componentes:
ABAP – Tabela
Objeto | Descrição |
Tabela | Repósitorio de armazenamento |
Campos | Define as informações armazenadas na tabela |
Elemento de Dados | Descreve o significado do domínio em relação ao negócio e determina como o campo será exibido ao usuário. Por ser armazenado como objeto no dicionário, pode ser reutilizado em outras tabelas. |
Domínio | Descreve os valores válidos para um campo. O domínio especifica informações como o tipo de dados e o tamanho do campo. Por ser armazenado como objeto no dicionário, pode ser reutilizado assim como os Elementos de Dados. |
ABAP – Tabela
Campo
Elemento de Dados
Domínio
Usa
Usa
Tabela
ABAP – Tabela
Neste exemplo, os campos FORCURAM (tabela SBOOK) e PRICE (tabela SFLIGHT) possuem o mesmo domínio S_PRICE.
Para distinguir a aplicação nos negócios SAP, cada campo utiliza um Elemento de Dados.
Utilizam o mesmo domínio pois ambos os campos possuem atributos técnicos similares.
ABAP – Tabela
Tipo de Dados:
ABAP – Tabela
2 x
Transação : SE11
ABAP – Tabela
Para criar uma tabela devemos seguir os seguintes passos:
Criação de Tabela
ABAP – Tabela
Exercício: Criar Tabela
Exercício - Criar Tabela
Descrição Breve: Descrição da tabela
Classe de entrega: A
Atualiz. Visão tabs: Permitida
5. Salve a tabela
ABAP – Tabela
Exercício: Especificar os campos da tabela
Exercício – Especificar os campos da tabela
ABAP – Tabela
Exercício: Criar Domínio e Elemento de Dados
Exercício – Definir Elemento de dados e Domínio
ABAP – Tabela
Exercício: Modificar Domínio - Lista de Valores
Exercício – Definir uma lista de valores ao Domínio
ABAP – Tabela
Define como a tabela será armazenada no BD.
Os parâmetros mais importantes são:
Configurações Técnicas
ABAP – Tabela
Exercício: Atualizar Configurações Técnicas
Exercício – Atualizar Configurações Técnicas
ABAP – Tabela
Exercício: Criar Índice
Exercício – Criar Índice na tabela
ABAP – Tabela
Para definir relacionamentos entre tabelas utilizamos ‘Foreign Keys’.
Usando essa chave, criamos rapidamente uma validação para o campo de entrada.
Chaves Estrangeiras
ABAP – Tabela
Exercício: Criar Chave Estrangeira
Exercício – Criar Chave Estrangeira
ABAP – Tabela
Exercício: Criar Diálogo de Manutenção de Tabela (SM30)
Exercício – Criar Diálogo de Manutenção de Tabela (SM30)
ABAP – Principais Tabelas
Genéricas
KNA1 - Mestre de clientes
TVARV - Variáveis para variantes
T012K - Mestre de bancos
EKKO - Cabeçalho de pedidos
EKPO - Item de pedidos
LFB1 - Mestre de fornecedores
T000 - Tabela de mandantes
T001 - Tabela de empresas
T001W - Tabela de centros e filiais
TCURR - Taxas de conversão de valores
CSKS - Registro mestre de centro de custo
CSKT - Textos de centro de custo
TBTCO - Tabela de jobs
MARV - Períodos corrente e precedente de materiais
TADIR - Catálogo de objetos do R/3
PLAF - Tabela de Ordem planejada
MARA - Mestre de Materiais
MARM - Tabela de unidade de medida
MKPF - Cabeçalho de documentos de material
MSEG - Item de documentos de material
MARD - Estoques por depósito / centro
MAKT - Descrições de materiais
MARC - Segmento de materiais por centro
MAST - Ligação Material com lista técnica
STKO - Cabeçalho lista técnica
STPO - Item da lista técnica
S032 - Estoque retroativo
S031 - Estoque retroativo
AFKO - Cabeçalho da ordem PCP
MBEW - Avaliação de material
T134T - Denominação de tipos de material
ABAP – Principais Tabelas
FI & CO
BKPF - Cabeçalho de documentos contábeis
BSEG - Itens de documentos contábeis
BSIS - Contrapartida por contas contábeis de clientes
BSAS - Contrapartida por contas contábeis de fornecedores
BSIK - Partidas compensadas de fornecedores
BSAK - Partidas abertas de fornecedores
BSID - Partidas compensadas de clientes
BSAD - Partidas abertas de clientes
LFA1 - Mestre de fornecedores
LFB1 - Mestre de fornecedores ( Empresa )
GLT0 - Mestre de contas razão
AUFK - Mestre de ordens
COSP - Objetos CO – valores de ordens de investimentos
SKA1 - Mestre das contas razão
COBK - Cabeçalho de documentos de CO
COEP - Partidas de CO
COVP - View das tabelas COBK e COEP
VBAK - Cabeçalho de ordem de venda
VBAP - Itens de ordem de venda
LIKP - Cabeçalho de fornecimentos
LIPS - Itens de fornecimentos
VTTK - Cabeçalho de transportes
VTTP - Itens de transportes
VBRK - Cabeçalho de faturamento
VBRP - Itens de faturamento
J_1BNFDOC - Cabeçalho de notas fiscais
J_1BNFLIN - Itens de notas fiscais
ABAP – View
Uma visão em um banco de dados é uma relação que não armazena dados, mas é definida dinamicamente por uma consulta que é previamente analisada e otimizada.
Entre as principais utilidades estão o aumento de segurança por propiciar uma visão limitada e controlada dos dados que podem ser obtidos da base (a depender do SGDB utilizado) e a performance por utilizar uma consulta previamente otimizada, tornando desnecessário este processo quando ela é realizada.
ABAP – View
Exercício: Criar VIEW
Exercício – Criar View de Banco de Dados
ABAP – Search Help
ABAP – Search Help
Defini-se o nome da tabela que vai mostrar o dados na ajuda de pesquisa
- Se flegar o campo IMP e EXP, o campo irá aparecer na Ajuda de pesquisa e irá também retornar para a tabela com o valor selecionado.
- Se Flegar somente o IMP, simplesmente mostrará o campo como uma descrição
ABAP – Search Help
Para “amarrar” o search-help a um campo da tabela siga os passos seguintes
1- Selecionar o campo desejado da tabela e clicar sobre o botão ‘Aj.p/pes.’
2- Informar o nome da ajuda de pesquisa.
3- <Enter>
ABAP – Search Help
4- Devemos associar o campo de IMP e EXP do search-help ao da tabela
5- Click no botão Transferir
ABAP – Report parte I
ABAP – Reports
Um trabalho muito comum, a ser realizado em novos projetos ( implementações ), e também em projetos que já estejam em andamento, são os relatórios.
Normalmente são extrações da base de dados, geração de tabelas internas, e posterior impressão com quebras e totais.
Como vimos anteriormente o grande trabalho esta em determinar aonde estão as informações na base de dados, pois uma vez determinadas estas tabelas, o ABAP/4 é bastante simples para a montagem de Reports.
Abaixo segue um exemplo de como o Report fica armazenado em tela, após a execução.
ABAP – Reports
Transação: SE38
ABAP – Tela de Seleção
ABAP – Parameters
Disponibiliza um campo de entrada na tela, para que o usuário possa entrar um valor único.
Parameters <nome> TYPE/LIKE <tipo> [DEFAULT <valor>] [OBLIGATORY].
Parameters: <nome> TYPE/LIKE <tipo> [DEFAULT <valor>] [OBLIGATORY],
<nome> TYPE/LIKE <tipo> [DEFAULT <valor>] [OBLIGATORY],
<nome> TYPE/LIKE <tipo> [DEFAULT <valor>] [OBLIGATORY].
Parameters: <nome> AS CHECKBOX [DEFAULT X].
Parameters: <nome1> RADIOBUTTON GROUP <grupo1> [DEFAULT X],
<nome2> RADIOBUTTON GROUP <grupo1>,
<nome3> RADIOBUTTON GROUP <grupo2> [DEFAULT X],
<nome4> RADIOBUTTON GROUP <grupo2>.
REPORT zcalculo.
DATA: v_result(4) TYPE N.
PARAMETERS p_valor(2) TYPE n default 1 obligatory.
v_result = ( p_valor ) * ( 5 ) .
WRITE: v_result.
REPORT zteste.
TABLES: T001.
SELECT-OPTIONS: so_filt FOR t001-bukrs OBLIGATORY.
WRITE: so_filt-low,
so_filt-high.
ABAP – Select Options
SIGN | OPTION | LOW | HIGH |
I | BT | 0001 | 2236 |
| | | |
SELECT-OPTIONS <campo> FOR <campo> [OBLIGATORY].
Disponibiliza um campo de entrada na tela, para que o usuário possa entrar um range de valor.
LOW
HIGH
Tabela Interna : so_filt
ABAP – Select Options
Clicando no botão em destaque, ele disponibiliza outras opções de seleção.
SIGN | OPTION | LOW | HIGH |
I | EQ | AA | |
I | EQ | AB | |
I | EQ | AC | |
I | EQ | UA | |
Tabela Interna : so_fli
ABAP – Elemento de Texto
ABAP – Frame
SELECTION-SCREEN BEGIN OF BLOCK <nm_bloco> WITH FRAME TITLE <texto>.
Parameters: ...
Select-Options: ...
SELECTION-SCREEN END OF BLOCK <nm_bloco>.
REPORT zcalculo.
DATA: v_result(4) TYPE N.
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.
PARAMETERS p_valor(2) TYPE n default 1 obligatory.
SELECTION-SCREEN END OF BLOCK bl1.
v_result = ( p_valor ) * ( 5 ) .
WRITE: v_result.
2x
ABAP – Variáveis
ABAP – Iniciando uma Variável
MOVE <objeto> TO <objeto2>.
<objeto2> = <objeto>.
REPORT zcalculo.
DATA: v_result(4) TYPE N,
v_nome(30) TYPE C.
CLEAR: v_result, v_nome.
MOVE: 2 TO v_result.
V_nome = ‘Joao’.
Para atribuir Valor à uma variável
ABAP – Cálculos
<variavel> = <expressão aritmética>.
DATA: v_result(4) TYPE N,
v_numero(4) TYPE N,
v_nome(30) TYPE C.
v_result = 3 + 5.
v_numero = v_result * 3.
V_result = ( 18 mod 5 ).
ABAP – Cálculos
Operações Básicas Aritméticas
Operador | Significado |
+ | Adição |
- | Subtração |
* | Multiplicação |
/ | Divisão |
DIV | Quociente da Divisão |
MOD | Resto da Divisão |
Funções Numéricas
Função | Resultado |
ABS | Valor Absoluto |
SIGN | Sinal Se > 0 , 1 Se = 0 , 0 Se < 0, -1 |
CEIL | Maior Inteiro Menor que o arqumento |
FLOOR | Menor Inteiro Maior que o arqumento |
TRUNC | Parte inteira do argumento |
FRAC | Parte fracional do argumento |
ABAP – Sub-Valores
<valor> [+i] [(t)] .
Onde: i = posição inicial ( a partir de )
t = tamanho total a ser capturado
REPORT zstring.
TABLES: SPFLI.
DATA: v_string(20) TYPE C VALUE 'Joao Silva',
v_numero(4) TYPE N VALUE '1234'.
WRITE:/ v_string(6).
WRITE:/ v_string+7(1).
WRITE:/ v_string+2(8).
WRITE:/ v_numero+1.
ABAP – Constante
Comentários:
ABAP – Ranges
SIGN | OPTION | LOW | HIGH |
| | | |
ABAP – Write
Comando básico para exibição de valores na tela.
ABAP – Formar Color
ABAP – Processando String de Caracteres
ABAP – Break Point / DEBUG
Trata-se de uma ferramenta muito útil no dia-a-dia, tanto para encontrar erros em programas desenvolvidos, como para entender processamentos Standard. Para programas Standard, o Debugging pode ser muito difícil e demorado.
Podemos marcar BreakPoints nos programas a serem debugados, parando o processamento e disponibilizando neste momento, valores de variáveis, tabelas internas, tabela SY, e outros dados. Podemos até mesmo mudar o conteúdo da variável para continuar a execução.
Além do BreakPoint ( parada esta que acontece somente para o usuário que gerou o BreakPoint ), outra maneira de debuggar um programa é colocar “/H”, na linha de comando.
Existe também uma ferramenta bastante útil, na procura de tabelas em transações standard, é a análise de tempo de execução, pois além de outras informações, apresenta todas as tabelas e views que o programa passou.
ABAP – Break Point / DEBUG
ABAP – Write
Exercício: Tela de Seleção / WRITE
Exercício: Tela de Seleção / WRITE.
ABAP – JOBS
O JOB possui o mesmo conceito dos JOBS nos ambientes de grande porte, ou seja, trata-se de uma encadeação de STEPS ( execução de programas ), a qual depende de outros JOBS, roda em horário pré-determinado, pode ou não ser periódico etc...
É importante salientar que todo JOB roda em Background. A execução normal de qualquer transação, possibilita a execução em Background, Programa > Exec. Em Background. Deve-se neste momento especificar a impressora, se o relatório vai direto para a impressora ou se vai ser gerado novo SPOOL.
Para a definição de JOBS, Sistema > Serviços > Jobs > Definição de Jobs
Para a Monitoração do JOB, seguir o mesmo caminho anterior e trocar de Definição para Síntese de Jobs.
É possível também a monitoração do JOB através da transação SM37.
Para a checagem de SPOOL do usuário, Sistema > Serviços > Controle de Saída. O SPOOL, de relatórios possui um número limitado de impressão de linhas, porém existe um botão dentro do SPOOL, onde aumentamos para aquele momento este limite.
ABAP – JOBS
Exercício: JOBS
Exercício: JOB
REPORT zstring.
MESSAGE e001(ZWA) WITH ‘ZPROGRAMA’.
REPORT zstring.
MESSAGE e000(ZWA) WITH ‘Mensagem’ ‘de’ ‘Warning’ ‘exibida’ .
ABAP – Message
Transação SE91
Trata-se de uma separação lógica de mensagens: E – Erro, W – Warnings, I – Informations e S – Sucesso, ou seja, basicamente uma tabela de erro que para não ser única foi dividida em várias menores ( Message Class ), por isso normalmente em um desenvolvimento, criamos uma classe de mensagens ( começadas por Z ou Y, é claro ), e a utilizamos para indicar nossos erros, sucessos etc...
ABAP – Message
Exercício – MESSAGE:
1 – Criar Classe e Mensagens
2 – Criar report que receba o Tipo de Mensagem / Número da mensagem por parâmetro e exiba a mensagem criada no exercício acima.
Exercício: MESSAGE
ABAP – Banco de Dados
ABAP – SELECT
ABAP – SELECT... ENDSELECT
ABAP – SELECT... INTO TABLE <i_tab>
ABAP – SELECT... APPENDING TABLE <i_tab>
ABAP – SELECT... INTO CORRESPONDING FIELDS OF TABLE <i_tab>
ABAP – SELECT... APPENDING CORRESPONDING FIELDS OF TABLE
ABAP – SELECT... FOR ALL ENTRIES
EBELN | BUKRS |
450000 | WABR |
450001 | WABR |
450002 | WABR |
ABAP – SELECT SINGLE...
ABAP – SELECT... UP TO <n> ROWS
ABAP – SELECT... INTO (<var1>, <var2>, ... <varN>) FROM
ABAP – INNER JOIN
ABAP – WHERE
Sintaxe | Descrição | Exemplo |
<campo> = <conteúdo>. | Lê os registros onde o campo <campo> é igual ao <conteúdo> | SELECT * INTO TABLE ti_aux FROM t001 WHERE bukrs = ‘TCSBR’. |
<campo> IN (<conteúdo1>, <conteúdo2>, ... <conteúdoN>). | Lê os registros onde o campo <campo> é igual ao <conteúdo1> ou <campo> é igual ao <conteúdo2> ou ... ou <campo> é igual ao <conteúdoN> | SELECT * INTO TABLE ti_aux FROM t001 WHERE bukrs IN (‘TCSBR’, ‘TCSPT’). |
<campo> BETWEEN <conteúdo1> AND <conteúdo2>. | Lê os registros onde o campo <campo> esteja no intervalo <conteúdo1> e <conteúdo2>, incluindo-os | SELECT * INTO TABLE ti_aux FROM ekko WHERE ebeln BETWEEN 450000 AND 450005. |
<campo> LIKE <conteúdo>. Caracteres coringas: % sequência de 1 ou n caracteres _ 1 caractere | Lê os registros onde o campo <campo> possua o conteúdo <conteúdo> | SELECT * INTO TABLE ti_aux FROM t001 WHERE bukrs LIKE ‘TCS%’. |
ABAP – ORDER BY
ABAP – SELEÇÕES
ABAP – SELEÇÕES
Exercício: SELECT
Exercício: SELECT
ABAP – Report parte II
ABAP – Data Type
C,I,P,T ...
ABAP – Data Type / Data Objects
Data Types
Data Objects
Definido pelo Usuário
Pré-Definido
ABAP – TYPE
ABAP – Tabela Interna
Trata-se de um conceito muito utilizado em programas ABAP/4, são similares a arrays, ou temp-tables de outras linguagens. Apesar do inconveniente de serem armazenadas na memória RAM da máquina (o que pode acarretar problemas quando tentarmos montar uma tabela interna muito grande), possui comandos muito interessantes para sorts, quebras e totalizações.
Deve-se sempre lembrar que a tabela interna trabalha com o conceito de buffer, ou seja, após armazenarmos o buffer devemos appendar este novo registro a nossa tabela interna. Sempre que possível nos programas onde a tabela interna já não será mais utilizada na lógica, devemos liberar este espaço de memória.
Comandos associados:
DATA: BEGIN OF t_tabela OCCURS 0,
CAMPO 1
CAMPO 2
END OF t_tabela.
Definição da tabela interna, também é valido se criar uma tabela interna com include de uma estrutura, além disso existem outras variações de definição como definir um type ( tabela interna ) e utilizar este type WITH HEADER LINE, tem o mesmo efeito, porém é melhor utilizar a definição acima.
ABAP – Tabela Interna
CLEAR t_tabela.
Limpa o buffer da tabela interna.
APPEND t_tabela.
Inclui efetivamente o registro do buffer na tabela interna
COLLECT t_tabela.
Para registros com a mesma parte alfa-numérica, este commando soma todos os campos numéricos.
SORT t_tabela BY campo.
Ordena a tabela interna pelos campos desejados. OBS. Para uma perfeita manipulação dos dados nos comando AT, deve-se definir os campos da tabela interna na mesma ordem que serão sortiados no comando SORT.
LOOP AT t_tabela.
Varre todos os registros da tabela interna, ou somente os registros que se pretende percorrer (WHERE )
ABAP – Tabela Interna
AT FIRST.
Em conjunto com o comando LOOP, identifica o primeiro registro da tabela percorrida.
AT NEW campo.
Em conjunto com o comando LOOP, identifica o primeiro registro de uma sequência ( quebra ).
AT END OF campo.
Em conjunto com o comando LOOP, identifica o último registro de uma sequência ( quebra ).
AT LAST.
Em conjunto com o comando LOOP, identifica o último registro da tabela percorrida.
READ TABLE t_tabela WITH KEY campo =
Leitura de um registro específico. Este comando retorna SY-SUBRC = 0 se o registro for encontrado e diferente de zero caso contrário.
ABAP – Tabela Interna
DELETE t_tabela.
Deleta um registro da tabela Interna
MODIFY t_tabela.
Modifica o registro na tabela Interna
REFRESH t_tabela.
Todos os Registro da Tabela Interna são deletados.
FREE t_tabela.
Libera o espaço utilizado pela Tabela Interna na memória
ABAP – Tabela Interna
ABAP – Tabela Interna
ABAP – Tabela Interna
ABAP – Tabela Interna
VBAP
TABELA INTERNA it_vbap
Work-Area
APPEND
SELECT
VBAP
TABELA INTERNA it_vbap
MANDT | VBELN | POSNR |
100 | 0000000001 | 0010 |
100 | 0000000002 | 0010 |
MANDT | VBELN | POSNR |
100 | 0000000001 | 0010 |
100 | 0000000002 | 0010 |
100 | 0000000001 | 0010 |
MANDT | VBELN | POSNR |
100 | 0000000001 | 0010 |
100 | 0000000002 | 0010 |
MANDT | VBELN | POSNR |
100 | 0000000001 | 0010 |
100 | 0000000002 | 0010 |
ABAP – Tabela Interna
MANDT | VBELN | POSNR |
100 | 0000000001 | 0010 |
100 | 0000000002 | 0010 |
MANDT | VBELN | POSNR |
100 | 0000000001 | 0010 |
100 | 0000000002 | 0010 |
ABAP – Tabela Interna
BINARY SEARCH – aumenta a performance na busca. Para usá-lo a tabela deve estar ordenada pelos campos de filtro.
ABAP – Tabela Interna
ABAP – Tabela Interna
ABAP – Tabela Interna
ABAP – Tabela Interna
ABAP – Tabela Interna
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
ABAP – Tabela Interna
ABAP – Tabela Interna
ABAP – Tabela Interna
MANDT | VBELN | POSNR |
100 | 0000000001 | 0010 |
100 | 0000000002 | 0010 |
ABAP – Tabela Interna
ABAP – Tabela Interna
Exercício: Tabela Interna
Exercício: Tabela Interna
ABAP – Tabela SYST (SY)
Trata-se de uma estrutura, a qual de momento a momento ( em tempo de execução ) está disponível para o programa. Por exemplo mesmo sem definição em TABLES, está disponível a qualquer momento no programa a variável SY-UNAME, a qual contém o nome do usuário que logou o SAP.
Segue abaixo uma relação das mais importantes variáveis. Sempre que necessário, cheque o dicionário desta estrutura para verificar se existe alguma variável que possa ser útil ao seus futuros programas.
SY-SUBRC – Retorno dinâmico após cada comando. Normalmente quando o comando funcionou o SY-SUBRC = 0, porém o help de cada comando indica qual o SUBRC para cada hipótese. No caso de CALL FUNCTION, o SUBRC é determinado pelas EXCEPTIONS.
SY-DATUM – Data do sistema. Esta data está armazenada AAAAMMDD, ou seja para se separar em uma variável o dia : w_variavel = SY-DATUM+6(2). Vale lembrar que algumas datas em determinadas tabelas transparentes, estão armazenadas em formato anormal ( quando fazem parte da chave primária), exemplo tabela TCURR. Verificar para estes casos a rotina de conversão do campo ( CONVERSION_EXIT_XXXXX_INPUT ).
ABAP – Tabela SYST (SY)
SY-UZEIT – Hora do Sistema
SY-LANGU – Linguagem de Logon
SY-TABIX – Linha Corrente de uma Tabela Interna
SY-ULINE – Similar ao comando ULINE, porém permite linhas menores que o tamanho definido no LINE-SIZE do REPORT, por exemplo: WRITE: / SY-ULINE(10).
SY-VLINE – Caracter de fechamento lateral de Boxes.
SY-PAGNO – Número da Página corrente no relatório
SY-LINNO – Linha corrente no relatório
SY-UNAME – Usuário de Logon
SY-BATCH – Indicativo de execução em Background
SY-UCOMM – Comando escolhido em Relatórios Interativos
SY-LISEL – Linha escolhida em Relatórios Interativos
SY-TVAR0 – SY-TVAR9 – Espécie de Elemento de Texto, para Títulos de Relatórios.
ABAP – Tabela SYST (SY)
Exercício: Tabela SYST (SY)
Exercício: Tabela SYST (SY)
ABAP – Comandos
ABAP – Comandos
Relacionaremos a seguir alguns comandos e conceitos importantes no ABAP, sendo que a totalidade dos comandos e suas sintaxes, podem ser encontradas no help. Os comandos relativos a tabelas internas serão tratados mais adiante.
DECLARATIVE KEY WORDS
DATA
Internal fields, field strings, internal tables, common areas
LOCAL
Global fields in subroutines
TABLES
SAP tables
PARAMETERS
Internal fields set by the user after starting the program
SELECT-OPTIONS
Selection criterion set by the user for data selection purposes after starting the program
SELECTION-SCREEN
Selection screen layout
RANGES
Selection criterion handled within the program only
ABAP – Comandos
CONTROL KEY WORDS
IF..ELSE..ENDIF
Conditional processing
You can use the following comparison operators here:
- EQ, NE, GT, LT, GE, LE
- O, Z, M (bit comparison)
- CO, CN, CA, NA, CS, NS ,CP, NP (string comparison)
- BETWEEN...AND
- IS INITIAL
- IN
- All comparison operators are documented under ==>IF.
CHECK Selection condition, leaving loops and subroutines
Comparison operators: ==>IF
CASE..WHEN..ENDCASE
CONTROL KEY WORDS (cont..)
Case distinction
FORM..ENDFORM
Defines a subroutine
PERFORM..
Calls a subroutine
SELECT..ENDSELECT
Reads tables (ATAB, database)
Comparison operators: ==>IF
WHILE..ENDWHILE
Loop processing
Comparison operators: ==>IF
DO..ENDDO Loop processing
EXIT - Leaves loops or subroutines
LEAVE - Leaves program processing, goes to a transaction, list or menu
STOP Exit selection
CONTINUE Leaves loops
ABAP – Comandos
OPERATIONAL KEY WORD
ADD Adds fields together
CALL Calls a transaction, screen, dialog module or function module
CLEAR Resets to initial value
COMMIT Executes DB changes
COMPUTE Compute
You can use the following functions here:
SQRT Square root
EXP Exponential function to e
LO Natural logarithm
SIN Sine
COS Cosine
STRLEN Character string length
CONDENSE Compresses a field
DIVIDE Divides fields
FORMAT Sets the report output format
HIDE Notes line-related field contents
FORMAT Sets the report output format
HIDE Notes line-related field contents
INCLUDE Inserts a program component
MESSAGE Outputs messages
MOVE Moves field contents
FORMAT Sets the report output format
HIDE Notes line-related field contents
INCLUDE Inserts a program component
MESSAGE Outputs messages
MOVE Moves field contents
MOVE-CORRESPONDING
OPERATIONAL KEY WORD (cont..)
Moves matching fields of field strings
MULTIPLY Multiplies fields
NEW-PAGE Sets a new page
REPLACE Replaces character strings
RESERVE Reserves output lines on the current page
SEARCH Finds character strings in tables
SHIFT Moves field contents
SKIP Sets blank lines, goes to a particular line
SUBMIT Starts another program
SUBTRACT Subtracts fields
TRANSFER Sequential data output
TRANSLATE Conversion to upper / lower case
ULINE Underline
UNPACK Unpacked with leading zeros
WINDOW Define screen section (window)
WRITE Output
COMMENTS
* In first column: Whole line is a comment
" In any other column: Rest of line is a comment
INTEGRATING OTHER PROGRAM COMPONENTS
INCLUDE nserts specified program component at this point
PERFORM form(prog),
Calls a subroutine from another program
ABAP – Comandos - IF
ABAP – Comandos - Case
CASE <campo>. WHEN <valor1>. ... WHEN <valor2>. ... WHEN <valor3> OR <valor4>. ... WHEN OTHERS. ... ENDCASE |
ABAP – Comandos - DO
ABAP – Comandos - WHILE
ABAP – Comandos - CONTINUE / CHECK / EXIT
CONTINUE | CHECK | EXIT |
Dentro do LOOP | Dentro do LOOP | Dentro do LOOP |
DATA: v_cont(1) TYPE n VALUE 5. WHILE v_cont > 0. v_cont = v_cont – 1. IF <expressão lógica>. CONTINUE. ENDIF. WRITE:/ sy-index. ENDWHILE. | DATA: v_cont(1) TYPE n VALUE 5. WHILE v_cont > 0. v_cont = v_cont – 1. CHECK <expressão lógica>. WRITE:/ sy-index. ENDWHILE. | DO. IF v_cont = 5. EXIT. ENDIF. v_cont = v_cont + 1. WRITE:/ 'Contador', v_cont. ENDDO. WRITE:/ ‘Saiu do loop’. |
Fora do LOOP | Fora do Loop | Fora do LOOP |
| ... CHECK <expressão lógica>. ... | ... EXIT. ... |
Processa o
próximo loop
Processa o
próximo loop
Sai do loop
Abandona o bloco imediatamente
Abandona o bloco imediatamente
ABAP – Comandos
Exercício: Comandos
Exercício: Comandos
ABAP – Evento
Evento | Descrição |
INITIALIZATION | Ocorre antes da tela de seleção ser exibida. Usada para, por exemplo, inicializar parâmetros. É a única maneira de alterar os valores defaults dos parâmetros. |
AT SELECTION-SCREEN | Ocorre quando ocorre uma interação do usuário com a tela de seleção. |
START-OF-SELECTION | Ocorre após o processamento da tela de seleção. Usada para leitura de dados, criação de listas. |
AT USER-COMMAND | Ocorre após interação do usuário em algum botão. |
Uma forma fácil de se entender a tratativa de eventos, seria imaginar cada evento como um programa a parte, onde um evento termina quando começa o próximo, e independente do posicionamento destes eventos no código fonte, a sequência de execução destes “sub-programas” é a seguinte:
1 – INITIALIZATION – Inicializa variáveis de parâmetros ( antes da exibição da tela ).
2 – AT-SELECTION-SCREEN – Validação das informações solicitadas ( após intervenção do usuário ).
3 – START-OF-SELECTION – Evento de extração de dados da base.
4 – END-OF-SELECTION – Display dos dados extraídos.
Os eventos TOP-OF-PAGE e END-OF-PAGE, são executados a cada quebra de página, sendo que após o comando NEW-PAGE, não se executa o evento END-OF-PAGE.
ABAP – Perform
ABAP – Perform
REPORT zwrite. SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001. PARAMETERS p_valor(1) TYPE n default 1. SELECTION-SCREEN END OF BLOCK bl1. DATA: v_calc(3) TYPE N. DATA: tcs_vbap LIKE vbap. DATA: it_vbap LIKE vbap OCCURS 0. START-OF-SELECTION. SELECT * UP TO 10 ROWS INTO TABLE it_vbap FROM VBAP. PERFORM ZCalcular_Dobro USING p_valor CHANGING v_calc. WRITE:/ v_calc. PERFORM ZImprimir_Tabela TABLES it_vbap USING p_valor CHANGING v_calc. WRITE:/ v_calc. | *&------------------------------------------*& Form ZCALCULAR_DOBRO *&------------------------------------------form ZCALCULAR_DOBRO USING p_numero TYPE n CHANGING p_dobro TYPE n. CLEAR: p_dobro. p_dobro = p_numero * 2. endform. " ZCALCULAR_DOBRO *&------------------------------------------*& Form ZIMPRIMIR_TABELA *&------------------------------------------form ZIMPRIMIR_TABELA TABLES p_tabela STRUCTURE tcs_vbap USING p_indice TYPE n CHANGING p_triplo TYPE n. LOOP AT p_tabela INTO tcs_vbap FROM p_indice. WRITE:/ tcs_vbap-vbeln, tcs_vbap-posnr. ENDLOOP. CLEAR: p_triplo. p_triplo = p_indice * 3. endform. " ZIMPRIMIR_TABELA |
ABAP – Transação
São códigos alfanuméricos com no máximo 4 posições, o qual corresponde a um objeto, ou seja, a transação é uma chamada rápida a um programa on-line, programa “module pool”, menu etc..
Para se executar um programa via Menu, este deve obrigatoriamente possuir uma transação associada, pois é ela que o menu vai executar.
Caminho: Ferramenta > ABAP/4 Workbench > Desenvolvimento > Outras Ferramentas > Transações.
As transações não são dependente de mandante.
ABAP – Transação
Exercício: Criar Transação para Diálogo de Manutenção
Exercício – Criar Transação para o Diálogo de manutenção
"Nome da área da Tela" atribuir "VIEWNAME"
"Valor" atribuir < Nome da Tabela >
"Nome da área da Tela" atribuir “UPDATE"
"Valor" atribuir ‘X’
INCLUDE L <nm_grp> TOP.
INCLUDE L <nm_grp> UXX.
INCLUDE L <nm_grp> F<xx>.
ABAP – Funções
Container para módulos de função. O diagrama abaixo nos mostra a estrutura de um grupo de função
Programa Básico SAPL <nm_grp>
Declarações globais para todo o grupo de funções
Módulos de Função
Sub-rotinas chamadas por todos os Módulos de Função
FUNCTION-POOL <fgrp>.
TABLES: ...
TYPES: ...
DATA: ...
FUNCTION <nm_funçao>.
....
ENDFUNCTION.
INCLUDE L <nm_grp> U01.
INCLUDE L <nm_grp> U02.
INCLUDE L <nm_grp> U03.
FORM <nm_form>.
...
ENDFORM.
ABAP – Funções
ABAP – Funções
Transação: SE37
Declaração dos Parâmetros
Editor
ABAP – Funções
Exercício: Criar Grupo de Função
Exercício: Criar Grupo de Função
Transação: SE37
ABAP – Funções
Exercício: Criar Função (SE37)
Exercício: Criar Função
ABAP – Funções
Nome da Função
Automaticamente trás a função com sua estrutura completa
ABAP – Funções
Exercício: Utilizar função num report
Criar uma função que receba o pedido de compra (EKKO-EBELN) e retorne todos os itens de compra (EKPO) desse pedido. Caso não seja encontrado nenhum registro retornar erro (Exceção). -> Já criada
Exercício: Utilizar Função num Report
ABAP – Funções
REPORT ZFRRF0001 . SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-099. PARAMETERS: p_werks TYPE mseg-werks OBLIGATORY, p_bdatj TYPE mseg-gjahr OBLIGATORY. SELECTION-SCREEN: END OF BLOCK b1. *&----------------------------------------------------------- * AT SELECTION-SCREEN ON *&----------------------------------------------------------- AT SELECTION-SCREEN ON p_bdatj. PERFORM ValidarPeriodo. "Validar Ano *&----------------------------------------------------------- * AT SELECTION-SCREEN ON VALUE-REQUEST FOR *&----------------------------------------------------------- AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_werks. PERFORM MatchcodeWerks. "Search Help Dinâmico *&-----------------------------------------------------------* START-OF-SELECTION *&----------------------------------------------------------- START-OF-SELECTION. WRITE:/ p_bdatj, p_werks. *&-----------------------------------------------------------*& Form ValidarPeriodo *&----------------------------------------------------------- FORM ValidarPeriodo. IF p_bdatj > '2008'. MESSAGE i888(sabapdocu) WITH 'Ano inválido'. STOP. ENDIF. ENDFORM. " ValidarPeriodo | FORM MatchcodeWerks. constants: c_fieldname type help_value-fieldname value 'WERKS'. types: begin of ty_valuetab, werks LIKE t001w-werks, name1 LIKE t001w-name1, end of ty_valuetab.
data: t_valuetab type table of ty_valuetab, t_return_tab type table of ddshretval. data: tcs_return_tab type ddshretval, tcs_valuetab type ty_valuetab. SELECT t001w~werks t001w~name1 INTO TABLE t_valuetab FROM t001w. call function 'F4IF_INT_TABLE_VALUE_REQUEST' exporting retfield = c_fieldname value_org = 'S' tables value_tab = t_valuetab return_tab = t_return_tab exceptions parameter_error = 1 no_values_found = 2 others = 3. if sy-subrc = 0. read table t_return_tab into tcs_return_tab index 1. if sy-subrc = 0. p_werks = tcs_return_tab-fieldval. endif. endif. ENDFORM. " MatchcodeWerks |
ABAP – Macro
ABAP – Operações em tabela do Dicionário
ABAP – Operações em tabela do Dicionário
ABAP – Operações em tabela do Dicionário
ABAP – Operações em tabela do Dicionário
ABAP – Manipular Arquivos
ABAP – Manipular Arquivos
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = 'c:\temp\teste_down.csv'
FILETYPE = 'ASC'
tables
data_tab = it_arquivo
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22.
ABAP – Manipular Arquivos
call function 'GUI_UPLOAD'
exporting
filename = 'c:\temp\teste.csv'
tables
data_tab = it_saida
exceptions
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
others = 17
.
ABAP – Interfaces
Técnica de programação para a inserção de dados dentro do SAP.
Passos para criação de uma BDC Session:
ABAP – Interfaces
Identificar tela a ser processada
Quando um usuário entra com dados no SAP utiliza transações. Cada transação tem várias telas identificadas por um nome de programa e um número de tela. As informações sobre a tela atual é obtida através no menu System, item Status.
Além de identificar o nome do programa e número da tela, deve-se também identicar o(s) campo(s) que se deseja entrar com o dados. Para conseguir saber o nome da tabela/estrutura e o nome do campo deve-se clicar sobre o campo que entraria com o dado e teclar <F1> seguido do botão “Informações Técnicas”.
Nesta tela consegue-se quase todos os dados para a sessão de BDC. O nome do programa, o número da tela e o nome do campo para a sessão de Batch input.
Além destes dados deve-se saber quais as teclas/funções de movimentação entres as telas. Por exemplo, se para passar para a próxima tela da transação deve-se teclar <Enter>, o código para a BDC é “/0”.
ABAP – Interfaces
Gerar tabela BDC
A tabela BDC é uma tabela interna com uma estrutura específica no qual é preenchida para ser enviada para a sessão batch input. Esta estrutura se chama BDCDATA e tem os seguintes campos:
Campo Tipo Descrição
Program Char(40) Nome do programa da transação
Dynpro Numc(4) Número da tela da transação
Dynbegin Char(1) Indicador de uma nova tela
Fnam Char(132) Nome do campo da tela
Fval Char(132) Valor a ser colocado no campo
Exemplo de uma tabela com estrutura BDCDATA com dados:
Program dynpro dynbegin fnam fval
SAPMF02K 0100 X
RF02K-LIFNR 0010010
RF02K-EKORG CNTL
SAPMF02K 0200 X
...
...
ABAP – Interfaces
Para facilitar o trabalho de mapeamento dos campos, o SAP dispõe de uma ferramenta que faz isso para o programador. É a transação SHDB. Essa transação monitora todos os passos que o usuário faz quando utiliza uma transação e a resposta do SHDB é uma lista com os campos e telas que foram utilizados, permitindo que o programador crie as tabelas BDC.
Essa transação funciona da seguinte forma:
ABAP – Interfaces
Call transaction
Possibilita o processamento de uma tabela BDC imediatamente pelo sistema. Os dados da tabela BDC são utilizados para executar a transação e o return code deste comando nos mostra se a transação foi executada com sucesso ou não.
A sintaxe deste comando é:
Os modos para executar este comando são:
A Mostra todas as telas
E Mostra apenas telas com erros
N Não mostra as telas
Em adição ao return code, podemos utilizar as variáveis de sistema para recuperar a mensagem que o SAP enviou ao término do processamento. As variáveis mais utilizadas são: SY-MSGID, SY-MSGV1, SY-MSGV2, SY-MSGV3 e SY-MSGV4.
ABAP – Interfaces
Exemplo:
ABAP – Interfaces
É um conceito muito utilizados nas implantações, e mesmo em interfaces no dia-a-dia, trata-se de um processamento automático, com todos os passos de um processamento manual, para qualquer transação do ECC, ou seja, qualquer transação do ECC, pode ser executada via um arquivo texto, montando-se uma máscara e executando-se automaticamente uma certa transação, quantos forem os registros do arquivo texto.
É primordial para a integridade dos dados, que as tabelas não seja armazenadas diretamente (comandos INSERT, MODIFY ... ), pois por mais que achemos que sabemos quais as tabelas que são armazenadas quando uma transação é executada, somente poderemos garantir a integridade executando-se a própria transação.
Relacionaremos abaixo os passos necessários para a montagem de um programa de BATCH INPUT (Carga automática de dados ).
1 – Determinar a transação desejada.
2 – Determinar os campos e funções por tela a serem preenchidas em uma execução manual.
3 – Montar o layout do arquivo texto a ser processado.
4 – No programa : Pedir parâmetros e consistir parâmetros.
5 – Para cada registro lido, Montar máscara de dados ( Tabela Interna BDCDATA ).
6 – Para Interfaces não críticas: Tentar executar com método CALL TRANSACTION, se o retorno não for sucesso enviar para a pasta de BATCH INPUT.
7 – Para Interfaces críticas: Enviar para a pasta de BATCH INPUT.
8 – Emitir um resumo de Execução.
ABAP – Interfaces
Batch Input
A segunda maneira para processar uma sessão de BDC é submetendo-a ao sistema via processamento batch. Ao contrário do CALL TRANSACTION, estas transações não serão executadas imediatamente, serão colocadas em uma pasta de Batch Input que pode ser executada na transação SM35 ou schedulada para rodar em um dia e uma hora desejada.
Existem três módulos de funções que devem ser executados para este tipo de processamento.
Esta função abre a sessão de BDC e necessita ser chamada antes de qualquer processamento.
Esta função é chamada para cada transação no processamento Batch.
Esta função deve ser chamada após todo processamento para que a pasta de processamento Batch seja criada.
ABAP – Interfaces
BDC_OPEN_GROUP
CLIENT Cliente do SAP que será processada a sessão
GROUP Nome para a pasta de Batch input (não precisa ser único)
HOLDDATE Suspende o processamento da pasta de Batch input até a data especificada
KEEP Mantem a pasta de Batch Input após o processamento
USER Nome de usuário que executará o Batch Input.
BDC_INSERT
TCODE Código da transação na qual será executada a tabela BDC
DYNPROTAB Nome da tabela interna utilizada para gerar a pasta de Batch
BDC_CLOSE_GROUP
Não existem parâmetros a serem passados para esta função
ABAP – Interfaces
Exemplo:
ABAP – Interfaces
Exercício: Call Transaction
Batch Input
Exercício: Utilizar função num report
SAPMV45A | 0101 | X |
| |
|
| BDC_OKCODE | /00 | |
|
| VBAK-AUART | ZVPT | |
|
| VBAK-VKORG | B004 | |
|
| VBAK-VTWEG | 01 | |
|
| VBAK-SPART | 02 | |
SAPMV45A | 4001 | X |
| |
|
| BDC_OKCODE | /00 | |
|
| VBKD-BSTKD | testeDRP | |
|
| KUAGV-KUNNR | 15 | |
|
| RV45A-KETDAT | 29.04.2008 | |
|
| RV45A-KPRGBZ | D | |
|
| VBKD-PRSDT | 29.04.2008 | |
|
| VBKD-ZTERM | 0001 | |
|
| RV45A-MABNR(01) | OMO EM PO | |
|
| RV45A-KWMENG(01) | 10 | |
|
| VBAP-VRKME(01) | 001 | |
SAPMV45A | 4001 | X |
| |
|
| BDC_OKCODE | =SICH | |
ABAP – Interfaces
Business Application Programming Interface (BAPI) - Interface de programação standard que permite acesso externo a processos e dados do SAP.
Como encontrar BAPI para uma transação
ABAP – Interfaces
ABAP – Interfaces
Como encontrar BAPI opção 2.
ABAP – Interfaces
Exercício: BAPI
Exercício: BAPI
ABAP – Enhancements
São “aberturas” para adicionar funcionalidades específicas a programas “Standards”, sem a necessidade de modificar a aplicação original.
Trás como benefício:
- Não afetar o código standard SAP
- Não afetar atualizações de versão
Porém, nem todos os programas e telas do SAP possuem essas exits.
ABAP – Enhancements
ABAP – Enhancements
ABAP – SCREEN EXIT
ABAP – SCREEN EXIT
Quando implantamos uma exit, muitas vezes precisamos ler dados adicionais disponíveis no programa principal da SAP mas não visíveis dentro da exit.
Com o uso de field-symbols podemos acessar essas informações externas. O código abaixo demonstra como fazê-lo numa field-exit do campo BSTNR na transação ME21.
ABAP – SCREEN EXIT
Macro
Função p/ Exibir Grid
ABAP – SCREEN EXIT
ABAP – SCREEN EXIT
ABAP – Performance
ABAP – Performance
ABAP – Performance
ABAP – Module Pool
ABAP – Module Pool
ABAP – Module Pool
ABAP – Module Pool
ABAP – Module Pool
ABAP – Module Pool
ABAP – Smartforms
ABAP – Smartforms
ABAP – Smartforms
ABAP – Dúvidas
?