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

Security

Histrico do Documento: Verso Data da Reviso 001 25.01.2012

Redator Victor Dias da Silva

Page 1

Documento BI ndice
1
1.1 1.2 1.3

INTRODUO
Contexto Informaes Requisitos mnimos

3
3 3 3

2
2.1 2.2 2.3

CONHECENDO O ABAP
ABAP Exemplo de Cdigo ABAP Principais comandos

4
4 4 6

ACESSANDO O ABAP NO BW

7
7 7 8 9

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

4
4.1 4.2 4.3 4.4 4.5

DEBUG
Debug Entendendo um Debug Ativando o Debug Informaes adicionais do Debug Debug no BW

11
11 11 15 17 17

5
5.1 5.2 5.3

INFORMAES ADICIONAIS
Programa para DEBUG - ECC Diferenas SAP/4.6C para o SAP/ECC Links Uteis

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

DATA

TYPES

TYPES: BEGIN OF ty_material, material TYPE mara-matnr, mat_tex TYPE mara-maktx, END OF ty_material. SELECT matnr maktx FROM mara INTO TABLE t_mara WHERE matnr > '10000'.

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.

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

IF / ELSE / ENDIF CASE / ENDCASE DO / ENDDO

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, 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 " Descrio do Material

" " " " "

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