Você está na página 1de 134

Academia SAP/ABAP R3

Academia ABAP

Aluno: __________________________________________________

Instrutor: Ronaldo Nogueira - rnogueira@bbko.com.br

by BBKO Consulting

Academia SAP/ABAP R3

ndice
CAPTULO 1 MYSAP ERP __________________________________________________ 3
CAPTULO 2 CONCEITO DE BANCO DE DADOS RELACIONAL _______________ 9
CAPTULO 3 DICIONRIO DE DADOS _____________________________________ 10
CAPTULO 4 ABAP OPEN SQL ____________________________________________ 36
CAPTULO 5 TELA DE SELEO __________________________________________ 47
CAPTULO 6 LISTAS _____________________________________________________ 54
CAPTULO 7 LISTAS SECUNDRIAS ______________________________________ 64
CAPTULO 8 MODULARIZAO __________________________________________ 73
CAPTULO 9 DATA TRANSFER____________________________________________ 80
CAPTULO 10 PROGRAMAO ON-LINE __________________________________ 95
APNDICE A PROGRAMAO ON-LINE __________________________________ 128
OS COMPONENTES PRINCIPAIS DE UM DIALOG PROGRAM (ON-LINE) __________________
SCREEN PAINTER - ABAP/4 _________________________________________________
COMUNICAO: TELA ABAP/4 MODULE POOL ________________________________
DEFININDO O LAYOUT (GRAPHICAL SCREEN PAINTER) _____________________________
VISUALIZAES DE LISTAS DE CAMPO (FIELD LIST VIEWS) _________________________
DEFININDO O CONTROLE DO FLUXO ____________________________________________
PROCESSANDO O MODULE POOL ____________________________________________
DEFININDO CAMPOS NO MODULE POOL ______________________________________
DEFININDO CHAMADAS (CDIGOS DE TRANSAO) _______________________________
CHECAGEM AUTOMTICA DE CAMPO DE ENTRADA ________________________________
CHECANDO CAMPO DE ENTRADA NO MODULE POOL COM DILOGO DE ERRO __________
CHECANDO GRUPO DE CAMPOS _______________________________________________
LENDO CDIGOS DE FUNO EM PROGRAMAS ___________________________________
SEQNCIA DINMICA DE TELA: OVERVIEW _____________________________________
AJUSTANDO A PRXIMA TELA DINAMICAMENTE _________________________________
MENU PAINTER - OVERVIEW _________________________________________________
DEFININDO A INTERFACE I ___________________________________________________
DEFININDO A INTERFACE II __________________________________________________
DEFINIO AUTOMTICA DE CONES PARA TECLAS DE FUNO ______________________
DEFININDO MENUS DE REA _________________________________________________

by BBKO Consulting

128
128
128
128
130
130
130
131
131
131
132
132
133
133
133
133
133
134
134
134

Academia SAP/ABAP R3

Captulo 1 mySAP ERP

O que o mySAP ERP ?


Funes do mySAP ERP .
Arquitetura trs camadas.
Landscape.
Sistema de Transporte.

O que o mySAP ERP ?

O mySAP ERP um conjunto integrado


de aplicativos para tratar o
processamento de dados de grandes
corporaes.
Foi desenvolvido na Alemanha pela
empresa SAP (Systems Applications
and Products for data processingAplicativos e produtos de sistemas
para processamento de dados).
3

by BBKO Consulting

Academia SAP/ABAP R3

Funes mySAP Business Suite

BASIS
4

Oferece uma soluo integrada de aplicativos empresariais.

Todos os mdulos de aplicativos do mySAP ERP 2005 (ECC 6.0 Atual)


so escritos em ABAP (Advanced Business Application Programing),
que interpretado pelo Application Server que fica localizado na
camada SAP NetWeaver, que por sua vez, so executadas no sistema
Operacional.

(SAP NetWeaver como um sistema operacional para o mySAP ERP


2005 (ECC 6.0). Ele fica entre o cdigo ABAP e o sistema operacional.).
Mdulos Localizados no MySAP ERP
MM (Materials Management Gerenciamento de Materiais)
SD (Sales and Distribution Vendas e Distribuio)
FI (Financial Accounting Contabilidade Financeira)
PP (Production Planning Planejamento da Produo)
HR (Human Resources Recursos Humanos)
WF (Workflow Fluxo de Trabalho)
PS (Project System Sistema de Projeto)
e outros.

by BBKO Consulting

Academia SAP/ABAP R3

Papis e Responsabilidades

Basis Responsvel pela instalao do ERP e configuraes do mesmo


(ex. impressoras, links, administrao de usurios e etc.)
ABAP Programador
Funcionais Responsvel pela parametrizao e adequao dos processos de
um determinado mdulo.

by BBKO Consulting

Academia SAP/ABAP R3

Arquitetura 3 camadas Cliente/Servidor

O Sistema R/3 baseado na arquitetura cliente/servidor com 3 camadas:


Servidor de dados, servidor de aplicaes e servidor de apresentao.
A arquitetura de 3 (trs) camadas faz o sistema facilmente escalvel. Para
adicionar usurios, voc precisa instalar mais servidores de apresentao.
Voc pode tambm aumentar a eficincia do todo o sistema adicionando mais
servidores de aplicao associados aos seus work processes.
Servidor de aplicativos consiste em um dispatcher e mltiplos processos
de trabalho (work process). Todas as solicitaes provenientes de servidores
de apresentao so dirigidas primeiro ao dispatcher. O dispatcher grava-as
primeiro na camada do dispatcher. O dispatcher extrai as solicitaes da
camada utilizando o algoritmo primeiro a entrar, primeiro a sair (FIFO). Cada
solicitao ento alocada para o primeiro work process disponvel. Um work
process trata uma solicitao por vez.
Tipo de processo

Tipo de solicitao de trabalho

D (Dialog)
V (Update)

Solicitaes de dilogo.
Solicitaes para atualizar dados no banco de dados.

B (Background)
S (Spool)
E (Enqueue)

Trabalhos de segundo plano.


Imprime solicitaes do spool.
Solicitaes de bloqueio lgico.

M (Message)
G (Gateway)

Roteia as msgs. entre os serv. de aplicativo dentro do sistema R/3.


Afunila as mensagens dentro e fora do sistema R/3.

by BBKO Consulting

Academia SAP/ABAP R3

System Landscape
Sistema de Desenvolvimento

Sistema de QA

Sistema de Produo
PROD

QTST

DEV

Client
Copy

Client
Copy

Client
Transport

Client

MAST

Transport

MAST

Client
Copy

Client
Copy

SBOX

Client-indep.
Customizing
Repository
Objects

TRAI

Workbench
Request

Client-indep.
Customizing
Repository
Objects

Workbench
Request

Client-indep.
Customizing
Repository
Objects
6

by BBKO Consulting

Academia SAP/ABAP R3

Workbench Organizer e o Sistema de


Transporte

O Workbench Organizer permite ao usurio desenvolver o software de


maneira organizada.
O Sistema de transporte prove a execuo do transporte.
Os objetos de repositrio so conectados para o sistema de transporte
pela classe de desenvolvimento e associaes com change requests. Depois
que as requests foram liberadas no sistema de desenvolvimento, ela ento
transportada para a rota pr determinada: sistema de qualidade ou para o
sistema de produo.

by BBKO Consulting

Academia SAP/ABAP R3

Captulo 2 Conceito de Banco de Dados Relacional

Conceito de
Banco de Dados
Relacional

Conceito de Banco de Dados

Campo
Registro
Coluna
Tabela
Unicidade de Registro Chave Primaria (PK) e Chave
Alternativa (AK)
Relacionamento Chave Estrangeira (FK)
ndice

by BBKO Consulting

Academia SAP/ABAP R3

Captulo 3 Dicionrio de Dados

Dicionrio de Dados

by BBKO Consulting

10

Academia SAP/ABAP R3

Dicionrio de Dados

Domnio
Elemento de Dados
Campos
Registros
Tabelas
Transparentes
Interna

O Dicionrio Abap permite um gerenciamento central de todas as


definies de dados usada no sistema R/3

No Dicionrio voc pode criar tipos definidos pelo usurio (data elements,
estruturas e table types). Objetos de banco de dados, tais como tabelas e
views de banco de dados, tambm podem ser definidas no Dicionrio
ABAP e criada com estas definies no banco de dados.

O Dicionrio ABAP tambm prov um nmero de servio que apiam o


desenvolvimento de programas. Por exemplo, lock de tabelas, search help
(F4) e ajuda de campo (F1 help) usados nos campos de uma tela.

by BBKO Consulting

11

Academia SAP/ABAP R3

Dicionrio de Dados - Tipos no


Dicionrio ABAP

10

Dicionrio de Dados - Tipo de Dados


mais utilizados
Tipo

Descrio

CHAR

String de caractere (mximo de 255


caracteres)
DEC
Valores decimais
DATS
Campo Date
TIMS
Campo Time
INT1, INT2, INT4 Valores inteiros
NUMC
Campo de caractere que pode
conter apenas numricos

11

by BBKO Consulting

12

Academia SAP/ABAP R3

Dicionrio de Dados - Tipos de Dados


ABAP
Tipos de Dados

T1 TYPE I.

DATA D1 TYPE T1

DATA D3 TYPE T1
VALUE 123,

T2(5) TYPE P.

DATA D5 TYPE T2
VALUE 1.23

DATA D6 TYPE T2.

Grupo de Tipos
12

Data types:
Apenas descrio do type
No ocupa memria
Caracteriza os atributos tcnicos de todos os data objects que
possuem um type especificado
Data Objects:
uma concreta representao do type
Cada data object tem um type especfico e ocupa espao em
memria

by BBKO Consulting

13

Academia SAP/ABAP R3

Dicionrio de Dados - Objetos Bsico


no Dicionrio
Tabela 2

Tabela 1
....

Campo

Valor_compra
Material

...

Uma tabela
composta de
campos

Elemento de Dados

MATNR

Domnio
MATNR

....

Campo
Valor_venda
Material

...

Elemento de Dados
Para criar um
Campo, voc
precisa de um
Elemento de
Dados

Uma definio
de elemento de
dados exige um
domnio

MATNR

Domnio
MATNR

13

Os objetos bsicos do Dicionrio ABAP so: tabelas, data elements e


domnios
Domnio descreve os atributos tcnicos dos campos das tabelas (ex:
tipo, tamanho do campo), enquanto os data elements contm a definio
semntica (descrio curta)

by BBKO Consulting

14

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Domnio


Transao SE11

14

Dica: ao criar a tabela e seus data elements, associar a mesma Change


Request, para no dar problema durante o transporte de Desenvolvimento
para QA

by BBKO Consulting

15

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Domnio


Transao SE11

15

Dicionrio de Dados - Criar Elemento


de Dados
Transao SE11

16

by BBKO Consulting

16

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Elemento


de Dados
Transao SE11

17

Dicionrio de Dados - Criar Elemento


de Dados
Transao SE11

18

by BBKO Consulting

17

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Elemento


de Dados
Transao SE11

19

Dicionrio de Dados - Tipos de Tabelas


no R/3
Estruturas
- Uma estrutura (categoria estruturada) composta por
componentes (campos). Os componentes so tipificados.
- As estruturas so em particular utilizadas para definir os
dados na interface de pools de mdulos e telas, assim como
para atribuir o tipo aos parmetros de mdulos de funo.

Tabelas Transparentes
- Uma tabela transparente tem relacionamento um-para-um com
uma tabela no banco de dados.
- Ns criamos somente tabelas transparentes

23

by BBKO Consulting

18

Academia SAP/ABAP R3

Dicionrio de Dados - Tipos de Tabelas


no R/3
Tabelas de Pool
- Uma tabela de pool tem um relacionamento de muitos-para-um
com uma tabela no banco de dados. Para uma tabela no banco
de dados, h muitas tabelas no Dicionrio.

Tabelas de Cluster
- Uma tabela de Cluster tem um relacionamento de muitos-paraum com uma tabela no banco de dados. Para uma tabela no
banco de dados, h muitas tabelas no Dicionrio. Muitas
tabelas de cluster de cluster so armazenadas em uma nica
tabela no banco de dados chamada de cluster de tabelas. Os
clusters de tabela armazenam dados de vrias tabelas
baseadas nos campos de chave primria que elas tm em
comum.
24

Dicionrio de Dados - Criar Tabela


Transparente
Transao SE11

21

by BBKO Consulting

19

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Tabela


Transparente
Pasta Caractersticas

22

Dicionrio de Dados - Criar Tabela


Transparente
Pasta Entrega e Atualizao

27

by BBKO Consulting

20

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Tabela


Transparente
Pasta Campos

24

O primeiro campo de uma tabela sempre deve ser o mandante;


O campo Num_documento, utiliza o data element ZNUM_DOCUMENTO
O Campo Usuario, utiliza o data element UNAME
O Campo Data, utiliza o data element DATUM
O Campo Material, utiliza o data element MATNR
O Campo Valor, utiliza o data element BWERT
O Campo Quantidade, utiliza o data element BSTMG
O Campo Material possui check table, ou seja durante qualquer
manuteno da tabela Z ou Y, checado se o material gravado nesta tabela,
existe na tabela Mestre de Material (MARA)

by BBKO Consulting

21

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Tabela


Transparente
Pasta Entrs. Possveis/Verificaes

25

Dicionrio de Dados - Criar Tabela


Transparente
Pasta Campos Moeda/Quant.

26

Para campos do tipo moeda (valores) e quantidade, necessrio definir


tabela e campo de referncia.

by BBKO Consulting

22

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Tabela


Transparente
Check Table no Campo Material

27

Dicionrio de Dados - Criar Tabela


Transparente
Check Table no Campo Material

28

by BBKO Consulting

23

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Tabela


Transparente
Check Table no Campo Material

29

Atribuir uma mensagem de erro para este check table.


Neste caso foi criada uma classe de mensagem ZCURSO_00, com
nmero de mensagem 001, atravs da Transao SE91

by BBKO Consulting

24

Academia SAP/ABAP R3

Dicionrio de Dados - Chaves Primrias e Estrangeira


Chave Primria

Chave Secundria / Alternativa

Chave Estrangira

34

Dicionrio de Dados - Chaves Primrias


e Estrangeira

Tabela
Mand

ZFUNC

CodFunc Cod Depto Nome

Salario

Area

Campos Chaves
Check Table
Chave Primria Chave Estrangeira

Check Table
Mand

CodDepto

ZDEPTO
Fone

Fax

Campos Chaves
Chave Primria

31

by BBKO Consulting

25

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Tabela


Transparente
Configuraes Tcnicas

32

by BBKO Consulting

26

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Tabela


Transparente
Opes Tcnicas

33

Opes Tcnicas:
Data Class Define a rea fsica do banco de dados, na qual a tabela deve
ser armazenada (no Oracle o tablespace). Size category Define o
tamanho do armazenamento esperado para esta tabela no banco de dados.
Buffering define se e como a tabela deve ser bufferizada. Logging
Modificaes na entrada da tabela so armazenadas, mas tambm tem que
setar o parmetro rec/client (pode provocar gargalos no sistema (devido a
esses adicionais acessos).

by BBKO Consulting

27

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Tabela


Transparente
Ativar Tabela

34

Ao selecionar o cone
ativar no ABAP Dicitionary, a tabela transparente
automaticamente criada no banco de dados. A tabela no banco de dados
possui o mesmo nome da tabela no ABAP Dictionary. O campo tem tambm
os mesmos nomes e os tipos do campo no ABAP Dicitionary so convertidos
para os tipos de dados correspondentes no sistema do banco de dados.

by BBKO Consulting

28

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Estrutura

35

Dicionrio de Dados - Criar Estrutura

36

by BBKO Consulting

29

Academia SAP/ABAP R3

Dicionrio de Dados - Criar Estrutura


Pasta Componentes

37

Na criao da estrutura no precisa definir o mandante, pois armazena os


dados somente em tempo de execuo.

Dicionrio de Dados - Criar Estrutura


Pasta Campos moeda/quantidade

38

by BBKO Consulting

30

Academia SAP/ABAP R3

Tabela Interna

43

Tabela Interna - Conceito

reas de memria chamadas Tabelas Internas, so


utilizada para realizar alguns processamentos no ABAP.
Nessas reas de memria so alocados dados que existem
(ou existiro) apenas em tempo de execuo do programa,
e que podem variar de uma execuo para outra ou ainda
durante a mesma execuo.

44

by BBKO Consulting

31

Academia SAP/ABAP R3

Tabela Interna - Conceito

No dia-a-dia do programador as tabelas internas tm um


papel fundamental, pois atravs delas que se manipula a
maior parte dos dados de um programa. Alm disso, so de
fcil manuseio, sendo sua declarao (de tipos, estrutura) e
atribuio de contedo (valores) muito simples. possvel,
por exemplo, declarar uma tabela interna com a mesma
estrutura (tipos, campos, etc.) de uma tabela do banco de
dados (fsico tabelas transparentes), e, atravs de um
comando SELECT, copiar todo o contedo da tabela do
banco de dados para a tabela interna.

45

Dicas - Tabela Interna - Conceito

As tabelas internas possuem uma rea de trabalho


chamada Header (cabealho), que permite o acesso e uso
mais flexvel dos registros da mesma. O comando LOOP,
por exemplo, ao varrer/ler uma tabela interna registro a
registro, envia o registro corrente para o Header,
permitindo que o programador manipule esse registro de
diversas maneiras.
Exemplo: Imprim-los na tela(comando WRITE), utilizando
seus campos para executar clculos, comparar valores, etc.
46

by BBKO Consulting

32

Academia SAP/ABAP R3

Dicas - Field String x Tabela Interna


Field String
Cod Cliente Nome

Cidade

Rua

Bairro

Tabela Interna
Cod Cliente Nome

Cidade

Rua

Bairro

47

by BBKO Consulting

33

Academia SAP/ABAP R3

Dicas - Field String e Tabela Interna


Declarando Tabelas Internas
* Declarao de Tipos
TYPES : begin of type_clientes,
kunnr TYPE kna1-kunnr,
name1 TYPE kna1-name1,
addrnr TYPE kna1-addrnr,
end of type_clientes.

* Declarao de Tabelas Internas


Data : tg_clientes TYPE TABLE OF type_clientes.

49

Dicas - Tabela Interna

Operaes em tabelas internas:


Exemplos: Utilizando a tabela interna T_CLIENTES:

1.READ TABLE TG_CLIENTES INTO ST_CLIENTES INDEX 2.


READ TABLE TG_CLIENTES INTO ST_CLIENTES WITH KEY kunnr =
v_codcli.

2.LOOP at tg_clientes INTO st_clientes . ... ENDLOOP.

3.ST_CLIENTES-name1 = Phonecell telefonia celular.


MODIFY tg_clientes FROM st_clientes WHERE kunnr = vg_codcliente.

4.DELETE tg_clientes WHERE kunnr = vg_codcliente.

5.APPEND st_clientes TO tg_clientes.

by BBKO Consulting

50

34

Academia SAP/ABAP R3

Dicas - Tabela Interna


Operaes em tabelas internas:
Exemplos: Utilizando a tabela interna TG_CLIENTES:

6. COLLECT st_clientes INTO tg_clientes.


7. SORT tg_clientes BY kunnr name1 . (Ordena a tabela interna)
8. CLEAR st_clientes. (Limpa todo o contedo da estrutura)
9. REFRESH tg_clientes.(Deleta todos os registros da tabela interna, porem o espao de
memria ainda fica ocupada)
10.FREE tg_clientes. Deleta todos os registros da tabela interna, limpa a memria)
11. DESCRIBE TABLE tg_clientes LINES vg_linhas (carrega o nmero de registros da
tabela interna na varivel vg_linhas)

51

Dicas - Tabela Interna APPEND


<tab> X COLLECT <tab>
Inclui a estrutura ou como uma nova
entrada na tabela interna ou adiciona
numa entrada j existente desde que tenha
a mesma estrutura. Soma os campos do
tipo P,I e F)

-Grava o contedo da estrutura no fim


da tabela interna

APPEND <TAB>

COLLECT <TAB>

Cod Func

Cod Depto

Salrio

Cod Func

Cod Depto

Salrio

9944

HR

1000,00

9944

HR

1000,00

9944

HR

1000,00

9944

HR

1000,00

9933

INFO

500,00

9933

INFO

500,00

0100

FINAN

2000,00

0100

FINAN

2000,00

2000,00
52

by BBKO Consulting

35

Academia SAP/ABAP R3

Captulo 4 ABAP Open SQL

Open SQL

47

ABAP Open SQL - Acessando a

base de dados

SELECT
INSERT
DELETE
UPDATE
MODIFY

48

by BBKO Consulting

36

Academia SAP/ABAP R3

ABAP Open SQL Select Sintax

SELECT matnr
INTO TABLE tg_mara
FROM mara
WHERE matnr = p_matnr.

Campos Selecionados
Destino dos dados (Tabela Interna)
Origem dos dados (Tabela Transparente)
Condio para a seleo dos dados

TYPES: BEGIN OF type_mara,


matnr TYPE mara-matnr,
END OF type_mara.
TYPES: BEGIN OF type_mara,
matnr TYPE mara-matnr,
flag(1) TYPE c,
END OF type_mara.

Ex. Declaraes para


tabela interna

DATA tg_mara TYPE TABLE OF type_mara


55

by BBKO Consulting

37

Academia SAP/ABAP R3

ABAP Open SQL - Acesso ao Banco


de Dados

Programa ABAP
Dicionrio
ABAP

Open SQL

Banco de Dados

Relatrio

49

- Para ler os dados das tabelas do banco de dados, voc precisa utilizar o
comando SELECT
- O ABAP contm comandos similares ao do SQL padro, na qual voc pode
acessar seu banco de dados. ABAP OPEN SQL tem as seguintes
caractersticas:
- Sintaxe corresponde sintaxe do SQL padro
- O ABAP SQL um subconjunto do SQL padro
- O ABAP SQL contm SAP short forms
- As tabelas devem ser definidas no Repositrio ABAP e tem chave primria.

by BBKO Consulting

38

Academia SAP/ABAP R3

ABAP Open SQL - Acesso ao Banco


de Dados
Acesso de um registro SELECT SINGLE
Seleciona dados do cliente cdigo 10
Report ZSQL.
Tables: KNA1
Data: vg_kunnr like kna1-kunnr,
vg_name1 like kna1-name1,
vg_addrnr like kna1-addrnr.
SELECT SINGLE KUNNR
Cdigo do cliente
NAME1
Nome
ADDRNR
Rua e Nr.
INTO (vg_kunnr, vg_name1, vg_addrnr)
FROM kna1
Tabela transparente de
clientes
WHERE kunnr = 0000000010.

Para fazer SELECT SINGLE, voc precisa passar como parmetro na condio WHERE a
chave completa da tabela transparente.
Neste exemplo acima, os campos selecionados foram armazenados em variveis de
memria, declarados no comando DATA

57

ABAP Open SQL - Acesso ao Banco


de Dados
Processa em LOOP SELECT e ENDSELECT
* Seleciona os clientes de So Paulo
SELECT *
FROM kna1
Tabela de clientes
WHERE land1 = BR AND
regio = SP.
MOVE-CORRESPONDING kna1 TO st_clientes.
APPEND st_clientes TO tg_clientes.
ENDSELECT.

Acessa a tabela e a cada registro encontrado, atendendo a condio WHERE os dados


so movidos para uma tabela interna.

58

by BBKO Consulting

39

Academia SAP/ABAP R3

ABAP Open SQL - Acesso ao Banco


de Dados
Move campos para tabela interna, no fica em LOOPING
* Seleciona documentos de venda dos clientes de So Paulo
SELECT KNA1~KUNNR
Cdigo do cliente
KNA1~NAME1
Nome
VBAK~VBELN
Numero do documento de venda
INTO TABLE tg_docvendas
FROM kna1
Tabela de clientes
INNER JOIN vbak ON vbak~kunnr = kna1~kunnr
WHERE kna1~land1 = BR AND
kna1~regio = SP.

INTO TABLE: L os registros da tabela e move para uma tabela interna. Sobrepe os
registros existentes.
APPENDING TABLE: no sobrepe os registros existentes, ele move para o fim da tabela
interna.

59

ABAP Open SQL - Join entre Tabelas


INNER JOIN
Tabela
Mand

SPRAS

MAKT
MATNR MAKTX

Check Table
Campos Chaves
Chave Estrangeira
Chave Primria

SELECT
INTO
FROM
INNER

mara~matnr makt~maktx
TABLE tg_materiais
mara
JOIN makt ON makt~matnr = mara~matnr AND
makt~spras = sy-langu
WHERE mara~matnr = p_matnr.

Check Table
Mand

MARA

MATNR

Campos Chaves
Chave Primria

60

by BBKO Consulting

40

Academia SAP/ABAP R3

ABAP Open SQL - Join entre Tabelas


FOR ALL ENTRIES
SELECT
INTO
FROM
WHERE

matnr
TABLE tg_mara
mara
matnr = p_matnr.

IF sy-subrc = 0.
SELECT matnr maktx
INTO TABLE tg_makt
FROM makt
FOR ALL ENTRIES IN tg_mara
WHERE matnr = tg_mara-matnr.
ENDIF.

Obs. A tabela interna utilizada no


FOR ALL ENTRIES NUNCA deve
estar vazia no momento da seleo.
Pois isso ir acarretar a seleo de
todos os registros da tabela utilizada
na clausula FROM.

61

ABAP Open SQL - Acesso ao Banco


de Dados

Acesso: Insert
TABLES ZTABELA
ZTABELA-MATNR
ZTABELA-CAMPO2
ZTABELA-CAMPO3

= 10'.
= 002'.
= INSERT'.

INSERT INTO ZTABELA VALUES ZTABELA.

53

by BBKO Consulting

41

Academia SAP/ABAP R3

ABAP Open SQL - Acesso ao Banco


de Dados

Acesso: Delete
TABLES ZTABELA.
DELETE FROM ZTABELA
WHERE MATNR = 10'.

54

ABAP Open SQL - Acesso ao Banco


de Dados

Acesso: Update
UPDATE ZTABELA
SET CAMPO2 = '002
CAMPO3 = UPDATE'
WHERE MATNR = 20'.

64

by BBKO Consulting

42

Academia SAP/ABAP R3

ABAP Open SQL - Acesso ao Banco


de Dados

Acesso: Modify
TABLES ZTABELA.
ZTABELA-MATNR
ZTABELA-CAMPO2
ZTABELA-CAMPO3

= 30'.
= 002'.
= MODIFY'.

MODIFY ZTABELA.

Comando MODIFY: ou altera um registro com a chave j existente ou se no existe,


adiciona um novo.

65

by BBKO Consulting

43

Academia SAP/ABAP R3

Tipos de
Programas

66

Dicas - Tipos de Programas

Relatrios
- O programa consiste em duas telas, a primeira tela chamada
de tela de seleo (selection screen) , nesta tela voc define
os critrios do relatrio e filtros. A segunda tela a tela de
sada, contm a lista.

Programas de Dilogo (Dialog / On-Line)


- O programa pode ter vrias telas, em cada tela voc pode ter
dados de entrada, sada, botes, table control...

Includes

58

by BBKO Consulting

44

Academia SAP/ABAP R3

Dicas - Editor ABAP


Transao SE38, para Relatrios/Includes

59

-Os relatrios consistem em cinco componentes:


- Cdigo Fonte
- As Caractersticas
- Os elementos de texto
- A documentao
- As variantes

by BBKO Consulting

45

Academia SAP/ABAP R3

Dicas - Declaraes Bsicas nos


programas ABAP
-

Tables Define tabelas ou estruturas com o mesmo nome existente no


Dicionrio de Dados.
Types Definio de Tipos de Dados.
Data - Define campos, varivel ou string de campo.
Constants Define um campo/varivel com valor constante, ou seja, no
poder ser alterado.

Exemplo:
Report Zteste.
Tables: Mara.
Types: type_campo2(2) type c,
type_documento like bseg-ebeln.
Data: vg_campo1 type type_campo2 value XX,
vg_campo2 type type_documento.
Constants c_X(1) type c value X.

by BBKO Consulting

69

46

Academia SAP/ABAP R3

Captulo 5 Tela de Seleo

Tela de Seleo

63

Tela de Seleo

Tela de Seleo
Eventos da Tela de Seleo

62

by BBKO Consulting

47

Academia SAP/ABAP R3

Tela de Seleo - Exemplo de


Parameters

63

by BBKO Consulting

48

Academia SAP/ABAP R3

Tela de Seleo - Exemplo de


Select-options

64

-Internamente gerada uma tabela interna so_func com 4 colunas:


- SIGN ( I Include / E Exclude)
- OPTION (EQ,NE,CP,NP,GE,LT,LE,GT, BT )
- LOW ( Intervalo menor valor)
- HIGH ( Intervalo maior valor)
-Voc pode inicializar os valores do select-option no evento initialization, por
exemplo:
INITIALIZATION.
MOVE: 'I'
TO SO_FUNC-SIGN,
'EQ' TO SO_FUNC-OPTION,
1 TO SO_FUNC-LOW.
APPEND SO_FUNC.

by BBKO Consulting

49

Academia SAP/ABAP R3

Tela de Seleo - Selection-screen em


blocos
SELECTION-SCREEN BEGIN OF BLOCK <block>
... WITH FRAME
... TITLE title
SELECTION-SCREEN END OF BLOCK <block>

SELECTION-SCREEN BEGIN OF BLOCK entre WITH FRAME TITLE text-001.


parameters:
* Nome do arquivo entrada
p_arqori like rlgrap-filename obligatory.
parameters :
p_asc
radiobutton group g1 default 'X', " Tipo ASC
p_dat
radiobutton group g1.
" Tipo DAT
parameters :
p_pc
p_unix

radiobutton group g3 default 'X',


radiobutton group g3.

" Tipo PC
" Tipo UNIX

SELECTION-SCREEN END OF BLOCK entre.

66

Tela de Seleo - Eventos da Tela de


seleo

67

by BBKO Consulting

50

Academia SAP/ABAP R3

Tela de Seleo - Eventos em Bloco


Report Z...
Parameters:

p_data like sy-datum default sy-datum.

Initialization.
p_data = p_data 10.

Seta valores para a tela de seleo

Start-of-Selection.
Write: p_data.

Incio do processamento dos dados

A seqncia dos eventos no cdigo fonte no tem efeito na sequencia na qual eles so chamados pelo
ABAP Runtime System

68

Dicas

71

by BBKO Consulting

51

Academia SAP/ABAP R3

Dicas - Processando Strings

Example
DATA letters(3) TYPE C.
MOVE 'abc' TO letters.
TRANSLATE letters TO UPPER CASE.
letters now has the contents 'ABC'

Example
DATA: letters(20) TYPE C VALUE 'abcabcabcXabc',
change(15) TYPE C VALUE 'aXbaYBabZacZB'.
TRANSLATE letters USING change.
letters now contains 'XaZXaZXaZXXaZ'

70

Dicas - Processando Strings


Exemplo
DATA NAME (30).
NAME(10)
= '
Dr.',
NAME+10(10) = 'Michael',
NAME+20(10) = 'Hofmann'.
CONDENSE NAME.
WRITE NAME.
produces the output:
Dr. Michael Hofmann

Exemplo:
Alinha o material a direita e preenche com zeros a esquerda

SHIFT V_MATNR RIGHT DELETING TRAILING SPACE.


REPLACE ' ' WITH '0' INTO V_MATNR.

71

by BBKO Consulting

52

Academia SAP/ABAP R3

Dicas LOOPs

DO

... ENDDO

WHILE

... ENDWHILE

LOOP

... ENDLOOP

SELECT ... ENDSELECT

72

by BBKO Consulting

53

Academia SAP/ABAP R3

Captulo 6 Listas

Listas

84

Listas

Formatao de Sada das Listas


Definir o Formato das listas
Armazenar Listas
Imprimir Listas
Controle de Nvel das Listas, utilizando tabela Interna

82

by BBKO Consulting

54

Academia SAP/ABAP R3

Listas - Formatao das Listas

Parmetros de Sada:
Write ...
Format ...
New-Page ...

Eventos
TOP-OF-PAGE.
END-OF-PAGE.

Elementos de Texto
Text Symbols
Heading
Selection texts

System fields (tabela Syst)


83

by BBKO Consulting

55

Academia SAP/ABAP R3

Listas - Exemplo dos comandos


Report Rel1.
DATA: DATUM Type D,
TIME TYPE T.
DATUM = SY-DATUM.
TIME = SY-UZEIT.
WRITE: 5 Data(001),
20 DATUM DD/MM/YYYY.
WRITE: /5 Hora (002),
TIME using edit mask _ _:_ _:_ _
under datum.

84

-WRITE:
-Comando que gera sada de dados no relatrio.
-Exemplo: WRITE 'Hello, here I am!'.
-System fields (tabela SYST):
-Alguns campos da tabela SYST so interessantes para uso em

reports:
-SY-PAGNO:
-Nmeros da pagina.
-SY-DATUM:
-Data atual.
-SY-UZEIT:
-Hora atual.
-SY-UNAME:
-Usurio do login.

by BBKO Consulting

56

Academia SAP/ABAP R3

Listas - Exemplo usando Format


Report Rel1.
DATA: DATUM Type D,
TIME TYPE T.
DATUM = SY-DATUM.
TIME = SY-UZEIT.
Format color col_normal.
WRITE: 5 Data(001),
20 DATUM DD/MM/YYYY.
Format color off.
WRITE: /5 Hora (002),
TIME using edit mask _ _:_ _:_ _
under datum.

85

-FORMAT:
-Atravs do FORMAT pode-se manipular o formato dos dados a serem
apresentados com WRITE. Pode-se controlar a cor, intensidade, etc.

by BBKO Consulting

57

Academia SAP/ABAP R3

Listas - Exemplo usando New Page


Com o parmetro New-Page, voc pode forar uma nova pgina.
O contador de pgina ajustado automaticamente e o cabealho especfico
exibido.
Report Rel1.
DATA: DATUM Type D,
TIME TYPE T.
* Nova pgina
NEW_PAGE.
Write: /5 Usurio(003), sy-uname,
80 text-001, sy-page. Pgina
DATUM = SY-DATUM.
TIME = SY-UZEIT.
Format color col_normal.
WRITE: 5 Data(001),
20 DATUM DD/MM/YYYY.
Format color off.
WRITE: /5 Hora (002),
TIME using edit mask _ _:_ _:_ _
under datum.
86

-NEW-PAGE:
-Salta uma pagina do relatrio.

by BBKO Consulting

58

Academia SAP/ABAP R3

Listas - Top-of-page e End-of-page


Voc pode usar o parmetro NO STANDARD PAGE HEADING no parmetro do REPORT para
desabilitar a linha de cabealho do sistema.
Se uma nova pgina iniciada o sistema chama o evento TOP-OF-PAGE.
Report Rel1 NO STANDARD PAGE HEADING
line-size 132
line-count 15.
DATA: DATUM Type D,
TIME TYPE T.
* Nova pgina
TOP-OF-PAGE.
Write: /5 Usurio(003), sy-uname,
80 text-001, sy-pagno. PginaO END-OF-PAGE no ocorre quando a quebra de pgina
END-OF-PAGE.
ULINE.
WRITE: /10, TEXT-001. FIM DE PGINA

foi chamada por um evento NEW -PAGE. O tamanho da


Pgina deve ser determinado pelo parmetro do line-count
Para chamar o bloco do processamento do END-OF-PAGE

DATUM = SY-DATUM.
TIME = SY-UZEIT.
Format color col_normal.
WRITE: 5 Data(001),
20 DATUM DD/MM/YYYY.
Skip 2. Pula duas linhas
Format color off.
WRITE: /5 Hora (002),
TIME using edit mask _ _:_ _:_ _
under datum.

87

-Eventos:
-Eventos so identificados por uma palavra-chave de evento, ou seja, o

prprio nome do evento. Eles terminam onde o bloco do prximo


evento comea. O prximo bloco deve ser uma outra palavra-chave de
evento, ou algum outro bloco de processamento valido no contexto,
como uma sub-rotina ou modulo de dialogo. Os principais eventos para
processamento de relatrios so:
-INITIALIZATION:
-Prprio para inicializar os campos da tela de seleo. E

executado antes da exibio da tela.


-START-OF-SELECTION:
-Neste evento e colocada a lgica principal da montagem

do relatrio. E executado logo apos a tela de seleo.


-END-OF-SELECTION:
-E executado apos o START-OF-SELECTION, antes da

apresentao da lista.

by BBKO Consulting

59

Academia SAP/ABAP R3

Listas - Armazenar Listas


Voc pode armazenar listas resultante de programa

88

by BBKO Consulting

60

Academia SAP/ABAP R3

Listas - Enviar diretamente p/


impressora
O parmetro NEW-PAGE PRINT ON envia a lista para o SAP spool database
O parmetro NO DIALOG desabilita a exibio da tela de parmetros de
impresso.
Report rel3.
NEW-PAGE PRINT ON
NO DIALOG
DESTINATION LPT1
IMMEDIATELY X.
WRITE: / ....

89

Listas - Controle de Nvel: Tabela


Interna

Ao processar tabelas internas com o comando LOOP, voc pode executar


processamentos com nvel de controle, utilizando tais parmetros:

AT FIRST
AT NEW
AT END OF
AT LAST

Obs.: O campo da tabela interna utilizado nos comandos AT NEW e AT END OF


tem que ser o primeiro campo da tabela interna e a mesma deve estar
ordenada.

91

by BBKO Consulting

61

Academia SAP/ABAP R3

Listas - Controle de Nvel: Tabela


Interna
Report rel4.
TABLES KNA1.
...
DATA TG_ITAB TYPE TABLE OF TYPE_ITABE.
DATA ST_ITAB TYPE TYPE_ITABE.
...

LOOP AT ITAB

FIRST.
SORT TG_ITAB BY ORT01 NAME1 ADDRNR . AT
AT NEW < campo>
LOOP AT TG_ITAB INTO ST_ITAB.
AT END OF < campo>
AT NEW ORT01.
AT LAST.
WRITE: / ST_ITAB-ORT01.
ENDLOOP
ENDAT.
AT END OF ORT01.
ULINE.
WRITE: / ST_ITAB-ORT01.
ENDAT.
ENDLOOP.

...
...
...
...

ENDAT.
ENDAT.
ENDAT.
ENDAT.

Obs.: O campo ORT01 neste exemplo tem que ser o primeiro campo
da tabela interna
ITAB.
92

Listas - Controle de Nvel: ON


CHANGE
Para o comando ON CHANGE o campo da tabela interna no precisa ser o primeiro.
TABLES T100.
SELECT * FROM T100 WHERE SPRSL = SY-LANGU AND
MSGNR < '010'
ORDER BY PRIMARY KEY.
ON CHANGE OF T100-ARBGB.
ULINE.
WRITE: / '***', T100-ARBGB, '***'.
ENDON.
WRITE: / T100-MSGNR, T100-TEXT.
ENDSELECT.
Report rel4.
TABLES KNA1.
...
DATA TG_ITAB TYPE TABLE OF TYPE_ITAB.
DATA ST_ITAB TYPE
TYPE_ITAB.
...
SORT TG_ITAB BY ORT01 NAME1 ADDRNR .
LOOP AT TG_ITAB INTO ST_ITAB.
ON CHANGE ST_ITAB-ORT01.
WRITE: / ST_ITAB-ORT01.
ENDON.
ENDLOOP.
93

by BBKO Consulting

62

Academia SAP/ABAP R3

Dicas

96

Dicas - Comando Message


Message Ennn with <field1> <field2> <field3> <field4> (<message-class>)
Tipo de mensagens:
E Erro
A Abend
X Exit (termina com um short Dump)
W Warning
I Informao
S - Sucesso

No parmetro REPORT pode-se acrescentar o parmetro MESSAGE-ID.


Exemplo:
REPORT ZSDR0010 NO STANDARD PAGE HEADING
LINE-SIZE 132
LINE-COUNT 65
MESSAGE-ID ZSD.

94

by BBKO Consulting

63

Academia SAP/ABAP R3

Captulo 7 Listas Secundrias

Listas Secundrias

98

by BBKO Consulting

64

Academia SAP/ABAP R3

Listas Secundrias

96

-O ABAP runtime system :


- Exibe a lista bsica. A varivel de sistema SY-LSIND = 0 (contador de
lista)
- Neste exemplo, se voc clicar duas vezes sobre uma linha da lista
bsica, ser exibido detalhes desta linha, isso atravs do evento
AT-LINE-SELECTION

by BBKO Consulting

65

Academia SAP/ABAP R3

Listas Secundrias - Como selecionar

97

Listas Secundrias - Exemplo do


comando HIDE
HIDE <data object>

Line

Hide Area

Line
1
2

1
2
3

WA_ZFUNC-NUM_ID
0000000001
0000000002
0000000003

98

by BBKO Consulting

66

Academia SAP/ABAP R3

Listas Secundrias - Exemplo


SY-LSIND = 0

Duplo click na linha do relatrio, ou clicar no


cone

SY-LSIND = 1
Traz dados da Lista Secundria

SY-LSIND = varivel de sistema de indica o ndice da lista corrente

99

by BBKO Consulting

67

Academia SAP/ABAP R3

Listas Secundrias - Exemplo

100

Listas Secundrias - Lista Secundria


com GUI STATUS

Lista Bsica

Lista Secundria

101

by BBKO Consulting

68

Academia SAP/ABAP R3

Listas Secundrias - GUI Title e GUI


Status

102

Listas Secundrias - Menu Painter


SE41

103

by BBKO Consulting

69

Academia SAP/ABAP R3

Listas Secundrias - Menu Painter

104

Listas Secundrias - Gui Status


(exemplo: LIST)

105

by BBKO Consulting

70

Academia SAP/ABAP R3

Listas Secundrias - Barra de Menu

106

Listas Secundrias - Barra de


Ferramentas da Aplicao

107

by BBKO Consulting

71

Academia SAP/ABAP R3

Listas Secundrias - Menu Standard

108

Listas Secundrias - Lista Secundria


com GUI STATUS
REPORT ZTESTE_LISTA_SEC_II .
TABLES: mara, makt.
TYPES: begin of type_mara,
matnr like mara-matnr,
ersda like mara-ersda,
ernam like mara-ernam,
end of type_mara,
begin of type_makt,
matnr like makt-matnr,
maktx like makt-maktx,
end of type_makt.

SELECT matnr ersda ernam


FROM mara
INTO TABLE tg_mara
WHERE matnr in so_matnr.
LOOP AT tg_mara INTO st_mara.
WRITE: /'Material', t_mara-matnr, t_maraersda, t_mara-ernam.
HIDE: tg_mara.
ENDLOOP.

AT USER-COMMAND.
CASE sy-ucomm.
WHEN 'TEXTO'.
SET pf-status 'LIST' excluding 'TEXTO'.
DATA: tg_mara TYPE TABLE OF TYPE_MARA,
SET titlebar 'LIST1'.
st_mara TYPE
TYPE_MARA,
st_makt TUPE
TYPE_MAKT.
SELECT single matnr maktx
INTO (st_makt-matnr,st_makt-maktx)
select-options: so_matnr for mara-matnr.
FROM makt
****************************************
WHERE matnr = t_mara-matnr AND
* Evento START-OF-SELECTION
spras = 'P '.
****************************************
start-of-selection.
WRITE: 'Material lista secundria',
set pf-status 'LIST'.
st_makt-matnr, st_makt-maktx.
set titlebar 'LIST'.
ENDCASE.
110

by BBKO Consulting

72

Academia SAP/ABAP R3

Captulo 8 Modularizao

Modularizao

75

Modularizao
Sub-rotinas
Grupo de Funes
Funes

74

by BBKO Consulting

73

Academia SAP/ABAP R3

Modularizao - Subrotinas

Inicio do Programa

Perform carrega_tab
Using
Campo 1
Changing tab1

Form carrega_tab
Using
Campo 1
Changing tab1

....

75

Se no programa ABAP uma sub-rotina chamada por um comando


PERFORM, o sistema interrompe o processamento corrente para processar a
sub-rotina. Quando a ultima linha da sub-rotina (ENDFORM), executada, o
sistema continua o processamento do programa, aps a linha do comando
PERFORM.

by BBKO Consulting

74

Academia SAP/ABAP R3

Modularizao - Chamando por valor e


por referncia

76

Os parmetros podem ser enviados por referncia ou por valor:


- Por referencia: o parmetro destino faz referencia ao endereo do
parmetro origem.
- Por valor: Quando a sub-rotina chamada, uma varivel local criada e o
contedo copiado, existem dois tipos de chamadas por valor:
- chamada por valor: passa apenas os contedos
- chamada por valor e resultado: passa o contedo do campo e toda
alterao efetuada no campo, na sub-rotina e passada de volta.

by BBKO Consulting

75

Academia SAP/ABAP R3

Modularizao - Grupo de Funo e


Funo

77

Mdulo de funo so unidades modulares com a interface. A interface


pode conter os seguintes elementos:
Parmetros de Importao: so parmetros passados para o mdulo de
funo. Em geral, estes so associados aos tipos do Dicionrio ABAP. Podem
ser opcionais.
Parmetros de Exportao: so passados do mdulo de funo para o
programa chamador. Parmetros de exportao so sempre opcionais.
Parmetros Modificveis: so passados para o mdulo de funo e podem
ser alterados pela funo. Podem ser opcionais.
Excees: So usados para interceptar erros. Se um erro aciona uma
exceo na funo, esta funo pra. Voc pode associar nmeros a exceo
no programa, na qual so verificados pelos valores do sy-subrc.
Cada mdulo de funo pode conter dados locais e acessar dados
globais, pertencentes ao grupo de funo.

by BBKO Consulting

76

Academia SAP/ABAP R3

Modularizao - Grupo de Funo e


Funo
Grupo de Funes e Funes

78

- Um grupo de funo um programa ABAP do tipo F, na qual o programa


criado exclusivamente para conter mdulos de funo. Os mdulos de funo
podem ser chamados de qualquer programa ABAP.

by BBKO Consulting

77

Academia SAP/ABAP R3

Modularizao - Grupo de Funo e


Funo

1. Criar o Grupo de funo

2. Associar o mdulo de funo ao Grupo

Crie grupo de funo por assunto, evite utilizar vrios mdulos de funo num mesmo
grupo, pois se algum estiver codificando um mdulo, e voc quiser transportar a sua funo
e eles pertencerem ao mesmo grupo, voc s vai conseguir transportar no momento que
todos as funes deste grupo estiverem sem erro de sintaxe.

79

Modularizao - Exemplo de programa


e funo

80

by BBKO Consulting

78

Academia SAP/ABAP R3

ALV Grid Control


TYPE-POOLS: slis, kkblo.
DATA: tg_fieldcat TYPE TABLE OF slis_t_fieldcat_alv.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program
= 'Nome_do_programa'
i_grid_title
= 'Teste Relatrio ALV'
it_fieldcat
= tg_fieldcat[ ]
TABLES
fieldcat-col_pos =
=
t_outtab
= Tabela de Dados fieldcat-key
fieldcat-tabname =
EXCEPTIONS
fieldcat-fieldname
fieldcat-seltext_l
program_error
=1
fieldcat-seltext_m
OTHERS
= 2.
fieldcat-seltext_s

'01'.
'X'.
'T_ALV'.
= 'COL_01'.
= 'Material'.
= 'Material'.
= 'Material'.
fieldcat-fix_column = 'X'.
Append fieldcat.
119

by BBKO Consulting

79

Academia SAP/ABAP R3

Captulo 9 Data Transfer

Transferncia de Dados

114

Transferncia de Dados
Processando Arquivo Seqencial
Call Transaction
Batch Input

111

by BBKO Consulting

80

Academia SAP/ABAP R3

Transferncia de Dados - Abrir e ler arquivo


sequencial - Inbound

IF p_unix = 'X'.
OPEN DATASET p_arqori FOR INPTU IN text MODE MESSAGE v_msg.
DO.
READ DATASET P_ARQORI INTO T_DATA_LOAD.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
APPEND T_DATA_LOAD.
ENDDO.
ENDIF.

"l um reg. do arquivo

"fim de arquivo/arq. s/ registros


"indica fim de arquivo

112

Transferncia de Dados - Binary Mode e


Text Mode

113

by BBKO Consulting

81

Academia SAP/ABAP R3

Transferncia de Dados - Gerando arquivo


seqencial -Outbound

IF P_UNIX EQ 'X'.
OPEN DATASET V_ARQSAIDA FOR OUTPUT IN TEXT MODE MESSAGE V_MSG.
IF SY-SUBRC NE 0.
MESSAGE E001(ZI) WITH V_ARQSAIDA V_MSG.
ENDIF.
LOOP AT T_SAIDA.
TRANSFER T_SAIDA TO V_ARQSAIDA.
ENDLOOP.
CLOSE DATASET V_ARQSAIDA.
IF SY-SUBRC NE 0.
MESSAGE E011(ZI) WITH V_ARQSAIDA.
ENDIF.
ELSEIF P_PC EQ 'X'.
.....
114

Transferncia de Dados - Acesso a


arquivos externos
Entrada de dados - Inbound
Acesso a arquivo externo via PC, utilizar a funo:
call function GUI_UPLOAD'
exporting
filename
= l_filename
filetype
= v_type
tables
data_tab
= t_data_load
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.
Acesso a arquivo externo via UNIX, utilizar os comandos:
OPEN DATASET <arq> FOR INPUT IN TEXT MODE MESSAGE <msg>
DO.
READ DATASET P_ARQORI INTO T_DATA_LOAD. "le um reg. do arquivo
IF SY-SUBRC NE 0.
"fim de arquivo/arq. s/ registros
EXIT.
"indica fim de arquivo
ENDIF.
APPEND T_DATA_LOAD.
ENDDO.

115

by BBKO Consulting

82

Academia SAP/ABAP R3

Transferncia de Dados - Acesso a


arquivos externos
Acesso a arquivo externo via UNIX, utilizar os comandos:
OPEN DATASET <arq> FOR INPUT IN TEXT MODE MESSAGE <msg>
DO.
READ DATASET P_ARQORI INTO T_DATA_LOAD. "le um reg. do arquivo
IF SY-SUBRC NE 0.
"fim de arquivo/arq. s/ registros
EXIT.
"indica fim de arquivo
ENDIF.
APPEND T_DATA_LOAD.
ENDDO.

116

Transferncia de Dados - Acesso a


arquivos externos
Sada de dados - Outbound
Acesso a arquivo externo via PC, utilizar a funo:
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = V_ARQSAIDA
TABLES
DATA_TAB = T_SAIDA
EXCEPTIONS
OTHERS
= 8.

117

by BBKO Consulting

83

Academia SAP/ABAP R3

Transferncia de Dados - Acesso a


arquivos externos
Acesso a arquivo externo via UNIX, utilizar os comandos:
CONCATENATE P_PATH 'arq' SY-DATUM SY-UZEIT+0(4) INTO <arq>.
OPEN DATASET <arq> FOR OUTPUT IN TEXT MODE MESSAGE <msg>
LOOP AT <tab_interna>.
TRANSFER <tab_interna> TO <arq>.
ENDLOOP.
CLOSE DATASET <arq>.

118

Transferncia de Dados - Transferindo


Dados Externos
SAP ( Host )

Dados
Externos

SAP
INTERFACES

BANCO SAP

119

by BBKO Consulting

84

Academia SAP/ABAP R3

Transferencia de Dados - Transferindo


Dados Externos
Arquivo
Seqncial

Dicionrio
ABAP/4

READ DATASET
Programa de BATCH INPUT

Estrutura BDCDATA
Tabela
BDC
INCLUDE STRUCTURE

CALL FUNCTION

FILA

120

Transferncia de Dados - Seqncia p/


Batch Input
ABRIR SESSO DE BATCH INPUT

INSERIR DADOS DA TRANSAO

FECHAR SESSO DE BATCH INPUT

121

by BBKO Consulting

85

Academia SAP/ABAP R3

Transferncia de Dados - Entrada e


Sada de Dados
Atualizando dados
Update Z_CONTAS set fornecedor = X
Where grupo = 1.

Update no deve ser utilizado para atualizar dados de tabelas Standard do


SAP. Toda a atualizao deve ser feita atravs das transaes que garantam a
integridade da base de dados. Esta atualizao feita atravs do comando Call
Transaction.

Call Transaction
WA_BDCDATA-PROGRAM = 'SAPMS38M'. Informa o nome/numero da tela
WA_BDCDATA-DYNPRO
= '0100'.
WA_BDCDATA-DYNBEGIN = 'X'.
APPEND WA_BDCDATA TO BDCDATA.
CLEAR WA_BDCDATA.
WA_BDCDATA-FNAM
= 'RS38M-PROGRAMM'. Preenche campos da tela
WA_BDCDATA-FVAL
= PROGRAM.
APPEND WA_BDCDATA TO BDCDATA.
...
* Chama a transao com os dados de tela e campos definidos
CALL TRANSACTION 'SE38'

USING BDCDATA MODE 'N'


MESSAGES INTO ITAB.

122

Transferncia de Dados - Entrada e


Sada de Dados
Para melhor organizar um programa que utiliza Call Transaction normalmente so
criadas funes para preencher a tabela de dados da transao (BDCDATA).
****************************************************************
*
Rotinas para criao da t_bdc
****************************************************************
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR T_BDC.
T_BDC-PROGRAM = PROGRAM.
T_BDC-DYNPRO
= DYNPRO.
T_BDC-DYNBEGIN = 'X'.
APPEND T_BDC.
ENDFORM.
********************************************
FORM BDC_FIELD USING FNAM FVAL.
IF FVAL <> ''.
CLEAR T_BDC.
T_BDC-FNAM = FNAM.
T_BDC-FVAL = FVAL.
APPEND T_BDC.
ENDIF.
ENDFORM.
123

by BBKO Consulting

86

Academia SAP/ABAP R3

Transferncia de Dados - Entrada e


Sada de Dados
**********************************************************************
* FORM CALL_TRANSACTION
**********************************************************************
FORM CALL_TRANSACTION TABLES T_BDC_DATA USING W_TCODE.
CALL TRANSACTION W_TCODE
USING T_BDC_DATA MODE 'N' UPDATE 'S'
MESSAGES INTO T_MESS.
IF SY-SUBRC NE 0.
LOOP AT T_MESS.
PERFORM BDC_MESSAGE.
WRITE: / W_MESS.
ENDLOOP.
ENDIF.
CLEAR: T_MESS, T_BDC.
REFRESH: T_MESS, T_BDC.
ENDFORM.

" CALL_TRANSACTION

**********************************************************************
* FORM BDC_MESSAGE
**********************************************************************
FORM BDC_MESSAGE.
CLEAR W_MESS.
124

Transferncia de Dados - Entrada e


Sada de Dados
SELECT SINGLE
WHERE
AND
AND

* FROM T100
SPRSL = 'P'
ARBGB = T_MESS-MSGID
MSGNR = T_MESS-MSGNR.

W_MESS = T100-TEXT.
STRAUX4 = T_MESS-MSGV1.
REPLACE '&' WITH STRAUX4 INTO W_MESS.
CONDENSE W_MESS.
STRAUX4 = T_MESS-MSGV2.
REPLACE '&' WITH STRAUX4 INTO W_MESS.
CONDENSE W_MESS.
STRAUX4 = T_MESS-MSGV3.
REPLACE '&' WITH STRAUX4 INTO W_MESS.
CONDENSE W_MESS.
STRAUX4 = T_MESS-MSGV4.
REPLACE '&' WITH STRAUX4 INTO W_MESS.
CONDENSE W_MESS.
ENDFORM.
125

by BBKO Consulting

87

Academia SAP/ABAP R3

Transferncia de Dados - Entrada e


Sada de Dados
Exemplo de cdigo para chamada de
funes criadas :
...
PERFORM BDC_DYNPRO
USING
PERFORM BDC_FIELD
USING
PERFORM BDC_FIELD
USING
MATNR(01)'.

Call Transaction a partir das

'SAPMM07I'
'BDC_OKCODE'
'BDC_CURSOR'

'0721'.
'=BU'. Salvar
'ISEG-

PERFORM CALL_TRANSACTION TABLES T_BDC USING 'MI01'.


O nome do campo na tela pode ser verificado clicando-se F1
sobre o campo acessando a opo Informaes Tcnicas. O nome do
campo encontra-se em Denominao do campo para batch input.
Alm dos campos de tela existem dois campos especiais :
BDC_CURSOR : Para indica a posio do cursor
BDC_OKCODE : Para indicar a operao a realizar aps o
preenchimento da tela.
126

Transferncia de Dados - Entrada e


Sada de Dados
Batch Input
O programa cria uma pasta ou arquivo contendo os dados da
tabela BDC_DATA (mesma utilizada no Call Transaction).
Esta ser processada posteriormente atravs da transao SM35.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING CLIENT
= SY-MANDT
GROUP
= NOMEPASTA
USER
= USER
KEEP
= KEEP
HOLDDATE = HOLDDATE.
CALL FUNCTION 'BDC_INSERT'
EXPORTING TCODE
= TCODE
TABLES
DYNPROTAB = T_BDCDATA.

CALL FUNCTION 'BDC_CLOSE_GROUP'.


127

by BBKO Consulting

88

Academia SAP/ABAP R3

Transferncia de Dados - Programa


Inbound
Passos para criar programa Inbound
Executar a transao SHDB:
Juntamente com o Funcional executar a transao desejada e preencher os
campos necessrios

Aps mapear os campos necessrios, definir o layout do arquivo .txt de


entrada
Criar a especificao tcnica
Criar o programa de Inbound

Obs: Segue exemplo: transao MM02 (alterao de material) onde vamos apenas alterar a
descrio dos materiais

128

Transferncia de Dados - Transao


SHDB

129

by BBKO Consulting

89

Academia SAP/ABAP R3

Transferncia de Dados - Transao


SHDB

130

Transferncia de Dados - Transao


SHDB

131

by BBKO Consulting

90

Academia SAP/ABAP R3

Transferncia de Dados - Transao


SHDB

132

Transferncia de Dados - Transao


SHDB

133

by BBKO Consulting

91

Academia SAP/ABAP R3

Transferncia de Dados - Transao


SHDB

134

Transferncia de Dados - Layout do


arquivo de entrada
Arquivo .txt de entrada
(para este exemplo do SHDB, executado):
Seq

Campo

Tipo

Cdigo do material

char 18 posies, alinhado a esquerda

Descrio do Material

char 40 posies

135

by BBKO Consulting

92

Academia SAP/ABAP R3

Transferncia de Dados - Tela com


parmetros de Batch Input

136

Transferncia de Dados - SM35Executar pasta de Batch Input

137

by BBKO Consulting

93

Academia SAP/ABAP R3

Transferncia de Dados - SM35

138

- Tem trs opes de executar a pasta: Processamento visvel


(Foreground visualizando as telas), Oculto (background), Exibir s erros
(quando ocorrer erro mostra a tela)
-Quando executa a pasta Batch Input em foreground, significa que est
rodando a transao com todos os dados mapeados no programa,
preenchidos, apenas teclar < ENTER >.
- Caso queira cancelar o processamento em foreground do registro
corrente, digitar no campo de comando < /n>.
- Caso queira cancelar o processamento em foreground, digitar no campo
de comando < /bend>

by BBKO Consulting

94

Academia SAP/ABAP R3

Captulo 10 Programao On-Line

Programao On-Line

143

by BBKO Consulting

95

Academia SAP/ABAP R3

Programao On-line - Module-pool


Partes de uma tela

Atributos
Da Tela

Screen Number
Short Description
Screen type
Next Screen
...

Layout
Da Tela

Screen Number
Short Description
Screen type
Next Screen
...

Atributos
dos campos

Field Name
Type
Length
...

Controle do Fluxo
Process Before Output.
Module Clear-ok_code.

Controle do Fluxo
Process After Input
Module User_Command_0100

140

Os principais processos de criar uma tela:


- Especificar as suas propriedades (Atributos da tela)
- Especificar o layout (Editor Fullscreen)
- Definir os atributos dos elementos da tela (Field List)
- Programar o seu fluxo lgico
- O Fluxo lgico dividido em dois eventos para cada tela:
- O PROCESS BEFORE OUTPUT evento (PBO), executado antes
da tela ser apresentada.
- O PROCESS AFTER INPUT evento (PAI), executado aps o
usurio ter acionado algum boto ou disparado algum evento na
tela anteriormente apresentada.

by BBKO Consulting

96

Academia SAP/ABAP R3

Programao On-line - Criao de um


Dialog Program

Cdigo
Cdigo do
do Cliente
Cliente

Nome
Nome
Endereo
Endereo

141

- Dialog Program que mostrar dados do Cliente.


- Neste exemplo, a primeira tela, o usurio entrar com cdigo do funcionrio.
(chave da tabela), e na segunda tela, ser mostrado o contedo dos campos
referentes tabela ao funcionrio.

by BBKO Consulting

97

Academia SAP/ABAP R3

Programao On-line Chamada dinmica da


prxima tela
Tela 100
Prxima tela 200

PBO

PAI

Module ...
Set Screen 300.
Leave Screen.
Endmodule.

Tela 300
Prxima tela 400

PBO

PAI

Module ...
Set Screen 0.
Leave Screen.
Endmodule.

O comando SET SCREEN <nnnn> sobrepe temporariamente o atributo prxima tela.


Para executar a chamada a outra tela em um nico programa pode ser feito desta forma: LEAVE TO SCREEN < nnnn>

O comando SET SCREEN 0 e LEAVE Screen volta para a tela que chamou, no caso tela 300.

142

by BBKO Consulting

98

Academia SAP/ABAP R3

Programao On-line - Programa


Lgico

143

Voc pode definir um campo OK_CODE como um campo da tela. Neste


campo conter o cdigo de funo do boto selecionado na tela. Para evitar
erros de campo OK_CODE no inicializado, voc deve criar um campo
auxiliar que salva o contedo do OK_CODE e ento voc inicializa o campo
OK_CODE e trabalha com o campo auxiliar.

by BBKO Consulting

99

Academia SAP/ABAP R3

Programao On-line - Dialog Program


Seq Aes
Sequncia de Aes
PROCESS BEFORE OUTPUT.
MODULE
A.
PROCESS AFTER INPUT.
MODULE
B.

Screen
Painter

Action sequence
Execute module A
Data transport from
ABAP/4 to screen
work area
Send screen
ENTER
Data transport from
screen to ABAP/4
work area
Execute module B

144

- Quando todos os mdulos do PBO terminarem a execuo, os contedos


dos campos na Work rea do ABAP so copiados para a Work rea da tela
em nomes idnticos.
- Antes do PAI ser processado, os contedos dos campos na Work rea da
tela so copiados para a Work rea do ABAP em nomes idnticos.

by BBKO Consulting

100

Academia SAP/ABAP R3

Programao On-line - Atributos da


tela
Modificaes Dinmicas em Telas

Change <-> Display

A
B

Change <-> Display

A
B

output field

input and
output field

146

- Podem ser feitas mudanas temporrias em certos atributos de campos.


Ex.: Fazer com que um campo com atributo de display somente, seja alterado
para receber entrada de digitao etc.
- Esta facilidade faz com que possam ser utilizadas as mesmas telas,
somente com a alterao dos atributos dos seus campos, desta forma a
quantidade de telas reduzida consideravelmente.

by BBKO Consulting

101

Academia SAP/ABAP R3

Programao On-line - Atributos da


tela
Atributos modificbeis da tabela SCREEN
SCREEN-NAME
SCREEN-GROUP1
SCREEN-GROUP2
SCREEN-GROUP3
SCREEN-GROUP4

Field name

SCREEN-REQUIRED

Required field

SCREEN-INPUT

Input field

SCREEN-OUTPUT

Output field

SCREEN-INTENSIFIED

Highlighted field

SCREEN-INVISIBLE

Invisible field

SCREEN-LENGTH

Field length

SCREEN-ACTIVE

Active field

SCREEN-DISPLAY_3D

3-dimensional field

SCREEN-VALUE_HELP

Field with value help

SCREEN-REQUEST

Input exists (PAI only)

Modification
Modification
Modification
Modification

group 1
group 2
group 3
group 4

146

- Os campos da tela e seus respectivos atributos so armazenados


automaticamente em uma tabela interna (do sistema) chamada SCREEN.
- A tabela SCREEN inicializada com os campos definidos no Caiem Pointer
e tem seus campos reinicializados a cada execuo do PBO.
- Para determinar o campo que voc deve alterar um ou mais atributos, voc
precisa ler o campo SCREEN-NAME e os campos SCREEN-GROUP1 at
SCREEN-GROUP4, atravs de um Loop na tabela SCREEN.
- As funes standard so automaticamente associadas.

by BBKO Consulting

102

Academia SAP/ABAP R3

Programao On-line - Atributos do


campo na tela
Atributos do campo Grupos de Modificao

Screen
Painter

Field list: Modification groups


Field name

Gr1 Gr2 Gr3 Gr4

SPFLI_ITAB-CONNID
SPFLI_ITAB-CITYFROM
SPFLI_ITAB-CITYTO
...

SEL
SEL
SEL

...

147

- Voc pode associar um campo a quatro diferentes grupos. Os nomes dos


grupos podem ter at 3 caracteres e podem ser definidos livremente.

by BBKO Consulting

103

Academia SAP/ABAP R3

Programao On-line - Modificao em


telas
Modificaes Dinmicas em Telas - Programa
Screen
Painter

PROCESS BEFORE OUTPUT.


.
.
.
MODULE MODIFY_SCREEN.
.
.
.
MODULE MODIFY_SCREEN OUTPUT.

ABAP/4

...

LOOP AT SCREEN.
IF
SCREEN-GROUP1
SCREEN-INPUT =
ENDIF.
IF
SCREEN-NAME
SCREEN-ACTIVE
ENDIF.
MODIFY SCREEN.

= 'SEL'.
1.
= ' SFLIGHT-CARRID
= 0.

'.

ENDLOOP.
ENDMODULE.

148

- O cdigo (programa) para alterar dinamicamente os atributos dos campos


devem ser executados no evento PBO.
- As mudanas devem ser feitas dentro de um Loop na tabela SCREEN, e
somente desta forma.(No possvel o acesso via READ TABLE...).
- As mudanas feitas so realmente ativadas aps o comando MODIFY
SCREEN.

by BBKO Consulting

104

Academia SAP/ABAP R3

Programao On-line - Condio na


chamada dos Modules
- Se quiser que o module seja chamado somente se o contedo do campo foi alterado do seu
valor inicial.

PROCESS AFTER INPUT.


FIELD <campo>
Module Verifica_Campo ON INPUT.

Module Verifica_Campo
...
message E ...
Endmodule.

- Dentro do bloco CHAIN, voc deve usar o ON CHAIN-INPUT, o module ento chamado se o
contedo de uma das telas foi alterado do valor inicial.
PROCESS AFTER INPUT.
CHAIN.
FIELD <campo1>,
<campo2>
... < campo n>
Module Verifica_Campo ON CHAIN-INPUT.
ENDCHAIN.

Module Verifica_Campo
...
message E ...
Endmodule.

150

Programao On-line - Condio na


chamada dos Modules
- Se quiser que o module seja chamado somente se o contedo do campo foi alterado do seu
valor inicial.

PROCESS AFTER INPUT.


FIELD <campo>
Module Verifica_Campo ON INPUT.

Module Verifica_Campo
...
message E ...
Endmodule.

- Dentro do bloco CHAIN, voc deve usar o ON CHAIN-INPUT, o module ento chamado se o
contedo de uma das telas foi alterado do valor inicial.
PROCESS AFTER INPUT.
CHAIN.
FIELD <campo1>,
<campo2>
... < campo n>
Module Verifica_Campo ON CHAIN-INPUT.
ENDCHAIN.

Module Verifica_Campo
...
message E ...
Endmodule.

150

by BBKO Consulting

105

Academia SAP/ABAP R3

Programao On-line - Condio na


chamada dos Modules
- Se adicionar o parmetro ON REQUEST no module, o module somente chamado se o usurio
digitar um novo valor neste campo

PROCESS AFTER INPUT.


FIELD <campo>
Module Verifica_Campo ON REQUEST.

Module Verifica_Campo
...
message E ...
Endmodule.

- Dentro do bloco CHAIN, voc deve usar o ON CHAIN-REQUEST, o module ento chamado se
o usurio alterou o contedo de um dos campos dentro do bloco CHAIN.
PROCESS AFTER INPUT.
CHAIN.
FIELD <campo1>,
<campo2>
... < campo n>
Module Verifica_Campo ON CHAIN-REQUEST.
ENDCHAIN.

Module Verifica_Campo
...
message E ...
Endmodule.

151

Programao On-line - Condio na


chamada dos Modules
- O parmetro adicional AT EXIT-COMMAND, faz com que o module seja processado antes das
verificaes automticas de entrada de dados.

PROCESS AFTER INPUT.


Module exit AT EXIT-COMMAND.

Module EXIT Input.


Case ok_code.
when CANCEL.
clear ok_code.
leave to screen 0.
when EXIT.
leave program.
Endcase.
Endmodule.

152

by BBKO Consulting

106

Academia SAP/ABAP R3

Programao On-line - Criar Dialog


Program SE80

153

- Crie o seu programa (ABAP Module Pool) no Development Workbench


(SE80) seguindo a regra de nomenclatura abaixo:
O nome dever iniciar com as letras SAP.
A quarta posio do nome do programa dever ser sempre M (Module
Pool).
A quinta posio, no caso de programas customizveis dever ser Z ou Y,
(como nos programas reports, iniciados obrigatoriamente com essas letras).
Escolha a opo TOP Include, pois desta forma, ser criado o include que
ser utilizado para a declarao dos dados globais.
Se voc utilizar os includes, o sistema automaticamente sugerir os nomes
para eles, seguindo uma regra particular, de acordo com o nome do programa
principal (module pool) e com um determinado sufixo, o qual facilitar a sua
identificao dentro do programa.
Exemplo: O nome do TOP Include para um programa Module Pool cujo
nome SAPMZSD001 ser MZSD001TOP.

by BBKO Consulting

107

Academia SAP/ABAP R3

Programao On-line - Cria Dialog


Program

154

-Nos atributos do programa, voc define o Ttulo, categoria e a aplicao.


Categoria Module Pool e Aplicao BASE

by BBKO Consulting

108

Academia SAP/ABAP R3

Programao On-line - Criar tela em


Dialog Program

155

- Criar tela no Dialog Program: Posicionar o cursor no nome do programa e


clicar o boto direto do mouse

by BBKO Consulting

109

Academia SAP/ABAP R3

Programao On-line - Criar tela em Dialog


Program
1 - Digitar o numero da tela

156

by BBKO Consulting

110

Academia SAP/ABAP R3

Programao On-line - Criar tela Dialog


Program

157

- Nos atributos da tela, digitar a descrio da tela.


- Escolha a opo NORMAL, e especifique o nmero da prxima tela (se
necessrio, no momento da execuo, o sistema desviar para o nmero da
tela indicado nesse campo, caso esteja preenchido).

by BBKO Consulting

111

Academia SAP/ABAP R3

Programao On-line - Criar tela Dialog


Program
Clica no cone

158

- Para desenhar telas, utilize o Screen Painter.


- A interface do Screen Painter Grfico contm funes easy-to-use para
definio de diversos elementos da tela (ex: campos de entrada/sada, labels,
boxes, botes, etc). Voc escolhe cada elemento e os posiciona na tela
utilizando o mouse.
- Para deletar elementos da tela, necessrio selecionar cada elemento com
o mouse (foco) e pressionar delete.
- possvel tambm mover os elementos grficos pela tela, somente clicando
e arrastando o mesmo.
-Na tela acima para digitar a constante Cdigo do Funcionrio utilizamos o
cone

e digitamos esta literal no campo

para digitar o campo varivel utilizamos o cone


ferramentas.

by BBKO Consulting

e
da barra de

112

Academia SAP/ABAP R3

Programao On-line - Exemplo: Criar


tela 200

159

-Duplo click no campo varivel e ento aparece a janela de atributos do


campo, no nome do campo, foi digitado o nome de uma tabela e campo,
ento digita enter e aparece uma pergunta se este campo est associado ao
Dicionrio.
- No nosso exemplo este campo est associado ao dicionrio, atravs desta
table ZFUNC01.
- No esquecer de ativar a tela.

by BBKO Consulting

113

Academia SAP/ABAP R3

Programao On-line - Criar tela


Declarar ariveis

160

- No processamento do dilogo, os dados so passados entre as telas e


programas ABAP durante a execuo. O sistema efetua a comunicao
automaticamente, mas necessrio que seja utilizado o nome idntico dos
campos nas telas e no module pool.
- Defina os dados globais no TOP include. Para que todas as telas possam
enxerg-lo.

by BBKO Consulting

114

Academia SAP/ABAP R3

Programao On-line - Criar Tela


Criar Modules

161

-Observe no exemplo acima que clicando na tela 100, aparece o fluxo lgico
da tela 0100 (PBO e PAI).
- Os modules esto comentados, caso utilize, tirar os comentrios e os
modules sero criados em includes.
- Durante o processo de criao dos mdulos PAI e/ou PBO, voc pode
associ-los aos includes desejados ou deixar que o sistema automaticamente
faa isto por voc. Neste caso os mdulos no PBO sero criados nos includes
com o sufixo I01 (xxxxxI01), e os do PAI, nos includes com sufixo O01
(xxxxxO01).
- Nos Flow Logics no so permitidos palavras reservadas (IF, PERFORM,
WHILE etc) da mesma forma em que so permitidos nos programas. O Flow
Logic, embora se parea muito com o programa (o editor o mesmo), no
tem o mesmo comportamento. Ele usado basicamente para ordenar o
processamento da tela, e para isso so criados os MODULES, que tm uma
funo anloga do PERFORM.
- Para criarmos um MODULE, escreva o seu nome no flow logic no lugar
desejado e efetue um double-click. O sistema criar uma sub-rotina iniciando
com MODULE <nome> e terminando com ENDMODULE no include
apropriado. Isto pode ser facilmente observado efetuando uma navegao
pelo include.
- Se no existirem includes, o sistema poder criar um (se voc permitir) ou
poder incluir a sub-rotina no programa principal (o que alis, no
recomendado).

by BBKO Consulting

115

Academia SAP/ABAP R3

-Tirar das linhas o comentrio e atribuir algum cdigo ao GUI status e ao GUI
title, no exemplo acima foi atribudo o 0100.

Programao On-line - Criar Modules

162

Programao On-line - Criar Modules

163

by BBKO Consulting

116

Academia SAP/ABAP R3

Programao On-line - GUI Title e GUI


Status

168

- Usa-se o Menu Painter para definir funes na tela em um status particular e


associ-los a um apropriado menu, a saber: menu bar, standard toolbar e
application toolbar.
- Pode-se tambm definir um ttulo para a tela.
- Em geral, define-se um menu bar para cada dialog program e associa-se
esse menu bar a um status. Para todos os status, define-se qual funo
estar ativa/inativa.
- Cada alterao nos status (menus) deve ser seguida de uma re-gerao da
tela completa.
- Para associar um status e um ttulo a uma tela, isto deve ser feito no seu
PBO, usando o comando SET PF-STATUS e SET TITLEBAR,
respectivamente.

by BBKO Consulting

117

Academia SAP/ABAP R3

Programao On-line - Criao de GUI


Status

165

Programao On-line - Criar GUI Status


Barra de Menu

166

by BBKO Consulting

118

Academia SAP/ABAP R3

Programao On-line - Criar GUI Status


Barra de Botes

167

-Voc pode criar botes associados aos Cdigos criados na Barra de Menu
ou no.
- Quando cria botes, voc pode associar a uma tecla de funo

by BBKO Consulting

119

Academia SAP/ABAP R3

Programao On-line - Criar GUI Title

168

-Voc pode usar at nove variveis no ttulo. Veja abaixo o Module chamando
o titlebar CONS passando a varivel cdigo do funcionrio.

by BBKO Consulting

120

Academia SAP/ABAP R3

Programao On-line - Fluxo Lgico


tela 100

169

Cdigo dos Modules, acima:

by BBKO Consulting

121

Academia SAP/ABAP R3

Programao On-line - Fluxo Lgico


tela 100

169

Cdigo dos Modules, acima:

by BBKO Consulting

122

Academia SAP/ABAP R3

Programao On-line - Fluxo Lgico


tela 200

170

-Segue

by BBKO Consulting

123

Academia SAP/ABAP R3

Programao On-line - Fluxo Lgico


tela 200

170

-Segue

by BBKO Consulting

124

Academia SAP/ABAP R3

Programao On-line - Organizao do


Programa

Sub-Rotinas
PAI
PBO
Declaraes
Globais

171

Criar transao para On-Line

172

by BBKO Consulting

125

Academia SAP/ABAP R3

Criar transao para On-Line

173

- Para executar programa tipo M (Module Pool) voc deve criar pelo menos
uma transao.

by BBKO Consulting

126

Academia SAP/ABAP R3

Programao On-line - Transao


ZFUNC01 tela 100

174

Programao On-line - Tela 200 Consulta

175

by BBKO Consulting

127

Academia SAP/ABAP R3

Apndice A Programao On-Line


Os Componentes Principais de um Dialog Program (On-line)

Voc usa o Screen Paiter e o Menu Painter para criar e desenhar telas modelas e programas de
telas.
Voc define o processamento lgico no module pool do programa ABAP/4 .
Estruturas de dados so definidas no Dicionrio ABAP/4. Voc pode acessar esses estruturas do
programa ABAP/4 e quando define campos de tela.
O processador de dilogo controla o fluxo do seus programa dilogo.

Screen Painter - ABAP/4

Para criar uma tela, siga os seguintes passos:


o Defina as caractersticas bsicas da tela (screen atributes)
o Projete um layout de tela (in full screen editor)
o Defina os atributos dos campos (field list)
o Escreva o fluxo lgico da tela (programa)
Os componentes do programa ABAP/4 mais importantes so encontrados nos seguintes objetos:
o Global data ou Estruturas do Dicionrio no programa include TOP (declaraes data)
o Module PBO (Process Before Output Processos antes de Apresentar a Tela)
o Module PAI (Process After Input Processos aps Entrada de Dados)
o Sub-rotinas (se necessrio)

Comunicao: Tela ABAP/4 module Pool

O fluxo lgico da tela dividido em dois eventos para cada tela:


o O evento PBO executado antes da tela ser apresentada.
o O evento PAI executado aps o usurio pressionar ENTER.
O sistema processa os mdulos de evento numa seqncia
Em cada mdulo, o controle passa do processador de dilogo para o processador ABAP/4. Depois
do processamento, o controle retornado para o processador de dilogo.
Quando todos os mdulos do PBO forem processados, o contedo dos campos da rea de
trabalho (work rea) ABAP/4 so copiados para os campos de mesmo nome da rea de trabalho
(work rea) da tela.
Antes do mdulo PAI processado. O contedo dos campos na rea de trabalho da tela (work
rea) so copiados para campos de mesmo nome na rea de trabalho (work rea) ABAP/4.

Definindo o Layout (Graphical Screen Painter)

Para projetar telas, voc usa o Screen Painter.


A interface do Graphical Screen Painter contm funes fceis de usar para definir os vrios
elementos da tela (ex.: campos de entrada e sada, campos textos, caixas, etc.). Voc escolhe
cada elemento da tela e posiciona na tela usando o mouse.
Para deletar elementos da tela, voc seleciona o elemento com o mouse e ento escolhe Delete.
Para mover elementos da tela, voc usa o mouse para arrastar o elemento para a posio
desejada.

by BBKO Consulting

128

Academia SAP/ABAP R3
Note:

Na verso 3.0, a Graphical Screen Painter suportada pelo Windows NT, Windows 9x
e UNIX. Se voc est usando outro sistema operacional, voc usa a Alphanumeric
Screen Painter.

by BBKO Consulting

129

Academia SAP/ABAP R3

Visualizaes de Listas de Campo (Field List Views)

Field types
Texts/templates
General attributes
Display attributes
Modification groups
Matchcode/reference

H seis visualizaes de listas de campos para manuteno dos atributos dos campos da tela.
Alternativamente, voc pode defini-los de uma das listas. Manuteno de atributos para um
campo tambm possvel no fullscreen editor.
Voc pode descobrir o correspondente do tipo de dado externo para o tipo de dado interno (ex.:
tipos de dados ABAP/4) pela referida documentao da palavra chave TABLES no ABAP/4.
Exemplos so os seguintes:
Tipo de dados do dicionrio ABAP/4
CHAR
NUMC

Tipo de dados no ABAP/4


C
N

Definindo o controle do fluxo


PORCESS BEFORE OUTPUT.
MODULE
INITIALIZE.
PROCESS AFTER INPUT.
MODULE
READ_SPFLI.

Voc especifica a definio de seus Mdulos de comandos na lgica do fluxo.


Se voc escolhe um mdulo com duplo clique, o sistema cria os comandos adequados MODULE
... ENDMODULE no programa include apropriado. Este conhecido como navegao adiantada.
Se no existe o programa include, o sistema criar um se voc permitir. Ele tambm insere um
comando INCLUDE no programa principal.

Processando o MODULE POOL


MODULE INITIALIZE OUTPUT.
CLEAR SPFLI.
ENDMODULE.
MODULE READ_SPFLI INPUT.
SELECT SINGLE * FROM SPFLI
WHERE CARRID = SPFLI-CARRID
AND
CONNID = SPFLI-CONNID.
.
.
.
ENDMODULE.

Os comandos do ABAP/4 do MODULE para PBO contm uma adio OUTPUT, quando os
comandos do mdulo for do mdulo PAI contm uma adio INPUT.

by BBKO Consulting

130

Academia SAP/ABAP R3

Definindo campos no MODULE POOL


Top include
MTALATOP
PROGRAM SAPMTALA.
TABLES: SPFLI.
DATA:
...
.

OU
GLOBAL DATA
DATA: ... .

No processamento de dilogo, o dado passado entre as telas e o processamento do programa


ABAP/4. O sistema executa esta comunicao automaticamente, mas voc deve usar nomes
idnticos nas telas e no MODULE POOL.
Defina os campos relevantes como dados globais no programa include TOP. Para fazer isso, voc
processa o programa include como um todo ou relacionando sees de dados globais ou
estruturas do Dicionrio. Mesmo que, o programa include TOP est implicitamente no controle.

Definindo chamadas (Cdigos de Transao)


STMP
Programs
SAPMTALA
Create
Transactions
Escolher
Cdigo de Transao
Tipo de Transao
Continue
Transaction code
Transaction text
Program
Screen number

TALA
X Dialog transaction
TALA
Test
SAPMTALA
100

Voc pode iniciar um programa de dilogo ABAP/4 (transao) com um especfico cdigo de
transao.
Tansaes customizadas devem comear com Z ou Y.
O sistema cria suas especificaes na tabela TSTC (ao invs de criar uma transao na lista de
objetos, voc pode dar manuteno na tabela voc mesmo)

Checagem automtica de campo de Entrada

Aps o usurio ter finalizado uma tela (ex. ter entrado dados e pressionado a tecla ENTER ou ter
acionado alguma outra funo), mas antes dos mdulos do PAI serem processados, o
processador de dilogo executa um nmero de checagens automticas.
O primeiro destes s ser certificado so os campos requeridos na entrada de dados.

by BBKO Consulting

131

Academia SAP/ABAP R3

Uma chave estrangeira executada somente se um campo da tela se referir a um campo do


Dicionrio pela qual a checagem da tabela tem de estar definida e o atributo apropriado tem de
estar selecionado.
Em algum momento, a funcionalidade F4 ativada. Isso significa que possvel a entrada de
dados para um campo. Ex.: a chave de valores da tabela de checagem so apresentadas.

Checando campo de entrada no MODULE POOL com dilogo


de erro

PROCESS AFTER INPUT.


FIELD <screen field>
MODULE <module>.

MODULE module INPUT.


.
.
.
MESSAGE E... .
ENDMODULE.

Se voc quer checar valores de entrada no MODULE POOL e iniciar um dilogo de erro de um
resultado negativo, voc usa o comando FIELD com a adio MODULE. Isto significa que o
relevante mdulo executado somente para o campo especificado no comando FIELD.
Se o mdulo resulta numa mensagem de erro (E) ou warning (W), a tela reapresentada sem o
processamento dos mdulos PBO. O texto da mensagem apresentado e somente o campo
checado por este mdulo apresentado para entrada de dados novamente.
Note que somente o comando FIELD responsvel por fazer a leitura do campo para entrada
novamente. Se voc formular uma mensagem num mdulo sem chamar o mdulo no comando
FIELD, a mensagem apresentada, mas o campo no lido para entrada de dados novamente.

Checando Grupo de Campos


PROCESS AFTER INPUT.
CHAIN.
FIELD: screen field1,
screen field2,
...
screen fieldn.
MODULE module.
ENDCHAIN.
MODULE module INPUT.
...
MESSAGE E ... .
ENDMODULE.

Se voc quer checar muitos campos para entrada de dados novamente no evento de um erro de
dilogo, voc deve especificar todos no comando FIELD e concatenar estes junto com o comando
MODULE para checagem no CHAIN.
Um campo pode ser usado em diferentes CHAINs.
Note que o comando FIELD no somente faz a leitura para entrada de dados novamente.
Qualquer um dos campos modificado durante o processamento do PAI somente se torna visveis
no evento do erro se eles so tambm especificados no comando FIELD do referido CHAIN.

by BBKO Consulting

132

Academia SAP/ABAP R3

Lendo Cdigos de Funo em Programas

Cada boto deve ter um cdigo de funo


Quando o usurio pressionar o boto, o mdulo PAI acionado.
Quando o usurio chama uma funo (pelo significado do boto, menu de entrada ou tecla de
funo), o cdigo de funo aparece no campo que voc entra no na lista de campo que os
atributos pr-definidos de tamanho 4 e formato OK. Isto conhecido como campo de OK code.
Poder reagir a um cdigo de funo no module pool do ABAP/4, voc define um identificador
nomeado Ok code. Este contm o cdigo da funo atual depois do campo ter sido transportado.
Voc est recomendado a usar uma verso de backup do campo de okcode para evitar enviar
uma tela que j tem um cdigo de funo.

Seqncia Dinmica de Tela: Overview

Voc pode modificar uma seqncia de tela dinamicamente por


o Usando SET SCREEN para atualizar a prxima tela temporariamente
o Usando CALL SCREEN para inserir um processamento de uma ou mais telas antes da tela
atual. O processamento da tela atual continua com os comandos aps esta chamada.

Ajustando a Prxima Tela Dinamicamente

O comando SET SCREEN nnnn altera temporariamente a prxima tela.


A tela nnnn deve ter uma tela no mesmo module pool.
A prxima tela processada depois da tela atual, a menos que voc termine a tela atual com o
comando LEAVE SCREEN.
Se voc quer encerrar a tela atual e ir diretamente para a prxima tela num nico passo, voc
pode usar o comando LEAVE TO SCREEN nnn.

Menu Painter - Overview

Voc usa o Menu Painter para definir funes na tela no stautus particular e determina-as para a
barra de menus prpria. Para cada status, voc define que as funes de menu esto ativas ou
inativas.

Definindo a Interface I

Numa request, o sistema prope valores padres para barra de menu e define a tecla de funo,
mas voc pode modificar isso.
Barras de menu podem conter at oito menus. Voc pode definir at seis destes, mas os menus
System e Help so adicionados automaticamente pelo sistema.
Um nico menu contm at 15 entradas, incluindo as funes e suas descries, nomes de submenus e linhas separadoras.
Voc poderia especificar tambm todas as funes que so ativadas num status como ativa na
barra de menu.

by BBKO Consulting

133

Academia SAP/ABAP R3

Definindo a Interface II

Voc determina as funes ativas que um usurio provavelmente mais precisa no situao atual
para a barra de botes. Antes de voc fazer isso, o cdigo de funo deve ser determinado para
uma tecla de funo.
Voc determina cdigos de funo para teclas de funo pelas entradas destas em
Configuraes Recomendadas de Teclas de Funes ou Sees de Teclas de Funo Definidas
Livremente .
O sistema automaticamente define as teclas de funo no padro barra de ferramentas para
teclas de funo especial.

Definio Automtica de cones para Teclas de Funo


Tecla de Funo
Enter
F11
F3
Shift+F3
F12
Ctrl+P
Ctrl+F
Ctrl+G
Ctrl+Screen up
Screen up
Screen down
Ctrl+Screen down
F1

Significado
Enter
Salvar
Voltar
Sair (programa)
Cancelar (tela)
Imprimir
Pesquisar
Continuar Pesquisando
Primeira Pgina
Pgina Anterior
Prxima Pgina
ltima Pgina
Help

Icon (Smbolo)
ticado
Pasta
Seta p/ a esquerda
Seta p/ cima
X
Impressora
Binculo
Binculo +
Pgina com seta dupla
Pgina com seta p/ cima
Pgina com seta p/ baixo
Pgina com seta dupla
Interrogao

O sistema define automaticamente cdigos de funo que voc define na barra de ferramentas
padro para teclas de funo especial.
Para descobrir quais definies aplicadas para as funes no status atual, clique no termo Barra
de Ferramentas Padro.

Definindo Menus de rea

Quando for dar manuteno em Menus de rea (que so desenvolvimentos de objetos de


classes), voc usa uma verso especial do Menu Painter. Aqui, voc define os cdigos de
transao para programas dilogos chamados ao invs de especificar cdigos de funo.
Esses cdigos de transao no tm tipos especiais de funo. Eles trabalham como CALL
TRANSACTION.

by BBKO Consulting

134

Você também pode gostar