Вы находитесь на странице: 1из 99

ANOTAES DA

ACADEMIA ABAP
2008

Marcel Valadares de Oliveira

INDICE

TRANSAES R/3 8

PRINCIPAIS TABELAS TRANSPARENTES 11

VARIVEIS DO SISTEMA (TABELA SY) 12

TABELAS 12
Para criar um tabela transparente: 12
Academia ABAP - 2008

Criar ndice de tabela: 12


Declarando tabela interna 15

TABELA CUSTOMIZADA 16
Etapas para gerar automaticamente via R/3 tratamento para manipular Tabela Customizada 16
COMO CRIAR A MANUTENO DA TABELA CUSTOMIZADA 19
PARA ACESSAR A MANUTENO DA TABELA VIA TRANSAO CUSTOMIZADA. 22

COMANDOS PARA TABELAS: 25


APPEND: 25
DELETE: 25
REFRESH / CLEAR: 25
FREE: 25
COLLECT: 25
MODIFY: 25
SORT: 26
READ: 26
UPDATE: 27
INSERT : 27
DESCRIBE TABLE: 27

ESTRUTURAS APPEND EM TABELAS TRANSPARENTES 27

TABELAS DE VERIFICAO 28

MENSAGEM 29
Classe de mensagem: 29
Mensagem p/ usurio 30

REPORT 30
Sequncia para criao do Report: 30

SET LEFT SCROLL BOUNDARY COLUMMNS X 31

COMANDOS E/OU TECLAS DE ATALHO 31

OPERADORES LGICOS 31

VARIVEIS: 32

CONSTANTES 32

ESTRUTURA CONDICIONAL: 32
IF 33
CASE 33

2
Academia ABAP - 2008

Loops de repetio 33
WHILE 34
DO 34
CHECK 35

PERFORM - SINTAXES DE PARMETRO 35

PARAMETERS 35

SELECT-OPTIONS: 35

COMANDO DE DESVIO DE EXECUO 36


CONTINUE 36
EXIT 36

PASSAGEM PARMETROS PARA PROGRAMA STANDARD 37

COMANDO HOTSPOT ON 38

COMANDO HIDE 38

COMANDO AT LINE-SELECTION 38

COMANDO GET CURSOR FIELD 39

CRIAR TRANSAO 39

CRIAR AJUDA DE PESQUISA ( SEARCH HELP OU MATH CODE) 41


PASSO PARA CRIAO DE AJUDA DE PESQUISA: 41

CRIAR VISES ( VIEW ) 43


PASSO PARA CRIAO DE UMA VIEW: 44

CRIANDO INCLUDES 47
PASSO PARA CRIAO DE UMA VIEW: 47

SUBSTRING 49

PARAMENTROS DE SELEO 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 botes e funes de um PF-STATUS dinamicamente 52

GERANDO E CARREGANDO ARQUIVOS 53


WS_DOWNLOAD 53
WS_UPLOAD 53

SELECTION-SCREEN 54

AT USER-COMMAND 55

UTILIZAO DE CONES 56

HELP-REQUEST 56

VALUE-REQUEST 56

CRIAO DE FUNES 56

COMUNICAO TELA -> PROGRAMA ABAP 57

BARRA DE STATUS PARA TELAS 58

SCREEN PAINTER TRANSAO SE51 59

EDITOR DE LAYOUT DA TELA 60

MODIFICAO DINMICA DE ATRIBUTOS DE ELEMENTOS DA TELA. 60

VERIFICAO AUTOMTICA DE CAMPOS 61


Verificao automtica para um campo: 61
Verificao automtica para vrios campos: 61
Execuo condicional de mdulos baseados no FIELD - > algum valor que no seja o inicial. 61
Execuo condicional de mdulos baseados no FIELD - > alguma alterao 62

Mudana dinmica de telas em dialog programming. 62

DIALOG PROGRAMMING TABLE CONTROL 63


Modificao do atributos de uma table control (exemplos) 64
Controlando os botes de scroll em uma table control 65
Tornar uma coluna de um grid visvel/invisivel 66
Habilitar/desabilitar algumas clulas do grid 67
VERIFICAR QUAL BOTO FOI PRESSIONADO DENTRO DE UMA LINHA DE UM TABLE
CONTROL 67

SET CURSOR 68

4
Academia ABAP - 2008

LEAVE TO LIST PROCESSING 68

SAP MEMORY E ABAP MEMORY 69

TAB STRIP 70
Criao de tabs trips 70
Para fazer scroll em uma tabstrip (navegar entre as pginas clicando nas abinhas) sem ativar o PAI.
71
Para fazer scroll em uma tabstrip ativando o PAI 71

FIELD SYMBOLS 72

CRIAO DE INTERVALOS DE NUMERAO 72


Criao de intervalos de numerao (para gerao de nmero sequencial) 72
Utilizar intervalo de numerao 73

SAP TRANSACTION 73

ATUALIZAO SNCRONA 74

ATUALIZAO ASSNCRONA 74
LUW (Logical Unit of Work Unidade lgica de trabalho) 74

OBJETS DE BLOQUEIO (FUNES DE ENQUEUE / DEQUEUE) 75


Criando objetos de bloqueio. 76

FUNES 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
Funo que calcula diferena entre datas/horas 79
Executar comandos do UNIX 79
READ_TEXT 80
POPUP SCREEN 80
TEXTOS 82
GERAL 82
Funes para converso de unidades/medidas 85

COMO UTILIZAR AUTHORITY-CHECKS 85


Cdigo Fonte Modelo. 86

PERFORMANCE E ERROS 87

CONVERSES DE DADOS E INTERFACES 88

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

RELATRIOS E FORMULRIOS 90
ABAP QUERY 90
REPORT WRITER e REPORT PAINTER 90
INFORMATION SYSTEM 90
SAPScript 90

ENHANCEMENTS 91

COMANDOS UTIS 91
MOVE-CORRESPONDING 91
SUM, AVG, MIN e MAX 91
UPDATE TASK 92
Para mandar um relatrio direto para a impressora 92
Para concatenar variveis em um nico parmetro utilizar o &: 92

COMENTRIOS 92
NDICE 92
CDIGO MORTO 92

DICAS E TRUQUES 92
Converses 92
Tabelas internas e dicionrio 93
Como buscar resoluo do vdeo 94
Gravar objetos locais para request 94
Funo que cria match-code tipo estrutura de rvore para dados de catlogo 95

ALTERAO DE BARRA DE STATUS EM LIST VIEW 95

LISTA INTERATIVA LER UM CHECKBOX MARCADO EM UMA LISTA REPORT 96

CARACTERSTICAS HERDADAS 96

BANCO DE DADOS LGICO 96

6
Academia ABAP - 2008

EXEMPLOS 99
Exemplo de matchcode dinmico dependendo de outro match code 99
Exemplo criao de JOB 99
Exemplo envio SAPOFFICE 99
Exemplo do uso de field-symbol 99
Relatrio chamando job 99
Enviar e-mail atravs do R/3 99
Documentaes na Internet: 99

7
Academia ABAP - 2008

TRANSAES R/3
AL11 Lista diretrios do SAP
AL21 Dados estatsticos sobre o cdigo do programa

BIBS Exemplos de programas (on line) e utilizao de controles


CA03 Exibir roteiro
CL03 Exibir classes (caractersticas)
CL30N Procurar objetos em classe

CMOD Ampliaes - Exit's de campo


CR03 Centro de trabalho
IH01 rvore hierrquica de local de instalao

LIBS Demostrativo de cores

ME23 Transao de pedido de compras - Criar user-exits


PRFB Field exit atravs da CMOD
QS23 Modificar caractersticas de controle
QS41 Processar catlogo
S000 Menu principal do sistema (Tela inicial)
S001 Tela do Workbench ABAP/4
SA38 Execuo de programa report
SD11 Modelo de Dados
SDBE Explorar SQL
SE01 Correo e manuteno do sistema de transportes
SE03 Utilitrios do sistema de transporte - Modificar entrada de catlogos
SE05 Informaes sobre transportes
SE07 Tela de status do sistema de transporte
SE09 Organizador do Workbench - Manuteno das change requests (workbench)
SE10 Manuteno das change requests (workbench e customizing)
SE11 Edio e manuteno de tabelas - Criar objetos do dicionrio (tabelas, elementos de
dados, domnios...)
SE12 Apenas edio tabelas
SE14 utilitrios de Dtabase

8
Academia ABAP - 2008

SE15 Informaes do sistema do Dicionrio de dados - Sistema info repository


SE16 Visualizao e manuteno de tabelas -
SE17 Visualizao de tabelas
ABAP/4 Trace - serve para verificar a performance de uma parte do programa -
SE30
Anlise de tempo de execuo do programa
SE32 Manuteno de elementos de textos
SE35 Mdulos de dilogos
SE36 Base de dados lgicas
SE37 Biblioteca de funes ABAP/4 Editor/criador de funo
SE38 Editor de programa ABAP

SE41 Menu Painter - Criar status e menu para programa on-line


Screen Painter - Criar tela para programa on-line - Copiar tela de um programa para
SE51
outro
SE54 Gerao viso de tabela
SE63 Traduo de rtulos de campos para outros idiomas
SE71 Cria SapScript - layout de tela
SE73 Manuteno de fontyes
SE78 Importar bitmap para R/3
SE80 Desenvolvimento de Objetos Classe e outros objetos - Criar objetos (report, on-line,
transao...)
SE84 Informaes do repositrio
SE91 Manuteno de mensagens - Criao de classes
SE93 Manuteno e criao de Cdigos de transao
SHDB Grava todos os processos executados no on-line para criao do batch-input
SHDG Valores Globais
SLIN Verificar a qualidade do cdigo do programa
SM01 Travar transaes
SM02 Enviar mensagens de sistema
SM04 Usurios - visualizao
SM12 Exibio de transaes travadas
SM13 Atualizaes de requests

9
Academia ABAP - 2008

SM21 Visualizao do log do sistema


SM30 Gerenciador de visualizao de tabelas - Utilizada para rodar os programas gerados
com o "Gerador de atualizao de tabela"
SM31 Gerenciador de tabelas

SM35 Monitoramento de JOBs em background - Processar pastas gravadas com o programa


de batch input
SM36 Definio de JOBs
SM37 Status de JOBs
SM50 Visualizao de processos em andamento

SM51 Servidores do SAP


SM59 Visualizao e Manuteno de RFC
SN04 Monitora logins
SN50 Monitora logins
SO99 Informaes sobre as verses do R/3
SP01 Manuteno do SPOOL
SPAD Administrao do SPOOL
SQ01 ABAP/4 Query - Desenvolvimento e execuo
SQ02 ABAP/4 Query - reas funcionais
SQ03 ABAP/4 Query - Grupos de usurios
ST01 Trace do sistema (System Trace)
ST05 SQL Trace - Executa o SQL Trace
ST22 Anlise de erros (dumps) em ABAP
STMS Gerenciamento de transporte de change request
SU01 Manuteno de Usurios (master)
SU02 Manuteno de "Profiles" de Usurios
SU20 Manuteno de autorizaes em campos
SU21 Manuteno de autorizaes em objetos
SU3 Definir configuraes do usurio
SU50 Manuteno de definies de usurios
SU51 Manuteno de endereos de usurios
SU52 Manuteno dos parmetros do usurio

10
Academia ABAP - 2008

SU53 Checagem das mais recentes autorizaes do usurio


SU54 Menu de usurios
SU56 Exibio das autorizaes do usurio

VA01 Ordem de venda


VA31 Programa de remessa
VA35 Lista programas de remessa

PRINCIPAIS TABELAS TRANSPARENTES


AUFK Dados mestres da ordem

AFKO Dados de cabealho da ordem de ordens PCP


Nmero lote controle - prueflos
Nro roteiro de operaes da ordem aufpl

AFFH Atribuio de MAP a ordem de trabalho


Nro roteiro de operaes da ordem aufpl

AFIH Cabealho de ordem manuteno


Nro equipamento equnr

AFVC Operaes da ordem


Nro roteiro da operao da ordem aufpl

QALS Registro do lote de controle

QMEL Nota QM

QMIH Aviso de qualidade - Seo dos dados de manuteno

EQUI Equipamento dados mestres

EQKT Textos breves de equipamentos

KLAH Dados do cabealho de classe

KSSK Tabela de atribuio: objeto para classe

T024I Relac centro x grupo de planejamento

TFACS Calendrio de fbrica (exibio)

J1BJ Transao p/ ver programa/formulrio impresso de nota fiscal

J1B3 Exibir nota fiscal

11
Academia ABAP - 2008

VARIVEIS DO SISTEMA (TABELA SY)


sy-SUBRC Varivel de retorno para comandos READ, LOOP, SELECT, CALL,
INSERT, DELETE, UPDATE...
sy-PAGNO Nmero da pgina do report (automtico)
sy-TABIX Nmero da linha corrente dentro de um loop
sy-LINCT Nmero de linhas impressas no report (depois de impresso)
sy-LINSZ Nmero de colunas do report
sy-CUCOL Nmero da coluna onde o cursor est posicionado (no report)
sy-CUROW Nmero da linha onde o cursor est posicionado (no report)
sy-LOOPC Nmero de linhas da tabela interna (s funciona dentro do loop)
sy-LANGU Idioma utilizado no logon
sy-DYNNR Nmero da tela que est sendo executada (no programa on-line)
sy-MANDT Cdigo do mandante (client) utilizado no logon
sy-TCODE Cdigo da transao que est sendo executada
sy-UCOMM Cdigo da tecla pressionada pelo usurio (report)
sy-DATUM Data do sistema
sy-UZEIT Hora do sistema
sy-REPID Nome do programa que est sendo executado (on-line ou report)
sy-UNAME Nome do usurio que efetuou o logon
sy-TITLE Nome do programa (definido na tela de atributos do programa)
sy-LISEL Contm a linha onde o usurio deu um clique duplo (no report)
sy-ULINE Quando utilizado com "WRITE" imprime um caracter "_" (underscore)
sy-VLINE Quando utilizado com "WRITE" imprime um caracter "|" (pipe)

TABELAS
Para criar um tabela transparente:

Ir na SE11 digitar o nome da tabela clicar em criar... [E importante observar que o


mandante sempre deve fazer parte da chave primaria.

Criar ndice de tabela:

12
Academia ABAP - 2008

13
Academia ABAP - 2008

Salvar e Ativar.

que data element (zed_nome_xx)?


importante para o texto a especificao para se visualizar o label, ou seja, o
texto que descreve o campo

Domnio (zdo_nome_xx) ?
criao de tipo, campo auxiliar que define tamanho e tipo do campo

OBSERVAOES:

Todo campo de valor ou quantidade tem que preencher o campo referncia.


Referncia de Moeda T001-waers.
Referncia de Qtde T001-menge.
Qtd de caracter para o nome dos campos na tabela 5

14
Academia ABAP - 2008

Declarando tabela interna

Data: (nome_ti> like <tabela transp> occurs with hearder line.


(para usar tabela igual transparente)
Ou
Data: begin of <nome-ti> occurs 0,
<nome-campo> like <tabela-trans> - campo,
.
.
.
end of <nome-ti>.

15
Academia ABAP - 2008

TABELA CUSTOMIZADA
Etapas para gerar automaticamente via R/3 tratamento para manipular
Tabela Customizada

Definir o Grupo de Funo a ser utilizado pelo Repository Object (tcode SE80).

Definir as caractersticas do objeto Grupo de Funo.

Selecionar o objeto.

Criar novo objeto.

Selecionar a Classe de Desenvolvimento a ser utilizado e <Salvar>.

Criar uma nova Request e Avanar <Enter>.

16
Academia ABAP - 2008

O grupo de funo definido ser criado na classe de desenvolvimento.

O novo Grupo de Funo foi


definido.

Criando uma tabela transparente customizada (tcode SE11). Por exemplo

ZCONTROLE.

17
Academia ABAP - 2008

Definir as caractersticas da tabela transparente.

Definir a estrutura da tabela (campos, data elements e domnios) e salv-la.

18
Academia ABAP - 2008

Atribuir as opes tcnicas.

Definir as
opes
tcnicas e
<Salvar>.

Ao final ativar a nova tabela criada.

COMO CRIAR A MANUTENO DA TABELA CUSTOMIZADA

Agora vamos definir a manuteno da tabela transparente. Para acessar o Gerador


de atualizao de tabela, selecionar no menu Utilitrios conforme descrito abaixo.

Definir os parmetros de manipulao da tabela transparente.

Este boto permite o sistema


sugerir as telas de atualizao a
serem utilizadas.

Pode ser utilizado telas de atualizao


de duas categorias:
- apenas um nvel (apresenta a
sntese da tabela e a alterao da
entrada de dados efetuada nesta
tela mesmo);
- 2 nveis: um nvel de tela de
sntese e uma tela seguinte
somente para alterar a entrada de
dados.

Para que o usurio tenha acesso a manuteno da tabela customizada, utilizar o


caminho apresentado abaixo.

19
Academia ABAP - 2008

20
Academia ABAP - 2008

Nesta tela de viso de tabelas possvel efetuar a atualizao de dados.

Esta tela de atualizao a tela de sntese (o 1 nvel de acesso definido na


gerao de manuteno).

Permite o cadastramento de dados


novos na tabela.

Esta tela de atualizao a tela individual (o 2 nvel de acesso definido na


gerao de manuteno).

21
Academia ABAP - 2008

A seguir apresentado a entrada efetuada na tabela pela tela de atualizao


individual.

PARA ACESSAR A MANUTENO DA TABELA VIA TRANSAO


CUSTOMIZADA.

Criar uma nova transao pelo Repository Object (tcode SE80).

22
Academia ABAP - 2008

Selecionar a opo de transao c/parmetros.

23
Academia ABAP - 2008

Definir as caractersticas da transao.

Utilizar a transao para


Atualizao de tabela
ampliada.

Definir tambm a tabela a ser acessada.

Definir os parmetros da
tabela a ser atualizada .

Selecionar a Classe de Desenvolvimento a ser utilizado e <Salvar>.

Criar uma nova Request e Avanar <Enter>.

24
Academia ABAP - 2008

COMANDOS PARA TABELAS:


APPEND:
Incluir registro em uma tabela
APPEND <tab_int>.

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 cabealho)

FREE:
Libera tabela da memria.
FREE <tab_int>.

COLLECT:
Agrupa valores de uma tabela.
Ex. it_pedido (cd_forn, cd_pedido, cd_mat, valor)
It_totais (cd_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.

Sempre identifique se um SORT ASCENDING ou DESCENDING e


especifique a clusula BY <fields>. Caso contrrio, todos os campos sero
classificados.
Evite construes do tipo:

SORT tabela1, SORT tabela2, SORT tabela3.


LOOP tabela1, LOOP tabela2, LOOP tabela3

Para cada SORT faa o LOOP correspondente. A ento iniciar novo SORT e
LOOP, e assim por diante.

SORT <tabela_interna> BY <campo1> <campo2> ....

Ex. : SORT it_aluno BY it_aluno-nome.


SORT it_aluno BY it_aluno-nome DESCENDING.

READ:

Sempre deve-se utilizar BINARY SEARCH nos comandos READ TABLE itab
WITH KEY.

Ler registros na tabela.


READ TABLE <tabela_interna> WHITH KEY <campo> = <condio>.
ou
READ TABLE <tabela_interna> WHITH KEY <campo1> = <condio1>
<campo2> = <condicao2> .
ou
READ TABLE <tabela_interna> INDEX <nro_registros>.

UPDATE:
Atualiza (modifica) dados na tabela transparente
26
Academia ABAP - 2008

UPDATE (TABELA TRANSPARENTE) SET CAMPO1 = VALOR1


CAMPO2 = VALOR2
CAMPO3 = VALOR3.
WHERE CODIGO = (VARIVEL).

Se a atualizao for bem sucedida, o SY-SUBRC retornar 0.


CUIDADO PARA NO TENTAR ATUALIZAR TAMBM ALGUM CAMPO
CHAVE. SY-SUBRC RETORNAR VALOR DIFERENTE DE 0.

INSERT :
Insero 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.

CUIDADO PARA NO TENTAR INSERIR ALGUM REGISTRO COM CHAVE


DUPLICADA. SY-SUBRC RETORNAR VALOR DIFERENTE DE 0.

DESCRIBE TABLE:
Nmero de registros da tabela. O comando DESCRIBE a maneira mais eficiente
de determinar o nmero de registros de uma tabela interna.

DESCRIBE TABLE <tab_interna> LINES <nro_registros>.


Ex.: DESCRIBE TABLE t_ekko LINES v_reg_ekko.
v_reg_ekko tem que ser declarado com TYPE i.

ESTRUTURAS APPEND EM TABELAS TRANSPARENTES


Conjunto de campos de tabelas (com elementos de dados e domnios) que podem
ser usados por mais de uma tabela atravs do campo .INCLUDE na lista dos nomes
de campos de uma tabela.

Um exemplo de uso: imagine-se em uma situao em que deve-se associar vrios


campos em algumas dezenas de tabelas transparentes. Cria-se uma estrutura com
os campos desejados, e associa-se a estrutura s tabelas.

Criado atravs da SE11, outros objetos, estruturas.

27
Academia ABAP - 2008

TABELAS DE VERIFICAO
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.

Deve-se procurar atribuir sempre a campos com o mesmo domnio.


Isto uma tabela de
verifcao

Informe o nome da
tabela de verificao
no campo apropriado.
O boto Gerar
Proposta,
Verifica se existem
campos em comum
(mesmo domnio)
entre as tabelas e faz
o relacionamento

Dois cliques ali Resultado: a existncia do


campo KNUMA_PI da tabela
KONP ser verificada
Abri aquilo dali
automaticamente na tabela
KONA.
Dois cliques na chavinha,
Se no existir, a
Abre al
mensagem
de erro definida ser
invocada.

28
Academia ABAP - 2008

MENSAGEM
Classe de mensagem:

Ir a SE91 e ....

29
Academia ABAP - 2008

Mensagem p/ usurio

Sintaxe: MESSAGE Sxxx(nome-classe-mensagem).


I Informao
E Erro
W Aviso

Ou.. pe o nome da classe no inicio do prg (cabealho) ex.:


REPORT zac2003_bh_gr01_t1 NO STANDARD PAGE HEADING
LINE-SIZE 60
message-id z_cm_bh_06.

REPORT
Sequncia para criao do Report:

1. Tables: Declarao de tabelas transparentes;

2. Declarao de tabelas internas;

3. Declarao de constantes;

4. Declarao de variveis;

30
Academia ABAP - 2008

5. Inicializao;

6. Tela de seleo;

7. Validao da tela de seleo;

8. Inicio do programa (START-OF-SELECTION);

9. Fim do programa (END-OF-SELECTION);

10. Subrotinas.

SET LEFT SCROLL BOUNDARY COLUMMNS X


Determina o nmero de colunas fixas ( X ) na sada de um relatrio. Essas colunas
no rolaro horizontalmente quando a barra de scroll for acionada.

COMANDOS E/OU TECLAS DE ATALHO


Ctrl + F3 ativa e gerar
F8 compila, executa
* para comentrio no inicio da linha
para comentrio no meio da linha
/n fecha todas as linhas sem salvar e sem perguntar

/ pula uma linha.


/h debug
pretty printer (icone) Para identar
F5 Passo a passo, entrando nas Subrotinas. ( usar em select -
endselect)
F6 Passo a passo, mas no entra nas Subrotinas.
F7 Abandona SubRotina, voltando para a Rotina chamadora.

OPERADORES LGICOS
AND
OR
NE ou <>
>
<
>=

31
Academia ABAP - 2008

<=
=

VARIVEIS:
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.

Data: <nome varivel> type i.


Data: v-nome(35) Type C.
Data: v-nome like ztbaluno06-nome.
(assume o mesmo campo atributo nome)

CONSTANTES
Sintaxe:

CONSTANTS: <nome_const> TYPE C VALUE <valor>.


ou
CONSTANTS: <nome_const> LIKE <nome-campo-tabela> VALUE <valor>.

Ex. CONTANTS c_cd_aluno(3) TYPE c VALUE 001.


ou
CONTANTS c_cod_aluno LIKE ztbaluno09_cdigo VALUE 001.

ESTRUTURA CONDICIONAL:
IF

if <condio>.
Comandos.
Else.
Endif.

32
Academia ABAP - 2008

If <condio>.
Commandos
Else if <condio>.
Comandos
Else if <condio>.
Comandos
Else.
Commandos
Endif.

CASE

O comando CASE geralmente mais claro, legvel e um pouco mais rpido do


que o comando IF. Quando testamos se um campo igual a um outro campo,
tanto faz usarmos CASE ou IF. Porm, o comando CASE o melhor pois, alm
de facilitar a leitura do cdigo, mais eficiente depois de 5 IFs. A clusula
WHEN OTHERS sempre deve ser codificada tambm.

Case <variavel>.
When <valor>:
Commandos
When <valor2> :
Commandos
Others:
Comandos
Endcase.

Loops de repetio

O comando LOOP WHERE mais eficiente do que o comando LOOP/CHECK,


pois avalia a condio internamente.

Exemplo 1 :

Esta maneira mais eficiente do que a ltima.

LOOP AT T_ABC WHERE K = KVAL.

ENDLOOP.

LOOP AT ITAB.
CHECK T_ABC = KVAL.

ENDLOOP.

Exemplo 2 :

Loop at <TI>.
comandos

33
Academia ABAP - 2008

Endloop.

Loop at <TI> Where cond=.


comandos
Endloop.

AT LAST
Verifica ultimo registro permitindo somatrios e totalizaes.

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 prximo diferente do registro
atual.

Ex. AT END <nome_campo>.

PERFORM Imprime_subtotal.

ENDAT.

WHILE

O comando WHILE mais eficiente do que DO + EXIT. WHILE mais fcil de


entender e mais rpido durante a execuo.

While <condi>.
comandos
Endwhile.

DO

Do <n de vezes> times.


comandos
Enddo.

CHECK

Define condio para continuidade do programa / procedimento.

34
Academia ABAP - 2008

CHECK <condio>.

Ex. PERFORM seleo_dados.

SELECT .....

CHECK sy-sybrc = 0. ( Caso condio falsal ENDFORM )

PERFORM imprime_aluno.

PERFORM - SINTAXES DE PARMETRO


1- Perform <nome form> .
2- Perform <nome from> USING <parametro>.
3- Perform <nome form> changing <retorno>.
4- Perform <nome form> USING <parametro> changing <retorno>.

PARAMETERS
Um parmetro serve para a criao de uma varivel com a interveno do usurio,
ou seja, a varivel recebe um valor que o usurio vai digitar.
Sintaxe:
PARAMETERS: <nome> LIKE <tb>-<campo> .
Type c.
PARAMETERS: <nome> LIKE <tb>-<campo> OBLIGATORY.

SELECT-OPTIONS:
Com esse comando o usurio no precisa de digitar as opes, pois vazio, ele
entende que para buscar todos os dados do banco.

Estrutura da tabela interna que gerada pelo comando select-options:


- sigh: I
- option: BT (Between) nesse caso o low e o high estaro preenchidos com
os valores De e At. Ou EQ (iqual), onde o low estar com o valor e o high
estar vazio.

Sintaxe: Select-options <varivel> for <tabela_transparente-campo>.

COMANDO DE DESVIO DE EXECUO


35
Academia ABAP - 2008

CONTINUE

Passa para o prximo registro. Comandos CONTINUE posicionados antes de


eventos AT NEW dentro de um loop fazem os eventos perderem a seqncia
correta

EXIT
Sai do loop.

Ex.
LOOP AT <tabela interna>.

IF tbl_aluno-bolsa < 10.

CONTINUE.

ENDIF.

IMPRIMA_ALUNO

ENDLOOP.

BREAK-POINT Para execuo do programa independente do usurio.

BREAK <usurio> Para execuo conforme usurio logado.

36
Academia ABAP - 2008

PASSAGEM PARMETROS PARA PROGRAMA STANDARD


Ex: SET PARAMETER ID 'BES' FIELD t_pedidos-ebeln.
CALL TRANSACTION 'ME23' AND SKIP FIRST SCREEN.

- Teclar F1 no campo de seleo da transao Stantard.


- Clicar no boto de Informaes Tcnicas

37
Academia ABAP - 2008

Identificador de Parmetro: BES

COMANDO HOTSPOT ON
Usado no commando WRITE para identificar que o campo permitir duplo click
(mozinha de seleo)

Ex.: WRITE: <campo1> HOTSPOT ON,


<campo2>.

COMANDO HIDE
Guardar o contedo do campo na linha selecionada (HOTSPOT).

Ex.: HIDE: <nome_campo>.

COMANDO AT LINE-SELECTION

Evento que controla campos selecionveis no Report.

Ex.: AT LINE-SELECTION.

DATA: l_cursor(20).
38
Academia ABAP - 2008

GET CURSOR FIELD l_cursor.

IF l_cursor = <nome_campo1>.
....
ELSEIF l_cursor = <nome_campo2>.
....
ENDIF.

COMANDO GET CURSOR FIELD


Armazena nome do campo selecionado pelo usurio.

CRIAR TRANSAO
Transao uma combinao de caracteres que codifica uma tarefa, atividade,
funcionalidade, etc.

Exemplo: a transao que chama o editor de programas a SE38. Equivale ao


seguinte caminho atravs do menu:
Ferramentas->ABAP Workbench->Desenvolvimento->Editor ABAP.

Para criar uma transao, utiliza-se a transao SE93.

Ir na SE93:

39
Academia ABAP - 2008

40
Academia ABAP - 2008

CRIAR AJUDA DE PESQUISA ( SEARCH HELP OU MATH


CODE)
Conjunto de valores de uma tabela exibidos em um campo de entrada quando F4
teclado.

As ajudas para pesquisa elementares realizam um caminho de pesquisa


para a determinao das entradas possveis. Ajudas para pesquisa coletiva
so constitudas por vrias ajudas para pesquisa elementares.

Depois de definida, a ajuda de pesquisa deve ser associada ao elemento de dados.


Todas as tabelas que utilizam o elemento de dados herdaro o matchcode.

Exibio imediata
Tabela origem Com restrio 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 parmetro

Posio Lista ser


do Posio do filtrada por
campo campo limitador este valor
na lista na lista

PASSO PARA CRIAO DE AJUDA DE PESQUISA:

Entrar SE11

41
Academia ABAP - 2008

CRIAR VISES ( VIEW )


Seleo de dados de vrias tabelas atravs de JOIN com possibilidade de
restringir valores.

Pode ser usada no programa como se fosse uma tabela transparente.


Criadas atravs da transao SE11, selecionando-se Vises.

Campos da viso

42
Academia ABAP - 2008

Usa-se a viso 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 no pode atualizar (inserir, modificar ou eliminar) dados da viso.
A vantagem de usar a viso, que ela j um join de vrias tabelas. Quando for
feita a seleo (select * from viso, p.e.), os dados j viro filtrados de acordo
com os parmetros do join.

Pode-se tambm declarar tabelas internas like a viso: DATA IT_TABELA LIKE
ZVISAO OCCURS 0...

Imagine uma situao onde deve-se fazer um join de cinco tabelas, para doze
programas diferentes.

Uma situao interessante criar uma viso das cinco tabelas (o join ser
programado na viso) e nos doze programas, fazer o select da viso, ao invs
das tabelas.

PASSO PARA CRIAO DE UMA VIEW:

Selecionar tabelas;
Selecionar campos ( todos os campos chaves presentes )
Ligao entre tabelas;
Condies de seleo;

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 vrios programas. Pode ter
funes, definio de dados, trechos de processamento. A existncia do comando
INCLUDE ZACIXXX em um programa, desvia o processamento para o include
referenciado ZACIXXX e volta para o programa que chamou.

PASSO PARA CRIAO DE UMA VIEW:

1 Entrar na Se38
2 Escrever no fonte:

Include <nome include> -> clicar duas vezes.

47
Academia ABAP - 2008

48
Academia ABAP - 2008

SUBSTRING
Para variveis 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 SELEO
RADIOBUTTON

Parameters: rb_bot1 radiobutton group gr1, Cria dois botes (do tipo rdio)
Rb_bot1 radiobutton group gr1. de seleo mutuamente
exclusiva.
Parameters: rb_bot3 radiobutton group gr2, Cria dois botes (do tipo rdio)
Rb_bot4 radiobutton group gr2. de seleo mutuamente
exclusiva.

CHECKBOX

Parameters: p_bot5 as checkbox

AT SELECTION-SCREEN Consistncia da tela de entrada de dados.

Ex.
AT SELECTION-SCREEN.

IF <condicao>.
MESSAGE <texto>.

RANGE
Montar intervalos de seleo (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.

SIGN OPTIONS LOW HIGH


I EQ 20021010 20021231
TRANSLATE
49
Academia ABAP - 2008

Substuio de caracteres / Traduo

Ex.: VAR = 10,5.


TRANSLATE VAR USING ,.. Resultado: 10.5.

VAR = YYXX.
TRANSLATE VAR USING YAXB Resultado: AABB

VAR = aaa
TRANSLATE var USING UPPER CASE.

CONCATENATE
Agrupar valores.

CONCATENATE <var1> <var2> <var3> INTO <var4> SEPARETED BY SPACE.

CONCATENATE <var1> <var2> <var3> INTO <var4> SEPARETED BY


<separador>.

Ex.:var1 = HEITOR.
Var2 = CARLOS.
CONCATENATE var1 var2 INTO var3 SEPARETED BY SPACE.
Resultado VAR3 = HEITOR CARLOS

SPLIT
Desagrupar valores.

SPLIT <var1> AT <delimitador> INTO <var1> <var2>.

Ex.: var1 = HEITOR CARLOS


SPLIT var1 AT INTO var2 var3.

Resultado var2 = HEITOR


var3 = CARLOS

SHIFT
Extrair valores de variveis

SHIFT <var> BY <n> PLACES.

Ex.: var1 = ABAP01.


SHIFT var1. var = BAP01
SHIFT var1 BY 4 PLACES. var = 01.
SHIFT var1 RIGHT BY 2 PLACES var = ABAP01

50
Academia ABAP - 2008

SUB ROTINAS
PERFORM (<nome_prog>) <nome_rotina>. Chama uma subrotina de um outro
programa

PERFORM <nome_rotina> USING <var1>. CHANGING <var2>. Passando e


retornando valores para SubRotinas

Ex.: DATA: vn_var1(5) type n,


vn_var2(5) type n.

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.

Vn_valor1 = vn_valor2 / vn_valor1.

ENDFORM.

MACHCODE OBJECT
Cria mathcode para parmetros.

PARAMETERS <nome_parmetro> for <nome_campo> MATCHCODE OBJECT


<nome_match_code>.

SET PF-STATUS
Esse o comando que chama a funo do boto. Deve-se clicar duas vezes no
campo sxxx(que um nmero que ns definimos previamente) e criar o objeto.
Neste momento a tela te joga para a criao do cone. ( localizado na lgica
principal logo aps o star-of-selection, antes das chamadas de funo)

SET PF-STATUS <nome_botao>.

Cria uma interface de usurio (com menus, botes, teclas de funo, barra de
ferramenta) para uma aplicao. (No nosso caso, um report).

Definio de interface de usurio com botes:


Duplo clique em FORN
Programa

Duplo clique em S000:

51
Academia ABAP - 2008

Texto que
aparecer ao lado
do cone, no
boto

Na situao acima, ser criado o boto quando o relatrio for


executado.
Clicando-se no boto, o evento at user-command ser acionado (se existir) e a
varivel
SY-UCOMM conter o valor do cdigo do objeto; no caso acima exemplificado,
FORN.
Em teclas de funo, seleciona-se a tecla que se deseja ativar o boto ou item
de menu


Lembrar de incluir o cdigo
de funo standart para os
botes de voltar, cancelar e
sair!

Habilitar/Desabilitar botes e funes de um PF-STATUS dinamicamente


SET PF-STATUS XXXX EXCLUDING FFFF ( onde FFFF o cdigo da funo
que se quer desabilitar.
DATA: BEGIN OF IT_STATUS
OCCURS 0,
Para habilitar novamente, usar SET PF-STATUS XXXX. VC_FUNCAO LIKE RSMPE-
Para desabilitar vrios botes ao mesmo tempo: FUNC,
Criar tabela interna com campo do tipo RSMPE-FUNC; END OF IT_STATUS
Atribuir os cdigos das funes para a tabela;
IT_STATUS-VC_FUNCAO =
Utilizar: EXIB.
SET PF-STATUS XXXX EXCLUDING IT_XXXX APPEND IT_STATUS.
IT_STATUS-VC_FUNCAO =
MODI.
APPEND IT-STATUS.

GERANDO E CARREGANDO ARQUIVOS


WS_DOWNLOAD
Gera arquivo, joga dados para o servidor de aplicao
No file name, deve se informar nome e caminho

CALL FUNCTION 'WS_DOWNLOAD'


EXPORTING

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.

CALL FUNCTION 'WS_UPLOAD'


* EXPORTING
* CODEPAGE =''
* FILENAME =''
* FILETYPE = 'ASC'
* HEADLEN =''
* LINE_EXIT =''
* TRUNCLEN =''
* USER_FORM =''
* USER_PROG =''
* DAT_D_FORMAT =''
* IMPORTING
* FILELENGTH =
TABLES
DATA_TAB =
* EXCEPTIONS

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

OBSERVAES:

So funes para gravar dados de uma tabela interna na estao de trabalho


(HD ou unidade de rede) e carregar para uma tabela interna dados presentes na
estao de trabalho. Muito utilizada para gerar arquivos texto (ASCII) para
interfaces com outros sistemas.

Alguns parmetros: (comuns funo WS_DOWNLOAD e WS_UPLOAD):


CALL FUNCTION Nome da tabela interna
Nome do arquivo gerado/lido. 'WS_DOWNLOAD' Onde esto os dados com os
EXPORTING quais o arquivo ser gerado
Se for uma varivel, deve ser
FILENAME = P_FILE (no caso de download) ou para
Do tipo RLGRAP-FILETYPE FILETYPE = 'ASC' onde os dados sero
TABLES carregados (upload)
Tipo do arquivo lido. Pode data_tab = it_tab
Ser ASC (ASCII para gerar arquivos
Textos) DAT (campos separados por
Tabulao, WK1, entre outros.

Importante: O ARQUIVO SER GERADO COM A MESMA ESTRUTURA


(MESMO LAYOUT) DA TABELA INTERNA. Usando-se uma tabela interna com
todos os campos tipo CHAR, garante-se que no haver problemas de converso ou
gerao de arquivos tipo texto (filetype ASC).

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

Selection-screen begin of line. Cria dois


selection-screen comment 1(5) text-002 for field p_mes. parmetros de
parameters: p_mes(02) type n. entrada (MS e
ANO) na mesma
selection-screen comment 10(5) text-003 for field p_ano. linha, com os
parameters: p_ano(04) type n. rtulos definidos
Selection-screen end of line em TEXT-002 e
TEXT-003 54
Academia ABAP - 2008

selection-screen begin of line. (faz sair tudo na mesma linha)


parameteres: p_a(5),
p_b(5).
Selection-secreen end of line.

selection-screen begin of line.


Selection-screen pos 15. (faz sair na posio 15)
parameteres: p_bot1 grupo gr1.
Selection-screen comment p_bot1. (dar2 cliks no nome do boto e colocar o
texto)
Selection-screen end of line.
At selection-screen.
Ao dar <enter> aps digitar o parmetro o programa procura o At selection-
screen

Evento acionado imediatamente aps o selection-screen tiver sido executado,


(Aps o ENTER, F8, F4, etc.) antes mesmo de entrar no evento START-OF-
SELECTION.

Neste evento, efetua-se a consistncia dos parmetros informados. At selection-


screen on block b1 chamado somente para as consistncias dos parmetros do
block b1.
AT USER-COMMAND
No report:
um evento que intercepta toda entrada do usurio que feita na interface do
usurio. ( localizado dentro da lgica principal, logo aps as chamadas de funo)

No On line:
Intercepta toda ao feita pelo usurio atravs da Status Gui (interface de usurio).

o evento que executado quando, por exemplo, clica-se no boto SALVAR de


uma barra de status.

A varivel SY-UCOMM recebe o valor passado pela barra de status.

UTILIZAO DE CONES
Incluir biblioteca de cones no programa:
INCLUDE <ICON>

Exemplo de utilizao:
Write: Aluno abaixo da mdia, ICON_RED_LIGHT as icon.

Sada: Aluno abaixo da mdia

55
Academia ABAP - 2008

HELP-REQUEST
Evento invocado quando tecla-se F1 em algum campo de seleo (da tela de
seleo).

At selection-options on help-request for <VARIVEL>

Ex.:

Selection-screen begin of ...


Parameter p_cod (2).
Selection-screen end of
At selection-options on help-request for p_cod.
Write: Usurio clicou F1.

VALUE-REQUEST
Evento invocado quando tecla-se F4 (ou clica-se em ao lado de campo de
seleo (da tela de seleo).

Exemplo:

At selection-options on value-request for <VARIVEL>


Selection-screen begin of ...
Parameter p_cod (2).
Selection-screen end of
At selection-options on value-request for p_cod.
Write: Usurio clicou F4.

CRIAO DE FUNES
Encapsulamento de um trecho de programao que pode ser chamado por vrios
programas, receber, alterar e devolver dados. chamado atravs do comando CALL
FUNCTION. Construdo atravs do function builder transao SE37.

Ex.:
Se o parmetro vai
sofrer modificaes
e ser devolvido para
o programa, indique
aqui

56
Academia ABAP - 2008

Desenvolva aqui, o cdigo


Parmetros de sada. O que a
funo vai devolver para o da funo
programa que chamou.

COMUNICAO TELA -> PROGRAMA ABAP


O Fluxo lgico de uma tela dividido em dois eventos, a saber:

PBO PROCESS BEFORE OUTPUT ( Processos a serem executados antes da


exibio da tela)

PAI PROCESS AFTER INPUT (Processos a serem executados aps alguma


interveno do usurio: teclar ENTER, teclas de funes, escolha de botes, etc. ).

O TAB no ativa o PAI.

O processamento no PBO e PAI feito atravs de mdulos, que chamam o cdigo


no programa principal.

Tela 0001 PBO Quando uma tela chamada, os comandos do PBO


so executados. Quando o usurio interfere (ENTER
PAI , por exemplo), os comandos que estiverem57no PAI
so executados, e a tela fica paradinha no PBO
novamente, esperando para executar o PAI (para
Academia ABAP - 2008

A tela chamada pelo programa atravs do comando CALL SCREEN 9999.

BARRA DE STATUS PARA TELAS


A construo de uma barra de status para as telas assaz semelhante construo
de um status para um relatrio. A diferena est na forma de tratar as funes
selecionadas pelo usurio. No caso de reports, o tratamento feito atravs do
evento at user-command. Para telas, o tratamento deve ser feito atravs de algum
mdulo no PAI. O processamento dos botes voltar, cancelar e sair deve ser
codificado.

58
Academia ABAP - 2008

Caracterstica SCREEN PAINTER TRANSAO SE51


s da tela:
nome, tipo da
tela,
tamanho, etc.

Aqui mostra os objetos da tela

Nesta rea codifica-se o


processamento do PBO e PAI.
Ex.: module status_0001
executar o processamento
definido em
module status_0001 output do
programa ao
qual a tela est associada. Note
que includa a palavra
OUTPUT ou INPUT aps nome
do mdulo, no programa Trecho do programa principal A varivel sy-ucomm
principal, definindo se um recebe o cdigo da
mdulo de PBO ou PAI funo escolhido.
Sugere-se que seja
definido um campo no
programa (like sy-
ucomm), que o valor de
sy-ucomm seja movido
para ele e que a
comparao seja feita
atravs dele.

EDITOR DE LAYOUT DA TELA


59
Academia ABAP - 2008

Clicando-se no boto layout, ativa-se o editor de layout, onde, atravs de recursos


tpicos da manipulao de elementos grficos (no sei se o termo esse) desenha-
se e ajusta os elementos da tela. (campos, textos, botes, frames, etc...)

Clicando aqui, possvel


selecionar campos do programa
ou de alguma tabela do DDIC

MODIFICAO DINMICA DE ATRIBUTOS DE


ELEMENTOS DA TELA.
No PBO Alguns outros atributos dos
Loop at screen Neste exemplo, se elementos da tela
If screen-name = XXX. o campo da tela Screen-name Nome do
Screen-input = 0. for o XXX, ser campo
Endif. desabilitada a Screen-group1 Nome do
Modify screen. entrada de dados (at 4) grupo
Endloop. no mesmo. Screen-required Obrigatrio
Screen-input Campo de
entrada
Screen-output Campo de
sada
Screen-invisible Visvel/invisvel
Screen-length Tamanho do
campo
Screen-active Campo ativo

VERIFICAO AUTOMTICA DE CAMPOS

60
Academia ABAP - 2008

Para se fazer uma verificao no contedo de algum campo em uma tela, enviar
uma mensagem de erro, e garantir que o campo esteja ativo novamente para edio,
usa-se:

Verificao automtica para um campo:


FIELD <CAMPO> MODULE <NOME DO MDULO)
Ex.:
No PAI
FIELD VC_CAMPO MODULE VERIFICA_CAMPO.

No programa Neste exemplo, se o


MODULE VERIFICA_CAMPO INPUT. campo for diferente de
IF VC_CAMPO <> ABCD. ABCD, ser enviada uma
MESSAGE E000 WITH CAMPO INVLIDO. mensagem de erro e o
ENDIF. campo ficar disponvel
ENDMODULE. novamente para entrada
de dados.

Verificao automtica para vrios campos:

CHAIN: Se no mdulo VERIFICA_CAMPO tiver uma


FIELD: VC_CAMPO1, mensagem de erro (tipo E, W, etc), a mesma
VC_CAMPO2, ser exibida e TODOS OS CAMPOS QUE
VC_CAMPO3. ESTIVEREM ENTRE O CHAIN E ENDCHAIN
MODULO VERIFICA_CAMPO. sero abertos novamente para edio
ENDCHAIN.

Execuo condicional de mdulos baseados no FIELD - > algum valor


que no seja o inicial.

FIELD (CAMPO) MODULE (NOME DO MDULO) ON INPUT

O mdulo referido ser executado se o campo em questo tiver algum valor que no
seja o inicial.

Para mais de um campo:


CHAIN:
FIELD: VC_CAMPO1,
VC_CAMPO2,
VC_CAMPO3.
MODULO VERIFICA_CAMPO ON CHAIN-INPUT
ENDCHAIN.

Execuo condicional de mdulos baseados no FIELD - > alguma


alterao

61
Academia ABAP - 2008

FIELD (CAMPO) MODULE (NOME DO MDULO) ON REQUEST

O mdulo referido ser executado se o campo em questo tiver sofrido alguma


alterao (usurio digitou algum valor diferente do que j existia).

Para mais de um campo:


CHAIN:
FIELD: VC_CAMPO1,
VC_CAMPO2,
VC_CAMPO3.
MODULO VERIFICA_CAMPO ON CHAIN-REQUEST
ENDCHAIN.

Mudana dinmica de telas em dialog programming.


Quando cria-se uma tela (dialog) solicitado informar no campo tela seguinte, o
cdigo da prxima tela que ser executada aps a tela que est sendo criada. Pode-
se interferir nesta seqncia dinamicamente atravs de alguns comandos a saber:

SET SCREEN XXXX -> Altera temporariamente a seqncia de ativao


das telas. A tela XXXX ser considerada como prxima tela.

LEAVE SCREEN > Encerra a tela corrente

LEAVE TO SCREEN XXXX -> Equivale aos dois comandos acima, em


seqncia. Chama imediatamente a tela XXXX

CALL SCREEN XXX >Interrompe a tela corrente e processa a tela


XXXX

SET SCREEN 0 , LEAVE SCREEN ou LEAVE TO SCREEN 0 > Chama


a tela anterior. Se no houver tela anterior, encerra o programa.

DIALOG PROGRAMMING TABLE CONTROL

62
Academia ABAP - 2008

Table control um objeto de dialog programming utilizado para exibir/entrar


dados em uma estrutura semelhante uma tabela, com funcionalidades teis:

Tamanho de linhas/colunas ajustveis para exibio/edio de dados;

Seleo de linhas e colunas;

Cabealho de colunas;

Gerao automtica de barra de rolagem vertical/horizontal;

Atributos de clulas modificveis em tempo de execuo.

Definio de table control

No top include do programa principal: CONTROLS TC_0001 TYPE TABLEVIEW


USING SCREEN XXXX

Define um objeto do tipo TABLEVIEW, com o nome TC_0001 usando os


parmetros iniciais definidos na table control XXXX.

Um objeto tipo TABLEVIEW uma estrutura na qual se define os atributos da


table control (nmero de linhas, linha do topo, etc. ) Estes atributos podem ser
modificados em tempo de execuo.

Desenhar na tela um objeto tipo Table control (Lembrar de definir um control xxx
tipo tableview)

Inserir os campos de uma tabela interna.

Deve haver um loop/endloop da tabela interna tanto no PBP quanto no PAI,


enviando e recebendo dados do programa para a tela e da tela para o programa
respectivamente.

PROCESS BEFORE INPUT Faz um loop na tabela interna


LOOP AT IT_ALUNOS WITH CONTROL TC_XXX transportando os dados para a table
MODULE DEFINE_LINHAS. control tc_xxxx
ENDLOOP. Tentar-se- preencher todas as linhas
visveis na tela. Se a tabela interna tiver
menos linhas do que a table control,
PROCESS AFTER INPUT linhas vazias sero acrescentadas.
LOOP AT IT_ALUNOS. Utiliza-se um mdulo (no exemplo, o
MODULE ATUALIZA_TABELA. DEFINE_LINHAS) para controlar tal
ENDLOOP. situao:
Module define_linhas input.
If it_alunos is initial.
Aqui so atualizados os dados feitos pelo usurio Exit from step-loop. Sai do loop do
na table control, para a tabela interna. O mdulo PBO
(no exemplo ATUALIZA_TABELA) contm: Endif.
Modify it_alunos index tc_xxx current-line. Endmodule.
Modificao do atributos de uma table control (exemplos)

63
Academia ABAP - 2008

Quando se declara um CONTROL para um table control, (a instruo


CONTROLS TC_0001 TYPE TABLEVIEW USING SCREEN XXXX no
top include), criado um elemento do tipo TABLEVIEW com a
seguinte estrutura:
Fixed_Cols
Lines
Top_Line
Current_Line
Left_Col
Line_Sel_Mode
Col_Sel_Mode
Line_Selector
V_Scroll
H_Grid
V_Grid
Cols (aqui dentro esta a definio dos atributos para cada
campo da tabela interna associada ao table control)
Invisible

Pode-se alterar dinamicamente os atributos de uma table control,


alterando os valores dos atributos.
Ex.: TC_0001-INVISIBLE = 1, torna o table control TC_0001 invisible.
TC_0001-TOP_LINE = 5, define que a linha de topo da table control ser a d
e nro 5.
Habilitar/desabilitar algumas clulas do grid
* module carrega_ti_ysap01d.
LOOP AT ti_YSAP01d WITH CONTROL tc101 Tornar uma coluna de um grid visvel/invisivel
CURSOR tc101-current_line.
MODULE carrega_table_control_101. ...type-pools cxtab.
MODULE Controle_tela. ...data: WA TYPE CXTAB_COLUMN.
ENDLOOP.
MODULE Controle_tela OUTPUT. loop at tc110-cols into wa.
IF YSAP01D-A1 = 'X' . if wa-SCREEN-NAME = 'TI_YSUNITU-
LOOP AT SCREEN. NUMEMB'.
CASE screen-name. wa-INVISIBLE = 1.
* S exibio para o campo 'Unidade de Medida': modify tc110-cols from wa.
WHEN 'YSAP01D-ESCALA'. endif.
MOVE '0' TO screen-input. endloop.
WHEN 'YSAP01D-CODE'.
MOVE '0' TO screen-input.
WHEN 'YSAP01D-DT_INICIAL'.
MOVE '0' TO screen-input.
WHEN 'YSAP01D-HR_INICIAL'.
MOVE '0' TO screen-input.
WHEN 'YSAP01D-DT_FINAL'.
MOVE '0' TO screen-input.
WHEN 'YSAP01D-HR_FINAL'.
MOVE '0' TO screen-input.
ENDCASE.
MODIFY SCREEN.
ENDLOOP.
ENDIF.

64
Academia ABAP - 2008

Controlando os botes de scroll em uma table control

Deve-se programar as funes de paginao quando se trabalha com


table control. As funes dos botes de avanar/recuar linha/pgina
devem ser programadas utilizando os valores do nmero de linhas
visveis da table control e o nmero da linha do topo da table control. O
atributo TC_XXXX-TOP_LINE define qual a linha do topo.

No PBO, a varivel de sistema SY-LOOPC contm o nmero de linhas


da table control. SY-LOOPC somente conter valores quando o
processamento est dentro do LOOP/ENDLOOP, porque ele conta o
nmero de passagens do loop.

Programar, na barra de status, os botes para scroll


Obs.: utilizar os cdigos de funo padro: P-, P--, P+, P++

No programa

DATA LOOPLINES LIKE


Exemplo SY-LOOPC.
Na tela MODULE GET_LOOPLINES
OUTPUT.
PROCESS BEFORE OUTPUT. LOOPLINES = SY-LOOPC.
LOOP AT TC_0100 ENDLOOP
MODULE GET_LOOPLINES.
ENDLOOP MODULE USER_COMMAND_0200 INPUT.
PROCESS AFTER INPUT. CASE OK_CODE.
LOOP. WHEN P--.
TC_0100-TOP_LINE = 1.
ENDLOOP. WHEN P-.
Outro
MODULE exemplo
USER_COMMAND_0200 TC_0100-TOP_LINE =
TC_0100-TOP_LINE LOOPLINES.
IF TC_0100-TOP_LINE < 1.
*&---------------------------------------------------------------------
* TC_0100-TOP_LINE = 1
*& Module pula_pagina INPUT .
*&---------------------------------------------------------------------
*
* text
*----------------------------------------------------------------------
*
module pula_pagina input.

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

Outro exemplo de paginao


No mdulo PAI da tela:
* Trata paginao da table control
WHEN 'P--' OR 'P-' OR 'P+' OR 'P++'.

PERFORM paginacao_100 USING vc_okcode


vi_linhas_tc_100
vi_linhas_100
CHANGING tc_0100-top_line.

No mdulo de funo
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 pgina
WHEN 'P--'.

p_top_line = 1.

* Subtrai o nmero de linhas visveis na table control para


* voltar uma pgina.
WHEN 'P-'.

SUBTRACT p_linhas_tc FROM p_top_line.


IF p_top_line LT 1.
p_top_line = 1.
ENDIF.

* Soma o nmero de linhas visveis na table control para


* avanar uma pgina.
WHEN 'P+'.
ADD p_linhas_tc TO p_top_line.
IF p_top_line > p_linhas_it.
SUBTRACT p_linhas_tc FROM p_top_line.
ENDIF.

* Posiciona na ltima pgina. Para isto deve-se atualizar o


* campo top-line da table control com a seguinte operao:
* Nmero de linhas preenchidas da tabela interna menos
* o nmero de linhas visveis na table control mais 1.
WHEN 'P++'.

IF p_linhas_it > p_linhas_tc.


p_top_line = p_linhas_it - p_linhas_tc + 1.
ENDIF.
ENDCASE.
ENDFORM.

Tornar uma coluna de um grid visvel/invisivel


...type-pools cxtab.
...data: WA TYPE CXTAB_COLUMN.

loop at tc110-cols into wa.


if wa-SCREEN-NAME = 'TI_YSUNITU-NUMEMB'.
wa-INVISIBLE = 1.
modify tc110-cols from wa.
endif.

66
Academia ABAP - 2008

endloop.

Habilitar/desabilitar algumas clulas do grid


* module carrega_ti_ysap01d.

LOOP AT ti_YSAP01d WITH CONTROL tc101 CURSOR tc101-current_line.


MODULE carrega_table_control_101.

MODULE Controle_tela.
ENDLOOP.

MODULE Controle_tela OUTPUT.


IF YSAP01D-A1 = 'X' .
LOOP AT SCREEN.
CASE screen-name.
* S exibio para o campo 'Unidade de Medida':
WHEN 'YSAP01D-ESCALA'.
MOVE '0' TO screen-input.
WHEN 'YSAP01D-CODE'.
MOVE '0' TO screen-input.
WHEN 'YSAP01D-DT_INICIAL'.
MOVE '0' TO screen-input.
WHEN 'YSAP01D-HR_INICIAL'.
MOVE '0' TO screen-input.
WHEN 'YSAP01D-DT_FINAL'.
MOVE '0' TO screen-input.
WHEN 'YSAP01D-HR_FINAL'.
MOVE '0' TO screen-input.
ENDCASE.
MODIFY SCREEN.
ENDLOOP.
ENDIF.

VERIFICAR QUAL BOTO FOI PRESSIONADO DENTRO DE UMA LINHA


DE UM TABLE CONTROL

(Quando rola-se a pgina, a linha clicada no table control no corresponde


linha da tabela interna).

process after input.


module user_command_0100.

get cursor field wc_field.

67
Academia ABAP - 2008

get cursor line wi_line.

if wc_field = 'TI_OPER-FORMULA'.
clear wc_field.
wi_line = tc1002-current_line - 1.
endif.

O boto corresponde a um campo da tabela interna (TI_OPER-FORMULA)


wi_line ser o nmero da linha da tabela interna correspondente ao boto
clicado.

Entradas negativas em colunas de table control


Ex.:
data: begin of ti_oper occurs 0,
poleo type p decimals 4,
end of ti_oper.

Na coluna do module pool, para o elemento ti_oper-poleo,


definir texto como "_.___.___.___,____V" para sada = 1,0000-
definir texto como "_.___.___.___V" para sada 91

SET CURSOR
Permite definir, em uma tela, o campo e a posio no campo que o cursor ser
posicionado:

set cursor vc_campo offset 3 Posiciona o cursor no campo vc_campo, na


terceira posio

LEAVE TO LIST PROCESSING


A partir de um programa dialog, possvel exibir listas (lembram dos reports?).
Ex.: MODULE IMPRIME LISTA.
SUPRESS DIALOG.
LEAVE TO LIST-PROCESSING AND RETURN (TO SCREEN XXX)
SET PF-STATUS SPACE.
LOOP AT IT_ALUNOS.
WRITE: IT_ALUNOS-COD, IT_ALUNOS-NOME
ENDLOOP.
ENDMODULE.

O exemplo, lista os dados da tabela it_alunos. SET PF-STATUS SPACE ativa a


barra de status standard. SUPRESS DIALOG faz com que a tela corrente no
seja exibida. Aps exibir a lista, retorna-se- para a tela indicada em set screen

68
Academia ABAP - 2008

O processamento retornar ao dialog quando o usurio sair com F3 ou quando


for encontrado no report, o comando LEAVE LIST-PROCESSING.

Eis uma possibilidade assaz interessante: o programa on-line (dialog, module-


pool) chamar uma lista dentro de uma tela modal. Fica muito bonitinho.
MODULE LISTA OUTPUT.
MODULE XXX INPUT.
SUPRESS DIALOG.
CALL SCREEN 200 Tela 200 modal Na tela 200 LEAVE TO LIST-
STARTING AT 20 10
PROCESSING...
ENDING AT 50 15.
SET PF-STATUS SPACE.
ENDMODULE
LOOP AT IT_ALUNOS.
WRITE: IT_ALUNOS-
COD
ENDLOOP.
ENDMODULE.

SAP MEMORY E ABAP MEMORY


SET PARAMETER e GET PARAMETER enviam e recebem valores para a SAP
memory respectivamente.

Esses valores so especficos para o usurio/sesso, porem disponveis para


todas as sesses internas.

EXPORT/IMPORT (CAMPO) TO/FROM MEMORY ID utilizam a ABAP memory


para enviar e receber respectivamente, campos, estruturas e tabelas internas
entre programas. (PESQUISAR AT QUE MOMENTO OS DADOS SO
MANTIDOS COM GET/SET E EXPORT/IMPORT).

69
Academia ABAP - 2008

TAB STRIP
Tabstrip permitem exibir diferentes componentes de uma aplicao em uma
nica tela. Seu design intuitivo permite usurios navegar facilmente entre os
componentes.

Partes de um Tabstrip

Nome da
aba do
tabstrip

Funo que
ser passada
Pgina
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 pgina do tabstrip ou uma rea
comum a vrias pginas.
Nas reas de subscreen so mostrados os dados atravs de telas tipo Subtela.

Criao de tabs trips

No top include incluir a instruo CONTROLS TS_001 TYPE TABSTRIP

Criar na tela, um objeto do tipo tabstrip e posicionar no local desejado. (Se


desejar mais pginas, escolha o objeto boto e posicione na parte superior
esquerda do tabstrip.)

Dar um nome para cada pgina do tabstrip.

Click click na abinha de cada pgina, e colocar o cdigo de funo para todas as
pginas (o cdigo que ser recebido pelo OK_CODE, atravs do SY-UCOMM.

Criar dentro de cada pgina um objeto tipo sub-rea (um para cada pgina ou um
para todos.)

70
Academia ABAP - 2008

Para utilizar uma sub-rea para todas as pginas, crie o objeto na primeira
pgina, e nas seguintes, nos atributos do pgina (duplo clique nela), colocar o
nome da subrea criada para a primeira pgina no campo Objeto de referncia

Para fazer scroll em uma tabstrip (navegar entre as pginas clicando nas
abinhas) sem ativar o PAI.

Criar as pginas com o atributo tipo de funo = P


Para este exemplo foram
A codificao ser a seguinte: criadas trs telas. A
primeira, tipo normal, onde
PROCESSA BEFORE OUTPUT foi desenhado o tabstrip. As
CALL SUBSCREEN SUB1 INCLUDING SY-CPROG 0001. outras duas, do tipo subtela,
CALL SUBSCREEN SUB2 INCLUDING SY-CPROG 0002. que sero apresentadas nas
subreas da pgina de tabstrip
PROCESS AFTER INPUT. correspondentes.
CALL SUBSCREEN SUB1. OBRIGATRIO fazer o call
CALL SUBSCREEN SUB2. subscreen no PBO e PAI. Seno
no funciona. No me pergunte
porque. Fica para vocs
pesquisarem.

Neste exemplo, quando clicar nas abinhas da tabstrip, o PAI no ser


invocado.

Para fazer scroll em uma tabstrip ativando o PAI

Criar as pginas com o atributo tipo de funo =

TODAS AS PGINAS DEVEM COMPARTILHAR DA MESMA SUB-REA

Exemplo da codificao
No top include

controls ts_001 type tabstrip. Define o tabstrip

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. Pgina da tabstrip que ser chamada
primeiro. O TAB1 o cdigo de funo definido para uma das pginas do tabstrip

Na lgica de processamento da tela principal: Module define_pagina output.


case vc_tab.
PROCESS BEFORE OUTPUT. when TAB1.
vc_tela = 0001.
MODULE DEFINE_PAGINA. when TAB1.
vc_tela = 0002.
endcase.
CALL SUBSCREEN SUB1 endmodule
INCLUDING SY-CPROG VC_TELA

71
Academia ABAP - 2008

PROCESS AFTER INPUT.


Module user_command_001 input.
CALL SUBSCREEN SUB1. ts_001-active = vc_tab.
case ok_code
when TAB1.
MODULE USER_COMMAND_001 vc_tab = TAB1.
when TAB2.
vc_tab = TAB2.
endcase.
Pode-se mudar dinamicamente vrios atributos da endmodule
tabstrip. Entre eles est o TS_XXX-ACTIVETAB
qque indica qual abinha estar ativa, isto , qual ser
mostrada na frente.

FIELD SYMBOLS
Referem-se a ponteiros de memria so estruturas de dados que armazenam
endereos de memria. O valor de um ponteiro uma posio de memria,
enquanto que, por exemplo, a de um inteiro um nmero.

Declarao: FIELD-SYMBOLS <ponteiro>

Durante a execuo, um campo atribudo ao field symbol atravs do comando


ASSIGN. Todas as operaes efetuadas no field symbol sero executadas
tambm ao campo a ele associado.
Ex.:
DATA: variavel(10) type c value bsico.
FIELD-SYMBOLS <field>.

ASSIGN variavel to <field>.


WRITE: variavel, field.
* A sada ser: bsico bsico

MOVE exemplo to <field>.


WRITE: variavel, field.
A sada ser: exemplo exemplo

CRIAO DE INTERVALOS DE NUMERAO


Criao de intervalos de numerao (para gerao de nmero
sequencial)
Transao SNRO
Exemplo:
Criar intervalo
Criar na transao SNRO o objeto ZCODINV
Domnio: ZD_CODIN
Porcentagem para aviso: 90,0
Quantidade ns no buffer: 0
Criar o intervalo:
N: 01
Do: 0000000001
At: 9999999999
Pos.interv.numerao: 1

Utilizar intervalo de numerao


72
Academia ABAP - 2008

Chamar a funo NUMBER_GET_NEXT com os parmetros


nr_range_nr = 1,
object = ZCODINV
quantity = 1
subobject =
toyear = 0000
ignore_buffer =
O nmero gerado em number ser o prximo seqencial.

Ex.: Numerao automtica de documentos, notas fiscais, etc. Cria-se o


intervalo, e o R/3 cuida do gerenciamento da numerao automtica, quando
feita a solicitao da gerao do nmero.

Criam-se intervalos de numerao atravs da transao SNRO.

Campos bsico para criao:

Elemento de dados do sub-objeto pode-se organizar a faixa de numerao de


acordo com sub-objetos (cdigo da companhia, departamento, etc.). Informe aqui
o elemento de dados do sub-objeto;

Ano fiscal Pode-se organizar a faixa por ano;

Domnio do nmero o tamanho e tipo do nmero (s possvel alfanumrico


char e num) definido pelo domnio informado neste campo.

% de aviso Ser enviada mensagem de erro quando o nmero gerado


corresponder porcentagem informada neste campo, em relao a quantidade
de nmeros do intervalo.

A funo NUMBER_GET_NEXT gerar o prximo nmero do intervalo


de numerao.

A funo NUMBER_CHECK verifica se um nmero est dentro de um


intervalo de numerao especificado.

A funo NUMBER_GET_INFO retorna informaes sobre o intervalo


de numerao especificado (limites, situao atual, etc).

SAP TRANSACTION
Uma SAP Transaction, ou transao SAP consiste de passos de dilogo (dialog
step). Um passo de dilogo comea quando o usurio interfere de algum modo
em uma tela, de modo que ela ative o PAI (um ENTER, uma tecla de funo,
clica duas vezes ou escolhe um item de menu). O passo de dilogo termina
quando a prxima tela mostrada.

E.x:

PBO Tela 100 PAI PBO Tela 200 PAI PBO


Tela 300 PAI
73
Academia ABAP - 2008

Dialog Step Dialog Step


Cada passo de dilogo, pode conter comando para atualizao de tabelas
transparentes

ATUALIZAO SNCRONA
No final de cada dialog step, o R/3 atualiza automaticamente todas as
requisies de atualizaes na base de dados. Imagine que na tela 100 voc
programou a insero de dados e eliminao 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.

ATUALIZAO ASSNCRONA
Algumas vezes imperativo que os dados no sejam atualizados no banco de
dados, quando mudar de tela. Imagine a seguinte situao: Voc tem que fazer
vrias atualizaes dentro do seu programa (inserir um registro, modificar outro,
eliminar outros dois e inserir mais um). Essas atualizaes so feitas por vrias
telas diferentes. E mais, se uma dessas atualizaes no for bem sucedida (voc
tentou inserir um registro com chave duplicada, por exemplo.), nenhuma das
outras atualizaes pode ser feita. Pelo default do R/3, que atualizao
sncrona, se der erro em uma atualizao qualquer, J ERA!

A sada para isso utilizar atualizao assncrona. As solicitaes de atualizao


no so executadas pelo R/3 at que voc o instrua para isso. As solicitaes
so colocadas em uma tabela de log e s so atualizadas quando voc der o
comando especfico. Se em alguma das etapas deu erro, simplesmente d um
comando para que o R/3 descarte essas atualizaes.

LUW (Logical Unit of Work Unidade lgica de trabalho)

Para trabalhar com atualizao assncrona deve-se estabelecer o ponto onde os


dados sero atualizados (aquele comando para o R/3 atualizar). Isso feito
combinando-se vrios dialog steps.
Linha pontilhada = dialog steps combinados ->

PBO Tela 100 PAI PBO


Tela 200 PAI PBO
Tela 300 PAI
Tela 300
PBO

Dialog Step Dialog Step


Dialog step

Vrios dialog steps formam uma LUW.

Na minha seqncia 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 atualizaes forem ok, executo o comando COMMIT WORK. Se
der erro em alguma atualizao, executo o comando ROLLBACK WORK.

74
Academia ABAP - 2008

COMMIT WORK Pega os dados da tabela de log e efetiva a


atualizao deles no banco.

O comando COMMIT WORK sempre deve ser utilizado quando uma ou


mais LUW esto sendo processadas.

ROLLBACK WORK Descarta os dados da tabela de log e no


atualiza nada no banco.

Comandos para trabalhar com atualizao assncrona:


CALL FUNCTION NOME DA FUNO IN UPDATE TASK
PERFORM NOME DO FORM ON COMMIT.

As solicitaes de atualizao (INSERT, DELETE ou UPDATE) que se


encontrarem dentro dos comandos acima, s sero efetivadas no banco de
dados, quando for encontrado um comando COMMIT WORK. Sero
descartadas quando for encontrado o comando ROLLBACK WORK.

NA TRANSAO ASSNCRONA (DEFAULT) O R/3 PROV UM COMMIT


WORK AUTOMATICAMENTE NO FINAL DE CADA DIALOG STEP!

OBJETS DE BLOQUEIO (FUNES DE ENQUEUE /


DEQUEUE)
Quando um programa atualiza um determinado registro, feito um lock para
este registro. Significa que nenhum outro programa pode fazer nenhuma
atulizao com o mesmo, at que o programa que o pegou primeiro, o libere.
Ex.: Meu programa l o registro do aluno de cdigo 001 da tabela ZTBALUNOXX
e faz um UPDATE do nome e endereo.

Select codigo nome endereo from ZTBALUNOXX into it_tabela


Where cdigo = 001.
ZTBALUNOXX-NOME = ABCD.
UPDATE ZTBALUNOXXX ...

Se na mesma hora, um outro camarada rodar o programa para fazer atualizaes


no cdigo 001 (ou algum outro programa que tente modificar este registro) ser
enviado para ele uma mensagem informando que o registro em questo j est
sendo processado (ou est em lock) pelo programa que acessou o registro
primeiro. Aps a atualizao, feito um UNLOCK, ou seja, o registro liberado
novamente. O R/3 j cuida do lock/unlock automaticamente.

Muitas vezes, a durao do lock provido pelo R/3 no suficiente para minha
aplicao.

Imagine que eu tenha que ler um cdigo de aluno, fazer uma poro de consultas
e s depois atualiza-lo. Enquanto eu tiver fazer as consultas, ningum mais
deveria acessa-lo para modifica-lo ou elimina-lo.

75
Academia ABAP - 2008

Para isso, devo definir um lock no incio do processo e um unlock no final da


atualizao.

Fao isso atravs de objetos de bloqueio, ou, funes de ENQUEUE e


DEQUEUE.

Criando objetos de bloqueio.

Na transao SE11, escolha OBJETOS DE BLOQUEIO e d um nome ele.

O nome do objeto de bloqueio deve comear com EZ_

Nome da tabela onde


est o registro que se
quer bloquear

76
Academia ABAP - 2008

Aqui define-se como ser feito o bloqueio:


E Bloqueio de escrita
S Bloqueio de leitura
X De escrita mas outro usurio no pode
dar um lock enquanto estiver bloqueado

O R/3 j sugere
que o lock seja
feito pela chave
primria

Feito isso, sero criadas duas funes: ENQUEUE_EZ_ABC e


DEQUEUE_EZ_ABC para bloqueio e desbloqueio do registro.

Para usar
O campo it_alunos-aluno conter o cdigo do aluno que ser bloqueado

Para bloquear

call function 'ENQUEUE_EZ_ABC'


exporting
mode_abc = 'E'
mandt = sy-mandt
serie_despacho = it_alunos-aluno

Para desbloquear
call function 'DEQUEUE_EZ_ABC'
exporting
mode_abc = 'E'
mandt = sy-mandt
serie_despacho = it_alunos-aluno

WS_EXECUTE - Executa uma aplicao do Windows.

77
Academia ABAP - 2008

Parametros principais:
- Program: caminho do programa (ex. C:\WINDOWS\NOTEPAD.EXE).
- Command: linha de comando (ex. o nome do arquivo).

STATUS_TEXT_EDIT - L o status de uma ordem de servio (FATP, ENTE,


ENCE, BLOQ, etc...).

Parametros principais de exportao:


- Client: mandante (ex.: sy-mandt).
- flg_user_stat: 'X' l os status criados pelo usurio, ' ' no l o status criado pelo
usurio.
- objnr: nmero do objeto (voc pode selecion-lo na tabela AUFK).
- only_active: 'X' mostra apenas os status ativos.
- spras: idioma (ex.: 'P')

Parametros principais de importao:


- line: status de sistema, campo do tipo caufvd-sttxt
- user_line: status criados pelo usurio, campo do tipo bsvx-sttxt

SUSR_USER_ADDRESS_READ - L dados de um determinado usurio do


sistema

Parametro principal de exportao:


user_name - username (ex. sy-uname)

Parametro principal de importao:


user_address - dados do usurio, usar uma estrutura do tipo addr3_val.

FUNES STANDARD
Para trabalhar com Notas Fiscais:

J_1B_NF_NUMBER_SEPARATE - Nota Fiscal System - Number Separate (NF


number + Series)

J_1B_NF_NUMBER_CONDENSE - Nota Fiscal System - Number Condense (NF


number + Series)

J_1B_NF_NUMBER_GET_NEXT - Nota Fiscal System - Get next Nota Fiscal


number

J_1B_NF_DOCUMENT_READ - Carrega o header da nota fiscal em uma


estrutura

J_1B_NF_VALUE_DETERMINATION - Carrega os itens, seus impostos e o total


lquido do item da nota fiscal

Por questes de performance, os itens podem ser passados para a funo


J_1B_NF_VALUE_DETERMINATION para que ela efetue somente os clculos

78
Academia ABAP - 2008

Para se obter a BOM de um material

Usar a funo CS_BOM_EXPL_MAT_V2

Para testar o status de uma ordem

Usar a funo STATUS_CHECK_BY_SELSCHEM e verificar o retorno FULLFILL


se inicial porque a ordem no se encontra no esquema de status indicado

Para criar jobs dentro de um programa abap

Utilizar as funes: JOB_OPEN, JOB_SUBMIT e JOB_CLOSE

As tabelas que armazenam as informaes de JOBS so:


TBTCO Job status overview table
TBTCP Batch job step overview

Funo que calcula diferena entre datas/horas


CALL FUNCTION 'Z_DT_HORAS_DIF'
EXPORTING
i_dt_inicio = p_dt_1
i_hr_inicio = p_hr_1
i_dt_fim = p_dt_2
i_hr_fim = p_hr_2
IMPORTING
e_diff_total = v_difer
er_message = v_erro
EXCEPTIONS
OTHERS = 1.
v_min = FRAC( v_difer ) * 60.
v_hora = v_difer - FRAC( v_difer ).

CONCATENATE v_hora ':' v_min INTO v_tempo.

Executar comandos do UNIX


DATA: t_arq_usudel LIKE rlgrap-filename OCCURS 0 WITH HEADER LINE.
PARAMETERS: p_com LIKE rlgrap-filename DEFAULT
'ls -d /interfaces/log/perfis/usuario/*'.

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 questo,
existe uma dificuldade de descobrir o ID e o Objeto a serem passados.
Para acess-los facilmente, bastar clicar (2x) sobre o texto na transao em

79
Academia ABAP - 2008

que ele aparece, (o modo editor ser acionado) em seguida ir no menu: Saltar
-> Cabealho e pronto, os campos necessrios esto nesta tela.

POPUP SCREEN

POPUP_TO_CONFIRM_STEP
Cria um box de mensagem com confirmao

POPUP_TO_CONFIRM_WITH_MESSAGE
Cria um box de mensagem com confirmao 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 opes especificadas.

POPUP_TO_DECIDE_WITH_MESSAGE
Cria Box de dialogo com opes especificas

80
Academia ABAP - 2008

POPUP_TO_DISPLAY_TEXT
Cria Box de Seleco com 2 linhas e Boto

POPUP_TO_SELECT_MONTH
Cria um Box de Seleo para Ms e Ano

POPUP_WITH_TABLE_DISPLAY
Cria um Box de seleo, a partir de uma tabela passada como parmetro e
retorna qual a opo selecionada pelo usurio.

POPUP_TO_CONFIRM
Exibe uma caixa de textos para confirmao

POPUP_TO_DISPLAY_TEXT
Exibe texto em caixa de textos modal

POPUP_TO_INFORM
Cria caixa de informao

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 Relatrios 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 = binrio
- file = /usr/sap/trans/tmp/PARK9000.scp
RP_CALC_DATE_IN_INTERVAL
Adiciona/subtrai anos/mses/dias de uma data
RP_LAST_DAY_OF_MONTHS
Determina ultimo dia do ms
RS_REFRESH_FROM_SELECTOPTIONS
Seleciona Valores de um Select-Options
RS_VARIANT_CONTENTS
Retorna valores de uma varivel 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 diferena entre duas datas e Hora
SO_WIND_SPOOL_LIST
Exibe um Bowse com as impresses do usurio que esto no Spool.
TERMINAL_ID_GET
Retorna o Nmero IP e o nome do Terminal que o usurio esta logado.
TH_ENVIRONMENT
Retorna Informaes sobre o sistema operacional do Servidor SAP.
TH_POPUP
Exibe uma mensagem para o usurio Especificado, em qualquer client.
TH_USER_INFO
Retorna informaes sobre o usurio que esta logado.
TH_USER_LIST
Retorna informaes de usurios conectados a determinado Servidor
UPLOAD
Abri arquivos na estao Local
WS_DOWNLOAD
Salva Tabela interna na estao de trabalho local
WS_EXECUTE
Executa programas na estao de trabalho
WS_FILE_DELETE
Deleta arquivos na estao de trabalho
WS_FILENAME_GET
Mostra um Browser para Selecionar Arquivos
WS_MSG
Cria um box de dialogo com uma mensagem no padro Visual Basic
WS_UPLOAD
Carrega dados de arquivos na estao de trabalho para uma tabela interna.
WS_VOLUME_GET
Retorna o Nome do Volume da unidade de disco da estao de trabalho
WWW_LIST_TO_HTML
Salva o contedo de um relatrio em uma tabela interna no Formato HTML
EPS_GET_DIRECTORY_LISTING
Retorna uma tabela interna com os arquivos de determinado diretrio do
servidor.

83
Academia ABAP - 2008

F4_DATE
Exibe um calendrio pop-up para escolha
HOLIDAY_GET
Retorna os feriados existentes entre um intervalo de data, baseado no
calendrio da fbrica
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 catlogo.
SPELL_AMOUNT
Retorna valor por extenso
NUMERIC_CHECK
Verifica se varivel numrica
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
atualizao de tabelas, s consegui usar este
HELP_VALUES_GET_NO_DD_NAME
Montagem de matchcode dinmico
RS_VARIANT_CONTENT
Funo para leitura de variantes (Ver tabelas VARI e VARID)

Funes para converso de unidades/medidas


UNIT_CONVERSION_SIMPLE
UNIT_CONVERSION_SIMPLE_OLD
FLTP_CHAR_CONVERSION

COMO UTILIZAR AUTHORITY-CHECKS


A amarrao se d com um Objeto de autorizao para uma ou mais autorizaes

84
Academia ABAP - 2008

Perfil composto por um ou mais objetos de autorizaes....

Usurio pode estar presente em N perfis...

Os objetos de autorizao, podem ser compostos de vrios campos. Conforme o


interesse do objeto. Exemplo, pode-se testar a atividade do usurio de acordo com o
valor preenchido de um determinado campo...como: Autorizao de usurio por
empresa campos:
BUKRS - Empresa
ACTVT Atividade (01-Criao, 02-Alterao e 03-Exibio)

As autorizaes podem conter preenchimentos diversos para os objetos de


autorizao exemplo anterior:
Autorizao = S_EXIBIR, campos/valores:
BUKRS EMP1
ACTVT 03;

OBSERVAO:
Estes valores podem ser RANGES ou PARMETROS; FIXOS ou VARIVEIS.
Em qualquer campo de autorizao, o (*) eqivale a todas as entradas possveis;

Pesquisando os Objetos de Autorizao:


Caminho: R/3Ferramentas ABAP Workbench DesenvolvimentoOutras
FerramentasObjetos de AutorizaoObjetos;
Transao SU21;
Selecionar a classe de Objetos do seu interesse;
Consultar o Objeto em questo;
Poder ser criado novos objetos de autorizao....

Criando Autorizaes;
Caminho: R/3FerramentasAdministraoAtualizao UsurioAutorizao
Transao SU03;
Seleciona, novamente, a Classe de Objetos desejado;
Consultar os Objetos existentes, conforme passo anterior;
Optar pelo objeto de interesse;
Consultar as Autorizaes j existentes para este objeto;
Poder ser criado novas autorizaes...

Atualizar Perfil:
Caminho: R/3 FerramentasAdministraoAtualizao UsurioPerfil;
Transao SU02;
Criao;
Digite o nome do perfil a ser criado;
Clicar em ENTER ou GERAR REA TRAB.;
Exibir uma lista vazia;
Clicar em Criar, colocar descrio;
Perfil individual1 ou coletivo2;

1 Perfil composto por objetos de autorizaes.


85
Academia ABAP - 2008

Na coluna Objeto, inserir o nome do Objeto de Autorizao;


Na coluna Autorizao, inserir o nome da(s) autorizaes desejadas;
Gravar;
Observar STATUS, deve estar ATIVO e GRAVADO

Exibio/Modificao;
Digitar o nome do Perfil;
Clicar ENTER ou GERAR REA TRAB.;
Exibir a lista contendo a autorizao selecionada;
Clicar em MODIF, EXCLUIR,...

Atualizar Perfil do USURIO:


Caminho: R/3 FerramentasAdministraoAtualizao UsurioUsurio;
Transao SU01;
Digitar o usurio e nterar como modificao;
Navegar at a pasta Perfis;
Adicionar o novo perfil lista do usurio;
Gravar

Cdigo Fonte Modelo.

Report com duas possibilidades de resposta (AUTORIZADO ou No Autorizado).


Contm uma tela de seleo com um parmetro para CIA REA.

Quando executado, acionar o evento da tela de seleo e efetuar a verificao de


autorizao do usurio, conforme digitao em tela...

REPORT ZZZTESTE.

DATA: V_RESULT(20) TYPE C VALUE 'AUTORIZADO'.

PARAMETERS P_CARR LIKE SPFLI-CARRID.

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 'No Autorizado' TO V_RESULT.
ENDIF.

START-OF-SELECTION.

WRITE V_RESULT.

PERFORMANCE E ERROS

2 Perfil composto por outros perfis


86
Academia ABAP - 2008

Para identificar alguns erros e problemas de performance, algumas ferramentas


disponveis no SAP devem ser utilizadas. So elas:

Runtime Analysis (SE30)

Tips and Tricks - Clicando neste boto poder ser feita comparao 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 comparao.

Runtime Analysis - esta parte utilizad para analisar a performance do programa.


Ao final da execuo voc poder acessar informaes sobre o seu programa
(grficos, acesso a tabelas, etc.). Para tanto clique o pushbutton ANALYSE, que
somente aparecer depois que for informado o nome do programa e/ou transao e
clicado execute.

OBS: A ferramenta de Runtime Analysis emite um Warning para mquinas com mais
de um processador, neste warning adverte para o fato de no ser precisa para
mquinas com mais de um processador, porm mesmo assim aconselhamos o uso
pois em termos proporcionais para se encontrar os gargalos do programa a
preciso perdida dispensvel.

SQL Trace - pode ser utilizada para trilhar a lgica de aplicao e verificar possveis
pontos de correo. Voc poder visualizar os comandos de acesso a banco de
dados, obter informaes sobre um comando especfico, visualizar os ndices que
esto sendo utilizados.

Extended Program Check - outra facilidade que deve ser empregada visando
manter o seu cdigo o mais correto possvel. Nesta opo 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.

CONVERSES DE DADOS E INTERFACES


BATCH INPUT

O mecanismo de batch input (BDC) o mtodo tradicionalmente utilizado


pelos programas para a transferncia de dados. O principal benefcio
apresentado por este mtodo a existncia de um utilitrio que permite o
gerenciamento das transferncias, usualmente chamadas de sesses de
batch input. Essencialmente, uma sesso de batch input um conjunto de
chamadas a transaes e dados que so processados por estas transaes.
Uma sesso simula uma entrada de dados manual atravs de chamadas a
transaes que importam dados presentes em um arquivo seqencial. Cabe
destacar que, todas as checagens de consistncia realizadas em modo

87
Academia ABAP - 2008

iterativo, isto em modo usurio, so tambm implementadas durante uma


sesso de batch input.

CALL TRANSACTION

O mecanismo de call transaction (CAT) um mtodo utilizado pelos


programas de transferncia de dados, que processa dados a partir de um
arquivo seqencial, chamando transaes do SAP atravs de comandos
ABAP. Este mtodo apresenta uma performance superior ao mecanismo de
batch input e ainda possui as mesmas facilidades para checagem e validao
dos dados durante a importao. O CAT dever ser utilizado pelos programas
de interface para a transferncia de dados atravs de arquivos. Como o
mtodo de call transaction no apresenta facilidades para tratamento de erros,
neste caso, o mecanismo de batch input dever ser utilizado.

DIRECT INPUT
O mecanismo de direct input apresenta a melhor performance dentre os dois
anteriores. Essencialmente, este mtodo utiliza um arquivo seqencial e
funes especiais que processam os dados existentes neste arquivo e que
atualizam as tabelas do sistema R/3 diretamente. A experincia vivenciada em
outros projetos tem mostrado que as funes de direct input apresentam
inmeros bugs que provocam incosistencias nas tabelas do sistema. Este
mtodo no dever ser utilizado para a construo das interfaces. Caso o
mecanismo de call transaction no apresente a performance adequada em
alguma interface especfica, uma soluo baseada em direct input poder ser
estudada, demandado, entretanto, testes exaustivos face aos problemas de
consistncia mencionados.

Delivered BDC
O mecanismo de delivered BCD representa um conjunto de programas,
fornecidos juntamento com o sistema R/3, que objetivam reduzir o esforo
envolvido no desenvolvimento de novos programas para a transferncia de
dados. A experincia tem mostrado que alguns destes programas apresentam
tima performance (usam direct input), porm sofrem dos problemas de
consistnciam mencionados. Alm disso, os delivered BDC utilizam arquivos
de transferncia com formato fixo, estabelecido pela SAP. Este mecanismo
no dever ser utilizado para a construo de interfaces, em virtude dos
problemas discutidos.

APPLICATION LINK ENABLE

O mecanismo de application link enable (ALE) foi disponibilizado a partir da


verso 3.0 do sistema R/3 com o propsito de suportar a construo e
operao de aplicaes distribudas. Este mecanismo utiliza mtodos de
comunicao sncronos e assncronos para a troca de informaes entre
processos de dois ou mais sistemas R/3 distintos, fracamente acoplados.
Tambm pode ser usado para extrao ou carregamento de dados atravs de
arquivos que utilizam um formato compatvel com o tipo de mensagem
associada a conexo ALE. Este mtodo ser utilizado para as converses e

88
Academia ABAP - 2008

interfaces com os sistemas SAP R/3 ou mesmo para integrao com


ferramentas de terceiros que possuam suporte a interface ALE. Este
mecanismo ser utiliza para construo de interfaces e converses,
apresentando excelente performance.

ELETRONIC DATA INTERCHANGE


O mecanismo de eletronic date interchange ou EDI permite a troca de
informaes entre duas aplicaes, atravs da transmisso eletrnica de
mensagens que utilizam uma estrutura e formato (IDoc type), estabelecidos
pela SAP. Este mecanismo ser utilizado para interfacear o sistema R/3 com
ferramentas de terceiros que possuam suporte a interface EDI.

REMOTE FUNCTION CALL

O mecanismo de remote function call ou RFC permite que uma aplicao


execute uma chamada a uma funo pertencente a uma aplicao que est
executando em um sistema diferente do sistema chamador da funo. No
contexto do SAP, as RFCs permitem a construo de interfaces entre dois
sistemas SAP (R/3 ou R/2) ou entre um sistema SAP e um no-SAP. Este
mecanismo dever ser considerado para a construo de interfaces on-line.

BUSINESS APPLICATION PROGRAMMING INTERFACE (BAPI)

As BAPIs representam uma interface padronizada de programao que


possibilita as aplicaes manipularem processos de negcio e dados do
sistema R/3. As BAPIs so definidas no repositrio de objetos do R/3 como
mtodos (viso orientada objeto) que realizam transaes de negcio
especficas. Exemplificando, o sistema R/3 possui uma BAPI associada a
criao de pedidos de venda. Este mecanismo dever ser considerado paras
as interfaces e converses.

RELATRIOS E FORMULRIOS
ABAP QUERY

uma ferramenta que permite realizar extrao de dados do SAP para


emisso de listas, formulrios sem precisar linha de cdigo. Auxilia o usurio
final a criar listas e levantamentos estatsticos, coletando informaes
presentes em diferentes tabelas do sistema R/3. Dispensa quaisquer
conhecimentos de programao ABAP/4.

REPORT WRITER e REPORT PAINTER

Ferramentas que auxiliam o usurio final na construo de relatrios


complexos. Tambm dispensa conhecimentos de programao ABAP/4 mas
demanda treinamento especfico nestas ferramentas.

INFORMATION SYSTEM
89
Academia ABAP - 2008

Ferramenta para gerao de relatrios que permite ao usurio final criar listas
com layouts especficos e frmulas (Anlise Flexvel), apresentar resultados
atravs de grficos (Anlise Standard), entre outras facilidades. Outras
informaes podem ser encontradas na documentao do sistema R/3 no
tpico LIS - Logistics Information System.

SAPScript

Mecanismo para construo de formulrios de impresso com layouts


especficos. Tambm demanda conhecimentos em programao ABAP/4 e
treinamento em SAPscript.

Os mecanismos de ABAP Query, Report Writer e Report Painter, que


possibilitam ao usurio final gerar relatrios on-line e on-demand devem ser
considerados criteriosamente, pois a utilizao destas facilidades pode
provocar impactos na performance do sistema produtivo. Este tpico tambm
deve ser considerado do ponto de vista dos perfis de segurana, uma vez que
a utilizao dos mecanismos citados deve se restringir a poucos usurios,
selecionados pela equipe Funcional.

A Equipe de Tecnologia ser responsvel pela construo de relatrios e


formulrios utilizando programao ABAP/4 e SAPscript. Os demais
mecanismos discutidos sero utilizados pelas Equipes Funcionais, sem o
suporte da Equipe de Tecnologia.

ENHANCEMENTS
1) Para que um field-exit funcione necessrio que o profile parameter
abap/fieldexit esteja com o valor YES.
Para modificar os valores de um profile parameter utiliza-se a transao RZ11.

2) Enhancements para pedido de vendas userexit


SPRO - Vendas e distribuio
Adaptao do sistema
User exits
Diversos

1) Quando o frontend sair do ar, para recuperar o que estava fazendo, entrar no
logon do SAP, digitar o user e a senha, no teclar enter, opo de menu Usurio /
Aceitar sesso. Caso o mesmo usurio estiver mais de uma vez na mesma
instncia isto no funciona.

2) Ativar o screen painter grfico:


Para que o screen painter grfico funcione na estao so necessrios os
arquivos: GNEUX.exe / GNETX.exe / EUMFCDLL.dll

3) Transporte de textos standard (texto sapscript)

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 UTIS
MOVE-CORRESPONDING

Quando registros tm a mesma estrutura, mais eficiente utilizar o comando MOVE


do que o comando MOVE-CORRESPONDING.

Exemplo:

MOVE BSEG TO *BSEG

SUM, AVG, MIN e MAX

Procure usar as funes de clculo do SELECT ao invs de usar lgicas para obter
os resultados acima.

UPDATE TASK

Sempre que possvel utilize a atualizao via UPDATE TASK para programas
dialog
Comandos

Para mandar um relatrio direto para a impressora


new-page
print on
no dialog
keep in spool X
immediately X
destination ZP05
copies quantidade de cpias

Para concatenar variveis em um nico parmetro utilizar o &:

Perform f_teste using LIXO1 & LIXO3.


Form f_teste using char.
char possui LIXO1 LIXO3.
Endform.

COMENTRIOS
NDICE

91
Academia ABAP - 2008

Cada ndice criado diminui a performance dos inserts e dos updates nas
tabelas. No geral, tabelas onde so feitos muitos inserts e updates, devero
ter poucos ndices. Da mesma forma, tabelas onde h muitos selects, podero
ter mais ndices. Uma mdia de 3 ndices por tabela aceitvel.

CDIGO MORTO

Evite a existncia de cdigo morto ao longo dos programas. Remova


definies de campos que nunca sero usados e cdigos que nunca sero
executados.

DICAS E TRUQUES
Converses

1) A correspondncia entre CATEGORIA DE DADOS e TIPO DE DADOS se


encontra no help da clusula INTO do comando SELECT.

2) Para converter uma data no formato interno (AAAAMMDD) para o formato


que o usurio est trabalhando utilizar: WRITE SY-DATUM TO V_DATA.
Onde o SY-DATUM pode ser qualquer varivel tipo data e a V_DATA deve
ser uma varivel caractere de 10 posies.

Ou utilizar a funo:
Call Function 'PERIOD_AND_DATE_CONVERT_OUTPUT'
Exporting
Internal_Date = varivel like sy-datum
Internal_Period = 1
Importing
External_Date = varivel char(10) .

3) Para converter um campo numrico para um alfa retirando pontos e vrgulas,


alinhando direita, arredondando, desconsiderando o sinal e preenchendo
com zeros esquerda usar:

WRITE: <campo_num> TO <campo_char> DECIMALS 3 USING EDIT


MASK RR______
(a quantidade de traos deve ser igual a quantidade de casas do
campo_char)
TRANSLATE <campo_char> USING 0

Para considerar o sinal necessrio acrescer um V na ltima casa excluindo


um dos traos 'RR_____V'. Porm quando o sinal for positivo a posio ficar
em branco.

4) Para converter uma quantidade em outra unidade de medida utilizar a


funo UNIT_CONVERSION_SIMPLE

5) Para converter o ms por extenso utilizar a tabela transparente T247

92
Academia ABAP - 2008

Tabelas internas e dicionrio

1) Para eliminar entradas repetidas de uma tabela interna usar:


SORT <ITAB> BY F1 F2 F3...
DELETE ADJACENT DUPLICATES FROM <ITAB> COMPARING F1 F2
F3...

2) Alguns campos de tabela possuem formatos diferentes de exibio


(OUTPUT) e gravao (INPUT). Para converter esses valores, ou para
saber se o campo possui essa caracterstica, verificar se o domnio do
campo possui um valor no campo Conversion exit.

Por exemplo, o campo LIKP-VBELN possui em seu domnio o Conversion


exit ALPHA.

Isso indica que existem duas funes standard para converter o valor
desse campo:

CONVERSION_EXIT_ALPHA_INPUT converte o campo para o


formato de gravao, neste caso, alinhado direita e preenchido com
zeros esquerda.

CONVERSION_EXIT_ALPHA_OUTPUT converte o campo para o


formato de exibio, neste caso, alinhado esquerda sem zeros
direita.

3) Para transportar somente o contedo de uma tabela transparente, criar


uma change request, e no EDITOR inserir a entrada: PgmID = R3TR , Obj
= TABU e no campo Obj.name colocar o nome da tabela transparente.
Depois de inserido a linha dar um duplo clique para preenchimento da
chave. Para transportar todos os registros inserir apenas um asterisco no
primeiro campo genrico.

4) Para encontrar os textos descritivos de uma informao geralmente h


uma tabela de nome semelhante terminada em T. Como por exemplo, a
tabela TVKGR - Grupo de Vendedores possui o nome dos vendedores na
tabela TVGRT. Ao fazer um trace SQL na transao SE16 na tabela
TVKGR por exemplo, possivel achar o relacionamento.

5) O limite de uma tabela interna so 4.394.608 registros.

6) Cardinalidade das chaves externas do dicionrio

Lado Esquerdo:

1 = Para cada registro da ChvExt, existe exatamente um registro na


Check Table

C = No precisa existir o registro, Pode ser Branco


Lado Direito:

93
Academia ABAP - 2008

1 = Existe somente um registro para cada valor da Check Table


C = No mximo um registro dependente para cada registro da Check
Table
N = Tem pelo menos um registro dependente para cada registro da
Check Table.
CN = Qualquer nmero de registros para cada registro da Check Table

Como buscar resoluo do vdeo


case sy-srows
when 19. 640x480
when 27. 800x600
when 37. 1024x768
endcase.
Gravar objetos locais para request
Transao SE03, modificar entradas catlogo objetos

Funo que cria match-code tipo estrutura de rvore para dados de


catlogo

CALL FUNCTION 'QPK1_GP_CODE_SELECTION'


EXPORTING
* i_katalogart = tq80-mfkat
i_katalogart = 'V'
I_CODEGRUPPE = 'SSE-BPOR'
* I_CODE = ysap01d-code
I_CODE = '*'
i_sprache = sy-langu
i_winx1 = 10
i_winx2 = 60
i_winy1 = 5
i_winy2 = 25
i_display_mode = ' '
i_return_if_one = ' '
i_pickup_mode = 'X'
TABLES
t_qpk1cdtab = iqpk1cd
t_codegrptab = g_codegrptab
EXCEPTIONS
no_match_in_range = 1
no_user_selection = 2
no_authorization = 3
no_selection_specified = 4
object_locked = 5
lock_error = 6
object_missing = 7
OTHERS = 8.

ALTERAO DE BARRA DE STATUS EM LIST VIEW


Copiar a barra de status Standart do grupo de funes SALV e altera-la a
seu bel-prazer.
Na funo do list-view, colocar parmetro i_callback_pf_status_set e criar a
form
'F_SET_STATUS'
call function 'REUSE_ALV_LIST_DISPLAY'

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

types: slis_t_extab type slis_extab occurs 1.

form f_set_status using extab type slis_t_extab.


set pf-status 'S100'.
endform.

LISTA INTERATIVA LER UM CHECKBOX MARCADO EM


UMA LISTA REPORT
Durante a impresso:
LOOP AT IT_ZFIT0014.
WRITE: /1 SY-VLINE,
2(9) '*' COLOR COL_KEY,
6 IT_ZFIT0014-LIB_COMP AS CHECKBOX,
()
ENDLOOP.

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'.
()

CARACTERSTICAS HERDADAS
Algumas caractersticas associadas a um objeto podem ser herdadas de uma classe
superior. Sempre que utilizar a funo de classificao de caractersticas, assinalar com X o
parmetro inherited_char. a garantia de que as caractersticas herdadas sero
selecionadas.

call function 'CLAF_CLASSIFICATION_OF_OBJECTS'


exporting
class = t_claf-class
classtype = t_claf-klart
clint = t_claf-clint
features = 'X'
language = sy-langu
object = t_claf-objek
inherited_char = 'X'

BANCO DE DADOS LGICO


Transao - SE36
Programas que utilizam. Ex.: J_1BLB01 utiliza o banco de dados lgico J5F
Para FCA, copiei o banco de dados J5F para ZJ6F e o programa J_1BLB01 para ZJ_1BLB01
Na SE38, alterei o atributo do programa Banco de dados lgico

95
Academia ABAP - 2008

Ajuda de pesquisa...

Viso condio de seleo...

96
Academia ABAP - 2008

Normalmente quando temos que mapear uma table control em um BI ou call


transaction,
temos problema com a quantidade de linhas visveis para saber quando fazer um
page
down ou chamar um comando para inserir mais registros.

Para resolver esse problema, existe uma conta que pode ser feita com a varivel
sy-srows.

Primeiro necessrio descobrir quantas linhas da tela no pertencem a table


control.
Para isso, entre na transao e conte o nmero de linhas que esto visveis. De
posse
desse nmero, execute o debug e veja o valor do sy-srows.

Subtraia o valor do sy-srows do nmero de linhas visveis que voce contou.


Esse resultado, por exemplo, pode ter sido 8.

De posso desse nmero, s incluir uma formula no programa:

v_limite = sy-srows - 8.

O v_limite vai ter sempre a quantidade de linhas visveis da table control


independente
da resoluo do monitor.

97
Academia ABAP - 2008

EXEMPLOS
Exemplo de matchcode dinmico dependendo de outro match code
Ver programa YSRCS_REDEFINICAO_MODAL

Exemplo criao de JOB


SAPMZPP119

Exemplo envio SAPOFFICE


ZPPI0136

Exemplo do uso de field-symbol


Ver programa EXEMPLO_FIELD_SYMBOL
Relatrio chamando job
Ver programa YSRSD_RELATORIO_DAS_DESCARGAS

Enviar e-mail atravs do R/3


Ver programa YSRMM_MATERIAIS_ROMPIMENTO_EST.TXT

Documentaes na Internet:
http://ifr.sap.com/

98
Academia ABAP - 2008

99