Você está na página 1de 98

ANOTAES DA

ACADEMIA ABAP
2004

Academia ABAP - 2004

INDICE
TRANSAES R/3............................................................................................................................................... 8
PRINCIPAIS TABELAS TRANSPARENTES ................................................................................................ 11
VARIVEIS DO SISTEMA (TABELA SY)..................................................................................................... 12
TABELAS ............................................................................................................................................................ 12

Para criar um tabela transparente:....................................................................................................... 12

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. .................... 21

COMANDOS PARA TABELAS: ...................................................................................................................... 22

APPEND: .............................................................................................................................................. 22

DELETE: ............................................................................................................................................... 22

REFRESH / CLEAR: ............................................................................................................................. 23

FREE:.................................................................................................................................................... 23

COLLECT: ............................................................................................................................................ 23

MODIFY:............................................................................................................................................... 23

SORT: .................................................................................................................................................... 23

READ: ................................................................................................................................................... 24

UPDATE: .............................................................................................................................................. 24

INSERT :................................................................................................................................................ 24

DESCRIBE TABLE: .............................................................................................................................. 25

ESTRUTURAS APPEND EM TABELAS TRANSPARENTES .................................................................... 25


TABELAS DE VERIFICAO ........................................................................................................................ 26
MENSAGEM ....................................................................................................................................................... 27

Classe de mensagem:............................................................................................................................. 27

Mensagem p/ usurio............................................................................................................................. 28

REPORT .............................................................................................................................................................. 28

Sequncia para criao do Report: ....................................................................................................... 28


2

Academia ABAP - 2004

SET LEFT SCROLL BOUNDARY COLUMMNS X...................................................................................... 29


COMANDOS E/OU TECLAS DE ATALHO................................................................................................... 29
OPERADORES LGICOS................................................................................................................................ 30
VARIVEIS: ....................................................................................................................................................... 30
CONSTANTES.................................................................................................................................................... 30
ESTRUTURA CONDICIONAL: ....................................................................................................................... 31

IF ........................................................................................................................................................... 31

CASE ..................................................................................................................................................... 31

Loops de repetio ................................................................................................................................ 31

WHILE................................................................................................................................................... 33

DO ......................................................................................................................................................... 33

CHECK.................................................................................................................................................. 33

PERFORM - SINTAXES DE PARMETRO .................................................................................................. 33


PARAMETERS ................................................................................................................................................... 33
SELECT-OPTIONS:........................................................................................................................................... 34
COMANDO DE DESVIO DE EXECUO .................................................................................................... 34

CONTINUE ........................................................................................................................................... 34

EXIT....................................................................................................................................................... 34

PASSAGEM PARMETROS PARA PROGRAMA STANDARD................................................................ 35


COMANDO HOTSPOT ON .............................................................................................................................. 36
COMANDO HIDE .............................................................................................................................................. 36
COMANDO AT LINE-SELECTION................................................................................................................ 36
COMANDO GET CURSOR FIELD ................................................................................................................. 37
CRIAR TRANSAO........................................................................................................................................ 37
CRIAR AJUDA DE PESQUISA ( SEARCH HELP OU MATH CODE) ...................................................... 39

PASSO PARA CRIAO DE AJUDA DE PESQUISA: ........................................................................ 39

CRIAR VISES ( VIEW ).................................................................................................................................. 41

PASSO PARA CRIAO DE UMA VIEW: ........................................................................................... 42


3

Academia ABAP - 2004

CRIANDO INCLUDES ...................................................................................................................................... 45

PASSO PARA CRIAO DE UMA VIEW: ........................................................................................... 45

SUBSTRING........................................................................................................................................................ 47
PARAMENTROS DE SELEO ..................................................................................................................... 47

RADIOBUTTON.................................................................................................................................... 47

CHECKBOX .......................................................................................................................................... 47

RANGE ................................................................................................................................................................ 47
TRANSLATE....................................................................................................................................................... 48
CONCATENATE ................................................................................................................................................ 48
SPLIT ................................................................................................................................................................... 48
SHIFT................................................................................................................................................................... 48
SUB ROTINAS .................................................................................................................................................... 49
MACHCODE OBJECT ...................................................................................................................................... 49
SET PF-STATUS................................................................................................................................................. 49

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

GERANDO E CARREGANDO ARQUIVOS................................................................................................... 51

WS_DOWNLOAD.................................................................................................................................. 51

WS_UPLOAD ........................................................................................................................................ 51

SELECTION-SCREEN ...................................................................................................................................... 52
AT USER-COMMAND ...................................................................................................................................... 53
UTILIZAO DE CONES .............................................................................................................................. 54
HELP-REQUEST................................................................................................................................................ 54
VALUE-REQUEST............................................................................................................................................. 54
CRIAO DE FUNES ................................................................................................................................. 54
COMUNICAO TELA -> PROGRAMA ABAP .......................................................................................... 55
BARRA DE STATUS PARA TELAS................................................................................................................ 56

Academia ABAP - 2004

SCREEN PAINTER TRANSAO SE51 ..................................................................................................... 57


EDITOR DE LAYOUT DA TELA .................................................................................................................... 58
MODIFICAO DINMICA DE ATRIBUTOS DE ELEMENTOS DA TELA......................................... 58
VERIFICAO AUTOMTICA DE CAMPOS............................................................................................. 59

Verificao automtica para um campo: .............................................................................................. 59

Verificao automtica para vrios campos:........................................................................................ 59

Execuo condicional de mdulos baseados no FIELD - > algum valor que no seja o inicial. ........ 59

Execuo condicional de mdulos baseados no FIELD - > alguma alterao..................................... 60

Mudana dinmica de telas em dialog programming. ..................................................................................... 60


DIALOG PROGRAMMING TABLE CONTROL ....................................................................................... 61

Modificao do atributos de uma table control (exemplos) .................................................................. 62

Controlando os botes de scroll em uma table control ......................................................................... 63

Tornar uma coluna de um grid visvel/invisivel .................................................................................... 64

Habilitar/desabilitar algumas clulas do grid....................................................................................... 65

VERIFICAR QUAL BOTO FOI PRESSIONADO DENTRO DE UMA LINHA DE UM TABLE


CONTROL ......................................................................................................................................................... 65

SET CURSOR...................................................................................................................................................... 66
LEAVE TO LIST PROCESSING...................................................................................................................... 66
SAP MEMORY E ABAP MEMORY ................................................................................................................ 67
TAB STRIP .......................................................................................................................................................... 68

Criao de tabs trips ............................................................................................................................. 68

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

Para fazer scroll em uma tabstrip ativando o PAI ................................................................................ 69

FIELD SYMBOLS .............................................................................................................................................. 70


CRIAO DE INTERVALOS DE NUMERAO ........................................................................................ 70

Criao de intervalos de numerao (para gerao de nmero sequencial)........................................ 70

Utilizar intervalo de numerao............................................................................................................ 71

SAP TRANSACTION ......................................................................................................................................... 71


ATUALIZAO SNCRONA........................................................................................................................... 72
ATUALIZAO ASSNCRONA...................................................................................................................... 72
5

Academia ABAP - 2004

LUW (Logical Unit of Work Unidade lgica de trabalho) ................................................................. 72

OBJETS DE BLOQUEIO (FUNES DE ENQUEUE / DEQUEUE) .......................................................... 73

Criando objetos de bloqueio.................................................................................................................. 74

FUNES STANDARD..................................................................................................................................... 76

Para trabalhar com Notas Fiscais: ....................................................................................................... 76

Para se obter a BOM de um material.................................................................................................... 77

Para testar o status de uma ordem ........................................................................................................ 77

Para criar jobs dentro de um programa abap....................................................................................... 77

Funo que calcula diferena entre datas/horas................................................................................... 77

Executar comandos do UNIX ................................................................................................................ 77

READ_TEXT.......................................................................................................................................... 78

POPUP SCREEN .................................................................................................................................. 78

TEXTOS................................................................................................................................................. 80

GERAL................................................................................................................................................... 80

Funes para converso de unidades/medidas ..................................................................................... 83

COMO UTILIZAR AUTHORITY-CHECKS.................................................................................................. 83

Cdigo Fonte Modelo. ........................................................................................................................... 84

PERFORMANCE E ERROS ............................................................................................................................. 85


CONVERSES DE DADOS E INTERFACES................................................................................................ 86

BATCH INPUT...................................................................................................................................... 86

CALL TRANSACTION........................................................................................................................... 86

DIRECT INPUT..................................................................................................................................... 86

Delivered BDC ...................................................................................................................................... 87

APPLICATION LINK ENABLE............................................................................................................. 87

ELETRONIC DATA INTERCHANGE ................................................................................................... 87

REMOTE FUNCTION CALL ................................................................................................................ 87

BUSINESS APPLICATION PROGRAMMING INTERFACE (BAPI) ................................................... 87

RELATRIOS E FORMULRIOS ................................................................................................................. 88

ABAP QUERY ....................................................................................................................................... 88

REPORT WRITER e REPORT PAINTER.............................................................................................. 88

INFORMATION SYSTEM ..................................................................................................................... 88

SAPScript............................................................................................................................................... 88

ENHANCEMENTS............................................................................................................................................. 89
COMANDOS UTIS .......................................................................................................................................... 89

Academia ABAP - 2004

MOVE-CORRESPONDING .................................................................................................................. 89

SUM, AVG, MIN e MAX ........................................................................................................................ 89

UPDATE TASK ..................................................................................................................................... 90

Para mandar um relatrio direto para a impressora............................................................................ 90

Para concatenar variveis em um nico parmetro utilizar o &:......................................................... 90

COMENTRIOS ................................................................................................................................................ 90

NDICE.................................................................................................................................................. 90

CDIGO MORTO................................................................................................................................. 90

DICAS E TRUQUES........................................................................................................................................... 90

Converses ............................................................................................................................................ 90

Tabelas internas e dicionrio ................................................................................................................ 91

Como buscar resoluo do vdeo .......................................................................................................... 92

Gravar objetos locais para request ....................................................................................................... 92

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

ALTERAO DE BARRA DE STATUS EM LIST VIEW ........................................................................... 93


LISTA INTERATIVA LER UM CHECKBOX MARCADO EM UMA LISTA REPORT ...................... 94
CARACTERSTICAS HERDADAS ................................................................................................................. 94
BANCO DE DADOS LGICO.......................................................................................................................... 94
EXEMPLOS ........................................................................................................................................................ 97

Exemplo de matchcode dinmico dependendo de outro match code.................................................... 97

Exemplo criao de JOB ....................................................................................................................... 97

Exemplo envio SAPOFFICE ................................................................................................................. 97

Exemplo do uso de field-symbol ............................................................................................................ 97

Relatrio chamando job ........................................................................................................................ 97

Enviar e-mail atravs do R/3................................................................................................................. 97

Documentaes na Internet:.................................................................................................................. 97

Academia ABAP - 2004

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...)
Apenas edio tabelas

SE12

Academia ABAP - 2004

SE14

utilitrios de Dtabase

SE15

Informaes do sistema do Dicionrio de dados - Sistema info repository

SE16

Visualizao e manuteno de tabelas -

SE17

Visualizao de tabelas

SE30

ABAP/4 Trace - serve para verificar a performance de uma parte do programa - 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

SE51

Screen Painter - Criar tela para programa on-line - Copiar tela de um programa para
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
SE84

Desenvolvimento de Objetos Classe e outros objetos - Criar objetos (report, on-line,


transao...)
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


9

Academia ABAP - 2004

SM13

Atualizaes de requests

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"
Gerenciador de tabelas

SM31

SM36

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


de batch input
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

SM35

10

Academia ABAP - 2004

SU52

Manuteno dos parmetros do usurio

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

11

Academia ABAP - 2004

Exibir nota fiscal

J1B3

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 uma 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 - 2004

13

Academia ABAP - 2004

Salvar e Ativar.
que data element (zed_nome_xx)?
O 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 - 2004

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 - 2004

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 - 2004

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 - 2004

Definir as caractersticas da tabela transparente.

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

18

Academia ABAP - 2004

Definir as opes tcnicas e <Salvar>.

Ao
final

Atribuir as opes tcnicas.

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.

19

Academia ABAP - 2004

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.

20

Academia ABAP - 2004

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

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


gerao de manuteno).
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).


Selecionar a opo de transao c/parmetros.

21

Academia ABAP - 2004

Definir as caractersticas da transao.

Definir tambm a tabela a ser acessada.


Utilizar a transao para
Atualizao de tabela
ampliada.

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

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.
22

Academia ABAP - 2004

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

23

Academia ABAP - 2004

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

24

Academia ABAP - 2004

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.

25

Academia ABAP - 2004

TABELAS DE VERIFICAO
Usadas para consistir a entrada de dados em uma tabela transparente, baseado nos
dados j existentes em 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


Abri aquilo dali
Dois cliques na chavinha,
Abre al

Resultado: a existncia do
campo KNUMA_PI da tabela
KONP
ser
verificada
automaticamente na tabela
KONA.
Se
no
existir,
a
mensagem
de erro
definida ser
invocada.

26

Academia ABAP - 2004

MENSAGEM


Classe de mensagem:

Ir a SE91 e ....

27

Academia ABAP - 2004

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;
28

Academia ABAP - 2004

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)


F5

Para identar

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.

29

Academia ABAP - 2004

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

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.
30

Academia ABAP - 2004

ESTRUTURA CONDICIONAL


IF

if <condio>.
Comandos.
Else.
Endif.
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.

31

Academia ABAP - 2004

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
Endloop.
Loop at <TI>
comandos
Endloop.

Where cond=.

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.

32

Academia ABAP - 2004

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.
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> .
33

Academia ABAP - 2004

Type c.
PARAMETERS: <nome> LIKE <tb>-<campo> OBLIGATORY.

SELECT-OPTIONS:
Com esse comando o usurio no precisa 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




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


Ex.

EXIT
Sai do loop.
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.

34

Academia ABAP - 2004

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

35

Academia ABAP - 2004

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.

36

Academia ABAP - 2004

DATA: l_cursor(20).
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:

37

Academia ABAP - 2004

38

Academia ABAP - 2004

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 pesquisas 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
Com restrio para
listas grandes. Mostra
campo
p/
limitar
quantidade
Depend conjto valores
Se lista > 100 registros,
mostra campo limitador de
quatidade. Se < 100,
mostra imediatamente

Tabela origem
dos dados

Campos que
apareceram
na lista

Posio
do campo
na lista

Campo
ser
exportado para o
parmetro

Posio do campo
limitador na lista

Lista ser
filtrada por
este valor

PASSO PARA CRIAO DE AJUDA DE PESQUISA:

Entrar SE11

39

Academia ABAP - 2004

40

Academia ABAP - 2004

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

Condies de seleo

Tabelas da
viso

Condies de
ligao entre as
tabelas (JOIN)

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.

41

Academia ABAP - 2004

PASSO PARA CRIAO DE UMA VIEW:

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

42

Academia ABAP - 2004

43

Academia ABAP - 2004

Salvar e ativar.

44

Academia ABAP - 2004

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 na fonte:
Include <nome include> -> clicar duas vezes.

45

Academia ABAP - 2004

46

Academia ABAP - 2004

SUBSTRING
Para variveis tipo CHAR ou DATA.
VAR = ACADEMIA.
VAR(2) = AC
VAR+2 = ADEMIA
VAR+2(3)ADE

SY-DATUM = 20031110
SY-DATUM(4) = 2003
SY-DATUM+4(2) = 11
SY-DATUM+6(2) = 10

PARAMENTROS DE SELEO


RADIOBUTTON

Parameters: rb_bot1 radiobutton group gr1,


Rb_bot1 radiobutton group gr1.
Parameters: rb_bot3 radiobutton group gr2,
Rb_bot4 radiobutton group gr2.


Cria dois botes (do tipo rdio)


de seleo mutuamente
exclusiva.
Cria dois botes (do tipo rdio)
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
interna e pode ser tratada como tal:
RANGES RG_DATA FOR EKKO-AEDAT
Ex.: rg_data-sign = I.
rg_data-options = EQ.
Cria a seguinte estrutura
rg_data-low = 20031010.
rg_data-high = 20031231.
SIGN
OPTIONS
LOW
HIGH
append rg_data.
SIGN OPTIONS LOW
HIGH
I
EQ
20021010 20021231
47

Academia ABAP - 2004

TRANSLATE
Substituio 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.
48

Academia ABAP - 2004

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




var = 01.
var = ABAP01

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).
49

Academia ABAP - 2004

Definio de interface de usurio com botes:


Duplo clique em FORN

Programa
Duplo clique em S000:

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
Para habilitar novamente, usar SET PF-STATUS XXXX.
Para desabilitar vrios botes ao mesmo tempo:
Criar tabela interna com campo do tipo RSMPE-FUNC;
Atribuir os cdigos das funes para a tabela;
Utilizar:
SET PF-STATUS XXXX EXCLUDING IT_XXXX

OCCURS 0,
VC_FUNCAO LIKE RSMPEFUNC,
END OF IT_STATUS

IT_STATUS-VC_FUNCAO = EXIB.
APPEND IT_STATUS.
IT_STATUS-VC_FUNCAO =
MODI.
APPEND IT-STATUS.

50

Academia ABAP - 2004

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
* 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
=''
51

Academia ABAP - 2004

* TRUNCLEN
=''
* USER_FORM
=''
* USER_PROG
=''
* DAT_D_FORMAT
=''
* IMPORTING
* FILELENGTH
=
TABLES
DATA_TAB
=
* EXCEPTIONS
* 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):
Nome do arquivo gerado/lido.
Se for uma varivel, deve ser
Do tipo RLGRAP-FILETYPE

CALL FUNCTION
'WS_DOWNLOAD'
EXPORTING
FILENAME
= P_FILE
FILETYPE
= 'ASC'
TABLES
data_tab
= it_tab

Tipo do arquivo lido. Pode


Ser ASC (ASCII para gerar arquivos
Textos) DAT (campos separados por
Tabulao, WK1, entre outros.

Nome da tabela interna


Onde esto os dados com os
quais o arquivo ser gerado
(no caso de download) ou para
onde os dados sero
carregados (upload)

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.


Selection-screen end of line.

Define uma linha no Selectionscreen. Tudo que estiver dentro


deste bloco, sair na mesma linha
52

Academia ABAP - 2004

Selection-screen begin of line.


selection-screen comment 1(5) text-002 for field p_mes.
parameters: p_mes(02) type n.
selection-screen comment 10(5) text-003 for field p_ano.
parameters: p_ano(04) type n.
Selection-screen end of line

Cria dois
parmetros de
entrada (MS e
ANO) na mesma
linha, com os

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 selectionscreen

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


(Aps o ENTER, F8, F4, etc.) antes mesmo de entrar no evento START-OFSELECTION.
Neste evento, efetua-se a consistncia dos parmetros informados. At selectionscreen 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.

53

Academia ABAP - 2004

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

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
seleo (da tela de seleo).

ao lado de campo de

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.

54

Academia ABAP - 2004

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

Parmetros de sada. O que a


funo vai devolver para o
programa que chamou.

Desenvolva aqui, o cdigo


da funo

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.

55

Academia ABAP - 2004

Tela 0001

PBO
PAI

Quando uma tela chamada, os comandos do PBO


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

 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.

56

Academia ABAP - 2004

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

SCREEN PAINTER TRANSAO SE51

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
principal, definindo se um
mdulo de PBO ou PAI

Trecho do programa principal

A varivel sy-ucomm
recebe o cdigo da
funo escolhido.
Sugere-se que seja
definido um campo no
programa (like syucomm), que o valor de
sy-ucomm seja movido
para ele e que a
comparao seja feita
atravs dele.

57

Academia ABAP - 2004

EDITOR DE LAYOUT DA TELA


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) desenhase 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
Loop at screen
If screen-name = XXX.
Screen-input = 0.
Endif.
Modify screen.
Endloop.

Neste exemplo, se
o campo da tela
for o XXX, ser
desabilitada a
entrada de dados
no mesmo.

Alguns outros atributos dos


elementos da tela
Screen-name
Screen-group1
(at 4)
Screen-required
Screen-input
Screen-output
Screen-invisible
Screen-length
Screen-active

Nome do
campo
Nome do
grupo
Obrigatrio
Campo de
entrada
Campo de
sada
Visvel/invisvel
Tamanho do
campo
Campo ativo

58

Academia ABAP - 2004

VERIFICAO AUTOMTICA DE CAMPOS


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
MODULE VERIFICA_CAMPO INPUT.
IF VC_CAMPO <> ABCD.
MESSAGE E000 WITH CAMPO INVLIDO.
ENDIF.
ENDMODULE.

Verificao automtica para vrios campos:

CHAIN:
FIELD: VC_CAMPO1,
VC_CAMPO2,
VC_CAMPO3.
MODULO VERIFICA_CAMPO.
ENDCHAIN.

Neste exemplo, se o
campo for diferente de
ABCD, ser enviada uma
mensagem de erro e o
campo ficar disponvel
novamente para entrada
de dados.

Se no mdulo VERIFICA_CAMPO tiver uma


mensagem de erro (tipo E, W, etc), a mesma
ser exibida e TODOS OS CAMPOS QUE
ESTIVEREM ENTRE O CHAIN E ENDCHAIN
sero abertos novamente para edio

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.

59

Academia ABAP - 2004

Execuo condicional de mdulos baseados no FIELD - > alguma


alterao

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. Podese 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.

60

Academia ABAP - 2004

DIALOG PROGRAMMING TABLE CONTROL


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
LOOP AT IT_ALUNOS WITH CONTROL TC_XXX
MODULE DEFINE_LINHAS.
ENDLOOP.
PROCESS AFTER INPUT
LOOP AT IT_ALUNOS.
MODULE ATUALIZA_TABELA.
ENDLOOP.
Aqui so atualizados os dados feitos pelo usurio
na table control, para a tabela interna. O mdulo
(no exemplo ATUALIZA_TABELA) contm:
Modify it_alunos index tc_xxx current-line.

Faz um loop na tabela interna


transportando os dados para a table
control tc_xxxx
Tentar-se- preencher todas as linhas
visveis na tela. Se a tabela interna tiver
menos linhas do que a table control, linhas
vazias sero acrescentadas.
Utiliza-se um mdulo (no exemplo, o
DEFINE_LINHAS) para controlar tal
situao:
Module define_linhas input.
If it_alunos is initial.
Exit from step-loop. Sai do loop do
PBO
Endif.
Endmodule.
61

Academia ABAP - 2004

Modificao do atributos de uma table control (exemplos)


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

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_YSUNITUNUMEMB'.
wa-INVISIBLE = 1.
modify tc110-cols from wa.
endif.
endloop.

62

Academia ABAP - 2004

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
SY-LOOPC.

Exemplo
Na tela

MODULE GET_LOOPLINES
OUTPUT.

PROCESS BEFORE OUTPUT.

LOOPLINES = SY-LOOPC.
ENDLOOP

LOOP AT TC_0100
MODULE GET_LOOPLINES.
ENDLOOP
PROCESS AFTER INPUT.
LOOP.

ENDLOOP.
Outro exemplo

MODULE USER_COMMAND_0200 INPUT.


CASE OK_CODE.
WHEN P--.
TC_0100-TOP_LINE = 1.
WHEN P-.

*&--------------------------------------------------------------------*
*&
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

63

Academia ABAP - 2004

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)
value(p_linhas_tc)
value(p_linhas_it)
CHANGING p_top_line

TYPE
TYPE
TYPE
TYPE

c
i
i
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.
64

Academia ABAP - 2004

endif.
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.

65

Academia ABAP - 2004

get cursor field wc_field.


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,0000definir 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.

66

Academia ABAP - 2004


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
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, modulepool) chamar uma lista dentro de uma tela modal. Fica muito bonitinho.
MODULE XXX INPUT.
CALL SCREEN 200 Tela 200 modal
STARTING AT 20 10
ENDING AT 50 15.
ENDMODULE

Na tela 200

MODULE LISTA OUTPUT.


SUPRESS DIALOG.
LEAVE TO LISTPROCESSING...
SET PF-STATUS SPACE.
LOOP AT IT_ALUNOS.
WRITE: IT_ALUNOSCOD
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).

67

Academia ABAP - 2004

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

rea de
subscreen

Pgina
do
tabstrip

Funo que
ser passada
para o syucomm
quando a
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.)

68

Academia ABAP - 2004

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


A codificao ser a seguinte:
PROCESSA BEFORE OUTPUT
CALL SUBSCREEN SUB1 INCLUDING SY-CPROG 0001.
CALL SUBSCREEN SUB2 INCLUDING SY-CPROG 0002.
PROCESS AFTER INPUT.
CALL SUBSCREEN SUB1.
CALL SUBSCREEN SUB2.

Para este exemplo foram


criadas trs telas. A
primeira, tipo normal, onde
foi desenhado o tabstrip. As
outras duas, do tipo subtela,
que sero apresentadas nas
subreas da pgina de tabstrip
correspondentes.
OBRIGATRIO fazer o call
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:
PROCESS BEFORE OUTPUT.
MODULE DEFINE_PAGINA.
CALL SUBSCREEN SUB1
INCLUDING SY-CPROG VC_TELA

Module define_pagina output.


case vc_tab.
when TAB1.
vc_tela = 0001.
when TAB1.
vc_tela = 0002.
endcase.
endmodule

69

Academia ABAP - 2004

PROCESS AFTER INPUT.


CALL SUBSCREEN SUB1.
MODULE USER_COMMAND_001

Pode-se mudar dinamicamente vrios atributos da


tabstrip. Entre eles est o TS_XXX-ACTIVETAB
qque indica qual abinha estar ativa, isto , qual ser
mostrada na frente.

Module user_command_001 input.


ts_001-active = vc_tab. 
case ok_code
when TAB1.
vc_tab = TAB1.
when TAB2.
vc_tab = TAB2.
endcase.
endmodule

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

70

Academia ABAP - 2004

Utilizar intervalo de numerao


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.

71

Academia ABAP - 2004

E.x:
PBO Tela 100

PAI

PBO Tela 200

PAI

PBO
Tela
300

PAI

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
PBO
Dialog step

PAI

PBO
Tela 200

Dialog Step

PAI

PBO
Tela
300

Tela 300
PAI

Dialog Step

Vrios dialog steps formam uma LUW.

72

Academia ABAP - 2004

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.

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.

73

Academia ABAP - 2004

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

74

Academia ABAP - 2004

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


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

75

Academia ABAP - 2004

WS_EXECUTE - Executa uma aplicao do Windows.


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

76

Academia ABAP - 2004

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


J_1B_NF_VALUE_DETERMINATION para que ela efetue somente os clculos

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.

77

Academia ABAP - 2004

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

78

Academia ABAP - 2004

POPUP_TO_DECIDE_WITH_MESSAGE
Cria Box de dialogo com opes especificas
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

79

Academia ABAP - 2004

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
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
80

Academia ABAP - 2004

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

81

Academia ABAP - 2004

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

82

Academia ABAP - 2004

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
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;
83

Academia ABAP - 2004

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;
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.

1
2

Perfil composto por objetos de autorizaes.


Perfil composto por outros perfis
84

Academia ABAP - 2004

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
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.
85

Academia ABAP - 2004

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

86

Academia ABAP - 2004

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
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
87

Academia ABAP - 2004

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

88

Academia ABAP - 2004

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

89

Academia ABAP - 2004

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

Para concatenar variveis em um nico parmetro utilizar o &:

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

Perform f_teste using LIXO1 & LIXO3.


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

COMENTRIOS


NDICE
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.
90

Academia ABAP - 2004

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

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:

91

Academia ABAP - 2004

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:
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.
when 27.
when 37.
endcase.

640x480
800x600
1024x768

Gravar objetos locais para request


Transao SE03, modificar entradas catlogo objetos

92

Academia ABAP - 2004

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

93

Academia ABAP - 2004

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

94

Academia ABAP - 2004

Ajuda de pesquisa...

Viso condio de seleo...

95

Academia ABAP - 2004

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.

96

Academia ABAP - 2004

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

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:

Ver programa EXEMPLO_FIELD_SYMBOL

http://ifr.sap.com/

97

Academia ABAP - 2004

98