22
Documento BI Page 1 ABAP / BW Especificador Funcional Victor Dias da Silva Difusão do Documento Nome do Documento ABAP - BW Tema Network System Security Histórico do Documento: Versão Data da Revisão Redator 001 25.01.2012 Victor Dias da Silva

Abap - Manual Basico Abap Bw

Embed Size (px)

Citation preview

Page 1: Abap - Manual Basico Abap Bw

Documento BI

Page 1

ABAP / BW

Especificador Funcional Victor Dias da Silva

Difusão do Documento

Nome do Documento ABAP - BW

Tema Network System Security

Histórico do Documento:

Versão Data da Revisão Redator

001 25.01.2012 Victor Dias da Silva

Page 2: Abap - Manual Basico Abap Bw

Documento BI

Page 2

Índice

1 INTRODUÇÃO 3

1.1 Contexto 3

1.2 Informações 3

1.3 Requisitos mínimos 3

2 CONHECENDO O ABAP 4

2.1 ABAP 4

2.2 Exemplo de Código ABAP 4

2.3 Principais comandos 6

3 ACESSANDO O ABAP NO BW 7

3.1 Transformações 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 Informações adicionais do Debug 17

4.5 Debug no BW 17

5 INFORMAÇÕES ADICIONAIS 19

5.1 Programa para DEBUG - ECC 19

5.2 Diferenças SAP/4.6C para o SAP/ECC 20

5.3 Links Uteis 22

Page 3: Abap - Manual Basico Abap Bw

Documento BI

Page 3

1 INTRODUÇÃO

1.1 CONTEXTO

O ABAP é utilizado em grande parte do BW para obter e manipular informações, para que estas sejam consistentes e possam atender algumas especificidades na geração de dados.

1.2 INFORMAÇÕES

No BW os principais focos de desenvolvimento são as rotinas dentro das

Transformações (Transformations), reconhecidas pelo símbolo , estas são:

"Rotina Inicial (Start Routine)"

"Rotina no Campo (Routine Field)"

"Rotina Final (End Routine)". Outro ponto de modificação são as “Exits” e os “Enhancements”, e em alguns casos Programas específicos gerados na transação SE38. Estes não feitos dentro de uma transformation, mas seus códigos podem ser acessados através de extratores, variáveis e/ou Cadeias de Processos (Process Chains).

1.3 REQUISITOS MÍNIMOS

Para o entendimento da construção e utilização do ABAP é preciso ter um conhecimento prévio sobre linguagem de programação estruturada ou de alguns termos que serão usados no decorrer deste documento:

Variável: É um objeto capaz de reter e representar um valor ou expressão. Enquanto as variáveis só "existem" em tempo de execução, elas são associadas a “nomes”, chamadas identificadores, durante o tempo de desenvolvimento.

Tabela Interna: São estruturas montadas a partir de campos chaves que serão usados durante a execução do programa, para armazenas os dados de uma seleção ou de um tratamento de dados.

Instruções ABAP: Quase sempre precisamos do uso do HELP (botão F1), assim podemos entender como e porque são usados alguns comandos.

* e “: Representam o uso de comentários no código.

Page 4: Abap - Manual Basico Abap Bw

Documento BI

Page 4

2 CONHECENDO O ABAP

2.1 ABAP

ABAP (Advanced Business Application Programming) é uma linguagem de programação de alto nível 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 CÓDIGO ABAP

Page 5: Abap - Manual Basico Abap Bw

Documento BI

Page 5

Page 6: Abap - Manual Basico Abap Bw

Documento BI

Page 6

2.3 PRINCIPAIS COMANDOS

O código acima descreve um acesso à tabela T005T e recolhe as informações de nome e código dos países. Este é um programa simples criado para os relatórios 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 variáveis e os campos que serão parametrizados para a recepção de informações durante a execução do programa. Na declaração usamos o TYPE para definir que tipo terá a variável, isto é, que tipo de informação essa variável estará apta a comportar.

DATA: v_material TYPE mara-matnr. DATA: t_material TYPE ty_material.

TYPES

Quando necessário acessar algumas informações relacionadas, usamos o TYPES para criar uma tabela interna que irá receber nossas informações e armazená-las durante a execução 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 informações das tabelas do SAP, informando os campos que serão usados, usamos em sua composição o FROM para informar a tabela da qual extrairemos os dados o INTO para direcionar o resultado e o WHERE para definir as cláusulas de nossa seleção.

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

LOOP AT / ENDLOOP

Quando preenchemos a tabela com valores e precisamos adaptar essas informações ou trabalhar esses dados, como por exemplo, escreve-los em um formulário, usamos o LOOP para ler registros linha a linha de nossa tabela.

LOOP AT t_mara. WRITE /: t_mara-matnr '-' t_mara-maktx. ENDLOOP.

IF / ELSE / ENDIF CASE / ENDCASE DO / ENDDO

Estas são formas condicionais usadas em muitas linguagens de programação e funcionam para tratativa de nossas informações ou para o processamento de dados específicos que dependem da necessidade ou do tipo de informação desejada no resultado final.

IF t_mara-matnr > '40000'. WRITE /: 'Inválido'. ELSE. WRITE /: 'Válido'. ENDIF.

É importante conhecer alguns dos camandos ABAP e será normal se deparar com situações com códigos extensos e difíceis de compreender. Uma dica, sempre que não conhecer a instrução ABAP, coloque o cursor sobre esta e aperte F1. Como tudo no SAP, irá trazer uma tela explicativa.

Page 7: Abap - Manual Basico Abap Bw

Documento BI

Page 7

3 ACESSANDO O ABAP NO BW

3.1 TRANSFORMAÇÕES

Para as transformações sempre usaremos os mesmos tipos de estruturas / tabelas internas, pois os dados preenchidos nesta etapa sempre estão em uma estrutura genérica standard. Para entender a melhor forma de manipular a informação é preciso conhecer o conceito de quais são as etapas das informações quando transferidas de um ponto para outro. Por exemplo, vemos o fluxo: PSA TRANFORMATION DSO. Então as informações estarão como: PSA Rotina Inicial Rotina nos campos Rotina Final DSO.

3.1.1 Rotina Inicial.

Na Rotina Inicial, usaremos a SOURCE_PACKAGE, são os dados direto do extrator. E podemos ver no código ABAP quais são os campos que fazem parte desta estrutura.

Estes campos são os mesmos que temos na nossa Transformação:

Page 8: Abap - Manual Basico Abap Bw

Documento BI

Page 8

Então o próprio BW gera a tabela SOURCE_PACKAGE genérica, que irá conter os dados. Para manipular os dados é sempre recomendável não fazê-lo diretamente na estrutura genérica, use uma estrutura no programa, movendo os dados e no final das modificações preencha a estrutura genérica com as novas informações. 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 código usando a tabela t_routine.

(…)

SOURCE_PACKAGE[] = t_routine[].

3.1.2 Rotina no Campo.

Na Rotina de campos, não precisamos usar nenhuma estrutura, pois tratamos os registros um por um preenchidos em variáveis standards. Usamos os valores contidos no SOURCE_FIELDS.

Page 9: Abap - Manual Basico Abap Bw

Documento BI

Page 9

E terminamos por após preencher o valor da nossa variável, alimentamos o campo RESULT com o valor. (...)

RESULT = t_cperson.

(...)

3.1.3 Rotina Final.

Na Rotina Final, usaremos a RESULT_PACKAGE, São os dados depois de processados na transformação e prestes a serem enviados para a DSO ou CUBO. E também podemos ver no código ABAP quais são os campos que fazem parte desta estrutura.

Page 10: Abap - Manual Basico Abap Bw

Documento BI

Page 10

Estes campos são os mesmos que temos na nossa Transformação:

Então o próprio BW gera a tabela RESULT_PACKAGE genérica, que irá conter os dados. Para manipular os dados é sempre recomendável não fazê-lo diretamente na estrutura genérica, use uma estrutura no programa, movendo os dados e no final das modificações preencha a estrutura genérica com as novas informações. 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 código usando a tabela t_routine.

(…)

RESULT_PACKAGE[] = t_routine[].

Page 11: Abap - Manual Basico Abap Bw

Documento BI

Page 11

4 DEBUG

4.1 DEBUG

O DEBUG ou Modo de Depuração é a forma de executar um processo no SAP e examiná-lo durante a execução, podendo verificar como irão se comportar o preenchimento de uma tabela ou variável.

4.2 ENTENDENDO UM DEBUG

Em um programa, normalmente iremos preencher a tela de seleção com as informações com as quais pretendemos executa-lo. Após o preenchimento da tela de seleção, 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 12: Abap - Manual Basico Abap Bw

Documento BI

Page 12

Para navegar pelo programa usaremos as seguintes teclas ou os botões de navegação:

(F5) ou Navegar as intruções etapa por etapa individualmente.

(F6) ou Navegar um grupo de informações que esteja encadeadas.

(F7) ou Navegar para fora de um grupo de informações encadeadas.

(F8) ou Executar o programa diretamente. Então se continuarmos nosso DEBUG, aperte F5.

Page 13: Abap - Manual Basico Abap Bw

Documento BI

Page 13

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

Porém, ainda está vazia. Aperte novamente o F5 para que a seleção preencha a tabela: Se adicionarmos [] no final do nome da tabela, apresenta a quantidade de

registros.

Outro ponto importante é a validação que segue alguns preenchimentos, SY-

SUBRC ele indica se houve sucesso ou não na sua ação. O valor “0” representa sucesso, e geralmente os valores “4” e “8” que houve erro.

Page 14: Abap - Manual Basico Abap Bw

Documento BI

Page 14

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 15: Abap - Manual Basico Abap Bw

Documento BI

Page 15

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 Depuração:

1- Insira o comando /H em seguida o ENTER para ativa-lo. No local onde colocamos transações inserimos o comando /H:

Pressionamos ENTER e a seguinte mensagem irá aparecer no Rodapé:

2- No código do programa, marque a linha onde deseja que o programa seja

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

Page 16: Abap - Manual Basico Abap Bw

Documento BI

Page 16

Então 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 depuração do código a partir do ponto indicado.

Page 17: Abap - Manual Basico Abap Bw

Documento BI

Page 17

4.4 INFORMAÇÕES ADICIONAIS DO DEBUG

Para o DEBUG acima, foi usado um programa no SAP/ECC e segue no final deste documento o código para copiá-lo e criar seu programa no ECC.

No BW, a forma que mais vamos usar é a 3ª, isto é a instrução BREAK-POINT.

4.5 DEBUG NO BW

Com as informações acima, podemos agora, iniciar o Debug no BW. Este processo irá acontecer em sua maioria nas transformações, onde colocamos nossas rotinas e utilizaremos o comando BREAK-POINT. Porém 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 depuração usadas no ECC. Um ponto interessante no BW, é que podemos escrever nossos códigos dentro das transformações e adicionar o comando BREAK-POINT no decorrer dos nossos códigos, pois, ele não irá travar a execução das cargas. Assim, só acessamos o Modo de Depuração quando optamos por ele. No exemplo abaixo, adicionamos o BREAK-POINT na rotina inicial de uma transformação:

Page 18: Abap - Manual Basico Abap Bw

Documento BI

Page 18

Para que o BW abra o depurador e possamos analisar este código, precisamos ir no DTP que irá iniciar a carga e alterar o Modo de Execução:

Após a troca, clicar em “Simular”. A tela do Depurador será aberta no ponto desejado.

Page 19: Abap - Manual Basico Abap Bw

Documento BI

Page 19

5 INFORMAÇÕES 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 Criação

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, " Descrição 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 Criação

meins TYPE mara-meins, " Unidade de Medida

maktx TYPE makt-maktx, " Descrição 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 Apresentação

*----------------------------------------------------------------------*

* Variaveis e Constantes

*----------------------------------------------------------------------*

CONSTANTS: c_pt(2) TYPE c VALUE 'PT'. " Valor para idioma PT

DATA: v_idioma TYPE makt-spras. " Verificação do Idioma escolhido

*----------------------------------------------------------------------*

* Tela de Seleção

*----------------------------------------------------------------------*

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 20: Abap - Manual Basico Abap Bw

Documento BI

Page 20

*----------------------------------------------------------------------*

* Seleção 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 DIFERENÇAS SAP/4.6C PARA O SAP/ECC

Uma grande diferença que poderão encontrar é que alguns clientes ainda não há o ECC então as telas, os códigos e o Modo de Depuração ficam com aparências diferentes. No código fonte, podemos ver a diferença nos detalhes.

Page 21: Abap - Manual Basico Abap Bw

Documento BI

Page 21

No SAP/4.6C, o código era todo escrito em preto e os comentários ficam destacados em azul (os comentários são as informações que estão precedidas do * (asterisco) ou “ (aspas duplas)).

Já no editor novo, no SAP/ECC ele apresenta melhores características, onde os comandos ficam destacados em azul, os comentários em cinza, os números em azul claro e os textos (Hard-Codes) em verdes.

No Modo de Depuração, o modo de trabalhar com as informações fcaram mais detalhados, porém ainda seguem o mesmo princípio básico e os mesmos comandos.

Page 22: Abap - Manual Basico Abap Bw

Documento BI

Page 22

Tela de Debug clássico 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/