Escolar Documentos
Profissional Documentos
Cultura Documentos
SAP - Apostila Acadêmica 2008 ABAP
SAP - Apostila Acadêmica 2008 ABAP
ACADEMIA ABAP
2008
INDICE
TRANSAÇÕES R/3 8
TABELAS 12
Para criar um tabela transparente: 12
Academia ABAP - 2008
TABELA CUSTOMIZADA 16
Etapas para gerar automaticamente via R/3 tratamento para manipular Tabela Customizada 16
COMO CRIAR A MANUTENÇÃO DA TABELA CUSTOMIZADA 19
PARA ACESSAR A MANUTENÇÃO DA TABELA VIA TRANSAÇÃO CUSTOMIZADA. 22
TABELAS DE VERIFICAÇÃO 28
MENSAGEM 29
Classe de mensagem: 29
Mensagem p/ usuário 30
REPORT 30
Sequência para criação do Report: 30
OPERADORES LÓGICOS 31
VARIÁVEIS: 32
CONSTANTES 32
ESTRUTURA CONDICIONAL: 32
IF 33
CASE 33
2
Academia ABAP - 2008
Loops de repetição 33
WHILE 34
DO 34
CHECK 35
PARAMETERS 35
SELECT-OPTIONS: 35
COMANDO HOTSPOT ON 38
COMANDO HIDE 38
COMANDO AT LINE-SELECTION 38
CRIAR TRANSAÇÃO 39
CRIANDO INCLUDES 47
PASSO PARA CRIAÇÃO DE UMA VIEW: 47
SUBSTRING 49
PARAMENTROS DE SELEÇÃO 49
RADIOBUTTON 49
CHECKBOX 49
RANGE 49
TRANSLATE 50
CONCATENATE 50
SPLIT 50
SHIFT 50
3
Academia ABAP - 2008
SUB ROTINAS 51
MACHCODE OBJECT 51
SET PF-STATUS 51
Habilitar/Desabilitar botões e funções de um PF-STATUS dinamicamente 52
SELECTION-SCREEN 54
AT USER-COMMAND 55
UTILIZAÇÃO DE ÍCONES 56
HELP-REQUEST 56
VALUE-REQUEST 56
CRIAÇÃO DE FUNÇÕES 56
SET CURSOR 68
4
Academia ABAP - 2008
TAB STRIP 70
Criação de tabs trips 70
Para fazer scroll em uma tabstrip (navegar entre as páginas clicando nas abinhas) sem ativar o PAI.
71
Para fazer scroll em uma tabstrip ativando o PAI 71
FIELD SYMBOLS 72
SAP TRANSACTION 73
ATUALIZAÇÃO SÍNCRONA 74
ATUALIZAÇÃO ASSÍNCRONA 74
LUW (Logical Unit of Work – Unidade lógica de trabalho) 74
FUNÇÕES STANDARD 78
Para trabalhar com Notas Fiscais: 78
Para se obter a BOM de um material 79
Para testar o status de uma ordem 79
Para criar jobs dentro de um programa abap 79
Função que calcula diferença entre datas/horas 79
Executar comandos do UNIX 79
READ_TEXT 80
POPUP SCREEN 80
TEXTOS 82
GERAL 82
Funções para conversão de unidades/medidas 85
PERFORMANCE E ERROS 87
5
Academia ABAP - 2008
BATCH INPUT 88
CALL TRANSACTION 88
DIRECT INPUT 88
Delivered BDC 89
APPLICATION LINK ENABLE 89
ELETRONIC DATA INTERCHANGE 89
REMOTE FUNCTION CALL 89
BUSINESS APPLICATION PROGRAMMING INTERFACE (BAPI) 89
RELATÓRIOS E FORMULÁRIOS 90
ABAP QUERY 90
REPORT WRITER e REPORT PAINTER 90
INFORMATION SYSTEM 90
SAPScript 90
ENHANCEMENTS 91
COMANDOS UTÉIS 91
MOVE-CORRESPONDING 91
SUM, AVG, MIN e MAX 91
UPDATE TASK 92
Para mandar um relatório direto para a impressora 92
Para concatenar variáveis em um único parâmetro utilizar o &: 92
COMENTÁRIOS 92
ÍNDICE 92
CÓDIGO MORTO 92
DICAS E TRUQUES 92
Conversões 92
Tabelas internas e dicionário 93
Como buscar resolução do vídeo 94
Gravar objetos locais para request 94
Função que cria match-code tipo estrutura de árvore para dados de catálogo 95
CARACTERÍSTICAS HERDADAS 96
6
Academia ABAP - 2008
EXEMPLOS 99
Exemplo de matchcode dinâmico dependendo de outro match code 99
Exemplo criação de JOB 99
Exemplo envio SAPOFFICE 99
Exemplo do uso de field-symbol 99
Relatório chamando job 99
Enviar e-mail através do R/3 99
Documentações na Internet: 99
7
Academia ABAP - 2008
TRANSAÇÕES R/3
AL11 Lista diretórios do SAP
AL21 Dados estatísticos sobre o código do programa
8
Academia ABAP - 2008
9
Academia ABAP - 2008
10
Academia ABAP - 2008
QMEL Nota QM
11
Academia ABAP - 2008
TABELAS
Para criar um tabela transparente:
12
Academia ABAP - 2008
13
Academia ABAP - 2008
Salvar e Ativar.
Domínio (zdo_nome_xx) ?
criação de tipo, campo auxiliar que define tamanho e tipo do campo
OBSERVAÇOES:
14
Academia ABAP - 2008
15
Academia ABAP - 2008
TABELA CUSTOMIZADA
Etapas para gerar automaticamente via R/3 tratamento para manipular
Tabela Customizada
Definir o Grupo de Função a ser utilizado pelo Repository Object (tcode SE80).
Selecionar o objeto.
16
Academia ABAP - 2008
ZCONTROLE.
17
Academia ABAP - 2008
18
Academia ABAP - 2008
Definir as
opções
técnicas e
<Salvar>.
19
Academia ABAP - 2008
20
Academia ABAP - 2008
21
Academia ABAP - 2008
22
Academia ABAP - 2008
23
Academia ABAP - 2008
Definir os parâmetros da
tabela a ser atualizada .
24
Academia ABAP - 2008
DELETE:
Deleta registros da tabela.
DELETE <tab-int>. ou
DELETE <tab_int> INDEX <nro_registro>. ou
DELETE <tab_int> WHERE <cond> = <valor>.
Delete from <tab tranparente> where cod = xxx.
REFRESH / CLEAR:
Deleta todos os registros da tabela.
REFRESH <tab_int>.
CLEAR <tab_int>[].
CLEAR <tab_int> ( Limpa Header Line ou seja cabeçalho)
FREE:
Libera tabela da memória.
FREE <tab_int>.
COLLECT:
Agrupa valores de uma tabela.
Ex. it_pedido (cód_forn, cód_pedido, cód_mat, valor)
It_totais (cód_forn, valor)
LOOP AT IT_PEDIDO.
It_totais-forn = it_pedido-cod_forn.
It_totais-valor = it_pedido-valor
COLLECT it_totais.
ENDLOOP.
MODIFY:
Modifica registros na tabela interna.
Ex.: LOOP AT it_aluno WHERE it_aluno-bolsa < 10.
25
Academia ABAP - 2008
CLEAR it_aluno-bolsa.
MODIFY it_aluno.
ENDLOOP.
SORT:
Ordena registros da tabela.
Para cada SORT faça o LOOP correspondente. Aí então iniciar novo SORT e
LOOP, e assim por diante.
READ:
Sempre deve-se utilizar BINARY SEARCH nos comandos READ TABLE itab
WITH KEY.
UPDATE:
Atualiza (modifica) dados na tabela transparente
26
Academia ABAP - 2008
INSERT :
Inserção de dados na tabela transparente
INSERT INTO ZXXXXX VALUES IT_XXXXX. ( Onde ZXXXXXX = tabela
transparente e IT_XXXXX é uma estrutura (ou tabela interna) contendo os
valores a serem inseridos.
Ex.:
It_aluno-cod = ‘1001’.
It_aluno-nome = ‘Maria’.
INSERT INTO ZTBALUNOS VALUES IT_ALUNO.
DESCRIBE TABLE:
Número de registros da tabela. O comando DESCRIBE é a maneira mais eficiente
de determinar o número de registros de uma tabela interna.
27
Academia ABAP - 2008
TABELAS DE VERIFICAÇÃO
Usadas para consistir a entrada de dados em uma tabela transparente, baseado nos
dados já existentes em uma outra tabela transparente. É o modo de criar no R/3,
chaves estrangeiras.
Informe o nome da
tabela de verificação
no campo apropriado.
O botão ‘Gerar
Proposta’,
Verifica se existem
campos em comum
(mesmo domínio)
entre as tabelas e faz
o relacionamento
28
Academia ABAP - 2008
MENSAGEM
Classe de mensagem:
Ir a SE91 e ....
29
Academia ABAP - 2008
Mensagem p/ usuário
REPORT
Sequência para criação do Report:
3. Declaração de constantes;
4. Declaração de variáveis;
30
Academia ABAP - 2008
5. Inicialização;
6. Tela de seleção;
10. Subrotinas.
OPERADORES LÓGICOS
AND
OR
NE ou <>
>
<
>=
31
Academia ABAP - 2008
<=
=
VARIÁVEIS:
CHAR Type c
INTEIRO Type i
Valor c/ decimal Type p decimals <n.º de casas decimais>
CHAR (0 a 9) Type N
Valores Hexa Type X
Data Type D
Ex: v_data type D.
v_data like sy-datum.
CONSTANTES
Sintaxe:
ESTRUTURA CONDICIONAL:
IF
if <condição>.
Comandos….
Else.
Endif.
32
Academia ABAP - 2008
If <condição>.
Commandos
Else if <condição>.
Comandos
Else if <condição>.
Comandos
Else.
Commandos
Endif.
CASE
Case <variaável>.
When <valor>:
Commandos
When <valor2> :
Commandos
Others:
Comandos
Endcase.
Loops de repetição
Exemplo 1 :
LOOP AT ITAB.
CHECK T_ABC = KVAL.
…
ENDLOOP.
Exemplo 2 :
Loop at <TI>.
comandos
33
Academia ABAP - 2008
Endloop.
AT LAST
Verifica ultimo registro permitindo somatórios e totalizações.
AT NEW
Verificar antes de acessar o registro se é diferente do último lido permitindo
quebras.
Ex. AT NEW <nome_campo>.
PERFORM Imprime_cabecalho.
ENDAT.
AT END
Verificar depois de acessar o registro se o próximo é diferente do registro
atual.
PERFORM Imprime_subtotal.
ENDAT.
WHILE
While <condi>.
comandos
Endwhile.
DO
CHECK
34
Academia ABAP - 2008
CHECK <condição>.
SELECT .....
PERFORM imprime_aluno.
PARAMETERS
Um parâmetro serve para a criação de uma variável com a intervenção do usuário,
ou seja, a variável recebe um valor que o usuário vai digitar.
Sintaxe:
PARAMETERS: <nome> LIKE <tb>-<campo> .
Type c.
PARAMETERS: <nome> LIKE <tb>-<campo> OBLIGATORY.
SELECT-OPTIONS:
Com esse comando o usuário não precisa de digitar as opções, pois vazio, ele
entende que é para buscar todos os dados do banco.
CONTINUE
EXIT
Sai do loop.
Ex.
LOOP AT <tabela interna>.
CONTINUE.
ENDIF.
IMPRIMA_ALUNO
ENDLOOP.
36
Academia ABAP - 2008
37
Academia ABAP - 2008
COMANDO HOTSPOT ON
Usado no commando WRITE para identificar que o campo permitir duplo click
(mãozinha de seleção)
COMANDO HIDE
Guardar o conteúdo do campo na linha selecionada (HOTSPOT).
COMANDO AT LINE-SELECTION
Ex.: AT LINE-SELECTION.
DATA: l_cursor(20).
38
Academia ABAP - 2008
IF l_cursor = <nome_campo1>.
....
ELSEIF l_cursor = <nome_campo2>.
....
ENDIF.
CRIAR TRANSAÇÃO
Transação é uma combinação de caracteres que codifica uma tarefa, atividade,
funcionalidade, etc.
Ir na SE93:
39
Academia ABAP - 2008
40
Academia ABAP - 2008
Exibição imediata
Tabela origem Com restrição – para
dos dados listas grandes. Mostra
campo p/ limitar
quantidade
Depend conjto valores
– Se lista > 100
registros, mostra
campo limitador de
Campos que quatidade. Se < 100,
apareceram mostra imediatamente
Campo será
na lista exportado para
o parâmetro
Entrar SE11
41
Academia ABAP - 2008
Campos da visão
42
Academia ABAP - 2008
Usa-se a visão criada no seu programa, como se fosse uma tabela transparente
comum.
Pode-se dar um select em seus campos, pode-se joga-la para uma tabela
interna, etc. Só não pode atualizar (inserir, modificar ou eliminar) dados da visão.
A vantagem de usar a visão, que ela já é um “join” de várias tabelas. Quando for
feita a seleção (select * from visão, p.e.), os dados já virão filtrados de acordo
com os parâmetros do join.
Pode-se também declarar tabelas internas like a visão: DATA IT_TABELA LIKE
ZVISAO OCCURS 0...
Imagine uma situação onde deve-se fazer um join de cinco tabelas, para doze
programas diferentes.
Uma situação interessante é criar uma visão das cinco tabelas (o join será
programado na visão) e nos doze programas, fazer o select da visão, ao invés
das tabelas.
Selecionar tabelas;
Selecionar campos ( todos os campos chaves presentes )
Ligação entre tabelas;
Condições de seleção;
43
Academia ABAP - 2008
44
Academia ABAP - 2008
45
Academia ABAP - 2008
Salvar e ativar.
46
Academia ABAP - 2008
CRIANDO INCLUDES
Programa categoria I que pode ser chamado por vários programas. Pode ter
funções, definição de dados, trechos de processamento. A existência do comando
INCLUDE ZACIXXX em um programa, desvia o processamento para o include
referenciado ZACIXXX e volta para o programa que chamou.
1 – Entrar na Se38
2 – Escrever no fonte:
47
Academia ABAP - 2008
48
Academia ABAP - 2008
SUBSTRING
Para variáveis tipo CHAR ou DATA.
SY-DATUM = 20031110
VAR = ‘ACADEMIA’.
SY-DATUM(4) = 2003
VAR(2) = AC
SY-DATUM+4(2) = 11
VAR+2 = ADEMIA
SY-DATUM+6(2) = 10
VAR+2(3)ADE
PARAMENTROS DE SELEÇÃO
RADIOBUTTON
Parameters: rb_bot1 radiobutton group gr1, Cria dois botões (do tipo rádio)
Rb_bot1 radiobutton group gr1. de seleção mutuamente
exclusiva.
Parameters: rb_bot3 radiobutton group gr2, Cria dois botões (do tipo rádio)
Rb_bot4 radiobutton group gr2. de seleção mutuamente
exclusiva.
CHECKBOX
Ex.
AT SELECTION-SCREEN.
IF <condicao>.
MESSAGE <texto>.
RANGE
Montar intervalos de seleção (semelhante ao SELECT OPTIONS)
RANGE <nome_range> FOR <nome_campo>.
Ex:
A estrutura criada é na verdade uma tabela
RANGES RG_DATA FOR EKKO-AEDAT interna e pode ser tratada como tal:
Ex.: rg_data-sign = ‘I’.
Cria a seguinte estrutura rg_data-options = ‘EQ’.
rg_data-low = ‘20031010’.
SIGN OPTIONS LOW HIGH rg_data-high = ‘20031231’.
append rg_data.
VAR = ‘YYXX’.
TRANSLATE VAR USING ‘YAXB’ Resultado: ‘AABB’
VAR = ‘aaa’
TRANSLATE var USING UPPER CASE.
CONCATENATE
Agrupar valores.
Ex.:var1 = ‘HEITOR’.
Var2 = ‘CARLOS’.
CONCATENATE var1 var2 INTO var3 SEPARETED BY SPACE.
Resultado VAR3 = ‘HEITOR CARLOS’
SPLIT
Desagrupar valores.
SHIFT
Extrair valores de variáveis
50
Academia ABAP - 2008
SUB ROTINAS
PERFORM (<nome_prog>) <nome_rotina>. Chama uma subrotina de um outro
programa
vn_var1 = 50.
vn_var2 = 100.
PERFORM calcula USING vn_var1 vn_var2 CHANGING vn_var1.
….
….
FORM calcula USING vn_valor1 vn_valor2 CHANGING vn_valor1.
ENDFORM.
MACHCODE OBJECT
Cria mathcode para parâmetros.
SET PF-STATUS
Esse é o comando que chama a função do botão. Deve-se clicar duas vezes no
campo ‘sxxx’(que é um número que nós definimos previamente) e criar o objeto.
Neste momento a tela te joga para a criação do ícone. (é localizado na lógica
principal logo após o star-of-selection, antes das chamadas de função)
Cria uma interface de usuário (com menus, botões, teclas de função, barra de
ferramenta) para uma “aplicação”. (No nosso caso, um report).
51
Academia ABAP - 2008
Texto que
aparecerá ao lado
do ícone, no
botão
Lembrar de incluir o código
de função standart para os
botões de voltar, cancelar e
sair!
52
Academia ABAP - 2008
* BIN_FILESIZE =''
* CODEPAGE =''
FILENAME = vc_nomearq
FILETYPE = 'ASC'
* MODE =''
* WK1_N_FORMAT =''
* WK1_N_SIZE =''
* WK1_T_FORMAT =''
* WK1_T_SIZE =''
* COL_SELECT =''
* COL_SELECTMASK =''
* NO_AUTH_CHECK =''
* IMPORTING
* FILELENGTH =
TABLES
DATA_TAB = it_arquivo
* FIELDNAMES =
EXCEPTIONS
FILE_OPEN_ERROR =1
FILE_WRITE_ERROR =2
INVALID_FILESIZE =3
INVALID_TYPE =4
NO_BATCH =5
UNKNOWN_ERROR =6
INVALID_TABLE_WIDTH =7
GUI_REFUSE_FILETRANSFER =8
CUSTOMER_ERROR =9
OTHERS = 10.
WS_UPLOAD
Carrega arquivo.
53
Academia ABAP - 2008
* CONVERSION_ERROR =1
* FILE_OPEN_ERROR =2
* FILE_READ_ERROR =3
* INVALID_TYPE =4
* NO_BATCH =5
* UNKNOWN_ERROR =6
* INVALID_TABLE_WIDTH =7
* GUI_REFUSE_FILETRANSFER =8
* CUSTOMER_ERROR =9
* OTHERS = 10
OBSERVAÇÕES:
São funções para gravar dados de uma tabela interna na estação de trabalho
(HD ou unidade de rede) e carregar para uma tabela interna dados presentes na
estação de trabalho. Muito utilizada para gerar arquivos texto (ASCII) para
interfaces com outros sistemas.
SELECTION-SCREEN
Selection-screen begin of line. Define uma linha no Selection-
Selection-screen end of line. screen. Tudo que estiver dentro
deste bloco, sairá na mesma linha
No On line:
Intercepta toda ação feita pelo usuário através da Status Gui (interface de usuário).
UTILIZAÇÃO DE ÍCONES
Incluir “biblioteca” de ícones no programa:
INCLUDE <ICON>
Exemplo de utilização:
Write: ‘Aluno abaixo da média’, ICON_RED_LIGHT as icon.
55
Academia ABAP - 2008
HELP-REQUEST
Evento invocado quando tecla-se F1 em algum campo de seleção (da tela de
seleção).
Ex.:
VALUE-REQUEST
Evento invocado quando tecla-se F4 (ou clica-se em ao lado de campo de
seleção (da tela de seleção).
Exemplo:
CRIAÇÃO DE FUNÇÕES
Encapsulamento de um trecho de programação que pode ser chamado por vários
programas, receber, alterar e devolver dados. É chamado através do comando CALL
FUNCTION. Construído através do “function builder” – transação SE37.
Ex.:
Se o parâmetro vai
sofrer modificações
e ser devolvido para
o programa, indique
aqui
56
Academia ABAP - 2008
58
Academia ABAP - 2008
60
Academia ABAP - 2008
Para se fazer uma verificação no conteúdo de algum campo em uma tela, enviar
uma mensagem de erro, e garantir que o campo esteja ativo novamente para edição,
usa-se:
O módulo referido será executado se o campo em questão tiver algum valor que não
seja o inicial.
61
Academia ABAP - 2008
62
Academia ABAP - 2008
Cabeçalho de colunas;
Desenhar na tela um objeto tipo Table control (Lembrar de definir um control xxx
tipo tableview)
63
Academia ABAP - 2008
64
Academia ABAP - 2008
No programa
if ok_code = 'P--'.
tc_001-top_line = 1.
elseif ok_code = 'P-'.
tc_001-top_line = tc_001-current_line - 1.
elseif ok_code = 'P+'.
tc_001-top_line = tc_001-current_line + 1.
elseif ok_code = 'P++'.
tc_001-top_line = tc_001-lines - sy-loopc.
endif.
endmodule. " pula_pagina INPUT
65
Academia ABAP - 2008
No módulo de função
FORM paginacao_100
USING value(p_okcode) TYPE c
value(p_linhas_tc) TYPE i
value(p_linhas_it) TYPE i
CHANGING p_top_line TYPE i.
CASE p_okcode.
* Posiciona na primeira página
WHEN 'P--'.
p_top_line = 1.
66
Academia ABAP - 2008
endloop.
MODULE Controle_tela.
ENDLOOP.
67
Academia ABAP - 2008
if wc_field = 'TI_OPER-FORMULA'.
clear wc_field.
wi_line = tc1002-current_line - 1.
endif.
SET CURSOR
Permite definir, em uma tela, o campo e a posição no campo que o cursor será
posicionado:
68
Academia ABAP - 2008
69
Academia ABAP - 2008
TAB STRIP
Tabstrip permitem exibir diferentes componentes de uma aplicação em uma
única tela. Seu design intuitivo permite usuários navegar facilmente entre os
componentes.
Partes de um Tabstrip
Nome da
aba do
tabstrip
Função que
será passada
Página
para o sy-
do
ucomm
Área de tabstrip
quando a
subscreen
“aba” for
pressionada
Nome da
área de
subtela
(subscreen)
Pode-se associar uma área de subtela para cada página do tabstrip ou uma área
comum a várias páginas.
Nas áreas de subscreen são mostrados os dados através de telas tipo Subtela.
Click click na abinha de cada página, e colocar o código de função para todas as
páginas (o código que será recebido pelo OK_CODE, através do SY-UCOMM.
Criar dentro de cada página um objeto tipo sub-área (um para cada página ou um
para todos.)
70
Academia ABAP - 2008
Para utilizar uma sub-área para todas as páginas, crie o objeto na primeira
página, e nas seguintes, nos atributos do página (duplo clique nela), colocar o
nome da subárea criada para a primeira página no campo Objeto de referência
Para fazer scroll em uma tabstrip (navegar entre as páginas clicando nas
abinhas) sem ativar o PAI.
Neste exemplo, quando clicar nas abinhas da tabstrip, o PAI não será
invocado.
Exemplo da codificação
No top include
data: vc_tela like sy-dynnr value ‘0002’, Define 0002 como a tela inicial
ok_code like sy-ucomm,
Para receber o sy-ucomm. Associa-lo à primeira tela
vc_tab like sy-ucomm value ‘TAB1’. Página da tabstrip que será chamada
primeiro. O TAB1 é o código de função definido para uma das páginas do tabstrip
71
Academia ABAP - 2008
FIELD SYMBOLS
Referem-se a “ponteiros de memória” são estruturas de dados que armazenam
endereços de memória. O valor de um ponteiro é uma posição de memória,
enquanto que, por exemplo, a de um inteiro é um número.
SAP TRANSACTION
Uma SAP Transaction, ou transação SAP consiste de passos de diálogo (dialog
step). Um passo de diálogo começa quando o usuário interfere de algum modo
em uma tela, de modo que ela ative o PAI (um ENTER, uma tecla de função,
clica duas vezes ou escolhe um item de menu). O passo de diálogo termina
quando a próxima tela é mostrada.
E.x:
ATUALIZAÇÃO SÍNCRONA
No final de cada dialog step, o R/3 atualiza automaticamente todas as
requisições de atualizações na base de dados. Imagine que na tela 100 você
programou a inserção de dados e eliminação de dados da sua tabela
ZTBALUNOXX. Quando você der um enter e o programa passar para a tela 200,
será inserido na sua tabela o registro do modo como você programou e será
eliminada da sua tabela, o registro que você especificou.
ATUALIZAÇÃO ASSÍNCRONA
Algumas vezes é imperativo que os dados não sejam atualizados no banco de
dados, quando “mudar de tela”. Imagine a seguinte situação: “Você tem que fazer
várias atualizações dentro do seu programa (inserir um registro, modificar outro,
eliminar outros dois e inserir mais um). Essas atualizações são feitas por várias
telas diferentes. E mais, se uma dessas atualizações não for bem sucedida (você
tentou inserir um registro com chave duplicada, por exemplo.), nenhuma das
outras atualizações pode ser feita.” Pelo default do R/3, que é atualização
síncrona, se der erro em uma atualização qualquer, JÁ ERA!
Na minha seqüência de telas (meu programa) posso ter quantos LUW que quiser.
Programo-os de acordo como (e quando) quero atualizar minha base de dados.
Se todas minhas atualizações forem ok, executo o comando COMMIT WORK. Se
der erro em alguma atualização, executo o comando ROLLBACK WORK.
74
Academia ABAP - 2008
Muitas vezes, a duração do lock provido pelo R/3 não é suficiente para minha
aplicação.
Imagine que eu tenha que ler um código de aluno, fazer uma porção de consultas
e só depois atualiza-lo. Enquanto eu tiver fazer as consultas, ninguém mais
deveria acessa-lo para modifica-lo ou elimina-lo.
75
Academia ABAP - 2008
76
Academia ABAP - 2008
O R/3 já sugere
que o lock seja
feito pela chave
primária
Para usar
O campo it_alunos-aluno conterá o código do aluno que será bloqueado
Para bloquear
Para desbloquear
call function 'DEQUEUE_EZ_ABC'
exporting
mode_abc = 'E'
mandt = sy-mandt
serie_despacho = it_alunos-aluno
77
Academia ABAP - 2008
Parametros principais:
- Program: caminho do programa (ex. C:\WINDOWS\NOTEPAD.EXE).
- Command: linha de comando (ex. o nome do arquivo).
FUNÇÕES STANDARD
Para trabalhar com Notas Fiscais:
78
Academia ABAP - 2008
CALL 'SYSTEM'
ID 'COMMAND' FIELD p_com
ID 'TAB' FIELD t_arq_usudel-*sys*.
IF T_ARQ_USUDEL[] IS INITIAL.
ENDIF.
READ_TEXT
O nome do texto é simplesmente a chave completa da tabela em questão,
existe uma dificuldade de descobrir o ID e o Objeto a serem passados.
Para acessá-los facilmente, bastar clicar (2x) sobre o texto na transação em
79
Academia ABAP - 2008
que ele aparece, (o modo editor será acionado) em seguida ir no menu: Saltar
-> Cabeçalho e pronto, os campos necessários estão nesta tela.
POPUP SCREEN
POPUP_TO_CONFIRM_STEP
Cria um box de mensagem com confirmação
POPUP_TO_CONFIRM_WITH_MESSAGE
Cria um box de mensagem com confirmação E 5 LINHAS
POPUP_TO_CONFIRM_WITH_VALUE
Cria Box de Dialogo com passagem de valores como parametro.
POPUP_TO_DECIDE
Cria box de dialogo com opções especificadas.
POPUP_TO_DECIDE_WITH_MESSAGE
Cria Box de dialogo com opções especificas
80
Academia ABAP - 2008
POPUP_TO_DISPLAY_TEXT
Cria Box de Selecão com 2 linhas e Botão
POPUP_TO_SELECT_MONTH
Cria um Box de Seleção para Mês e Ano
POPUP_WITH_TABLE_DISPLAY
Cria um Box de seleção, a partir de uma tabela passada como parâmetro e
retorna qual a opção selecionada pelo usuário.
POPUP_TO_CONFIRM
Exibe uma caixa de textos para confirmação
POPUP_TO_DISPLAY_TEXT
Exibe texto em caixa de textos modal
POPUP_TO_INFORM
Cria caixa de informação
POPUP_TO_CONFIRM_LOSS_OF_DATA
Box de Dialogo
TEXTOS
SAVE_TEXT
Salva Textos Longos
81
Academia ABAP - 2008
READ_TEXT
Realiza Leitura de Textos Longos no R/3
COMMIT_TEXT
Grava Textos Longos
INIT_TEXT
To load long text into SAP
LIST_TO_ASCII
Converte Relatórios Abap para o formato ASCII
GERAL
RSTXPDFT4
Converter ordem de spool para PDF
RSTXLDMC
Importar figura (TIF) como texto
RSTXSCRP
Download de sapscript
YS_DESBLOQ_INTERFA
Desbloquear interface
RSTXR3TR
Transporte de sapscript
Ex. Par - Sistema file = servidor
- formato = binário
- file = /usr/sap/trans/tmp/PARK9000.scp
RP_CALC_DATE_IN_INTERVAL
Adiciona/subtrai anos/mêses/dias de uma data
RP_LAST_DAY_OF_MONTHS
Determina ultimo dia do mês
RS_REFRESH_FROM_SELECTOPTIONS
Seleciona Valores de um Select-Options
RS_VARIANT_CONTENTS
Retorna valores de uma variável em uma tabela interna
RZL_SLEEP
Para o Processamento do programa de 1 a 5 Segungos
82
Academia ABAP - 2008
SAPGUI_PROGRESS_INDICATOR
Exibe uma barra de Status, utilizando o SAP GUI
SD_DATETIME_DIFFERENCE
Retorna a diferença entre duas datas e Hora
SO_WIND_SPOOL_LIST
Exibe um Bowse com as impressões do usuário que estão no Spool.
TERMINAL_ID_GET
Retorna o Número IP e o nome do Terminal que o usuário esta logado.
TH_ENVIRONMENT
Retorna Informações sobre o sistema operacional do Servidor SAP.
TH_POPUP
Exibe uma mensagem para o usuário Especificado, em qualquer client.
TH_USER_INFO
Retorna informações sobre o usuário que esta logado.
TH_USER_LIST
Retorna informações de usuários conectados a determinado Servidor
UPLOAD
Abri arquivos na estação Local
WS_DOWNLOAD
Salva Tabela interna na estação de trabalho local
WS_EXECUTE
Executa programas na estação de trabalho
WS_FILE_DELETE
Deleta arquivos na estação de trabalho
WS_FILENAME_GET
Mostra um Browser para Selecionar Arquivos
WS_MSG
Cria um box de dialogo com uma mensagem no padrão Visual Basic
WS_UPLOAD
Carrega dados de arquivos na estação de trabalho para uma tabela interna.
WS_VOLUME_GET
Retorna o Nome do Volume da unidade de disco da estação de trabalho
WWW_LIST_TO_HTML
Salva o conteúdo de um relatório em uma tabela interna no Formato HTML
EPS_GET_DIRECTORY_LISTING
Retorna uma tabela interna com os arquivos de determinado diretório do
servidor.
83
Academia ABAP - 2008
F4_DATE
Exibe um calendário pop-up para escolha
HOLIDAY_GET
Retorna os feriados existentes entre um intervalo de data, baseado no
calendário da fábrica
MONTH_NAMES_GET
Retorna uma tabela interna com os nomes dos meses.
HOLIDAY_GET
Testar se é dia útil.
DAY_ATTRIBUTES_GET
Testar se é dia útil (atributos do dia)
QPK1_GP_CODE_SELECTION
Match-code em estrut. de árvore para dados de catálogo.
SPELL_AMOUNT
Retorna valor por extenso
NUMERIC_CHECK
Verifica se variável é numérica
LOAN_TABLECONTROL_SCROLLING
Controlar scroll de uma table control.
DYNP_VALUES_READ
Lê os valores informados na tela
GET_DYNPRO_LIST
Lê os valores informados na tela. Na tela standard gerada pelo gerador de
atualização de tabelas, só consegui usar este
HELP_VALUES_GET_NO_DD_NAME
Montagem de matchcode dinâmico
RS_VARIANT_CONTENT
Função para leitura de variantes (Ver tabelas VARI e VARID)
84
Academia ABAP - 2008
OBSERVAÇÂO:
Estes valores podem ser RANGES ou PARÂMETROS; FIXOS ou VARIÁVEIS.
Em qualquer campo de autorização, o (*) eqüivale a todas as entradas possíveis;
Criando Autorizações;
Caminho: R/3FerramentasAdministraçãoAtualização UsuárioAutorização
Transação SU03;
Seleciona, novamente, a Classe de Objetos desejado;
Consultar os Objetos existentes, conforme passo anterior;
Optar pelo objeto de interesse;
Consultar as Autorizações já existentes para este objeto;
Poderá ser criado novas autorizações...
Atualizar Perfil:
Caminho: R/3 FerramentasAdministraçãoAtualização UsuárioPerfil;
Transação SU02;
Criação;
Digite o nome do perfil a ser criado;
Clicar em ENTER ou GERAR ÁREA TRAB.;
Exibirá uma lista vazia;
Clicar em Criar, colocar descrição;
Perfil individual1 ou coletivo2;
Exibição/Modificação;
Digitar o nome do Perfil;
Clicar ENTER ou GERAR ÁREA TRAB.;
Exibirá a lista contendo a autorização selecionada;
Clicar em MODIF, EXCLUIR,...
REPORT ZZZTESTE.
AT SELECTION-SCREEN ON P_CARR.
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD P_CARR
ID 'ACTVT' FIELD '02'.
IF SY-SUBRC NE 0.
MOVE 'Não Autorizado' TO V_RESULT.
ENDIF.
START-OF-SELECTION.
WRITE V_RESULT.
PERFORMANCE E ERROS
Tips and Tricks - Clicando neste botão poderá ser feita comparação entre
comandos Select (diferentes tipos). Dando double-click sobre um dos exemplos você
passará para outra tela, onde você visualizará a medida do tempo em
microsegundos de ambos, servindo de base de comparação.
OBS: A ferramenta de Runtime Analysis emite um Warning para máquinas com mais
de um processador, neste warning adverte para o fato de não ser precisa para
máquinas com mais de um processador, porém mesmo assim aconselhamos o uso
pois em termos “proporcionais” para se encontrar os “gargalos” do programa a
precisão perdida é dispensável.
SQL Trace - pode ser utilizada para trilhar a lógica de aplicação e verificar possíveis
pontos de correção. Você poderá visualizar os comandos de acesso a banco de
dados, obter informações sobre um comando específico, visualizar os índices que
estão sendo utilizados.
Extended Program Check - é outra facilidade que deve ser empregada visando
manter o seu código o mais correto possível. Nesta opção você poderá selecionar os
itens que você deseja que sejam checados e o sistema apontará o seu parecer.
Para tanto basta clicar os itens e o pushbutton PERFORM CHECK Selecionando
uma linha você poderá ver os detalhes, bem como posicionando o cursor em uma
linha e clicando o pushbutton DISPLAY ALL CHANGES.
87
Academia ABAP - 2008
CALL TRANSACTION
DIRECT INPUT
O mecanismo de direct input apresenta a melhor performance dentre os dois
anteriores. Essencialmente, este método utiliza um arquivo seqüencial e
funções especiais que processam os dados existentes neste arquivo e que
atualizam as tabelas do sistema R/3 diretamente. A experiência vivenciada em
outros projetos tem mostrado que as funções de direct input apresentam
inúmeros bugs que provocam incosistencias nas tabelas do sistema. Este
método não deverá ser utilizado para a construção das interfaces. Caso o
mecanismo de call transaction não apresente a performance adequada em
alguma interface específica, uma solução baseada em direct input poderá ser
estudada, demandado, entretanto, testes exaustivos face aos problemas de
consistência mencionados.
Delivered BDC
O mecanismo de delivered BCD representa um conjunto de programas,
fornecidos juntamento com o sistema R/3, que objetivam reduzir o esforço
envolvido no desenvolvimento de novos programas para a transferência de
dados. A experiência tem mostrado que alguns destes programas apresentam
ótima performance (usam direct input), porém sofrem dos problemas de
consistênciam mencionados. Além disso, os delivered BDC utilizam arquivos
de transferência com formato fixo, estabelecido pela SAP. Este mecanismo
não deverá ser utilizado para a construção de interfaces, em virtude dos
problemas discutidos.
88
Academia ABAP - 2008
RELATÓRIOS E FORMULÁRIOS
ABAP QUERY
INFORMATION SYSTEM
89
Academia ABAP - 2008
Ferramenta para geração de relatórios que permite ao usuário final criar listas
com layouts específicos e fórmulas (Análise Flexível), apresentar resultados
através de gráficos (Análise Standard), entre outras facilidades. Outras
informações podem ser encontradas na documentação do sistema R/3 no
tópico LIS - Logistics Information System.
SAPScript
ENHANCEMENTS
1) Para que um field-exit funcione é necessário que o profile parameter
abap/fieldexit esteja com o valor ‘YES’.
Para modificar os valores de um profile parameter utiliza-se a transação RZ11.
1) Quando o frontend sair do ar, para recuperar o que estava fazendo, entrar no
logon do SAP, digitar o user e a senha, não teclar enter, opção de menu Usuário /
Aceitar sessão. Caso o mesmo usuário estiver mais de uma vez na mesma
instância isto não funciona.
90
Academia ABAP - 2008
Para transportar textos standard devemos criar uma request manual e no editor
inserir as entradas:
R3TR TEXT <objeto>,<nome do texto>,ST (ID),S (Idioma)
Exemplo:
PgmID Obj Obj.name
R3TR TEXT TEXT,WHIRPOOL-2,ST,E
R3TR TEXT TEXT,LOGO_57_MM ,ST,E
R3TR TEXT TEXT,LOGO_57_MM ,ST,P
COMANDOS UTÉIS
MOVE-CORRESPONDING
Quando registros têm a mesma estrutura, é mais eficiente utilizar o comando MOVE
do que o comando MOVE-CORRESPONDING.
Exemplo:
Procure usar as funções de cálculo do SELECT ao invés de usar lógicas para obter
os resultados acima.
UPDATE TASK
Sempre que possível utilize a atualização via UPDATE TASK para programas
“dialog”
Comandos
COMENTÁRIOS
ÍNDICE
91
Academia ABAP - 2008
Cada índice criado diminui a performance dos inserts e dos updates nas
tabelas. No geral, tabelas onde são feitos muitos inserts e updates, deverão
ter poucos índices. Da mesma forma, tabelas onde há muitos selects, poderão
ter mais índices. Uma média de 3 índices por tabela é aceitável.
CÓDIGO MORTO
DICAS E TRUQUES
Conversões
Ou utilizar a função:
Call Function 'PERIOD_AND_DATE_CONVERT_OUTPUT'
Exporting
Internal_Date = variável like sy-datum
Internal_Period = ‘1’
Importing
External_Date = variável char(10) .
92
Academia ABAP - 2008
Isso indica que existem duas funções standard para converter o valor
desse campo:
Lado Esquerdo:
93
Academia ABAP - 2008
94
Academia ABAP - 2008
exporting
i_callback_program = g_repid
i_callback_user_command = 'USER_COMMAND'
i_callback_top_of_page = 'TOP_OF_PAGE'
i_callback_pf_status_set = 'F_SET_STATUS'
it_fieldcat = gt_fieldcat
No AT USER-COMMAND.(por exemplo)
* Testa de o checkbox foi marcado
DO.
ADD 1 TO VI_CONT.
READ LINE VI_CONT.
IF sy-lisel+5(1) = 'X' AND sy-lisel+16(1) = 'X'.
(…)
CARACTERÍSTICAS HERDADAS
Algumas características associadas a um objeto podem ser herdadas de uma classe
superior. Sempre que utilizar a função de classificação de características, assinalar com X o
parâmetro inherited_char. É a garantia de que as características herdadas serão
selecionadas.
95
Academia ABAP - 2008
Ajuda de pesquisa...
96
Academia ABAP - 2008
Para resolver esse problema, existe uma conta que pode ser feita com a variável
sy-srows.
v_limite = sy-srows - 8.
97
Academia ABAP - 2008
EXEMPLOS
Exemplo de matchcode dinâmico dependendo de outro match code
Ver programa YSRCS_REDEFINICAO_MODAL
Documentações na Internet:
http://ifr.sap.com/
98
Academia ABAP - 2008
99