Академический Документы
Профессиональный Документы
Культура Документы
ABAP / BW
System
Security
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).
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:
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.
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
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.
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
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.
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.
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
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
O cursor ir parar exatamente neste comando, permitindo a depurao do cdigo a partir do ponto indicado.
Page 16
Documento BI
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
*----------------------------------------------------------------------* * 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
*----------------------------------------------------------------------* * 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.
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
Page 22