Você está na página 1de 22

Documento BI

ABAP / BW

Especificador Funcional Victor Dias da Silva


Difuso do Documento
Nome do Documento ABAP - BW
Tema Network System Security

Histrico do Documento:
Verso Data da Reviso Redator
001 25.01.2012 Victor Dias da Silva

Page 1
Documento BI

ndice

1 INTRODUO 3

1.1 Contexto 3

1.2 Informaes 3

1.3 Requisitos mnimos 3

2 CONHECENDO O ABAP 4

2.1 ABAP 4

2.2 Exemplo de Cdigo ABAP 4

2.3 Principais comandos 6

3 ACESSANDO O ABAP NO BW 7

3.1 Transformaes 7
3.1.1 Rotina Inicial. 7
3.1.2 Rotina no Campo. 8
3.1.3 Rotina Final. 9

4 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

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

Este comando ir servir para declarar suas variveis e os


campos que sero parametrizados para a recepo de
informaes durante a execuo do programa. Na DATA: v_material TYPE mara-matnr.
DATA
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.

Quando necessrio acessar algumas informaes TYPES: BEGIN OF ty_material,


relacionadas, usamos o TYPES para criar uma tabela material TYPE mara-matnr,
TYPES
interna que ir receber nossas informaes e armazen- mat_tex TYPE mara-maktx,
las durante a execuo do programa. END OF ty_material.

Usamos o SELECT para obter as informaes das tabelas


do SAP, informando os campos que sero usados, SELECT matnr maktx
usamos em sua composio o FROM para informar a FROM mara
SELECT
tabela da qual extrairemos os dados o INTO para INTO TABLE t_mara
direcionar o resultado e o WHERE para definir as WHERE matnr > '10000'.
clusulas de nossa seleo.
Quando preenchemos a tabela com valores e precisamos
LOOP AT t_mara.
adaptar essas informaes ou trabalhar esses dados,
LOOP AT / WRITE /: t_mara-matnr '-'
como por exemplo, escreve-los em um formulrio,
ENDLOOP t_mara-maktx.
usamos o LOOP para ler registros linha a linha de nossa
ENDLOOP.
tabela.
IF / ELSE / Estas so formas condicionais usadas em muitas IF t_mara-matnr > '40000'.
ENDIF linguagens de programao e funcionam para tratativa WRITE /: 'Invlido'.
CASE / de nossas informaes ou para o processamento de ELSE.
ENDCASE dados especficos que dependem da necessidade ou do WRITE /: 'Vlido'.
DO / ENDDO tipo de informao desejada no resultado final. 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 Navegar as intrues etapa por etapa individualmente.


(F6) ou Navegar um grupo de informaes que esteja encadeadas.
(F7) ou Navegar para fora de um grupo de informaes encadeadas.
(F8) ou 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, SY-


SUBRC 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, " N Material
maktx TYPE makt-maktx, " Descrio do Material
END OF ty_makt,

BEGIN OF ty_fim,
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
maktx TYPE makt-maktx, " Descrio do Material
END OF ty_fim.

*----------------------------------------------------------------------*
* 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 matnr matkl ersda meins


FROM mara
INTO TABLE t_mara
WHERE 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

Você também pode gostar