Você está na página 1de 75

1

TREINAMENTO ABAP BSICO

Curso Bsico
ABAP/4

Joclio Pereira

TREINAMENTO ABAP BSICO

Conceito breve do SAP


SAP um software de Gesto Empresarial criado por uma empresa
alem que tem o mesmo nome SAP AG (SAP associao annima). O
significado da sigla uma abreviao de Systeme, Anwendungen und
Produkte in der Datenverarbeitung, no idioma alemo, que quer dizer,
em portugus Sistemas, Aplicativos e Produtos para Processamento
de Dados.
O Inicio
O software SAP nasceu em 1972 com a segunda verso do "R/1" ou
"real-time data processing", um software de gesto contbil criado
pela empresa, a verso "SAP R/2" ou "Real time System Version 2", foi
o primeiro produto de sucesso criado pela empresa, pois era
constitudo por vrios mdulos e foi utilizado at 1995 por quase duas
mil empresas no mundo.
A Evoluo
Conforme o software ia melhorando a empresa lanava novas
atualizaes e verses dos mdulos, a verso R/3 veio destinada a
trabalhar no sistema cliente/servidor e por isso trouxe uma grande
diferena da verso R/2 que era destinada a mainframe.
A verso R/3 ou SAP R/3 oferece diversas funcionalidades que as
grandes corporaes necessitam, atravs dos seus mdulos que
contem diversas aplicaes voltadas s reas de negcio. Esses
mdulos atendem as necessidades nas reas de produo, finanas,
vendas e distribuio e recursos humanos.
No Brasil, hoje, o SAP um sistema bem difundido, utilizado por
empresas representativas como a CEMIG, EMBRAER, BUNGE,
USIMINAS, PETROBRAS, COPASA, RGE entre diversas outras grandes
empresas.
O SAP R/3 constitudo por processos de negcio baseados em
prticas consagradas no mundo dos negcios. O sistema oferece o
processamento de informaes em verdadeiro tempo real ao longo da
empresa onde estiver implementado. Em funo da forma que o
software bem configurvel ele se torna compatvel com todos os
seguimentos de negcios e a disponibilidade das informaes que ele

TREINAMENTO ABAP BSICO

promove faz dele o software mais bem aceito em todo mundo, se


tornando o top entre todos os softwares ERP.
O sistema SAP R/3 malevel de forma que aceita ser executado em
vrias plataformas de Hardware. Essa maleabilidade tambm permite
que as telas e relatrios sejam configurados conforme a necessidade
da empresa.
Vrios usurios podem alterar informaes simultaneamente
Os relatrios e outras transaes so atualizados on-line
Suporta a utilizao em vrios idiomas.
Permite transaes em vrias moedas.
Possui funcionalidades especificas para cada pais, tais como as
legislaes vigentes sobre impostos e relatrios governamentais
contbeis.

Arquitetura do SAP

Instncia X Client
Tambm muito importante o conceito do funcionamento do
ambiente do sistema durante a evoluo de um projeto. Inicialmente
devemos entender os conceitos de client e instncia:

TREINAMENTO ABAP BSICO

Client definido como sendo uma unidade independente do R/3,


em termos comerciais, organizacionais e tcnicos. Isso significa que
possuem sua prpria configurao, dados de aplicao e dados
cadastrais (mster data).
Instncia definida como um ambiente do R/3 que agrupa um ou
mais clients, onde se executa um determinado trabalho.
Uma instncia de trabalho, geralmente possui mais de um client,
onde so trabalhados simultaneamente diferentes frentes de trabalho
do projeto. A inteno dessa diviso que se possa trabalhar
somando valores, sem que haja conflitos de interesse. Por exemplo,
durante um projeto, o client para desenvolvimento das customizaes
de ABAP deve ser diferente dos outros, pois trabalha muito com
testes e alteraes constantes, o que inviabiliza outros tipos de
servios. Se essa diviso muitas vezes ajuda, algumas vezes
atrapalha.
Geralmente as massas de dados so diferentes nos clients, e o
comportamento principalmente nos testes dos produtos customizados
pode ser diferente. O recomendado pela prpria SAP que exista um
client s para testes, com massa de dados completa que permita
recarga sempre que necessrio, o que permitiria que as condies
de teste pudessem ser repetidas. No dia a dia de um projeto isso
muito difcil, pois a manuteno desses clients pelo time de basis
geralmente no muito bem vista.
As instncias variam tambm ao longo de um projeto. medida que o
sistema vai sendo refinado, geralmente se inicia uma nova instncia
livre dos vcios e restos de testes da anterior. Pelo menos 3 instncias
sempre existem durante o perodo de um projeto. A instncia de
desenvolvimento, a de pr-produo e finalmente a de produo.
Cada vez que o sistema migrado de uma instncia para a outra,
somente deve ser aproveitado o que est comprovadamente
funcionando na instncia anterior, de modo a diminuir os erros a cada
migrao.

TREINAMENTO ABAP BSICO

Mdulos Mais Comuns

Contabilidade Financeira (FI)


O mdulo de aplicao FI aplica-se a
contabilidade principal automtica e
aos relatrios, a contabilidade de
clientes e fornecedores e
administrao de outras contas de legder com planos de contas
definidos pelo usurio.
Contabilidade de custos (CO)
O mdulo de aplicaes CO abrange os movimentos dos custos e das
receitas da empresa.
Planejamento de Produo (PP)
Aplica-se ao planejamento e ao controle das atividades de produo
da empresa.
Administrao de Materiais (MM)
Apia as funes de suprimentos e de manuteno de estoques
necessrias para os processos empresariais dirios.
Vendas e Distribuio (SD)
Apia a otimizao de todas as tarefas e atividades que ocorrem na
venda, no fornecimento e no faturamento.
Recursos Humanos (HR)
O mdulo HR planeja, registra e avalia todos os dados relativos aos
empregados.
Outros: AA, PM, PS, WF, IS, QM.

Acessar o SAP

TREINAMENTO ABAP BSICO

Para acessar o SAP digite o client (mandante), usurio e senha.


(O acesso ser no idioma padro da instalao, para mudar preciso
identific-lo no campo Idioma)

TREINAMENTO ABAP BSICO

Atalhos e Transaes

Transao um cdigo alfanumrico de 20 caracteres, utilizado para


iniciar um processo dentro do sistema SAP. Todo e qualquer processo
ou parte dele deve ser executado dentro do sistema atravs de uma
transao.
Na customizao de ABAP/4, sempre que um GAP do sistema
coberto, isso gera pelo menos uma transao, de modo que o usurio
possa executar esse produto customizado de dentro do sistema.
Toda operao realizada atravs do menu do sistema, tambm
corresponde a uma transao. Um mtodo para conhecermos o
cdigo de uma transao cujo caminho pelo menu sabido,
entrarmos na mesma, e na tela inicial desta transao, utilizarmos o
menu Sistema Status, que informa o programa tela e transao
executados.

Praticar!!!
1. Acessar transaes
a. SD (VA03, VL03N, VF11)
b. FI (F-02, FB03, FBL3N)
c. MM (MM01, ME51, ME21N).
DEFINIO
ABAP (Advanced Business Application Programming) uma
linguagem de programao de alto nvel desenvolvida pela empresa
de software SAP. a principal linguagem utilizada no produto mais
conhecido desta empresa, o SAP R/3, um software ERP.
O ABAP tem uma sintaxe semelhante ao COBOL. Em 1999, com a
verso R/3 4.5, a SAP lanou uma verso de ABAP que suporta

TREINAMENTO ABAP BSICO

programao por objetos.


A verso mais recente da plataforma de desenvolvimento da SAP, o
NetWeaver, suporta programao em ABAP e em Java.
No desenvolvimento de customizaes ABAP/4, as principais
transaes utilizadas, so:
SE38 abre o editor ABAP/4
SE16 permite a visualizao do contedo de tabelas do SAP
SE11 permite a visualizao da arquitetura de uma tabela/estrutura
do SAP
SE43 criao de menus
SE93 criao de transaes customizadas
SE71 criao e manuteno de formulrios SAPscripts
SMARTFORMS criao de formulrios avanados
CMOD criao de projetos Exits (Field Exits, User Exits, ...)
O editor de programao ABAP/4 do SAP pode ser encontrado atravs
do caminho:
Menu SAP Ferramentas ABAP Workbench Desenvolvimento ->
Editor Abap ou pela transao SE38.

Uma tela para a entrada do nome do programa aberta, como


exemplificada abaixo. Para criar um programa novo, utilize um nome
ainda no existente no repositrio, e apertar o boto Criar.
Para editar ou exibir um programa j existente, entrar com o nome do
programa e apertar os botes respectivos.

TREINAMENTO ABAP BSICO

A aparncia do editor no difere muito de um editor de texto


bem simples, onde se possvel escrever linhas de comando e lgica.

Conveno de Nomes para Editor ABAP.


Existe um padro de nomenclatura que deve ser seguido, no
s para nome de programas, mas para todos os desenvolvimentos no
SAP R/3.
Esses padres podem variar de projeto a projeto e
principalmente com a verso do SAP com a qual se est trabalhando.
Em todos os casos os nomes dos desenvolvimentos comeam sempre
com Z ou Y.

10

TREINAMENTO ABAP BSICO

Comumente usa-se o padro: Z + Mdulo + Tipo de programa +


Sequencial.
EX: ZSDR001
Comumente usa-se Y para indicar que um programa de teste
ou treinamento.

A aparncia do editor no difere muito de um editor de texto


bem simples, onde se possvel escrever linhas de comando e lgica.
Um dos recursos permitidos para que se utilize outro editor como o
Note Pad do Windows, o recurso de Download e Upload. Atravs do
menu Utilitrios Outros Utilitrios Upload/Download, o sistema
permite que cdigos escritos em outros editores possam ser
carregados no editor ABAP/4 e vice-versa.
Esse recurso nos permite salvar os cdigos ainda inativos ou
incompletos. extremamente til para mantermos um controle
prprio das verses quando se est codificando.

11

TREINAMENTO ABAP BSICO


ABAP HELLO WORLD
O "Hello World" um clssico. Na grande maioria dos livros de programao o
primeiro exemplo de cdigo um "Hello World". Ento vamos ver um simples "Hello
World" em ABAP.
Abra o Editor ABAP (SE38), informe o nome do programa (o nosso ZOLAMUNDO),
clique em "Criar".

SE38 ABAP Editor

Na janela de atributos, d um ttulo qualquer para o seu programa e defina o tipo


como "Programa executvel".

SE38 Atributos do programa

12

TREINAMENTO ABAP BSICO

Clique em "Salvar". Na prxima janela clique em "Objeto Local".

Digite o cdigo abaixo:

REPORT

ZOLAMUNDO.

* Parmetro para nome, tipo caracter, tamanho 30


PARAMETERS p_nome(30) TYPE c.
* Se o nome no foi preenchido, imprime 'Ol mundo!'
* Caso contrrio, imprime um ol personalizado
IF p_nome IS INITIAL.
WRITE: / 'Ol mundo!'.
ELSE.
WRITE: / 'Ol', p_nome.
ENDIF.
Agora s salvar e executar, clicando neste cone
ou simplesmente
pressionando F8. Na tela de seleo, voc pode digitar seu nome e executar (F8) ou
s executar para ver um Ol mundo!.

Parameters
Definio de parmetros do relatrio.
S faz sentido em programas de relatrio, isto , os programas
definidos como o tipo "1" nos atributos. Voc executar programas de
relatrio com a indicao SUBMIT.
Exemplo:
Report ztesteparametros
Parameters: p_nome(20) type c.
Write: p_nome.

13

TREINAMENTO ABAP BSICO

Nota: Tipos de dados:

14

TREINAMENTO ABAP BSICO

Data Dictionary

15

TREINAMENTO ABAP BSICO

1. Objetivos

Apresentar conceitos de Bancos de Dados Relacionais


SAP vs Modelo Relacional
Conhecer as ferramentas bsicas do Dicionrio de Dados
do R/3
Criar objetos atravs do Dicionrio de Dados

2. Conceitos de Bancos de Dados Relacionais

Modelo Entidade-Relacionamento
Modelo desenvolvido para facilitar o projeto de banco de dados,
permitindo a especificao de um esquema que represente a
estrutura lgica global de um banco de dados.
Entidade: um objeto que existe e distinguvel de outros objetos,
ou seja, identifica o agrupamento de objetos do mesmo tipo.
Exemplos: Clientes, Bancos, Agncias, Contas-Corrente.
Atributos: So os qualificadores de uma entidade, isto ,
representam no modelo o que uma entidade pretende ser. Exemplos:
Nome, RG, CPF, Endereo, Nro Conta, Nro Agncia, Nro Banco
Domnio: Conjunto de valores permissveis para um atributo.
Exemplo: Estado Civil, Sexo, Cor, Meses do Ano.
Relacionamento: a associao entre duas entidades, ou seja,
representa a maneira como duas entidades esto relacionadas ou
ligadas. Exemplos: Conta-Corrente de um Cliente, Agncias de um
Banco, Contas-Corrente de uma Agncia.
Restries de Mapeamento: Representam o modo como as
diferentes entidades de um modelo se relacionam. Determinadas pela
cardinalidade dos relacionamentos entre as entidades.
Um-para-Um: Uma ocorrncia da Entidade A est relacionada com
uma e apenas uma ocorrncia da Entidade B.
Um-para-N: Uma ocorrncia da Entidade A est relacionada com
uma ou vrias ocorrncias da Entidade B.
N-para-Um: Vrias ocorrncias da Entidade A esto relacionadas
com apenas uma ocorrncia da Entidade B.
N-para-N: Vrias ocorrncias da Entidade A esto relacionadas com
vrias ocorrncias da Entidade B.
Modelo Relacional
Um banco de Dados Relacional a implementao fsica do Modelo

16

TREINAMENTO ABAP BSICO

Entidade-Relacionamento e traduz concretamente o que o modelo


conceitual procura representar. Consiste em uma coleo de tabelas
cada uma das quais, associada a um nome nico e que possuem
relacionamentos entre si. Tabelas representam fisicamente as
Entidades.
Cada tabela possui uma estrutura similar quilo que pretende a
representar, isto , tabelas so formadas de linhas que por sua vez
so formadas por colunas. Colunas representam fisicamente os
Atributos.
A cada linha da tabela chamamos de Ocorrncia e o conjunto de
ocorrncias pode ou no estar relacionado com ocorrncias de outras
tabelas.
Como distinguir as ocorrncias umas das outras?
Utilizando o conceito de Chave Primria!!
Chave Primria: Conjunto de atributos que garante a unicidade de
cada ocorrncia da tabela. Exemplos: RG, CPF, Nro Chassis.
Normalizao: Processo de reconhecimento da chave primria
Como representar os relacionamentos entre tabelas?
Transferindo a chave primria de uma tabela para a outra!!
Chave Estrangeira: Quando a chave primria de uma tabela um
atributo em outra(s) tabela(s).
Como definir todos esses elementos num BD?
Utilizando linguagens especiais para cada Sistema Gerenciador de
BD.
SQL:
Structured Query Language Linguagem desenvolvida nos anos 70
para definio e manipulao de dados em sistemas de bancos de
dados relacionais. Conjunto reduzido de comandos, sem recursos de
lgica, nica e exclusivamente para criar objetos no banco de dados e
permitir que os dados possam ser mantidos, de acordo com as
necessidades funcionais.
Nos gerenciadores de BD, ferramentas especficas de cada fabricante
oferecem recursos adicionais para a contruo de lgica. Outras
linguagens foram adaptadas para trabalharem em conjunto com o
SQL, como COBOL, C e ABAP/4. O SQL utilizado no R/3 proprietrio e
segue um mnimo da regulamentao internacional para esta,
estando longe de possuir os mesmos mecanismos de funcionamento.
Seus comandos podem ser divididos em:

17

TREINAMENTO ABAP BSICO

DDL: Data Definition Language Comandos especficos para


definio de objetos do banco de dados. Exemplo: Create Table,
Create View, Create TableSpace, Drop Table, etc.
DML: Data Manipulation Language Comandos especficos para
tratamento dos dados armazenados nos objetos do banco. Exemplo:
Select, Insert, Delete, Update, etc.

3. R/3 Data Dictionary


O dicionrio de dados do ABAP/4 (DD) uma fonte central de
informaes provenientes do sistema gerenciador de dados do SAP.
Sua principal funo suportar a criao e o gerenciamento das
definies de dados, tambm conhecidas como metadados.
Neste curso, o DD ser utilizado em exerccios prticos com o
seguinte objetivo:
Visualizar objetos do SAP (Tabelas, estruturas, elementos de
dados, domnios, etc)
Observar a estrutura e atributos dos dados armazenados nas
bases de dados do SAP.
Fazer consultas (query) de dados.
Descobrir os relacionamentos entre diferentes objetos (tabelas
e estruturas de dados).
Criar objetos (Tabelas, estruturas e elementos de dados) a partir
do dicionrio.

Funes desempenhadas pelo Data Dictionary:

Gerenciamento das Definies de Dados


o Criao e manuteno das definies de dados num
repositrio central
Proviso de informaes para avaliaes
o Permite obter informaes sobre o modo como os objetos
esto relacionados
Suporte ao desenvolvimento
o Diferentemente de outros dicionrios de dados, est
integrado ao ambiente de desenvolvimento de modo que
alteraes ou criao de novos objetos promovem
automaticamente a gerao dos outros objetos
dependentes, sejam eles parte do dicionrio ou
programas aplicativos.
Suporte documentao
o Permite obter documentao atualizada
Garantia de que as definies de dados sejam flexveis e
atualizadas
o Gerao de objetos de runtime garantindo performance.

18

TREINAMENTO ABAP BSICO

Transao SE11

Tabelas: Definir a estrutura das tabelas transparentes onde os dados


sero armazenados fisicamente.
Estruturas: Definir estruturas que viro a ser utilizadas em
programas para definir a estrutura de uma tabela interna, ou como
include em uma estrutura de uma tabela transparente.
Vises: Definir relacionamentos entre tabelas transparentes para
facilitar o acesso ao banco de dados, geralmente so criadas para
substituir select joins que durante a execuo do programa
degradam a performance do mesmo.
Elementos de dados: Associar os atributos tcnicos e significado
para um campo em uma tabela.
Domnio: Definir atributos tcnicos que sero atribudos a um
elemento de dados
Objetos de bloqueio: Definir os bloqueio de acesso aos dados no
banco de dados
Ajuda p/ pesquisa: Definio dos objetos de matchcode que sero
utilizados nas telas do SAP

19

TREINAMENTO ABAP BSICO

Grupos de tipos: Os tipos de dados que definem a estrutura de uma


tabela, o tipo do campo em um domnio podem ser armazenados em
um pool de tipos, para posteriormente acion-los em uma funo ou
programa.

Tipo de Dados e Domnios

O ideal que construamos domnios e a partir dos domnios


construamos elementos de dados e a partir dos elementos de dados
construamos os tipos complexos, embora possamos construir os Data
Elements , as Structures e Table Types a partir dos tipos elementares.
Os domnios armazenam informaes tcnicas sobre a informao,
como por exemplo, tipo elementar e tamanho.
Os Elemento de Dados podem ser criados a partir dos domnios ou a
partir dos tipos elementares, mas o indicado que sejam criados a
partir de domnios. Essa indicao apenas uma normalizao (uma
boa prtica), ou seja, no implicar no desempenho do sistema. Uma
das funes dos elementos de dados justamente armazenar a
semntica da informao, por isso deixou-se as informaes tcnicas
no Domnio. Por exemplo, se um aplicativo necessita da informao
da cidade origem e cidade destino, podemos criar um Domnio
Cidade, que receber texto de tamanho 30 e 2 Elemento de Dados,

20

TREINAMENTO ABAP BSICO

sendo um CidadeOrigem e outro CidadeDestino que tero a sua


tipagem configurada pelo Domnio Cidade. Note que demos aos
Elemento de Dados CidadeOrigem e CidadeDestino significados
distintos apesar de armazenarem informaes iguais (nome de
cidades).
OBS: Domnios no podem ser utilizados em programas para
declarao de variveis, ou utilizado na definio de estruturas e
tabelas. Podem apenas serem utilizados na definio dos Elemento de
Dados.

Criando um Domnio

Para criar um domnio siga os passos:


1
1
1
1
1
1
1
1
1

Abra o ABAP Dictionary (transao SE11);


Selecione a opo Domnio;
Digite o nome do novo domnio;
Pressione o boto Criar;
A transao "Dictionary: Manuteno de Domnio" abrir-se-;
Digite uma descrio (obrigatrio);
Selecione o Tipo de dados (trata-se o tipo elementar);
Informe o tamanho (campo No . Caracteres);
Se aplicvel informe as casas decimais. O nmero colocado neste
campo indicar que do tamanho total (item 8) ser
disponibilizado n casas para representao decimal;
1 Selecione a opo Sinal caso um numeral possa ser negativo ou
ento a opo Letras Maisculas caso um texto possa ser
minsculo;
1 Por fim, ative o domnio ( ).

21

TREINAMENTO ABAP BSICO

Criando um Elemento de Dados


2 Para criar um Elemento de Dados siga os passos:
3 Abra o ABAP Dictionary (transao SE11);
4 Selecione a opo Tipo de Dados;
5 Digite o nome do novo Elemento de Dados
6 Pressione o boto Criar;
7 Selecione a opo "Elemento de Dados";
8 A transao "Dictionary: Manter Elemento de Dados" abrir-se-;
9 Digite uma descrio (obrigatrio);
10 Selecione o Domnio (mas poderia ser tambm o tipo
elementar);
11 Na guia Titulo informe um texto que ser utilizado como rtulo
pelo SAP quando este Elemento de Dados for chamado;
12 Por fim, ative ( ) o Elemento de Dados.

22

TREINAMENTO ABAP BSICO

Note, na figura a seguir, que existe uma guia chamada Denominador


de campo. Nesta guia podemos colocar rtulos que podero ser
utilizados em telas ou telas de seleo para explicar o contedo do
campo.

23

TREINAMENTO ABAP BSICO

Estrutura Tabela

Explorando Funcionalidades (botes)

Modificar / Exibir a estrutura do objeto


Verificar objeto
Ativar objeto
Lista de utilizaes de objeto (Elemento de Dados, Domnio)
Visualizar estrutura de outro objeto
Chaves estrangeiras
Expande todas as estruturas includas na tabela
Expande uma estrutura includa na tabela
Comprime uma estrutura expandida da tabela
Comprime todas as estrutura expandidas da tabela
DER Grfico
Permite anexar campos estrutura da tabela
Configurao do tipo de dado armazenado, tamanho, buffer
Criao de ndices na tabela

24

TREINAMENTO ABAP BSICO

Opes tcnicas
Criao de ndices

Vises

Elemento de dados

25

TREINAMENTO ABAP BSICO

Domnio

4. EXEMPLOS
4.1 Visualizao da Estrutura de uma Tabela
a)

Visualizao da Estrutura de uma Tabela


Acessar o Dicionrio de Dados (FERRAMENTASS ABAP Workbench
Development ->ABAP Dictionary)
Entrar com o nome da tabela de Segmento do documento
contabilidade financeira (BSEG)
Clique na coluna Campo
Clique no boto Procurar ou CTRL + F e procurar o campo
WRBTR

b)
1. Acessar o Dicionrio de Dados:
Ferramentas ABAP/4 Workbench ABAP/4 Dictionary (SE11)
2. Informar o nome da Tabela BSEG <Mostrar>
3. Clique duplo na coluna Elemento de Dados BUKRS
4. <Voltar>
5. Clicar no matchcode da coluna Ctg
6. <Cancela>
7. <Procurar> o campo PSWSL
8. <Avanar>
9. Clique no boto <Chaves Externas>
10. <ENTER>
11. Clique duplo em sua Checar Tabela (TCURC)
12. <VOLTAR>
13. Clicar no boto <Outra Tabela>
14. Informe BKPF <ENTER>
15. Opo IR PARA ndices
16. Clique duplo #1
17. <VOLTAR>
18. <CANCELA>
19. Opo Utilitrios Administrao de Verso

26

TREINAMENTO ABAP BSICO

20. <VOLTAR>

4.2 Visualizao do Contedo das Tabelas


a)

Acessar UTILITRIOS -> Contedo de Tabela -> Mostrar (Transao


SE16)
Escolher uma tabela -> Clicar em executar (F8)
Acessar Configuraes -> Formato de Lista -> Selecionar Colunas
Desmarcar todos os campos (terceiro boto)
Marcar os campos: BUKRS , BELNR , WRBTR , HKONT, LIFNR
Clicar Aceitar
Acessar Configuraes -> Parmetros de usurio->
Mostrar
Escolher um campo para usar como filtro
Clique em Aceitar

b)
1. Procurar o campo WAERS
2. Digitar Tabela (TCURC) na SE16
3. Opo
Contedo de tabela (SE16)
4. <F8>
5. Clique duplo na coluna WAERS com valor ADP
6. Clique no campo WAERS e <F1>
7. Veja o help e depois <F9>
8. <Cancelar> / < Cancelar > / < Cancelar > (Contedo de tabela)
9. Voltar tela de estrutura de tabela (<Voltar> 3x)
10. Opo Contedo de Tabela
11. <F8>
12. Opo Opes Formato de Lista Seleo Coluna
13. Desmarcar todos os campos (terceiro boto)
14. Selecionar os campos BUKRS, BELNR, GJAHR e XBLNR
15. <ENTER>
16. Selecionar XBLNR = 000022-1
17. <F8>
18. <VOLTAR>
19. Opo Opes Critrios de Seleo
20. Selecionar tambm WWERT e TCODE <ENTER>
21. Encerrar o DD e retornar ao menu principal do R/3

27

TREINAMENTO ABAP BSICO

4.3 Criao de uma tabela customizada

a) Tabela de Contas do Razo


1- FERRAMENTAS ABAP/4 WORKBENCH ABAP/4 DICTIONARY
2- Nome do Objeto: ZFLABII# (# = nmero do grupo)
3- <CRIAR>
4- DESCRIO BREVE: Lab DD Grupo # - Tabela de Contas do Razo
5- CLASSE DE ENTREGA: A
6- Atualizao viso tabs. :
7- NOME DO CAMPO: MANDT: <ENTER>
(Obs: o campo MANDT sempre participa da chave primria e
obrigatrio para tabelas Client Dependent)
8- Campo: HKONT key: (copiar data-element de BSEG-HONT)
9- Repetir o processo para os seguintes campos:

10- Incluir um campo com as seguintes caractersticas:


- Field Name: OBS
- Data elem : TOBS_ACC (Double Click para criar)
- Short Text: Texto de Observao do Movimento

28

TREINAMENTO ABAP BSICO

- Domnios Name: TEXT50


- Data Type : CHAR
- Field length: 20
- Texts: 10 : Obs
15: Observao
20: Observao sobre o movimento
11- Salvar o Data Element
12- Ativar o Data Element
13- <BACK>
14- Salvar a Tabela
15- Verificar a Tabela
16- Ativar a Tabela

2.4. Criao de um Dilogo de manuteno para


tabela customizada

Aps criar uma tabela customizada, s vezes preciso que seja


criado um Maintenance Dialog Box, para que seja possvel incluir,
alterar ou excluir dados de uma nova tabela atravs da transao
SM30.
Criar um Function Group:
Transao SE80
Duplo clique na opo Function Group, utilizar o nome ZFG# e
pressionar CRIAR
Apresentar um nome condizente ao grupo de funes e pressionar
SAVE
Ativar a Function Group
Informar a Development Class utilizada at o momento e pressionar
SAVE

29

TREINAMENTO ABAP BSICO

Utilizar o mesmo transporte criado para a criao da tabela no item


anterior
Gerar Maintenance Dialog Box
Tools ABAP Workbench Development Other Tools General Table Maint.
Dialog (ou executar diretamente a transao SE54)
Escrever o nome da tabela ZTST#
Selecionar a opo Generated Objects e pressionar
CREATE/CHANGE
Pressionar YES no dialog de confirmao
Informar o Authorization Group &NC&, que no exige autorizao
Informar o Function Group ZFG# criado no item anterior
Selecionar a opo One Step para maintenance type
<Procurar n Tela> e <Continuar>
Pressionar CREATE
Informar a Development Class utilizada at o momento e pressionar
SAVE

Alterar a tabela criada


Executar a transao SM30
Informar o nome da tabela ZTST# e pressionar MAINTAIN
Pressionar NEW ENTRIES , incluir dados e salvar
Informar o mesmo nmero de transporte criado para o Function
Group
Selecionar uma das linhas da tabela e pressionar o boto DELETE
Confirmar a excluso

2.5. Criao de uma Transao para o Dilogo de


manuteno

Executar a transao SE93


Pesquisar no matchcode o nome da transao desejado (de acordo
com os padres de nomenclatura) e verificar qual o prximo
nmero vlido de transao
Informar o nome da nova transao
<CRIAR>
Escolher a opo " Transao com parmetros
<CONTINUAR>
Informar texto de descrio da transao (Texto da transao)
No quadro Valor proposto para, informar cdigo da transao
SM30
Escolher a opo omitir 1 tela
Na primeria linha do quadro "Valores Propostos" :
"Nome do campo da Tela" atribuir "VIEWNAME"
"Valor" atribuir < Nome da Tabela >
Na segunda linha do quadro "Default Values" :
"Nome do campo da Tela" atribuir "SHOW"
"Valor" atribuir X
<SALVAR>
Informar classe de desenvolvimento
Indicar o request equivalente da atividade
Sair da transao < Voltar >

30

TREINAMENTO ABAP BSICO

Testando a Transao:
Sair da transao SE93
Digitar o cdigo da transao criada

EXERCCIOS
DATA DICTIONARY
EXERCCIO 1
Criar uma ESTRUTURA com as seguintes caractersticas:
(Transao SE11 -> clicar em Data Type _> Create -> Selecionar
Estrutura
Name: ZSCRIPT# (# = nmero do grupo)

Short Text: Estrutura de preenchimento do layout set


M_TSTSCRIPT

EXERCCIO 2
Tabela BSEG
1 - Dado uma GL account HKONT = 50014001. Encontrar todos os
documentos associados, selecionar apenas os campos BUKRS, BELNR,
GJAHR, DMBTR, WRBTR, HKONT, DMBE2 e imprim-los.
2 - Dado o documento de nmero 1200000005. Verificar quais contas
incluem este documento (imprimir).
3 - Encontrar a GL account que inclui o documento do ex 2 e possui o
campo de line item (BUZEI) igual a 2.
Tabela BKPF
4 - Encontrar documentos que possuam:

31

TREINAMENTO ABAP BSICO

Empresa = RP01
Data Documento = 28.12.2000
Data Remessa = 28.12.2000

EXERCCIO 3

Criar uma Tabela com as seguintes caractersticas:


Name: ZTBL# (# = nmero do grupo)
Short Text: Tabela para manuteno via transao SM30

Criar um dilogo de manunteno com as seguintes caractersticas:


Function Group: ZGF#
Utilizar a transao SM30 para manuteno desta tabela.

32

TREINAMENTO ABAP BSICO

Criando um objeto MATCHCODE


Os matchcodes permitem acessar registros de dados que contm
informaes incompletas. O usurio pode entrar as informaes em
uma janela de matchcode, e o sistema procura no banco de dados os
registros que contm os dados especificados. Se o banco de dados
contiver mais de um registro correspondente aos critrios de
pesquisa, todos esses registros so exibidos em uma lista, em que
possvel selecionar o registro necessrio.

Criando uma Ajuda de Pesquisa.


Este ajuda ser impressa quando o usurio for preencher um
componente do tipo PARAMETER ou qualquer componente que tenha
que se fazer insero de dados.
Para criar uma Ajuda de Pesquisa entre na transao SE11.
Ser criado uma Ajuda de Pesquisa com base na tabela J_1BNFDOC,
o usurio ter que fazer a insero de dados em uma PARAMETER
informando o DOCNUM (Numero do documento) da nota fiscal, mais
antes de entrar com o numero ser mostrado um objeto MATCHCODE
contendo os seguintes dados referentes a cada nota fiscal:
DOCNUM: numero do documento fiscal
CRENAT: nome do usurio criado da nota
SERIES: serie da nota
Na transao SE11, entre com o nome da ajuda de pesquisa
ZHELPM e clique em criar, conforme a figura 1.

33

TREINAMENTO ABAP BSICO

Figura 1

Na tela de escolha, escolha a opo AJUDA P/ PESQUISA


ELEMENTAR, conforme a figura 2.

34

TREINAMENTO ABAP BSICO

Preencha a tela seguinte conforme a figura 3.

o Descrio Breve: Descrio da Ajuda de pesquisa


o Mtodo de Seleo: Nome da Tabela que ser feito a
referencia (para este exemplo a J_1BNFDOC).
o Tipo de Dialogo: Deixe a opo que vem por default.
o Parmetro de ajuda / Pesquisa: Nome dos campos da
tabela que sero apresentados na tela.
o IMP e EXP: Habilitar os valores para importao de
dados e exportao de dados, para que os dados sejam
transferidos.
o Elementos de dados: Referentes aos Nomes de campos
da tabela.
Aps o preenchimento SALVAR, CHECAR e ATIVAR:

Para utilizar a Ajuda de Pesquisa usaremos o seguinte trecho de


cdigo:
REPORT Y_MATHCODE.
TABLES J_1BNFDOC.
DATA: DOC(10) TYPE C.

35

TREINAMENTO ABAP BSICO

SELECTION-SCREEN BEGIN OF BLOCK bloco WITH FRAME .


PARAMETERS: P_DOC LIKE DOC MATCHCODE OBJECT ZHELPM.
SELECTION-SCREEN END OF BLOCK bloco.

Este trecho de cdigo gera a seguinte tela:

Quando for acionado o matchcode ser mostrado a seguinte tela:

Nesta tela contm os dados que foram inseridos na Ajuda de


Pesquisa.
Para gerar esta associao de Ajuda de Pesquisa utilizado o
comando:

36

TREINAMENTO ABAP BSICO

MATCHCODE OBJECT nome_ajuda_de_pesquisa


EX.:
PARAMETERS: P_DOC LIKE DOC MATCHCODE OBJECT ZHELPM.

Objeto de Bloqueio
No SAP, as transaes standard utilizam um conceito de bloqueio de
tabela, possibilitando um controle de acesso a informaes por vrios
usurios ao mesmo tempo. Para programas Z, devem ser
implementados Objeto de Bloqueio de forma a impedir que uma
tabela seja atualizada ao mesmo tempo por dois usurios diferentes
com dados diferentes.

O que so Objetos de Bloqueio?


Um objeto de bloqueio uma unio virtual de vrias tabelas SAP que
sincroniza o acesso simultneo de dois usurios ao mesmo conjunto
de dados ( Conceito de bloqueio SAP).
A solicitao e/ou a liberao dos bloqueios se realiza na
programao das transaes de dilogo atravs da chamada de
determinados mdulos de funo que so gerados automaticamente
a partir da definio dos objetos de bloqueio. Estes objetos devem ser
criados explicitamente no ABAP Dictionary.
Para fixar bloqueios, devem ser executados os passos seguintes:
1. Deve-se definir um objeto de bloqueio no ABAP Dictionary. O
nome do objeto de bloqueio deveria comear com E.

2. Automaticamente so criadas funes que podero ser


implementadas em programas que utilizam aquelas tabelas as
quais foram criados Objetos de bloqueio.

37

TREINAMENTO ABAP BSICO

3. Deve-se incluir os mdulos de funo para a solicitao e/ou


liberao de bloqueios na programao das transaes de
dilogo correspondentes. Os mdulos so criados
automaticamente ao ativar o objeto de bloqueio.

Definio de um bloqueio SAP

A descrio de um bloqueio SAP em uma tabela, efetuada por meio


da Condio de bloqueio e do Modo de bloqueio.
A condio de bloqueio uma condio lgica em relao s linhas da
tabela a bloquear. Ela descreve a rea da tabela que deve ser
protegida pelo bloqueio contra acesso simultneo. De modo a facilitar
a administrao de bloqueios, no possvel formular a condio de
bloqueio com a mesma liberdade que as Clusulas WHERE: A
condio s pode conter campos de chave primria completamente
qualificados, ligados por AND.
Por meio do modo de bloqueio, indicar quais as operaes na tabela
que devem ser protegidas pelo bloqueio. Os modos de bloqueio
disponveis so:

Bloqueio de leitura (bloqueio compartilhado)


Protege o acesso de leitura a um objeto. O bloqueio de leitura
permite a outras transaes o acesso de leitura mas no um
acesso de escrita rea bloqueada da tabela.
Bloqueio de escrita (bloqueio exclusivo)
Protege o acesso de escrita a um objeto. O bloqueio de escrita
no permite a outras transaoes nem o acesso de leitura nem
o acesso de escrita rea bloqueada da tabela.

38

TREINAMENTO ABAP BSICO

Bloqueio de escrita ampliado (bloqueio exclusivo sem


acumulao)
Funciona como um bloqueio de escrita, s que o bloqueio de
escrita ampliado tambm protege contra outros acessos da
mesma transao.

De modo a ser possvel definir os bloqueios SAP para uma tabela,


necessrio primeiramente, mediante Desenvolvimento-> ABAP
Dictionary, criar um Objeto de bloqueio para esta tabela.
Se os dados de um objeto de aplicao estiverem distribudos por
vrias tabelas de banco de dados, surge com freqncia a
necessidade de poder bloquear estas tabelas em simultneo. Por isso,
possvel incluir vrias tabelas em um objeto de bloqueio, as quais
tm, no entanto, de estar ligadas por Relaes de chave externa
apropriadas. As tabelas implicadas em um objeto de bloqueio
tambm so referidas como as suas Tabelas de base.

Atalhos no Editor ABAP


Assim como em outras IDEs, em outras linguagens de programao, o
editor ABAP disponibiliza uma srie de atalhos e facilidades para
otimizar o trabalho na implementao de cdigo fonte ABAP dentre
eles esto o menu de contexo e os atalhos de teclado.

Menu de Contexto
Para acionar o Menu de contexto no editor ABAP basta selecionar um
bloco de cdigo desejado e clicar com o boto direito sobre a seleo,
logo ser mostrado um menu com diversas opes. Alguns so
bastante usados, dentre eles:
Formato

39

TREINAMENTO ABAP BSICO

possvel selecionar uma linha de cdigo onde se queira adicionar


uma condicional IF... ELSE, clicar em Rodear com modelo sobre este
item e ser escrito no cdigo a estrutura do IF tendo como contedo
interno a esta estrutura o que fora selecionado. Assim pode ser feito
com: LOOP, region, DO, define ...

Comentar linhas
Podemos selecionar um bloco de cdigo que no dever ser
compilado pelo ABAP e coment-lo (no ficar ativo aquele pedao de
cdigo). Usa-se a opo comentar / descontentar linhas ou os atalhos
CTRL+<, CTRL+>.
Endentar
Para ficar com uma melhor visibilidade relativo as sintaxes dos
comandos sempre utilizamos endentao, um bloco IF...ELSE ficaria
como mostrado abaixo, internamente as linhas ficam mais afastadas.

40

TREINAMENTO ABAP BSICO

Pode-se utilizar o boto PRETTY PRINT na barra de botes para uma


rpida endentao de acordo com as configuraes do editor ABAP no
menu UTILITRIOS CONFIGURAES.
Navegao
Existem vrias outras opes que podero ser bem teis no dia a dia,
uma outra a para navegao dentro do cdigo. Podemos ir para
determinada linha atravs do menu de contexto Navegao ou
teclando CTRL+O.
Outra opo interessante atravs de atalho poder adicionar
bookmark, ou marcadores. Isso bem utilizado quando estamos
navegando por cdigos extensos. Para adicionar um bookmark tecle
CTRL+ALT+0... CTRL+ALT+1... para ir para aquele marcador utilize
CTRL+0... CTRL+1 respectivamente, bloco a bloco.

Tabelas Internas (com e sem linha de cabealho)


Se voc est familiarizado com programao, voc sabe que array
uma ferramenta poderosa que est presente em vrias linguagens de
programao. ABAP oferece Tabelas Internas funo dos arrays.
A diferena bsica no conceito de array em outras linguagens de
programao e tabelas internas encontra-se no modo para acess-la.
Acesso direto as tabelas no fornecida, no lugar disso usamos work
area que compreende a uma linha simples em uma tabela interna.

41

TREINAMENTO ABAP BSICO

Existem dois tipos de declarao para Tabela Interna que diferem no


modo como process-la.
Tabela Interna com linha de cabealho (With Header Line)
Tabela Interna sem linha de cabealho (Without Header Line)
Veja a seguir o exemplo e diferenas de ambos os tipos.
1

TYPES : BEGIN OF x_personnel,

id(10) TYPE C,

name(25) TYPE C,

END OF x_personnel.

5
6 DATA:

t_itab1 TYPE STANDARD TABLE OF x_personnel WITH HEADER LINE,

t_itab2 TYPE STANDARD TABLE OF x_personnel,

d_personnel TYPE x_personnel.

Para acessar todo o contedo de uma tabela interna ns usamos o


seguinte cdigo.
1
2

LOOP AT t_itab1.
WRITE: / t_itab1-name.

ENDLOOP.

LOOP AT t_itab2 INTO d_personnel.

5
6

WRITE: / d_personnel-name.
ENDLOOP.

Ambos os cdigos retornaro o mesmo resultado sendo que em


classes e mtodos no SAP no permitido tabelas internas com
cabealho. Usando header line, ns poderemos usar o nome da
varivel de tabela para acessar o contedo, de outra forma without
header line, contedos so acessados via um work area.
Para acessar um contedo simples com a chave correta, usamos a
instruo abaixo
1 READ TABLE t_itab1 WITH KEY id = '1234'.
2 WRITE : t_itab1-name.

42

TREINAMENTO ABAP BSICO


3 READ TABLE t_itab1 INTO d_personnel WITH KEY id = '1234'.
4 WRITE : d_personnel-name.

t_itab1 e d_personnel contem o primeiro registro encontrado que


satisfaz o critrio.
Usando header line pode causar ambigidade em cdigo, por
exemplo, CLEAR t_itab2 significa que voc limpou o contedo inteiro
da tabela t_itab2, Porm a instruo CLEAR t_itab1 somente limpar o
contedo do cabealho da t_itab1. Para limpar o contedo inteiro em
tabelas with header line, use parenteses ao final da instruo, ex:
CLEAR t_itab1[].

Comandos ABAP (Ordem alfabtica)

ADD VAR1 TO VAR2 COMANDO USADO ADICIONAR UM VALOR A OUTRO


CAMPO NUMRICO.
DATA wa TYPE I VALUE 3.
DATA wb TYPE I VALUE 4.
ADD wa TO wb.
WRITE wa. retorna 3
WRITE wb. retorna 7

APPEND T_TABELA COMANDO USADO PARA GRAVAR EM TABELA INTERNA


APPEND t_tabela.
AT END OF campo Em conjunto com o comando LOOP, identifica o ultimo
AT FIRST EM CONJUNTO COM O COMANDO LOOP IDENTIFICA O PRIMEIRO
REGISTRO DE UMA TABELA PERCORRIDA.
SORT BY campo.
LOOP AT t_tabela.
AT FIRST. entra nesta rotina ao iniciar o LOOP, somente no primeiro registro.
.
ENDAT.
...
ENDDLOOP.
AT LAST EM CONJUNTO COM O COMANDO LOOP, IDENTIFICA O ULTIMO
REGISTRO DE UMA TABELA PERCORRIDA.

43

TREINAMENTO ABAP BSICO


SORT BY campo.
LOOP AT t_tabela.
....
AT LAST. entra nesta rotina ao finalizar o LOOP, somente no ultimo registro.
.
ENDAT.
ENDDLOOP.
AT NEW CAMPO EM CONJUNTO COM O COMANDO LOOP IDENTIFICA O
PRIMEIRO REGISTRO DE UMA SEQNCIA (QUEBRA)
SORT BY campo.
LOOP AT t_tabela.
AT NEW campo. entra nesta rotina ao mudar de campo.
.
ENDAT.
...
ENDDLOOP.
CASE .. WHEN .. ENDCASE. COMANDO USADO PARA CONTROLE DE
VARIVEIS
CASE vl_okcode.
WHEN 'SIM'.
...
WHEN 'NAO'.
...
WHEN OTHERS.
...
ENDCASE.
CHECK VAR SEMELHANTE AO COMANDO IF.
Se a condio for verdadeira continua logo aps a verificao, se no aborta a
execuo.
FORM dados.
LOOP AT t_tabela.
t_tabela-campo = KUNNR.
CHECK t_tabela-campo = 0001. se o contedo do campo for igual a 0001,
continua
t_tabela-campo = 0002. executando a instruo abaixo, se for diferente aban
APPEND t_tabela. dona o loop e sai do form.
ENDDLOOP.
ENDFORM.
CLEAR VAR LIMPA O CONTEDO DE UMA VARIVEL OU TABELA
CLEAR var.

44

TREINAMENTO ABAP BSICO


CLEAR t_tabela. limpa o header line
COLLECT T_TABELA ORGANIZA A TABELA INTERNA COM TODAS AS
DESCRIES A ESQUERDA TOTALIZANDO OS CAMPOS NUMRICOS
COLLECT t_tabela.
Exemplo :
Tabela-nome = JOAO. , Tabela-uf = SP. , Tabela-valor = 100.
COLLECT tabela.
Tabela-nome = JOAO. ,Tabela-uf = RJ. , Tabela-valor = 300.
COLLECT tabela.
Tabela-nome = JOAO. , Tabela-uf = SP., Tabela-valor = 500.
COLLECT tabela.
Resultado : JOAO SP 600, JOAO RJ 300.
COMMIT WORK EFETIVA AS ALTERAES NO BANCO DE DADOS
COMMIT WORK.
CONCATENATE var1 var2 INTO
var3
Agrupa varias variveis em uma nica varivel
CONCATENATE abc XXX INTO var3. var3 = abcXXX
CONDENSE VAR REMOVE OS ESPAOS EM BRANCO EM UM TEXTO
Var = Dr..
CONDENSE var.
DATA var TYPE tp.
DATA var LIKE tp.
Define tabelas internas e variveis.
DELETE T_TABELA DELETA UM REGISTRO DE UMA TABELA INTERNA OU
TRANSPARENTE
DELETE t_tabela.
DO condio .. ENDDO. Cria um lao e verifica a condio no inicio do lao
DO condio. a condio verifica no inicio do lao e se for verdadeira continua
dentro
.... do loop
ENDDO.
FORM INDICA O INICIO DE UMA SUB-ROTINA
FORM dados.
.

45

TREINAMENTO ABAP BSICO


.
.
ENDFORM.
IF .. ELSE .. ENDIF. COMANDO DE DECISO.
IF var = A.
....
ELSE.
....
ENDIF.
IF NOT .. IS INITIAL. VERIFICA SE UMA VARIVEL OU TABELA INTERNA
ESTA VAZIA.
IF NOT var IS INITIAL.
....
ENDIF.
INITIALIZATION. EVENTO PARA INICIALIZAR AS VARIVEIS.
Deve ser o primeiro evento a ser colocado no programa. No
um evento obrigatrio.
TABLES ....
DATA .....
.....
INITIALIZATION.
INSERT T_TABELA_TRANSPARENTE. INSERE O CONTEDO DE UMA
VARIVEL EM UMA TABELA TRANSPARENTE
INSERT tabela.
LOOP AT T_TABELA. COMANDO USADO PARA LER UMA TABELA INTERNA.
LOOP AT t_tabela.
.
.
ENDDLOOP.
MODIFY t_tabela.
MODIFY T_TABELA TRANSPORTING CAMPOS
COMANDO USADO PARA MODIFICAR UMA TABELA INTERNA.
MODIFY t_tabela. modifica toda a linha da tabela

46

TREINAMENTO ABAP BSICO


MODIFY t_tabela TRANSPORTING campos modifica os campos selecionados
MOVE MOVE TODO O CONTEDO DE UMA TABELA PARA OUTRA.
OS CAMPOS DEVEM SER OS MESMOS.
LOOP AT t_tabela.
MOVE tabela.
INSERT tabela.
ENDLOOP.
COMMIT WORK.
MOVE-CORRESPONDING T_TABELA TO TABELA
MOVE APENAS OS CAMPOS CORRESPONDENTE ENTRE 2 TABELAS.
LOOP AT t_tabela.
MOVE-CORRESPONDING t_tabela TO tabela.
INSERT tabela.
ENDLOOP.
COMMIT WORK.
PERFORM NOME_FORMULARIO CHAMA UM FORMULRIO (SUBPROGRAMA)
PERFORM nome_do_sub_programa.
READ TABLE T_TABELA WITH KEY CAMPO = VALOR
USADO PARA LER UM REGISTRO ESPECIFICO.
SORT t_tabela1 BY campo.
LOOP AT t_tabela1.
* com o comando BINARY SEARCH a pesquisa fica mais rpida.
READ TABLE t_tabela2 WITH KEY campo = t_tabela1-campo BINARY SEARCH.
* aps o READ TABLE devemos verificar o resultado
IF SY-SUBRC EQ 0.
.... verdadeiro ( encontrou o dado )
ELSE.
....
ENDIF.
ENDLOOP.
REPLACE VAR WITH VAR2 INTO VAR3 REPLICA UM TEXTO DENTRO DE
OUTRO TEXTO.
DATA campo(4) TYPE C.
Campo = ABCD.
REPLACE B WITH texto INTO campo. novo valor de campo = AtextoCD

47

TREINAMENTO ABAP BSICO


SEARCH PESQUISA UM TEXTO DENTRO DE OUTRO
SEARCH CIDADE DE DEUS FOR DEUS.
IF SY-SUBRC = 0 .
... valor encontrado
ELSE.
...
ENDIF.
SKIP N COMANDO USADO PARA PULAR LINHAS EM RELATRIO.
WRITE IMPRIME UMA LINHA.
SKIP 2.
WRITE PULOS DUAS LINHAS.
SORT T_TABELA BY CAMPON COMANDO USADO ORDENAR TABELAS
INTERNAS
SORT t_tabela BY campo.
START-OF-SELECTION EVENTO USADO PARA MARCAR O INICIO DE UM
CONJUNTO DE SELEES DE DADOS.
START-OF-SELECTION.
SELECT marc~matnr marc~werks t001w~name1 makt~maktx
INTO TABLE t_marc
FROM marc
INNER JOIN t001w ON marc~werks = t001w~werks
INNER JOIN makt ON marc~matnr = makt~matnr
and makt~spras = sy-langu
WHERE t001w~werks IN S_CENTRO
AND marc~matnr IN S_MATERI.
END-OF-SELECTION.
TABLES TABELA USADO PARA ABERTURA DE TABELAS STD.
TABLES tabela.
TABLES : tabela1, tabela2, tabela3.
TOP-OF-PAGE MARCA O INICIO DE UM CABEALHO DE RELATRIO
TOP-OF-PAGE.
WRITE NOVO CABECALHO DEFINIDO PELO PROGRAMA.
END-OF-PAGE.

48

TREINAMENTO ABAP BSICO


ULINE: SERVER PARA COLOCAR UMA LINHA CONTINUA EM RELATRIOS
PARA FAZER SEPARAES.
ULINE imprime uma linha continua
WHILE: CONDIO. ENDWHILE. CRIA UM LAO E VERIFICA A CONDIO
NO FINAL DO LAO
WHILE condio. a condio verifica no final do lao e se for verdadeira continua
dentro
.... do loop
ENDWHILE.
WRITE XXXXXXX COMANDO USADO PARA SADA DE IMPRESSORA OU
TELA
WRITE ESTA LINHA SERA IMPRESSSA.
WRITE ESTA LINHA SERA COLOCADA NA MESMA LINHA QUE A PRIMEIRA.
WRITE / COM A / FAZ UMA QUEBRA E O TEXTO SERA IMPRESSA NA LINHA DE
BAIXO.
WRITE 5 IMPRIME NA POSIO 5.

49

TREINAMENTO ABAP BSICO

Relatrios ALV
Desenvolver relatrios em ABAP (Advanced Business Application
Programing) com um bom visual e recursos avanados no nada
trivial.
Imagine desenvolver um relatrio com cores, cabealho, linha de
totais, label de colunas e separadores de colunas. Para piorar um
pouco, que permita classificar por qualquer campo, aumentar ou
diminuir o tamanho de colunas, gostaria tambm de poder trocar a
posio das colunas, omitir ou exibir campos, totalizar, agrupar,
exportar para Excel, etc.
Totalmente possvel e igualmente invivel sem o uso de funes ALV.
O ALV padroniza e simplifica a exibio e operao de listas e
relatrios no sistema R/3. Fornece interfaces e formatos padronizados
para todas as listas e relatrios.
Na apostila vamos ver como criar programas utilizando uma funo
ALV. Parece pouco, mas todas trabalham de maneira similar.

Relatrios tradicionais
Um relatrio tradicional em ABAP no tem nenhum recurso ou
formatao padro. Tudo deve ser programado via cdigo.
Um programa para listar um relatrio como no exemplo acima, j
exige muita codificao. Veja que no tem nada de complexo.

Depois de pronto, uma simples alterao no posicionamento dos


campos ou no tamanho do papel, j demanda um novo processo de
modificao. O usurio no tem os recursos necessrios para resolver
o problema.

50

TREINAMENTO ABAP BSICO

Qualquer ao no relatrio apresentado, diferente das opes do


menu standard do R/3 para esse tipo de listagem, dever ser
programado. Uma tarefa nada simples, visto que o programador
dever fazer o processo de da e volta, ou seja, o relatrio deve ficar
dinmico ao ponto do usurio voltar na situao inicial, aps alguma
modificao.

Relatrios ALV
Listagens ALV so dinmicas por definio. O programador vai
escolher qual ou quais recursos ir disponibilizar em seu relatrio.

Muito similar a uma planilha do Microsoft Excel, cada coluna


perfeitamente ajustvel, podem ser trocadas entre si, as linhas da
grade e cores so automticas. Recursos simples que j eliminam um
grande esforo de programao, principalmente em alteraes.

Barra de ferramentas

Todos os demais recursos esto concentrados em uma barra de


ferramentas que a funo disponibiliza junto a barra standard do R/3
(Na parte superior do relatrio). Alguns cones so bem comuns e com
funes simples, mas est tudo pronto para o uso, sem digitao de
uma linha de cdigo a mais no programa.

51

TREINAMENTO ABAP BSICO

Primeiramente, vamos apenas ver uma breve descrio de suas


funes:

52

TREINAMENTO ABAP BSICO

O boto de Detalhes
Primeiro selecione a linha desejada atravs do seletor de campos, e
depois clique no cone.
Veja

Veja na figura abaixo que a linha foi destacada em coluna. Isso


muito utilizado quando permitida a edio dos campos no relatrio.

Os botes de Total e Subtotal


Selecione a coluna com valor numrico, e escolha Total. Para subtotal,
escolha uma coluna qualquer.
Sempre primeiro necessrio totalizar uma coluna com o boto de
somatria e s ento definir os subtotais.

No exemplo, o relatrio possui os totais dos campos Valor Lquido e


Montante do Imposto. Foi escolhido o campo Grupo de cliente
para que o relatrio apresentasse os subtotais.
Por default, o relatrio fica na ordem crescente do campo que foi
escolhido como subtotal. possvel totalizar e subtotallizar vrios
campos.
Clicando nos cones em destaque, voc pode apresentar apenas as
linhas de totais, as linhas de subtotais, apenas o total geral ou ainda
mostrar as linhas de detalhe de algum Grupo de cliente e de outro
no.

53

TREINAMENTO ABAP BSICO

54

TREINAMENTO ABAP BSICO

O boto Pr-visualz.impresso
O Relatrio ALV no impresso como se v na tela do computador.
Clique nesse boto para visualizar a impresso no modo que ir ser a
sada realmente.

No exemplo acima no temos os totais ou subtotais. Mas essas linhas


so mantidas. O que perdemos apenas o formato de grid (Microsoft
Excel). Passamos a ver um relatrio tradicional.

O boto Microsoft Excel


Ao exportarmos para o Excel, algumas particularidades no sero
enviadas:

55

TREINAMENTO ABAP BSICO

Assim, se a intenso e gerar o relatrio para envia-lo ao Excel, no


perca tempo com formataes. Apenas o bsico transferido.
Temos trs opes para exportar a listagem para o Microsoft Excel,
vamos ver a sada de cada uma delas.

O boto Microsoft Excel Opo Excel Macros SAP


Com essa opo, o R/3 envia o relatrio para o Excel e j apresenta
vrias barras de ferramentas prprias para que voc tenha as
mesmas facilidades. Repare na figura, que as opes de ferramentas
do prprio Excel no aparecem. Para voltar utilize a opo do menu
Report e depois Exit.

56

TREINAMENTO ABAP BSICO

O boto Microsoft Excel Opo Tabela


a forma mais simples de exportao. Veja que o R/3 mantem as
barras de ferramentas do Excel e apenas inclui o relatrio na planilha.

O boto Microsoft Excel Opo Tabela Pivot


Nessa opo o R/3 abre o Excel e monta o relatrio que permanece
com algumas funes.
Mesmo que o seu Excel no esteja exibindo a barra de ferramentas
Tabela Dinmica, a comunicao R/3 Excel vai passar a exibi-la,
para o acesso aos recursos do relatrio.

57

TREINAMENTO ABAP BSICO

O boto Modificar layout


Essa opo engloba as funes do Filtro, Totalizar, Subtotalizar,
Ordenar, Selecionar colunas, Ocultar colunas, etc. Vejamos cada guia
de opo.
Na figura abaixo, na parte da esquerda, temos as colunas que esto
visveis no relatrio. Na parte direita, temos todas as disponveis. Veja
que j temos aqui, a possibilidade de informar quais campos
pretendemos totalizar.

O boto Gravar Layout


O formato que seu relatrio estiver no momento (Que foi configurado)
pode ser salvo. Vrios layouts diferentes para um mesmo relatrio. O
flag Config.prelim vai indicar qual o layout default, ou seja, ao

58

TREINAMENTO ABAP BSICO

executar o programa novamente, de que forma o relatrio ser


apresentado de incio.

59

TREINAMENTO ABAP BSICO

O boto Selecionar Layout


Da mesma forma possvel mudar o formato de seu relatrio a
qualquer momento. Basta selecionar outro layout salvo. Na figura
abaixo, temos apenas um.

No cdigo em anexo, voc ver que possvel, na tela de seleo do


programa permitir ao usurio selecionar um layout, antes do relatrio
ser apresentado com o layout default (Caso exista algum).
Sem nenhum layout, o relatrio apresentado conforme foi
codificado no programa.

Inserindo uma figura no cabealho


Que tal o cabealho do seu relatrio no formato da figura abiaixo (por
exemplo), e logo depois as linhas de detalhe:

Isso melhora bem a aparncia dos relatrios. Veja que temos at a


possibilidade de inserir figura em background, como na Web. O texto
tambm configurvel, voc pode inserir vrias linhas e alterar o
tamanho da fonte.

60

TREINAMENTO ABAP BSICO

No exemplo acima foi utilizado como background a imagem


ALV_BACKGROUND e o nome do logotipo ENJOYSAP_LOGO. Faa
o upload da figura na transao: OAER.

61

TREINAMENTO ABAP BSICO

O R/3 permite que voc importe figuras, assim no ficamos limitados


apenas, as que so standard. Por exemplo importar o logotipo da
empresa e inserir no cabealho do relatrio ALV. Vejamos como se faz.
Aps criar a imagem (.GIF, .BMP, .JPG, etc) em algum aplicativo (MS
Paint, Photoshop, Paint Shop Pro, etc) o que precisamos, utilizar a
transao 0FPM002 (Import Logo for Reporting) e importar a imagem
para o R/3. Nem todas as verses do R/3 possuem essa transao.
Preencha as informaes necessrias e digite F8 para executar.

Importando uma imagem para o R/3


Na prxima tela voc ir informar onde est a figura, clicando em
TELA. Veja a imagem abaixo:

62

TREINAMENTO ABAP BSICO

Com duplo clique no item TELA, a transao apresenta a tela padro


para abrir um arquivo. Localize a figura e pronto.

Exemplo de programa 1
*----------------------------------------------------------------------* ProcWork Informtica - ASPEN - Unidade de Negcios SAP
* Descrio : Programa de exemplo para criao de relatrio ALV
* Dezembro, 2002
*----------------------------------------------------------------------report zexemplo_alv.
*----------------------------------------------------------------------* Tabelas transparentes
*----------------------------------------------------------------------tables:
vbrk. "Documentos de faturamento
*----------------------------------------------------------------------* Tipos standard
*
* O conjunto de tipos VRM e SLIS so utilizados por funes ALV. Defina
* sempre no incio. O mais importante mesmo o SLIS.
*----------------------------------------------------------------------type-pools:
vrm, "Necessrio para uso de ALV
slis. "Tipos globais para ALV
*----------------------------------------------------------------------* Tipos do usurio
*----------------------------------------------------------------------types:
begin of y_vbrk,
vbeln like vbrk-vbeln, "Nmero documento
kdgrp like vbrk-kdgrp, "Grupo de clientes
netwr like vbrk-netwr, "Valor lquido
mwsbk like vbrk-mwsbk, "Montante do imposto
fkart like vbrk-fkart, "Tipo documento faturamento
vtweg like vbrk-vtweg, "Canal de distribuio
kunag like vbrk-kunrg, "Emissor da ordem
xblnr like vbrk-xblnr, "Nota fiscal
mark type c, "Marcar alteraes
end of y_vbrk.

63

TREINAMENTO ABAP BSICO


*----------------------------------------------------------------------* Tabelas internas ALV
*
* As estruturas aqui utilizadas (SLIS) esto explicadas com as opes
* mais importantes no final da apostila
*----------------------------------------------------------------------data:
t_linecolor type slis_specialcol_alv occurs 0 with header line,
t_listheader type slis_t_listheader,
t_fieldcat type slis_t_fieldcat_alv with header line,
t_sort type slis_sortinfo_alv occurs 0 with header line.
data:
v_listheader type slis_listheader, "Cabealho
v_layout type slis_layout_alv, "layout para sada
v_print type slis_print_alv, "Ctrl de impresso
v_variante like disvariant. "Variante de exibio
*----------------------------------------------------------------------* Tabelas internas
*----------------------------------------------------------------------data:
t_vbrk type y_vbrk occurs 0 with header line.
* A prxima tabela necessrio porque no possvel um select em
* tabelas que possuem campos como outras tabelas.
* No caso foi necessrio incluir a SLIS_T_SPECIALCOL_ALV
data: begin of t_alv occurs 0.
include structure t_vbrk.
data:
color type slis_t_specialcol_alv. "Definir a cor
data: end of t_alv.
*----------------------------------------------------------------------* Variveis de uso geral
*----------------------------------------------------------------------data:
v_tabix like sy-tabix,
v_repid like sy-repid,
v_flag.
*----------------------------------------------------------------------* Tela de seleo
*----------------------------------------------------------------------selection-screen begin of block one.
select-options:
s_vbeln for vbrk-vbeln. "Documento de faturamento
selection-screen skip.
parameters:
p_varia like disvariant-variant. "Variante de exibio
*----------------------------------------------------------------------* O usurio ter a opo de iniciar a apresentao do relatrio com
* algum layout salvo anteriormente.
* Essa escolha ser armazenada em P_VARIA. Utilizamos uma funo que
* retorna todos os layout possveis.
*----------------------------------------------------------------------selection-screen end of block one.
*----------------------------------------------------------------------* Eventos
*----------------------------------------------------------------------initialization.
perform zf_init_alv.
at selection-screen on value-request for p_varia.
perform zf_recupera_layouts_salvos.

64

TREINAMENTO ABAP BSICO


*----------------------------------------------------------------------* Principal
*----------------------------------------------------------------------start-of-selection.
perform:
zf_selecao_dados, "Seleciona a VBRK
zf_altera_cores, "Alterando as cores dos campos
zf_monta_tabela_alv, "Preenche o catlogo
zf_sort_subtotal, "Ordenao dos campos e subtotais
zf_executa_funcao_alv. "Gera o relatrio
end-of-selection.
*----------------------------------------------------------------------* Rotinas
*----------------------------------------------------------------------*----------------------------------------------------------------------* Form zf_init_alv
*----------------------------------------------------------------------* Busca layout de exibio default para o relatrio. Se houver
* algum formato padro para o relatrio, essa funo busca e j
* apresenta o relatrio nesse formato.
* Um layout fica como default quando marcamos "Config.Prelim." Um
* flag que pode ser marcado na opo "Gravar layout" na barra de
* ferramentas do ALV
*----------------------------------------------------------------------form zf_init_alv.
v_repid = sy-repid.
clear v_variante.
v_variante-report = v_repid.
call function 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = 'A'
CHANGING
cs_variant = v_variante
EXCEPTIONS
not_found = 2.
if sy-subrc = 0.
p_varia = v_variante-variant.
endif.
endform.
*----------------------------------------------------------------------* Form zf_recupera_layouts_salvos
*----------------------------------------------------------------------* Abre um search help com os layouts j gravados. Se o usurio
* escolher algum aqui, o programa vai iniciar a apresentao do
* relatrio com esse layout, e no o que default, retornado na
* funo REUSE_ALV_VARIANT_DEFAULT_GET em ZF_INIT_ALV (Acima)
*----------------------------------------------------------------------form zf_recupera_layouts_salvos.
v_variante-report = v_repid.
call function 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = v_variante
i_save = 'A'
IMPORTING
es_variant = v_variante
EXCEPTIONS
not_found = 2.
if sy-subrc = 2.
message id sy-msgid type 'S' number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
else.
p_varia = v_variante-variant.
endif.
endform.

65

TREINAMENTO ABAP BSICO

66

TREINAMENTO ABAP BSICO

*----------------------------------------------------------------------* Form zf_selecao_dados


*----------------------------------------------------------------------* Seleo dos dados
*----------------------------------------------------------------------form zf_selecao_dados.
select vbeln kdgrp netwr mwsbk
fkart vtweg kunag xblnr
from vbrk
into table t_vbrk
where vbeln in s_vbeln.
loop at t_vbrk.
move-corresponding t_vbrk to t_alv.
append t_alv.
endloop.
endform.
*----------------------------------------------------------------------*
* Form zf_altera_cores
*----------------------------------------------------------------------*
* Permite informar a cor que vc deseja para a coluna, inclusive
* pelo valor da varivel
*----------------------------------------------------------------------*
FORM zf_altera_cores.
* Veja algumas cores
* Azul = 1
* Verde = 5
* Normal = 2
* Vermelha = 6
* Mas vai depender de como esto as cores do seu SAP-Gui
loop at t_alv.
refresh t_linecolor.
refresh t_alv-color.
t_linecolor-fieldname = 'VBELN'.
t_linecolor-color-col = '6'.
t_linecolor-color-inv = '1'. "Inverso, 1 liga e 0 desliga
append t_linecolor.
* Temos a opo INV, que invertido, mesmo esquema do INT
* 1 liga e 0 desliga
if t_vbrk-netwr > 10000.
t_linecolor-fieldname = 'NETWR'.
t_linecolor-color-col = '1'.
t_linecolor-color-int = '1'. "Negrito (1-ligado, 0-Desligado)
else.
t_linecolor-fieldname = 'NETWR'.
t_linecolor-color-col = '6'.
t_linecolor-color-int = '1'. "Negrigo (1-ligado, 0-Desligado)
endif.
append t_linecolor.
t_alv-color[] = t_linecolor[].
modify t_alv.
endloop.
ENDFORM.

67

TREINAMENTO ABAP BSICO


*----------------------------------------------------------------------* Form zf_monta_tabela_alv
*----------------------------------------------------------------------* Monta tabela para apresentao do relatrio. Aqui montamos um
* catlogo com as informaes dos campos.
* Veja que no estamos preenchendo todas as opes do catlogo,
* no necessrio. No anexo voc poder encontrar os principais
*----------------------------------------------------------------------form zf_monta_tabela_alv.
clear t_fieldcat.
t_fieldcat-fieldname = 'MARK'.
t_fieldcat-tabname = 'T_ALV'.
t_fieldcat-reptext_ddic = 'S'.
t_fieldcat-inttype = 'C'.
t_fieldcat-outputlen = 1.
t_fieldcat-checkbox = 'X'.
append t_fieldcat.
clear t_fieldcat.
t_fieldcat-fieldname = 'VBELN'.
t_fieldcat-tabname = 'T_ALV'.
t_fieldcat-reptext_ddic = 'Doc. Fatura'.
t_fieldcat-inttype = 'C'.
t_fieldcat-outputlen = 10.
append t_fieldcat.
clear t_fieldcat.
t_fieldcat-fieldname = 'KDGRP'.
t_fieldcat-tabname = 'T_ALV'.
t_fieldcat-reptext_ddic = 'Grupo de Clientes'.
t_fieldcat-inttype = 'C'.
t_fieldcat-outputlen = 2.
append t_fieldcat.
* Para o campo NETWR, o relatrio j vai mostrar linha de total
clear t_fieldcat.
t_fieldcat-fieldname = 'NETWR'.
t_fieldcat-tabname = 'T_ALV'.
t_fieldcat-reptext_ddic = 'Valor lquido'.
t_fieldcat-inttype = 'P'.
t_fieldcat-outputlen = 15.
t_fieldcat-do_sum = 'X'.
append t_fieldcat.
clear t_fieldcat.
t_fieldcat-fieldname = 'MWSBK'.
t_fieldcat-tabname = 'T_ALV'.
t_fieldcat-reptext_ddic = 'Montante do Imposto'.
t_fieldcat-inttype = 'P'.
t_fieldcat-outputlen = 15.
append t_fieldcat.
* Os campos abaixo no iro aparecer no relatrio, apenas quando
* o usurio modificar o layout e inserir esses campos nas colunas
* a serem apresentadas

68

TREINAMENTO ABAP BSICO


clear t_fieldcat.
t_fieldcat-fieldname = 'FKART'.
t_fieldcat-tabname = 'T_ALV'.
t_fieldcat-reptext_ddic = 'Tipo do documento'.
t_fieldcat-inttype = 'C'.
t_fieldcat-outputlen = 4.
t_fieldcat-no_out = 'X'.
append t_fieldcat.
clear t_fieldcat.
t_fieldcat-fieldname = 'VTWEG'.
t_fieldcat-tabname = 'T_ALV'.
t_fieldcat-reptext_ddic = 'Canal de Distribuio'.
t_fieldcat-inttype = 'C'.
t_fieldcat-outputlen = 2.
t_fieldcat-no_out = 'X'.
append t_fieldcat.
clear t_fieldcat.
t_fieldcat-fieldname = 'KUNAG'.
t_fieldcat-tabname = 'T_ALV'.
t_fieldcat-reptext_ddic = 'Emissor da Ordem'.
t_fieldcat-inttype = 'C'.
t_fieldcat-outputlen = 10.
t_fieldcat-no_out = 'X'.
append t_fieldcat.
* Para o campo XBLNR, no vamos preencher nada. Nem disponvel
* na modificao do layout ele vai estar.
* No necessrio atribuir todos os campos, no ocorre
* nenhum erro.
endform.
*----------------------------------------------------------------------* Form zf_sort_subtotal
*----------------------------------------------------------------------* Classificao e item de subtotalizao
*----------------------------------------------------------------------form zf_sort_subtotal.
clear t_sort[].
t_sort-spos = 1.
t_sort-fieldname = 'KDGRP'.
t_sort-tabname = 'T_ALV'.
t_sort-up = 'X'.
t_sort-subtot = 'X'.
append t_sort.
* Com isso o relatrio vai sair classificado em ordem crescente de Grupo
* de cliente e ainda ir aparecer um subtotal por esse campo.
endform.
*----------------------------------------------------------------------* Form zf_executa_funcao_alv
*----------------------------------------------------------------------* Apresenta relatrio
*----------------------------------------------------------------------form zf_executa_funcao_alv.
* Preenchendo algumas opes de impresso (No obrigatrio)
v_layout-expand_all = 'X'. "Abrir subitens
v_layout-colwidth_optimize = 'X'. "Largura melhor possvel da coluna
v_layout-edit = 'X'. "Permitir a edio

69

TREINAMENTO ABAP BSICO


* Indicando para funo qual o layout que deve ser apresentado
* primeiro
v_variante-variant = p_varia.
v_print-no_print_listinfos = 'X'.
call function 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = v_repid
i_background_id = 'ALV_BACKGROUND'
i_callback_top_of_page = 'ZF_TOP_OF_PAGE'
* i_callback_pf_status_set = 'ZF_STATUS'
i_callback_user_command = 'ZF_USER_COMMAND'
it_fieldcat = t_fieldcat[]
is_layout = v_layout
it_sort = t_sort[]
i_default = 'X'
i_save = 'A'
is_variant = v_variante
is_print = v_print
TABLES
t_outtab = t_alv
EXCEPTIONS
program_error = 1
others = 2.
* As funes que geram relatrios ALV possuem vrios parmetros de
* I_CALLBACK. Os que mais so utilizados, so os que esto
* na chamada acima. Para ver os demais use a transao SE37. Esses
* parmetros so preenchidos com nomes de FORMS do programa
* i_callback_program = Qual programa que executou a funo
* i_callback_top_of_page = Rotina de cabealho
* i_callback_pf_status_set = Qual barra de tarefas a funo vai usar
* i_callback_user_command = Tratamento dos botes alterados ou criados
endform.
*----------------------------------------------------------------------* Form zf_user_command
*----------------------------------------------------------------------* Tratamento das opes do usurio. Por exemplo um Drill-down ou
* algum boto que voc inseriu ou alterou. O importante conhecer
* os parmetros que o form recebe
*----------------------------------------------------------------------form zf_user_command using ucomm like sy-ucomm
selfield type slis_selfield.
* UCOMM: o sy-ucomm (Ok-code)
* SELFIELD: uma estrutura com dados que ns permite identifcar
* o que foi selecionado. Essa estrutura tambm est
* explicada no anexo ao final da apostila
* Salva a posio do relatrio (Linha escolhida)
selfield-row_stable = 'X'.
* Uma das questes foi como alterar o contedo de uma tabela
* transparente com as alteraes feitas no relatrio ALV
* Segue um exemplo de como pode ser feito:
* Em nossa barra de ferramentas criamos o boto com cdigo
* ZATU
if ucomm = 'ZATU'.
* Vamos ler a tabela T_VBRK onde mark = X. A idia que

70

TREINAMENTO ABAP BSICO


* o usurio mark com X os registros alterados
loop at t_vbrk where mark = 'X'.
v_tabix = sy-tabix.
* Atualiza a tabela transparente
" update ztabela ....
* Ento voltamos a T_VBRK sem marcao alguma
clear t_vbrk-mark.
modify t_vbrk index v_tabix.
* Veja que esse tipo de esquema pode ser feito para
* excluir registros tambm
endloop.
endif.
* Para testar o cdigo do boto
if ucomm = 'ZLOG'.
" perform ...
" call transaction...
endif.
* Para um drill down a partir de um registro
if not selfield-tabindex = 0.
read table t_vbrk index selfield-tabindex.
"perform ...
"call transaction ...
else.
* Clicou em linha invlida, linha de total, cabealho, etc
endif.
endform.
*----------------------------------------------------------------------* Form zf_top_of_page
*----------------------------------------------------------------------* Cabealho do relatrio
*----------------------------------------------------------------------form zf_top_of_page.
* Uma dica, em relatrios ALV com utilizao de drill down, na volta ao
* relatrio principal ele vai executar novamente o cabealho. Isso faz
* com que ele fique duplicado. Utilize um flag que aps apresentar o
* cabealho uma vez, fique marcado com um 'X', por exemplo.
* V_FLAG na primeira vez branco.
check v_flag is initial.
* Monta as linhas de cabealho
clear t_listheader[].
clear v_listheader.
v_listheader-typ = 'H'.
* TYP = H, faz com que a fonte fique maior
v_listheader-info = 'Apenas um Exemplo em ALV'.
append v_listheader to t_listheader.
* Definio do Projeto
clear v_listheader.
v_listheader-typ = 'A'.
* TYP = S, outro tipo de fonte
v_listheader-info = 'Segunda linha do cabealho'.
append v_listheader to t_listheader.
* O campo INFO, pode ter no mximo 60 caracteres
* Apresenta o cabealho.
* Veja que j uma outra funo, essa apresenta a figura, j
* a funo REUSE_ALV_GRID_DISPLAY (Principal) tem o parmetro
* que voc indica a imagem que ser apresentada em background,
* como na WEB.
call function 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
i_logo = 'ENJOYSAP_LOGO'
it_list_commentary = t_listheader.
* Para no apresentar mais o cabealho no refresh
v_flag = 'X'.
endform.

71

TREINAMENTO ABAP BSICO

72

TREINAMENTO ABAP BSICO


*---------------------------------------------------------------------* Form zf_status
*---------------------------------------------------------------------* Status com boto de log (Item a mais na barra ALV)
*---------------------------------------------------------------------form zf_status using rt_extab type slis_t_extab.
* Aqui estamos informando a funo que ela dever utilizar a barra de
* ferramentas ZALV_BOTOES.
"set pf-status 'ZALV_BOTOES'.
* Tambm possvel excluir funes
"if sy-uname = ...
"EXCLUDING ...
"endif.
endform.

Estruturas SLIS

73

TREINAMENTO ABAP BSICO

74

TREINAMENTO ABAP BSICO

75

TREINAMENTO ABAP BSICO

Você também pode gostar