Você está na página 1de 22

Documento BI

ABAP / BW

Especificador Funcional
Difuso do Documento
Nome do Documento
Tema

Victor Dias da Silva


ABAP - BW
Network

System

Histrico do Documento:
Verso
Data da Reviso
001
25.01.2012

Security

Redator
Victor Dias da Silva

Page 1

Documento BI
ndice
1

INTRODUO

1.1

Contexto

1.2

Informaes

1.3

Requisitos mnimos

CONHECENDO O ABAP

2.1

ABAP

2.2

Exemplo de Cdigo ABAP

2.3

Principais comandos

ACESSANDO O ABAP NO BW

3.1
Transformaes
3.1.1
Rotina Inicial.
3.1.2
Rotina no Campo.
3.1.3
Rotina Final.

7
7
8
9

DEBUG

11

4.1

Debug

11

4.2

Entendendo um Debug

11

4.3

Ativando o Debug

15

4.4

Informaes adicionais do Debug

17

4.5

Debug no BW

17

INFORMAES ADICIONAIS

19

5.1

Programa para DEBUG - ECC

19

5.2

Diferenas SAP/4.6C para o SAP/ECC

20

5.3

Links Uteis

22

Page 2

Documento BI

1 INTRODUO

1.1 CONTEXTO
O ABAP utilizado em grande parte do BW para obter e manipular informaes,
para que estas sejam consistentes e possam atender algumas especificidades na
gerao de dados.

1.2 INFORMAES
No BW os principais focos de desenvolvimento so as rotinas dentro das
Transformaes (Transformations), reconhecidas pelo smbolo
, estas so:

"Rotina Inicial (Start Routine)"


"Rotina no Campo (Routine Field)"

"Rotina Final (End Routine)".

Outro ponto de modificao so as Exits e os Enhancements, e em alguns casos


Programas especficos gerados na transao SE38. Estes no feitos dentro de uma
transformation, mas seus cdigos podem ser acessados atravs de extratores,
variveis e/ou Cadeias de Processos (Process Chains).

1.3 REQUISITOS MNIMOS


Para o entendimento da construo e utilizao do ABAP preciso ter um
conhecimento prvio sobre linguagem de programao estruturada ou de alguns
termos que sero usados no decorrer deste documento:
Varivel: um objeto capaz de reter e representar um valor ou expresso.
Enquanto as variveis s "existem" em tempo de execuo, elas so
associadas a nomes, chamadas identificadores, durante o tempo de
desenvolvimento.
Tabela Interna: So estruturas montadas a partir de campos chaves que
sero usados durante a execuo do programa, para armazenas os dados de
uma seleo ou de um tratamento de dados.
Instrues ABAP: Quase sempre precisamos do uso do HELP (boto F1),
assim podemos entender como e porque so usados alguns comandos.
* e : Representam o uso de comentrios no cdigo.

Page 3

Documento BI

2 CONHECENDO O ABAP

2.1 ABAP
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. Conforme
exemplificado abaixo:

2.2 EXEMPLO DE CDIGO ABAP

Page 4

Documento BI

Page 5

Documento BI
2.3 PRINCIPAIS COMANDOS
O cdigo acima descreve um acesso tabela T005T e recolhe as informaes de
nome e cdigo dos pases. Este um programa simples criado para os relatrios
desenvolvidos no SAP/ECC6 e apenas demonstra alguns dos comandos mais
utilizados.
Servir para o bom entendimento dos comandos que usaremos no BW, para
eventualmente carregar nossos dados.
Comandos mais utilizados em ABAP no BW:

DATA

Este comando ir servir para declarar suas variveis e os


campos que sero parametrizados para a recepo de
DATA: v_material TYPE mara-matnr.
informaes durante a execuo do programa. Na
declarao usamos o TYPE para definir que tipo ter a
DATA: t_material TYPE ty_material.
varivel, isto , que tipo de informao essa varivel
estar apta a comportar.

TYPES

Quando necessrio acessar algumas informaes


relacionadas, usamos o TYPES para criar uma tabela
interna que ir receber nossas informaes e armazenlas durante a execuo do programa.

TYPES: BEGIN OF ty_material,


material TYPE mara-matnr,
mat_tex TYPE mara-maktx,
END OF ty_material.

SELECT

Usamos o SELECT para obter as informaes das tabelas


do SAP, informando os campos que sero usados,
usamos em sua composio o FROM para informar a
tabela da qual extrairemos os dados o INTO para
direcionar o resultado e o WHERE para definir as
clusulas de nossa seleo.

SELECT matnr maktx


FROM mara
INTO TABLE t_mara
WHERE matnr > '10000'.

LOOP AT /
ENDLOOP

Quando preenchemos a tabela com valores e precisamos


LOOP AT t_mara.
adaptar essas informaes ou trabalhar esses dados,
WRITE /: t_mara-matnr '-'
como por exemplo, escreve-los em um formulrio,
t_mara-maktx.
usamos o LOOP para ler registros linha a linha de nossa
ENDLOOP.
tabela.

IF / ELSE /
ENDIF
CASE /
ENDCASE
DO / ENDDO

Estas so formas condicionais usadas em muitas


linguagens de programao e funcionam para tratativa
de nossas informaes ou para o processamento de
dados especficos que dependem da necessidade ou do
tipo de informao desejada no resultado final.

IF t_mara-matnr > '40000'.


WRITE /: 'Invlido'.
ELSE.
WRITE /: 'Vlido'.
ENDIF.

importante conhecer alguns dos camandos ABAP e ser normal se deparar


com situaes com cdigos extensos e difceis de compreender. Uma dica,
sempre que no conhecer a instruo ABAP, coloque o cursor sobre esta e
aperte F1. Como tudo no SAP, ir trazer uma tela explicativa.

Page 6

Documento BI
3 ACESSANDO O ABAP NO BW

3.1 TRANSFORMAES
Para as transformaes sempre usaremos os mesmos tipos de estruturas / tabelas
internas, pois os dados preenchidos nesta etapa sempre esto em uma estrutura
genrica standard.
Para entender a melhor forma de manipular a informao preciso conhecer o
conceito de quais so as etapas das informaes quando transferidas de um ponto
para outro.
Por exemplo, vemos o fluxo: PSA TRANFORMATION DSO.
Ento as informaes estaro como:
PSA Rotina Inicial Rotina nos campos Rotina Final DSO.
3.1.1 Rotina Inicial.
Na Rotina Inicial, usaremos a SOURCE_PACKAGE, so os dados direto do extrator.
E podemos ver no cdigo ABAP quais so os campos que fazem parte desta
estrutura.

Estes campos so os mesmos que temos na nossa Transformao:

Page 7

Documento BI

Ento o prprio BW gera a tabela SOURCE_PACKAGE genrica, que ir conter os


dados. Para manipular os dados sempre recomendvel no faz-lo diretamente na
estrutura genrica, use uma estrutura no programa, movendo os dados e no final
das modificaes preencha a estrutura genrica com as novas informaes.
Para isso, use o trecho abaixo:
DATA: wa_routine TYPE _ty_s_tg_1,
t_routine LIKE STANDARD TABLE OF wa_routine WITH DEFAULT KEY.
t_routine[] = SOURCE_PACKAGE[].
()
Crie seu cdigo usando a tabela t_routine.
()
SOURCE_PACKAGE[] = t_routine[].

3.1.2 Rotina no Campo.


Na Rotina de campos, no precisamos usar nenhuma estrutura, pois tratamos os
registros um por um preenchidos em variveis standards. Usamos os valores
contidos no SOURCE_FIELDS.

Page 8

Documento BI

E terminamos por aps preencher o valor da nossa varivel, alimentamos o campo


RESULT com o valor.
(...)
RESULT = t_cperson.
(...)

3.1.3 Rotina Final.


Na Rotina Final, usaremos a RESULT_PACKAGE, So os dados depois de
processados na transformao e prestes a serem enviados para a DSO ou CUBO. E
tambm podemos ver no cdigo ABAP quais so os campos que fazem parte desta
estrutura.

Page 9

Documento BI

Estes campos so os mesmos que temos na nossa Transformao:

Ento o prprio BW gera a tabela RESULT_PACKAGE genrica, que ir conter os


dados. Para manipular os dados sempre recomendvel no faz-lo diretamente na
estrutura genrica, use uma estrutura no programa, movendo os dados e no final
das modificaes preencha a estrutura genrica com as novas informaes.
Para isso, use o trecho abaixo:
DATA: wa_routine TYPE _ty_s_tg_1,
t_routine LIKE STANDARD TABLE OF wa_routine WITH DEFAULT KEY.
t_routine[] = RESULT_PACKAGE[].
()
Crie seu cdigo usando a tabela t_routine.
()
RESULT_PACKAGE[] = t_routine[].

Page 10

Documento BI
4 DEBUG

4.1 DEBUG
O DEBUG ou Modo de Depurao a forma de executar um processo no SAP e
examin-lo durante a execuo, podendo verificar como iro se comportar o
preenchimento de uma tabela ou varivel.

4.2 ENTENDENDO UM DEBUG


Em um programa, normalmente iremos preencher a tela de seleo com as
informaes com as quais pretendemos executa-lo. Aps o preenchimento da tela
de seleo, ativamos o DEBUG e executamos o programa. Veja a seguir:

Com a tela preenchida, ativamos o debug:

ENTER.
Clique em executar

A tela abaixo onde iremos identicar o processo:

Page 11

Documento BI

Para navegar pelo programa usaremos as seguintes teclas ou os botes de


navegao:
(F5) ou
(F6) ou
(F7) ou
(F8) ou

Navegar as intrues etapa por etapa individualmente.


Navegar um grupo de informaes que esteja encadeadas.
Navegar para fora de um grupo de informaes encadeadas.
Executar o programa diretamente.

Ento se continuarmos nosso DEBUG, aperte F5.


Page 12

Documento BI
De um duplo clique sobre o noma da tabela que deseja observar (veja que tabela
apareceu na area de valores).

Porm, ainda est vazia. Aperte novamente o F5 para que a seleo preencha a
tabela:
Se adicionarmos [] no final do nome da tabela, apresenta a quantidade de
registros.

Outro ponto importante a validao que segue alguns preenchimentos, SYSUBRC ele indica se houve sucesso ou no na sua ao. O valor 0 representa
sucesso, e geralmente os valores 4 e 8 que houve erro.

Page 13

Documento BI

Continue apertando F5 at preenchermos a segunda tabela e chegarmos no ponto


abaixo, de um duplo clique em todos os campos da tabela t_fim:

Agora novamente continue a apertar o F5 e acompanhe enquanto ele preenche os


campos da tabela:

Page 14

Documento BI

Execute o ultimo comando de escrita e aperte o F8:

4.3 ATIVANDO O DEBUG


Existe mais de uma forma de ativar o Modo de Depurao:
1- Insira o comando /H em seguida o ENTER para ativa-lo.
No local onde colocamos transaes inserimos o comando /H:

Pressionamos ENTER e a seguinte mensagem ir aparecer no Rodap:

2- No cdigo do programa, marque a linha onde deseja que o programa seja


depurado, e clique no cone
.
Isso ir marcar a linha conforme abaixo:

Page 15

Documento BI

Ento ao executar o programa, ele ir direto para o ponto escolhido.

3- Usando o comando BREAK-POINT.

O cursor ir parar exatamente neste comando, permitindo a depurao do cdigo


a partir do ponto indicado.

Page 16

Documento BI

4.4 INFORMAES ADICIONAIS DO DEBUG


Para o DEBUG acima, foi usado um programa no SAP/ECC e segue no final
deste documento o cdigo para copi-lo e criar seu programa no ECC.
No BW, a forma que mais vamos usar a 3, isto a instruo BREAK-POINT.

4.5 DEBUG NO BW
Com as informaes acima, podemos agora, iniciar o Debug no BW. Este processo
ir acontecer em sua maioria nas transformaes, onde colocamos nossas rotinas e
utilizaremos o comando BREAK-POINT. Porm as outras formas de ativar o
depurador podem ser usadas, quando precisamos alterar uma User-Exit ou um
Enhancement, para estes usamos as mesmas formas de depurao usadas no ECC.
Um ponto interessante no BW, que podemos escrever nossos cdigos dentro das
transformaes e adicionar o comando BREAK-POINT no decorrer dos nossos
cdigos, pois, ele no ir travar a execuo das cargas. Assim, s acessamos o
Modo de Depurao quando optamos por ele.
No exemplo abaixo, adicionamos o BREAK-POINT na rotina inicial de uma
transformao:

Page 17

Documento BI

Para que o BW abra o depurador e possamos analisar este cdigo, precisamos ir no


DTP que ir iniciar a carga e alterar o Modo de Execuo:

Aps a troca, clicar em Simular. A tela do Depurador ser aberta no ponto


desejado.

Page 18

Documento BI
5 INFORMAES ADICIONAIS

5.1 PROGRAMA PARA DEBUG - ECC


*&---------------------------------------------------------------------*
*& Report ZTESTE_DEBUG
*&---------------------------------------------------------------------*
REPORT

zteste_debug.

*----------------------------------------------------------------------*
* Tabelas
*----------------------------------------------------------------------*
TABLES: mara.
*----------------------------------------------------------------------*
* Tipos
*----------------------------------------------------------------------*
TYPES: BEGIN OF ty_mara,
matnr TYPE mara-matnr,
" N Material
matkl TYPE mara-matkl,
" Grupo de Mercadoria
ersda TYPE mara-ersda,
" Data de Criao
meins TYPE mara-meins,
" Unidade de Medida
END OF ty_mara,
BEGIN OF ty_makt,
matnr TYPE makt-matnr,
maktx TYPE makt-maktx,
END OF ty_makt,

" N Material
" Descrio do Material

BEGIN OF ty_fim,
matnr TYPE mara-matnr,
matkl TYPE mara-matkl,
ersda TYPE mara-ersda,
meins TYPE mara-meins,
maktx TYPE makt-maktx,
END OF ty_fim.

"
"
"
"
"

N Material
Grupo de Mercadoria
Data de Criao
Unidade de Medida
Descrio do Material

*----------------------------------------------------------------------*
* Tabelas Internas e Estruturas
*----------------------------------------------------------------------*
DATA: t_mara TYPE TABLE OF ty_mara WITH HEADER LINE, "Tab para material
t_makt TYPE TABLE OF ty_makt WITH HEADER LINE, "Tab para texto mat
t_fim TYPE TABLE OF ty_fim WITH HEADER LINE. "Tab de Apresentao
*----------------------------------------------------------------------*
* Variaveis e Constantes
*----------------------------------------------------------------------*
CONSTANTS: c_pt(2) TYPE c VALUE 'PT'. " Valor para idioma PT
DATA: v_idioma TYPE makt-spras.

" Verificao do Idioma escolhido

*----------------------------------------------------------------------*
* Tela de Seleo
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: so_mat FOR mara-matnr OBLIGATORY.
PARAMETERS: p_spa TYPE makt-spras.
SELECTION-SCREEN END OF BLOCK b1.

Page 19

Documento BI
*----------------------------------------------------------------------*
* Seleo dos dados
*----------------------------------------------------------------------*
START-OF-SELECTION.
SELECT
FROM
INTO
WHERE

matnr matkl ersda meins


mara
TABLE t_mara
matnr IN so_mat.

IF sy-subrc = 0.
SORT t_mara BY matnr.
IF p_spa IS INITIAL.
v_idioma = c_pt.
ELSE.
v_idioma = p_spa.
ENDIF.
SELECT matnr maktx
FROM makt
INTO TABLE t_makt
FOR ALL ENTRIES IN t_mara
WHERE matnr = t_mara-matnr
AND spras = v_idioma.
IF sy-subrc = 0.
SORT t_makt BY matnr.
ENDIF.
ENDIF.
*----------------------------------------------------------------------*
* Preencher a tabela
*----------------------------------------------------------------------*
END-OF-SELECTION.
LOOP AT t_mara.
READ TABLE t_makt WITH KEY t_mara-matnr.
IF sy-subrc = 0.
t_fim-matnr = t_mara-matnr.
t_fim-matkl = t_mara-matkl.
t_fim-ersda = t_mara-ersda.
t_fim-meins = t_mara-meins.
t_fim-maktx = t_makt-maktx.
APPEND t_fim.
ENDIF.
WRITE /: t_fim.
ENDLOOP.

5.2 DIFERENAS SAP/4.6C PARA O SAP/ECC


Uma grande diferena que podero encontrar que alguns clientes ainda no h o
ECC ento as telas, os cdigos e o Modo de Depurao ficam com aparncias
diferentes.
No cdigo fonte, podemos ver a diferena nos detalhes.
Page 20

Documento BI
No SAP/4.6C, o cdigo era todo escrito em preto e os comentrios ficam destacados
em azul (os comentrios so as informaes que esto precedidas do * (asterisco)
ou (aspas duplas)).

J no editor novo, no SAP/ECC ele apresenta melhores caractersticas, onde os


comandos ficam destacados em azul, os comentrios em cinza, os nmeros em azul
claro e os textos (Hard-Codes) em verdes.

No Modo de Depurao, o modo de trabalhar com as informaes fcaram mais


detalhados, porm ainda seguem o mesmo princpio bsico e os mesmos comandos.

Page 21

Documento BI
Tela de Debug clssico 4.6C

Tela de Debug ECC

5.3 LINKS UTEIS

http://wiki.sdn.sap.com/wiki/display/BI/ABAP+in+BW
http://scn.sap.com/welcome
https://websmp209.sap-ag.de/~SAPIDP/002006825000000234912001E
http://www.netviewer.com/sap-ags/en/

Page 22