Introdução Abap
Introdução Abap
Introdução Abap
ABAP
Belo Horizonte
INTRODUÇÃO ...................................................................................................................2
NAVEGAÇÃO SAP ............................................................................................................7
ARQUITETURA SAP ERP .............................................................................................11
FERRAMENTAS DO ABAP WORKBENCH ...............................................................16
PRINCIPAIS TRANSAÇÕES .........................................................................................23
DICIONÁRIO DE DADOS ..............................................................................................25
LOCALIZAÇÃO DE INFORMAÇÕES NO AMBIENTE SAP ..................................36
CONHECIMENTO BÁSICO DE PROGRAMAS ABAP .............................................45
PRINCIPAIS COMANDOS SAP ABAP ........................................................................60
FLUXO DE PROCESSAMENTO E MODULARIZAÇÃO .........................................68
ACESSO AO BANCO DE DADOS .................................................................................72
PERFORMANCE .............................................................................................................77
DEPURAÇÃO ...................................................................................................................82
FUNÇÕES / GRUPOS DE FUNÇÃO .............................................................................87
USER EXITS E BADIS ....................................................................................................90
RELATÓRIOS (REPORTS, ALV, SAPSCRIPTS E SMARTFORMS) .....................96
AJUDAS DE PESQUISA................................................................................................104
INTERFACES .................................................................................................................107
SHDB E BATCH-INPUTS .............................................................................................108
BAPI’s ..............................................................................................................................123
DIÁLOGO DE ATUALIZAÇÃO (SM30) ....................................................................128
ABAP QUERY.................................................................................................................130
INTRODUÇÃO
O SAP ERP
• SAP Business One – solução ideal para pequenas empresas, que abrange seus
processos centrais, tais como finanças, vendas, serviço ao cliente e operações;
• SAP Business ByDesign – solução para pequenas e médias empresas que querem
utilizar uma solução por demanda para otimizar seus processos centrais;
• SAP Business All-in-One – solução para pequenas e médias empresas com
requisitos muito específicos. Pode ser planejado e graças aos cenários
empresariais pré-configurados e aos aceleradores de implementação, pode ser
implementado de forma rápida;
• SAP Business Suite – é um pacote completo de software empresarial que
desempenha uma função central na empresa na qual é instalado.
SAP Enterprise Resources SAP ERP Human Capital Management; SAP ERP
Planning Financials; SAP ERP Operations, SAP ERP Corporate
Services
1.2. O ABAP
O desenvolvimento dos produtos SAP R/1 e o SAP R/2, predecessores do SAP R/3
e do próprio SAP ERP, utilizava códigos em Assembler. Ainda na década de 1970, com
o crescimento da SAP e a necessidade de simplificar o processo de análise e agilizar os
desenvolvimentos, a SAP criou em meados de 1980 o ABAP/3, sigla que, em alemão,
designava Allgemeiner Berichts- und Aufbereitungsprozessor (em inglês: General
Reporting and Preparation Processor). Consistia de uma linguagem interpretada que
possibilitava a criação de programas de negócio e transações de diálogo facilmente. O
desenvolvimento do ABAP foi realizado de forma relativamente independente, apesar de
ter sido influenciado por outras linguagens de programação, como COBOL e Pascal.
Em 1992, com o surgimento do SAP R/3, foi lançado o ABAP/4 e a sua
designação passou a ser uma sigla de Advanced Business Application Programming.
Com o surgimento da versão 4.0 do SAP foi lançado o ABAP Objects, que é um suporte
da linguagem à programação orientada a objetos.
NAVEGAÇÃO SAP
SAP GUI é uma abreviação para SAP Graphical User Interface e, em nosso curso
vamos trabalhar com o SAPGUI para Windows, que é uma ferramenta desenvolvida em
C ou C++ e suporta todas as transações em um sistema da SAP.
A forma de se acessar o SAPGUI para Windows é através do programa SAP
Logon, que deve estar configurado para acessar o sistema SAP desejado. Desta forma,
caso ele não esteja configurado, é necessário realizar os seguintes passos:
Será exibida a tela inicial do SAP Logon, com os sistemas disponíveis para acesso.
Caso o sistema desejado não se encontre na lista de sistemas, deve-se clicar em “Novo”,
e criar uma conexão para acesso:
Dica:
• Programas;
• Grupos de função;
• Tabelas;
• Componentes Web dynpro;
• Pacotes.
Object Navigator
ABAP Dictionary
ABAP Editor
Class Builder
Function Builder
Screen Painter
Menu Painter
O Menu Painter é utilizado para criar, editar ou visualizar status de telas, objetos
de interface, lista de status, barras de menu, listas de menu, definição de teclas de função,
lista de funções e lista de títulos. Os objetos criados através do Menu Painter são
utilizados para construir as interfaces para programas ABAP (menus, teclas de função,
barra de títulos, dentre outros).
Pode ser acessado através da transação SE41, ou do caminho de menu
Ferramentas > ABAP Workbench > Desenvolvimento > Interface > Menu Painter
Ambiente de Programação
Manutenção de elementos de textos
Manutenção de variantes
Editor de telas divididas
Outras ferramentas
Manutenção de Menu de Área
Manutenção de transações
Modificações
Assistente de modificações
PRINCIPAIS TRANSAÇÕES
Abaixo estão relacionadas algumas transações que podem ser úteis no trabalho de
desenvolvimento.
SE64 Terminology
SE71 Formulário SAPscript
SE72 Estilos SAPscript
SE80 Object Navigator
SE81 Hierarquia de aplicações
SE82 Hierarquia de aplicações
SE84 Sistema info Repository R/3
SE85 ABAP/4 Dictionary sistema info
SE91 Atualização de mensagem
SE92 Nova atual.mensags.SysLog a part.4
SE93 Atualização de códigos de.transação
SHD0 Variantes de transação e de tela
SM04 Lista de usuários
SM12 Exibir e eliminar bloqueios
SM13 Administrar registros de atualização
SM30 Chamada da atualização de visões
SM36 Escalonar job em background
SM37 Síntese da seleção de jobs
SM50 Síntese do processo operacional
SM51 Lista dos sistemas SAP
SM59 Destinos RFC (exib.e atualização)
SMARTFORMS SAP Smart Forms
SMOD Administração de ampliações SAP
SO10 SAPscript textos standard
SQ00 SAP Query: executar queries
SQ01 SAP Query: atualizar queries
SQ02 SAP Query: atualizar InfoSet
SQ03 SAP Query: atualização de grupos usuários
SQ07 SAP Query: ajuste de idiomas
ST05 Performance Trace
ST22 ABAP análise dump
SU20 Atualização dos campos autorização
SU21 Atualizar objetos de autorização
SU24 Verific.obj.autoriz.em transações
SU53 Análise da verificação autorização
SWO1 Business Object Builder
DICIONÁRIO DE DADOS
Domínios:
Elementos de dados:
Além disso, o elemento de dados possui uma seção específica para os textos que
o identificam no sistema SAP:
Tabelas transparentes
• Data browser / atualização visão tabs. – indica se para a tabela podem ser criados
diálogos de atualização automática para o seu conteúdo.
Uma tabela pode conter ainda declarações do tipo INCLUDE e do tipo APPEND,
que são estruturas que são incorporadas à definição da tabela e representam campos
criados no banco de dados. É desta forma que a SAP disponibiliza possibilidades para
ampliação de tabelas standard.
Além das tabelas do tipo transparente, podem existir tabelas do tipo pool ou
cluster. As tabelas do tipo pool são utilizadas para armazenar um grande número de
tabelas não relacionadas numa única tabela física. Uma tabela do tipo cluster pode
armazenar informações de diferentes tabelas numa única tabela. As chaves das diferentes
tabelas utilizadas num cluster devem ser a mesma
Estruturas
Categoria de tabela
Visões
• Visões de projeção: visões de projeção são utilizadas para ocultar campos de uma
tabela de banco de dados. Desta forma, quando uma visão de projeção é criada,
ela é associada a uma tabela transparente e os campos que não desnecessários
podem ser omitidos, o que simplifica a interface.
• Visões de manutenção: são visões que utilizam uma ou mais tabelas dentro de
uma unidade lógica e podem ser utilizadas para criar, modificar ou exibir
informações deste agrupamento de informações. A maior diferença das visões de
banco de dados para as visões de manutenção é que estas últimas permitem a
edição das informações das tabelas. Este tipo de visão é amplamente utilizado para
a manutenção de informações de tabelas de configuração e podem ser também
utilizadas para a manutenção de informações em tabelas criadas (SM30).
Ajudas de pesquisa
Objetos de bloqueio
• Na maior parte das telas do SAP ERP está disponível a opção de menu “Sistema >
Status”, que apresenta uma tela conforme a seguinte:
• A partir de uma tela SAP, pode-se acionar a ajuda para o campo e obter o nome do
campo onde se encontra a informação no sistema. Quando a informação apresentada
for parte de uma estrutura, é possível, através da navegação SAP, chegar à tabela
transparente em que o campo ocorre, através de pesquisa pelo elemento de dados:
F1 para o campo
• Quando uma mensagem de erro ocorre numa transação SAP, é possível obter o
número da mensagem gerada e navegar até os programas onde a mensagem é prevista:
Telas de Seleção
Uma tela de seleção é uma tela criada via código ABAP, e é utilizada basicamente
como a primeira tela de um programa, para a entrada de informações iniciais,
particularmente nos programas do tipo report.
Quando a definição de uma tela de seleção é incluída num programa ABAP, a tela
é automaticamente renderizada no momento da execução e exibida no momento da
chamada do programa.
De forma geral, é definida apenas uma tela de seleção, utilizada para possibilitar
a passagem dos parâmetros iniciais do programa, mas é possível incluir mais de um nível
de telas de seleção:
Os principais comandos utilizados para a criação de telas de seleção são:
Comando Descrição
SELECTION-SCREEN Utilizado para opções de formatação de layout numa
tela de seleção, tais como blocos, frame, linhas
divisórias, linhas de comentário, linhas em branco,
entre outros.
Pode ser utilizado também para definir telas de
seleção em programas do tipo pool de módulos.
Neste caso o número da tela deve ser explicitamente
declarado.
Para mais detalhes, consultar a documentação em
http://help.sap.com/saphelp_45b/helpdata/en/34/8e7
3f26df74873e10000009b38f9b8/content.htm
PARAMETERS Declara um campo do tipo parâmetro que recebe um
valor único na tela.
Tem algumas opções de formatação, tais como:
• Referência direta a um tipo ABAP;
• Referência a um campo de tabela ou estrutura
do dicionário;
• Saída do tipo checkbox;
• Saída do tipo radiobutton
SELECT-OPTIONS Declara um campo do tipo parâmetro que pode
receber valores múltiplos. O campo utilizado como
referência no SELECT-OPTIONS deve estar
declarado no programa ABAP (instruções TABLES
ou DATA)
Saída de PARAMETERS:
Saída de SELECT-OPTIONS:
TABLES lfa1.
Tipos de dados
Definições de tipos
Além dos tipos elementares, tipos complementares podem ser definidos dentro de
um programa ABAP. Estas definições são realizadas através da instruções TYPES. Os
tipos declarados dentro de um programa somente podem ser utilizado dentro do próprio
programa. As definições de tipos são utilizadas principalmente para a criação de tipos de
dados complexos que não precisam ser definidos sucessivas vezes dentro de um programa
e podem ser utilizados na definição de diferentes variáveis e / ou tabelas internas.
Variáveis
As variáveis são definições utilizadas num programa ABAP para a criação de uma
área de memória identificada que pode ser utilizada para o tratamento de informações em
tempo de execução. Quando um programa ABAP é executado, as variáveis definidas são
criadas pelo interpretador ABAP em tempo de execução e podem ser utilizadas para
receber e tratar valores que o programa recebe, acessa ou calcula.
São definidas através da instrução DATA e devem ter um tipo associado. Caso a
informação do tipo seja omitida na definição de uma variável, o interpretador ABAP
criará automaticamente uma variável do tipo C de uma posição.
Exemplos de definições de variáveis:
Variáveis complexas
Além das variáveis simples, que representam uma área de memória unicamente
identificada no tempo de execução de um programa, podem ser definidas também
variáveis complexas, que caracterizam-se principalmente pela existência de mais de um
campo com uma identificação em comum.
Seguem alguns exemplos de definições de variáveis complexas num código
ABAP:
Tabelas internas
Uma tabela interna pode ou não possuir uma linha de cabeçalho. Quando a tabela
interna é definida com cabeçalho, as operações de leitura, modificação de informações ou
criação de linhas são realizadas através de sua linha de cabeçalho. Quando a tabela interna
é definida sem uma linha de cabeçalho, é necessário definir uma área de trabalho
separadamente para que se possa trabalhar com as informações da tabela interna.
A tabela interna IT_LFA1 é criada sem uma linha de cabeçalho e, neste caso, é
necessária a declaração de WA_LFA1 para que se possa trabalhar com o seu conteúdo.
2. Definição de uma tabela interna com os seus campos através do comando DATA
e suplemento OCCURS:
Neste caso, a tabela é criada sem uma linha de cabeçalho, sendo necessário a
declaração de uma estrutura auxiliar para se trabalhar com as informações do conteúdo
da tabela.
Constantes
Uma constante é um tipo de variável que possui um único valor durante todo o
tempo de execução do programa. Este valor não pode ser alterado pela lógica de
programa. A sua definição é realizada através da instrução CONSTANTS.
Na definição de uma constante, o suplemento VALUE é obrigatório.
CONSTANTS: c_pi TYPE p DECIMALS 10 VALUE '3.1415926536'.
Tabela SYST
O ambiente SAP disponibiliza em tempo de execução a tabela SYST, que contém
informações de sistema que podem auxiliar no desenvolvimento. Pode ser mapeada
também através da nomenclatura SY + “-“ + nome do campo. Algumas das informações
disponíveis são:
Type Content
Name
When printing lists, contains a value that displays where printing was
sy-callr c(8) started - for example, NEW-PAGE for program-controlled printing, or
RSDBRUNT for printing from the selection screen.
Current position during creation of a list in the list buffer. Counting begins
at 1. In non- Unicode systems, this position also corresponds to the
column in the displayed list. In Unicode systems, this is only guaranteed for
sy-colno i
the lower and upper output limits applicable to each output, as one
character may take up more columns in the list than positions in the list
buffer.
Page number of the page displayed at the top of the list for which a list
sy-cpage i
event was triggered. Counting begins at 1.
At PAI, contains "X" if at least one input field of a screen has been changed
sy-datar c(1)
by a user or by further data transfer, otherwise initial.
Local date of the user - for example, "19990723". Can be set using GET
sy-datlo d
TIME.
sy-datum d Local date of the ABAP system. Can be set using GET TIME.
Screen group of the current screen. In the Screen Painter, several screens
sy-dyngr c(4) can be assigned to a common screen group, which can be used, for
example, for making modifications to all screens in the group at once.
sy-fdpos i Found location for search in byte-type and character-type data objects.
Loop index. In DO and WHILE loops, contains the number of the loop
sy-index i
passes including the current pass.
Single-character language key - for example, "D", "E", "F" - for the current
sy-langu c(1) text environment. Set according to the logon language of the user or by
using the statement SET LOCALE.
List line for which a list event was triggered. Counting begins at 1 and
sy-lilli i
includes the page header.
Page length of the current list during list creation. sy-linct is 0 for a
sy-linct i standard list of any length, and has a value that is not 0 for lists with a
defined page length.
Current list line during list creation. Counting begins at 1 and includes the
sy-linno i
page header.
sy-linsz i Line width of the current list in the list buffer during list creation.
Content of the list line in the list buffer, on which the cursor was
sy-lisel c(255)
positioned while a list event was triggered (restricted to the first 255 lines).
sy-listi i List level of the list for which a list event was triggered.
List level of the list that is currently being created (basic list: 0, details lists:
greater than 0). For every interactive list event, sy-lsind is
sy-lsind i
automatically increased by an increment of 1. sy-lsind can only be
changed in ABAP programs for navigating between details lists.
sy-macol i When printing lists, contains the number of columns on the left edge.
client identifier with which the user has logged on - for example, "401",
sy-mandt c(3)
"800".
sy-marow i When printing lists, contains the number of lines on the top margin.
sy-msgid c(20) After the statement MESSAGE, contains the message class.
sy-msgno n(3) After the statement MESSAGE, contains the message number.
sy-msgty c(1) After the statement MESSAGE, contains the message type.
sy-msgv1
After the statement MESSAGE, contain the contents of the fields that
... sy- c(50)
msgv4 were used as placeholders in the message.
sy-prdsn c(6) When printing lists, contains the name of the spool file.
sy-saprl c(4) Release status of the ABAP system - for example, "46D", "610".
sy-slset c(14) Variant that was used for filling a selection screen.
sy-spono n(10) When printing lists, contains the name of the spool number.
Number of the first column displayed in the list for which a list event has
sy-staco i
been triggered. Counting begins at 1.
Number of the list line displayed at the top of the page at the top of the
sy-staro i list, for which a list event was triggered. Counting begins at 1 and does not
include the page header.
sy-stepl i Index of the current line in a table control. This is set for every loop pass.
Return value that is set by many ABAP statements. In general, the value 0
means that the statement was executed with no problems. Depending on
sy-subrc i
which statement was used to set sy-subrc, the cause of any errors can
be derived from the corresponding value.
sy-sysid c(8) Name of the ABAP system - for example, "S01", "K99".
sy-timlo t Local time of the user, for example "152557". Can be set using GET TIME.
sy-title c(70) Text that appears in the title bar of the screen.
These system fields can be assigned values in the program. At the event
sy-tvar0
TOP-OF-PAGE, the content of sy-tvar0 to sy-tvar9 replaces the
... sy- c(20)
placeholders "&0" to "&9" in the list and column headers of the text
tvar9
elements of the program.
sy-uline c(255) Contains a horizontal line of length 255 for displaying in lists.
sy-uzeit t Local time of the ABAP system. Can be set using GET TIME.
sy-zonlo c(6) Time zone of the user - for example, "CET", "PST".
DATA:
res TYPE x LENGTH 1,
p1 TYPE x LENGTH 1 VALUE '5B', "01011011
p2 TYPE x LENGTH 1 VALUE '13', "00010011
p3 TYPE x LENGTH 1 VALUE 'A5'. "10100101
Operações condicionais
IF log_exp1.
[statement_block1]
[ELSEIF log_exp2.
[statement_block2]]
...
[ELSE.
[statement_blockn]]
ENDIF.
CHECK log_exp.
EQ ou = Igual
NE ou <> Diferente
GT ou > Maior que
LT ou < Menor que
GE ou >= Maior ou igual a
LE ou <= Menor ou igual a
CO Contains only
CN Contais not any
CA Contains any
NA Contains not any
CS Contains string
NS Contains no string
CP Cotains pattern
CL Contains no pattern
O comando DELETE elimina uma ou mais linhas de uma tabela interna a partir
de uma condição.
Comandos de continuidade
número de vezes em que o DO será executado é opcional e, caso esta cláusula seja
emitida, o DO executa até que um comando EXIT seja executado.
DO [n TIMES] [varying].
[statement_block]
ENDDO.
STOP.
CONTINUE.
LEAVE PROGRAM.
Comandos de reinicialização
CLEAR dobj.
REFRESH itab.
FREE dobj.
Comandos de atribuição
destination = source.
TYPES:
BEGIN OF tab_type,
para TYPE string,
dobj TYPE string,
END OF tab_type.
DATA:
id TYPE c LENGTH 10 VALUE 'TEXTS',
text1 TYPE string VALUE `IKE`,
text2 TYPE string VALUE `TINA`,
line TYPE tab_type,
itab TYPE STANDARD TABLE OF tab_type.
line-para = 'P1'.
line-dobj = 'TEXT1'.
APPEND line TO itab.
line-para = 'P2'.
line-dobj = 'TEXT2'.
APPEND line TO itab.
ULINE.
O comando SKIP é utilizado para a impressão de uma linha em branco numa lista
ABAP.
SKIP.
O comando SET PF-STATUS é utilizado para definir uma barra de status em uma
tela ABAP.
O comando SET TITLEBAR é utilizado para definir uma barra de títulos em uma
tela ABAP.
O comando LEAVE sai da tela corrent e vai para a próxima. Pode ser utilizado
com o número da próxima tela declarado de forma explícita.
Além dos blocos de processamento básicos, um programa ABAP pode conter uma
ou mais subrotinas. As subrotinas são blocos de processamento que tem a finalidade de
proporcionar uma modularização do código ABAP bem como proporcionar a sua
reutilização dentro do próprio programa ou em programas externos.
As subrotinas são definidas conforme os exemplos abaixo:
*&--------------------------------------------------------------------
-*
*& Report ZAB_BI_00
*& Curso ABAP para funcionais - Korun
*& Subrotinas
*&--------------------------------------------------------------------
-*
*& Desenvolvido por: Alan Campos de Oliveira
*&--------------------------------------------------------------------
-*
REPORT zaf_su_00.
d_num1 = 5.
d_num2 = 10.
*&--------------------------------------------------------------------
-*
*& Form pass_ref
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
* -->P_D_NUM1 text
* -->P_D_NUM2 text
*---------------------------------------------------------------------
-*
FORM pass_ref USING p_d_num1
p_d_num2.
p_d_num1 = 100.
p_d_num2 = 200.
Note que uma subrotina pode conter a definição de parâmetros, que são
informações passadas a cada chamada via PERFORM. Há duas formas principais de
passagem de parâmetros:
• Parâmetros por valor – quando uma subrotina recebe um parâmetro por valor, o
parâmetro não é alterado por ela, mas é realizada uma cópia, que serve para utilização
no processamento. A passagem por valor deve ser declarada explicitamente através
da cláusula VALUE;
• Parâmetros por referência – quando uma subrotina recebe um parâmetro por
referência, a própria área de memória que foi passada durante o PERFORM é
acessada por ela, e qualquer alteração em seu conteúdo é imediatamente refletida na
área de memória original.
Palavra-chave Função
SELECT Realiza leitura de informações no banco de dados
INSERT Realiza inclusão de registros em tabelas do banco de dados
UPDATE Realiza modificação em conteúdo de tabelas do banco de dados
MODIFY Insere ou modifica registros em tabelas do banco de dados
DELETE Elimina registros de tabelas do banco de dados
OPEN CURSOR, Realiza leitura de informações no banco de dados utilizando o
FETCH, cursor
CLOSE CURSOR
Sintaxe básica
SELECT result
FROM source
INTO|APPENDING target
[[FOR ALL ENTRIES IN itab] WHERE sql_cond]
[GROUP BY group] [HAVING group_cond]
[ORDER BY sort_key].
...
[ENDSELECT].
SELECT SINGLE *
FROM lfa1
WHERE lifnr = p_lifnr.
O SELECT sem cláusula WHERE recupera todos os registros da tabela e executa o bloco de
comando contido entre SELECT e ENDSELECT a cada registro obtido do banco de dados.
SELECT *
FROM lfa1.
APPEND it_lfa1.
ENDSELECT.
SELECT *
FROM lfa1
WHERE lifnr BETWEEN 1000 AND 2000.
APPEND it_lfa1.
ENDSELECT.
SELECT *
INTO TABLE it_lfa1
FROM lfa1.
SELECT *
INTO TABLE it_lfa1
FROM lfa1.
IF sy-subrc IS INITIAL.
SELECT *
INTO TABLE it_lfm1
FROM lfm1
FOR ALL ENTRIES IN it_lfa1
WHERE lifnr = it_lfa1-lifnr.
ENDIF.
Utilização de UP to N rows
O SELECT UP TO n ROWS recupera os registros da tabela até que se atinja o
número de registros declarados através da cláusula UP TO n ROWS.
SELECT *
FROM lfa1
UP TO 10 ROWS
WHERE lifnr BETWEEN 1000 AND 2000.
APPEND it_lfa1.
ENDSELECT.
Funções adicionais
SELECT *
FROM lfa1.
SELECT *
FROM lfm1
FOR ALL ENTRIES IN it_lfa1
WHERE lifnr = it_lfa1-lifnr.
it_lfa1 = lfa1.
APPEND it_lfa1.
it_lfm1 = lfm1.
APPEND it_lfm1.
ENDSELECT.
ENDSELECT.
Uma opção mais eficiente neste caso seria a utilização de busca de array e um
FOR ALL ENTRIES para seleção das informações da segunda tabela. Este acesso é mais
eficiente uma vez que a busca das informações é realizada de uma única vez em cada
SELECT.
SELECT *
INTO TABLE it_lfa1
FROM lfa1.
IF sy-subrc IS INITIAL.
SELECT *
INTO TABLE it_lfm1
FROM lfm1
FOR ALL ENTRIES IN it_lfa1
WHERE lifnr = it_lfa1-lifnr.
ENDIF.
Exemplo 1:
DATA: BEGIN OF it_lfm1 OCCURS 0,
lifnr type lfm1-lifnr,
ekorg type lfm1-ekorg,
name1 type lfa1-name1.
DATA: END OF it_lfm1.
LOOP AT it_lfm1.
MODIFY it_lfm1.
ENDLOOP.
Exemplo 2:
IF sy-subrc IS INITIAL.
SELECT lifnr name1
INTO TABLE it_lfa1
FROM lfa1
FOR ALL ENTRIES IN it_lfm1
WHERE lifnr = it_lfm1-lifnr.
ENDIF.
LOOP AT it_lfm1.
it_lfm1-name1 = it_lfa1-name1.
MODIFY it_lfm1.
ENDLOOP.
SELECT *
INTO TABLE it_lfa1
FROM lfa1.
Nota: Para leitura de tabelas internas via busca binária, ela deve ter sido ordenada
previamente pela chave de busca através do comando SORT. No exemplo acima:
Transação Utilização
ST05 Trace BD
SE30 Análise de tempo de execução de objetos ABAP
Processamento de Programas
Campos:
• Mostra o conteúdo de até oito campos.
• Dependendo da configuração do sistema, é possível modificar o conteúdo de
uma variável.
• Na tela de depuração existe uma barra de menu principal.
Tabela Interna:
Exibe o conteúdo de uma tabela interna.
Pontos de Parada:
Exibe uma tela contend
contendo todos os breakpoints.
Watchpoints:
Pode-se
se criar watchpoints para campos. Desta forma o programa é interrompido
Introduçã
ção ABAP Esse material é da LPJ Consultoria e Treinamento ltda.
84
quando o valor do campo mudar para o valor definido.
Para criar um watchpoint, a qualquer momento, basta clicar neste botão.
É preciso definir o nome do programa, nome do campo desejado, operador
relacional e o conteúdo do campo, conforme exemplo acima.
Chamadas:
Mostra a seqüência corrente dos eventos.
A última chamada ativa é mostrada no topo da lista.
Quando um evento (por exemplo, START-OF-SELECTION) é concluído, o
mesmo é excluído da tela.
Síntese:
Exibe a estrutura do programa. Lista seus eventos, sub-rotinas, módulos e a seção
em processamento.
Diferente das chamadas, aqui é listado todos os eventos em ordem sem apagá-los
de acordo durante a execução.
Opções:
Tipos de Execução:
• Executar: Botão ou F6
Permite que o programa seja executado passo a passo, porém neste caso, sub-rotinas
• Retorno: Botão ou F7
É feita a execução completa da sub-rotina ou função, ou seja, retorna ao ponto onde
foi originada a chamada desta sub-rotina ou função.
Módulos de Função
Módulos de função são tipos especiais de programas ABAP que podem ser
chamados a partir de outros programas ABAP. Sua finalidade principal é o
encapsulamento de código de funções globais no sistema SAP.
Possuem uma interface, na qual é possível definir parâmetros que realizam a
comunicação entre o módulo e os programas que o utilizam. São possíveis os seguintes
tipos de parâmetros:
• Importação – parâmetros de importação do módulo de função, que servem para
receber os dados dos programas de chamada;
• Exportação – parâmetros que são exportados durante o processamento do módulo
de função, e servem para disponibilizar informações ou resultados de
processamentos;
• Modificação – parâmetros que podem ser modificados durante o processamento
do módulo de função;
• Tabelas – parâmetros que podem receber mais de um registro, e servem tanto
como para a importação, como para exportação de informações pelo módulo de
função.
É possível definir exceções para o módulo de função, que são utilizadas para
indicar a ocorrência de algum erro no módulo de função pelo programa de chamada.
Os módulos de função contém uma seção de texto fonte, onde são definidos os
processamentos do código ABAP.
*&-------------------------------------------------------------------*
*& Report ZAB_MF_00
*& Curso ABAP para funcionais - Korun
*& Chamada de módulos de função
*&-------------------------------------------------------------------*
*& Desenvolvido por: Alan Campos de Oliveira
*&-------------------------------------------------------------------*
REPORT zaf_mf_00 NO STANDARD PAGE HEADING.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Grupos de Função
Userexits
Programa Objetivo
MV45AFZZ For entering installation-specific FORM routines and for using user
exits, which may be required and can be used if necessary.
MV45ATZZ For entering metadata for sales document processing. User-specific
metadata must start with "ZZ".
MV45AOZZ For entering additional installation-specific modules for sales
document processing which are called up by the screen and run
under PBO (Process Before Output) prior to output of the screen.
The modules must start with "ZZ".
MV45AIZZ For entering additional installation-specific modules for sales
document processing. These are called up by the screen and run
under PAI (Process After Input) after data input (for example, data
validation). The modules must start with "ZZ".
MV45EFZ1 For entering installation-specific FORM routines and for using user
exits, which may be required and can be used if necessary.
Exits de cliente
• Ampliações de programas;
• Ampliações de menu;
• Ampliações de tela.
Field exits
Field exits são ampliações utilizadas para validações em campos de tela standard.
São criadas com referência ao elemento de dados e podem ser realizadas para qualquer
campo de tela presente numa tela SAP.
Para a ativação, é necessário acessar a transação CMOD. Em seguida, deve-se
digitar na tela de comandos o código “PRFB”. Após estes passos, é exibida uma lista de
todas as field exits criadas no sistema:
Para todas as field exits criadas, existe um módulo de função associado, nomeada
através do padrão “FIELD_EXIT” + descritivo, onde o código de validação para o campo
pode ser inserido.
Uma restrição em field exits é que apenas mensagens de erro podem ser utilizadas.
Mensagens de informação ou aviso não são processadas.
Enhancements
A partir do SAP ECC 6.0 a SAP disponibilizou uma nova forma de ampliação em
programas standard, os enhancements. Esta modalidade de implementação tornou mais
flexível e ampliou as possibilidades de criação de código do cliente nos códigos standard
da SAP.
Entre os enhancements, podem-se distinguir os pontos de ampliação explícitos e
os pontos de ampliação implícitos.
Os pontos de ampliação explícitos são pontos de ampliação previstos pela SAP,
que podem estar presentes em qualquer parte do código de um programa standard:
Apertar SHIFT + F4 ou a opção de menu “Programa > Ampliar” para realizar a criação
do ponto.
Inserir
Composite
Criar Request
Implementar o código Z
Ativando Implementação
Cancelando implementação
Relatórios
A opção mais básica para saída de relatórios é utilizando o report via comando
WRITE. As opções de saída via comando WRITE são as seguintes:
... [LEFT-JUSTIFIED|CENTERED|RIGHT-JUSTIFIED]
[NO-GAP]
[UNDER other_dobj]
{ { [EXPONENT exp]
[NO-GROUPING]
[NO-SIGN]
[NO-ZERO]
[CURRENCY cur]
{ { [DECIMALS dec]
[ROUND scale] }
| [UNIT unit] } }
| { [ENVIRONMENT TIME FORMAT]
[TIME ZONE tz] } }
[USING { {NO EDIT MASK}|{EDIT MASK mask} }]
[ DD/MM/YY | MM/DD/YY
| DD/MM/YYYY | MM/DD/YYYY
| DDMMYY | MMDDYY
| YYMMDD ] ... .
*&-------------------------------------------------------------------*
*& Report ZAB_BI_00
*& Curso ABAP para funcionais - Korun
*& Saída de listas via WRITE
*&-------------------------------------------------------------------*
*& Desenvolvido por: Alan Campos de Oliveira
*&-------------------------------------------------------------------*
REPORT zaf_wr_00 NO STANDARD PAGE HEADING.
Resultado:
Desenvolver relatórios em ABAP com um bom visual não é uma tarefa simples.
Caso seja necessário ampliar as opções de saída, de forma a incluir cores, cabeçalho, linha
de totais, nomes e separadores de colunas a complexidade aumenta ainda mais. Se forem
solicitados recursos como a classificação por colunas, possibilidade de aumento ou
diminuição de tamanho de colunas, ocultação ou exportação para outras ferramentas,
torna-se uma tarefa praticamente impossível com o uso do recurso de listas do ABAP.
Para isso foi disponibilizado o ALV, ou ABAP List View, que faz parte de um
framework da SAP chamado Control Framework. A idéia central é uma separação da
parte visual da parte de controle do negócio. Desta forma, o desenvolvedor não precisa
se preocupar com a apresentação dos dados, concentrando os seus esforços em atividades
como seleção dos dados, tratamento das informações.
*&--------------------------------------------------------------------
-*
*& Report ZAB_BI_00
*& Curso ABAP para funcionais - Korun
*& Utilização de ALV
*&--------------------------------------------------------------------
-*
*& Desenvolvido por: Alan Campos de Oliveira
*&--------------------------------------------------------------------
-*
REPORT zaf_al_00.
* Grupos de tipos
TYPE-POOLS: kkblo,
slis.
* Tabelas/Estruturas ALV
DATA: v_layout TYPE slis_layout_alv,
v_variant LIKE disvariant,
* Variáveis auxiliares
DATA v_cprog TYPE sy-cprog.
START-OF-SELECTION.
PERFORM selecao_principal.
PERFORM relatorio.
*&--------------------------------------------------------------------
-*
*& Form selecao_principal
*&--------------------------------------------------------------------
-*
* Seleção principal das informações
*---------------------------------------------------------------------
-*
FORM selecao_principal.
ENDFORM. "selecao_principal
*&--------------------------------------------------------------------
-*
*& Form relatorio
*&--------------------------------------------------------------------
-*
* Relatório
*---------------------------------------------------------------------
-*
FORM relatorio.
REFRESH t_fieldcat.
0
space.
v_cprog = sy-cprog.
v_layout-colwidth_optimize = 'X'.
v_layout-zebra = 'X'.
ENDFORM. "relatorio
*&--------------------------------------------------------------------
-*
*& form monta_fieldcat
*&--------------------------------------------------------------------
-*
* Monta fieldcat
*---------------------------------------------------------------------
-*
FORM monta_fieldcat USING p_tabname TYPE slis_tabname
p_fieldname TYPE slis_fieldname
p_ref_tabname TYPE dd03p-tabname
p_ref_fieldname TYPE dd03p-fieldname
p_text TYPE dd03p-scrtext_l
p_len TYPE i
p_noout TYPE c.
* variáveis locais
DATA l_fieldcat TYPE slis_fieldcat_alv.
l_fieldcat-tabname = p_tabname.
l_fieldcat-fieldname = p_fieldname.
l_fieldcat-seltext_l = p_text.
l_fieldcat-seltext_m = p_text.
l_fieldcat-seltext_s = p_text.
l_fieldcat-no_out = p_noout.
ENDFORM. "monta_fieldcat
SAPscripts
Smartforms
AJUDAS DE PESQUISA
As ajudas de pesquisa são elementos do dicionário de dados utilizados para
proporcionar a um determinado campo uma janela onde é possível selecionar os valores
possíveis para entrada.
É possível criar ajudas de pesquisa para qualquer elemento de dados do SAP, e
eles podem ser associados aos campos de diversas formas:
3. Informar um método de seleção, que pode ser uma tabela SAP, ou uma exit para ajuda
de pesquisas, caso seja necessário implementar alguma lógica adicional e informar os
parâmetros (importação e exportação):
Introduçã
ção ABAP Esse material é da LPJ Consultoria e Treinamento ltda.
106
INTERFACES
• RFCs (remote function call) - são módulos de função que permitem acesso
remoto;
• BAPIs – APIs standard SAP implementadas sob a forma de RFC que podem ser
utilizadas para comunicação entre o SAP e outros sistemas.
SHDB E BATCH-INPUTS
Introduçã
ção ABAP Esse material é da LPJ Consultoria e Treinamento ltda.
111
0 T XK01
SAPMF02K 100 X
0 BDC_CURSOR RF02K-REF_LIFNR
0 BDC_OKCODE /00
0 RF02K-BUKRS 1000
0 RF02K-EKORG 1
0 RF02K-KTOKK KRED
SAPMF02K 110 X
0 BDC_CURSOR LFA1-LAND1
0 BDC_OKCODE /00
0 LFA1-ANRED Sr.
0 LFA1-NAME1 Alan Campos de Oliveira
0 LFA1-SORTL ALAN
0 LFA1-LAND1 BR
SAPMF02K 120 X
0 BDC_CURSOR LFA1-BBBNR
0 BDC_OKCODE /00
0 LFA1-KUNNR
SAPMF02K 1099ARI-
0 BDC_SUBSCR ST
SAPMF02K 1099ARI-
0 BDC_SUBSCR 01
SAPMF02K 1099ARI-
0 BDC_SUBSCR 02
SAPMF02K 1099ARI-
0 BDC_SUBSCR 03
SAPMF02K 1099ARI-
0 BDC_SUBSCR 04
SAPMF02K 1099ARI-
0 BDC_SUBSCR 05
SAPMF02K 1099ARI-
0 BDC_SUBSCR 06
SAPMF02K 130 X
0 BDC_CURSOR LFBK-BANKS(01)
0 BDC_OKCODE =ENTR
SAPMF02K 380 X
0 BDC_CURSOR KNVK-NAMEV(01)
0 BDC_OKCODE =ENTR
SAPMF02K 210 X
0 BDC_CURSOR LFB1-FDGRV
0 BDC_OKCODE /00
0 LFB1-AKONT 160000
0 LFB1-FDGRV A1
SAPMF02K 215 X
0 BDC_CURSOR LFB1-ZTERM
0 BDC_OKCODE /00
SAPMF02K 220 X
0 BDC_CURSOR LFB5-MAHNA
0 BDC_OKCODE /00
SAPMF02K 310 X
0 BDC_CURSOR LFM1-WAERS
0 BDC_OKCODE =UPDA
0 LFM1-WAERS BRL
Caso a opção de gravação seja acionada, o registro SHDB fica armazenado e pode
ser posteriormente acessado:
*&---------------------------------------------------------------------*
*& Report ZAB_BI_00
*& Curso ABAP para funcionais - Korun
*& Exemplo de CALL TRANSACTION
*&---------------------------------------------------------------------*
*& Desenvolvido por: Alan Campos de Oliveira
*&---------------------------------------------------------------------*
REPORT zaf_ct_00.
* Tela de seleção
SELECTION-SCREEN BEGIN OF BLOCK bloco1 WITH FRAME.
PARAMETERS: p_file TYPE rlgrap-filename OBLIGATORY,
p_mode TYPE c OBLIGATORY.
SELECTION-SCREEN END OF BLOCK bloco1.
START-OF-SELECTION.
PERFORM leitura_arquivo.
PERFORM preenche_bdc.
*----------------------------------------------------------------------*
* AT SELECTION-SCREEN ON VALUE-REQUEST *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
*&---------------------------------------------------------------------*
*& Form leitura_arquivo
*&---------------------------------------------------------------------*
* Leitura do arquivo
*----------------------------------------------------------------------*
FORM leitura_arquivo.
vl_filename = p_file.
IF sy-subrc <> 0.
* Mensagem em caso de erro na leitura do arquivo
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
CLEAR it_file.
it_file-sortl
it_file-land1
it_file-akont
it_file-fdgrv
it_file-waers.
APPEND it_file.
ENDLOOP.
ENDIF.
ENDFORM. "leitura_arquivo
*&---------------------------------------------------------------------*
*& Form preenche_bdc
*&---------------------------------------------------------------------*
* Criação da seção BDC e chamada do CALL TRANSACTION
*----------------------------------------------------------------------*
FORM preenche_bdc.
LOOP AT it_input_file.
REFRESH it_bdc.
ENDLOOP.
ENDFORM. "preenche_bdc
*&---------------------------------------------------------------------*
*& Form bdc_dynpro
*&---------------------------------------------------------------------*
* Monta telas do BDC
*----------------------------------------------------------------------*
* -->PROGRAM
* -->DYNPRO
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program TYPE bdcdata-program
dynpro TYPE bdcdata-dynpro.
CLEAR wa_bdc.
wa_bdc-program = program.
wa_bdc-dynpro = dynpro.
wa_bdc-dynbegin = 'X'.
APPEND wa_bdc TO it_bdc.
*&---------------------------------------------------------------------*
*& Form bdc_field
*&---------------------------------------------------------------------*
* Monta campos BDC
*----------------------------------------------------------------------*
FORM bdc_field USING fnam TYPE bdcdata-fnam
fval TYPE any.
CLEAR wa_bdc.
wa_bdc-fnam = fnam.
wa_bdc-fval = fval.
APPEND wa_bdc TO it_bdc.
*&---------------------------------------------------------------------*
*& Report ZAB_BI_00
*& Curso ABAP para funcionais - Korun
*& Exemplo de criação de Batch-input
*&---------------------------------------------------------------------*
*& Desenvolvido por: Alan Campos de Oliveira
*&---------------------------------------------------------------------*
REPORT zaf_bi_00.
* Tela de seleção
SELECTION-SCREEN BEGIN OF BLOCK bloco1 WITH FRAME.
PARAMETERS: p_file TYPE rlgrap-filename OBLIGATORY,
p_group TYPE apqi-groupid OBLIGATORY.
SELECTION-SCREEN END OF BLOCK bloco1.
START-OF-SELECTION.
PERFORM leitura_arquivo.
PERFORM preenche_bdc.
*----------------------------------------------------------------------*
* AT SELECTION-SCREEN ON VALUE-REQUEST *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
*&---------------------------------------------------------------------*
*& Form leitura_arquivo
*&---------------------------------------------------------------------*
* Leitura do arquivo
*----------------------------------------------------------------------*
FORM leitura_arquivo.
vl_filename = p_file.
OTHERS = 17.
IF sy-subrc <> 0.
* Mensagem em caso de erro na leitura do arquivo
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
CLEAR it_file.
ENDLOOP.
ENDIF.
ENDFORM. "leitura_arquivo
*&---------------------------------------------------------------------*
*& Form preenche_bdc
*&---------------------------------------------------------------------*
* Criação da seção BDC
*----------------------------------------------------------------------*
FORM preenche_bdc.
LOOP AT it_input_file.
REFRESH it_bdc.
ENDLOOP.
ENDFORM. "preenche_bdc
*&---------------------------------------------------------------------*
*& Form bdc_dynpro
*&---------------------------------------------------------------------*
* Monta telas do BDC
*----------------------------------------------------------------------*
* -->PROGRAM
* -->DYNPRO
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program TYPE bdcdata-program
dynpro TYPE bdcdata-dynpro.
CLEAR wa_bdc.
wa_bdc-program = program.
wa_bdc-dynpro = dynpro.
wa_bdc-dynbegin = 'X'.
APPEND wa_bdc TO it_bdc.
*&---------------------------------------------------------------------*
*& Form bdc_field
*&---------------------------------------------------------------------*
* Monta campos BDC
*----------------------------------------------------------------------*
FORM bdc_field USING fnam TYPE bdcdata-fnam
fval TYPE any.
CLEAR wa_bdc.
wa_bdc-fnam = fnam.
wa_bdc-fval = fval.
APPEND wa_bdc TO it_bdc.
BAPI’s
• Não é necessário o mapeamento de telas, uma vez que os parâmetros da BAPI são
informados através dos parâmetros do módulo de função;
• O tratamento de erros e feito de forma automática, e retorna sob a forma de uma
tabela, nomeada RETURN para o programa de chamada;
• BAPIs costumam ter performance superior aos processos BDC, uma vez que os
processamentos são realizados internamente, e não através da emulação de telas.
Para obter uma lista das BAPIs disponíveis, deve-se utilizar a transação BAPI:
É possível a visualização de cada campo das variáveis retornadas nos parâmetros via
metadados:
*&-------------------------------------------------------------------*
*& Report ZAB_BI_00
*& Curso ABAP para funcionais - Korun
*& Utilização de BAPIs
*&-------------------------------------------------------------------*
*& Desenvolvido por: Alan Campos de Oliveira
*&-------------------------------------------------------------------*
REPORT zaf_ba_00.
START-OF-SELECTION.
IF wa_return IS INITIAL.
WRITE: wa_generaldetail-vendor,
wa_generaldetail-name,
wa_generaldetail-name_2,
wa_generaldetail-name_3,
wa_generaldetail-name_4.
ELSE.
WRITE wa_return-message.
ENDIF.
Quando se opta pela criação, uma tela adicional é exibida e devem ser informados,
obrigatoriamente:
ABAP QUERY