Você está na página 1de 115

Viso Geral de ABAP

Treinamento destinado a consultores funcionais com conhecimentos bsicos de anlise de sistemas e tcnicas de programao

Agenda
Dia 1
Conceitos Gerais, Ambiente de desenvolvimento; Dicionrio de Dados, Processamento de Programas; Editor ABAP4.

Dia 2
Linguagem de Programao; Declaraes e Instrues.

Dia 3
Ferramentas para cargas e interfaces; ABAP Debugger;

Dia 4
ABAP Debugger SQL Trace

Conceitos Gerais

Conceitos Gerais
Objetos Client Dependent: Dependentes do mandante, por exemplo formulrios de Sapscript, Relatrios de Report Writer/Painter, ABAP QUERY(se criada na rea Standard), parametrizao/customizaes, contedo de tabelas etc. Objetos Client Independent: Independentes de mandante, por exemplo programas Z*, todos os programas standards, todas as funes, estrutura de tabelas etc.

Conceitos Gerais
Classe de desenvolvimento (Pacote) So importantes para transporte entre sistemas de produo, qualidade e desenvolvimento. As classes tambm so importantes para combinar todos os objetos pertencentes a um determinado desenvolvimento, como por exemplo: ZBC0 Classe de desenv.para Basis ZCO_DES Classe para objetos de CO Z_DEV Classe de desenv.para INAL ZFI_DES Classe para objetos de FI

cs46114:
SE10 - Verificar LOG da request

Conceitos Gerais
Request Guarda as modificaes ou customizaes feitas e que se deseja transportar para um determinado ambiente. Uma vez liberada a ordem de transporte mantm as alteraes feitas at aquele momento. Novas alteraes/customizaes no mesmo lugar iro solicitar nova ordem de transporte. Processamento em Background Execuo do programa de forma no interativa, ou seja, execuo via job ou execuo que no acontece atravs de telas de dilogo. No visvel para o usurio. Variantes Grupo de caractersticas previamente selecionados e armazenados, muito usado para execuo em background.

Conceitos Gerais
Spool
Registro criado quando uma informao enviada para impressora ou outro dispositivo.

Quando executamos um relatrio em Background a informao gerada pode ficar armazenada no spool para consulta ou pode ser direcionada para a impressora caso o programa esteja preparado para isso, numa execuo normal geralmente a informao vai para o spool.
Transao SP01.

Conceitos Gerais
Job Cadeia de programa(s) executado(s) cronologicamente um aps o outro em background. Um job constitudo de um ou mais steps. O job pode ser criado quando se deseja: Executar um ou mais programas periodicamente; Executar programas demorados; Executar um conjunto de passos sequenciados, vrios programas que dependam da execuo um dos outros; Executar programas em paralelo.

Transao:

SM36 Definir Jobs SM37 Seleo Jobs

Ambiente de Desenvolvimento

ABAP/4 Development Workbebch


O ABAP Workbench um conjunto de programas para desenvolvimento de aplicaes que executam no Sistema R/3. Com ele pode-se criar, editar, testar e organizar aplicaes desenvolvidas. totalmente integrado com o Sistema Basis R/3 e como outras aplicaes no R/3 tambm escrito em ABAP.
composto das seguintes ferramentas: Repository, incluindo o Dicionrio ativo; Workbench Organizer; Vrias ferramentas de teste e anlise.

Repository
O Repositrio R/3 o ponto central onde os componentes desenvolvidos no ABAP/4 Development Workbench so armazenados. Esse componetes so: os mdulos de processos, modelos de dados, objetos de negcio, todos os dados e seus relacionamentos.
O Repositrio R/3 tambm inclui o dicionrio ABAP. Transao: SE80, SE84 (info repository)

Workbench Organizer
Fornece funes para organizar projetos de desenvolvimento, registrar alteraes em objetos e transport-las na Qualidade e Produo. Est totalmente integrada com as ferramentas de customizao o Customizing Organizer e designada para suportar projetos de todos os tamanhos . Transao: SE09 e SE10.

Dicionrio de Dados

Tabelas
A definio de uma tabela consiste dos seguintes componentes: Campos Define o nome e o tipo dos campos da tabela. Chaves Estrangeiras( Check Table ) define o relacionamento entre a tabela e outras tabelas do sistema, usadas para manter a integridade dos dados no BD. Opes Tcnicas controla como a tabela deve ser criada no Banco de Dados. ndices: Para melhorar a performance nos acessos a tabela, podese criar ndices secundrios para ela. Uma tabela armazena dados persistentes.

Campos de Tabela
Ao se criar uma tabela ser necessrio informar : Campo: O nome do campo pode conter at 16 caracteres, devendo comear com uma letra Flag-Chave: Indicativo para campos chave Tipo: Tipo de dado do campo Comprimento: Comprimento do campo Casas Decimais: Nmero de casas decimais aps a vrgula Texto Breve: Descrio breve do campo

Tipos de Tabelas
Tabela Transparente Existe uma tabela fsica no banco de dados para uma tabela transparente. Os nomes da tabela fsica e da definio lgica de tabela so coincidentes no ABAP Dictionary. Todos os dados empresariais e dados de aplicao so arquivados em tabelas transparentes. Tabela Cluster uma tabela no banco de dados que contm um campo LONG RAW e precisa de uma view para interpretar este campo. O campo long raw contm uma string concatenando vrias informaes. Essas tabelas existem para permitir a criao de tabelas com mais de 255 campos que de outra forma no seria possvel por uma limitao do banco de dados. REGUC Tabela transparente REGUP - View

cs46114: Estrutura - Usada mais para armazenamento em memria

Tipos de Tabelas

Tabela Pool Um pool de tabelas uma tabela de banco de dados que permite que os dados de mltiplas tabelas do R/3 sejam armazenadas dentro dele. As tabelas de Pool so uma estrutura proprietria da SAP e so utilizadas para armazenar um grande nmero de tabelas muito pequenas. Estruturas So como tabelas que no armazenam dados, definem um conjunto de campos e geralmente so utilizadas para definir os dados na interface de pools de mdulos e telas, assim como para atribuir o tipo aos parmetros de mdulos de funo. Utilizado para alocar memria para um grupo de campos. Uma estrutura diferentemente de uma tabela no tem uma tabela de banco de dados associada a ela.

Elemento de dados
Elementos de dados. Os elementos de dados agrupam as definies de tipo, tamanho e descrio dos campos em um s objeto. til quando os campos se repetem em diversas tabelas.
Campo EBELN Elemento de dados Descrio breve EBELN N documento de compra

Domnios
Domnios Os domnios contem os tipo de dado e comprimento do campo. Podem conter os valores vlidos para o campo, atravs de valores fixos entrados no domnio ou por uma tabela de valores (Value Table). Tabela de Valores Contm os valores que o domnio pode assumir.

ndices
Um ndice pode ser considerado como uma cpia da tabela que foi reduzida a um certo numero de campos. Esta cpia est sempre ordenada. A ordenao faz com que o acessos ao registros se torne mais rpido, o ndice tambm contm, um ponteiro para o registro real na tabela transparente, para que os campos que no esto no ndice tambm possam ser lidos O ndice primrio separado dos ndices secundrios. O ndice primrio constitudo dos campos indicados como campo-chave na criao da tabela.

Exemplo ndices

ndices

cs46114:
Usada para realizar um select

Vises
Vises So tabelas virtuais que resultam da unio de tabelas transparentes e que contm uma certa quantidade de informaes.

Exemplo de Viso - Tabelas

Exemplo de Viso - Campos

Ajudas de Pesquisa
A ajuda de pesquisa (F4) uma funo standard do sistema R/3. O usurio pode exibir uma lista de todas as entradas possveis para um campo na tela de acordo com parmetros indicados por ele. Existem dois tipos: Elementar Coletiva

Processamento de Programas

cs46114:
Inicialization

cs46116:
Debug de relatrio no funciona para ALV.

- Fica objeto de validao usurio, preenchimento tela

Relatrios

Subrotinas

cs46114:
Funo pode ser reutilizada em vrios programas. Pode ficar na classe de desenvolvimento ou criar uma especfica para funes

Transao: SE37

Funes

cs46114:
Relatrios

Write - Imprime linhas no resultado ou passagem de infr da var1 p/ var2. Commando / solta linha. Skip tbm salta linha mas independente do LINE. Uline desenha uma linha no relatrio.
top of page - formatar cabealho User command - evento de boto e menu

Listas

cs46114:
Transao SE80 PBO - Processar antes de exibir a tela PAI - Evento depois de processar a tela

Telas
As telas so o tipo mais comum de dilogo usado em programas ABAP. So definidas no Screen Painter. Uma tela consiste de uma mscara de entrada e sada e de um fluxo lgico. Pode-se usar uma transao de fora do programa para chamar uma tela ou uma sequncia de telas ou de dentro do programa atravs do comando CALL SCREEN. O fluxo lgico da tela dividido em: PBO Process Before Output, PAI Process After Input

Telas de Seleo

cs46114:
Se tiver vrias pginas, sempre volta no PAI da pgina anterior antes de voltar para o PBO da pgina anterior

Mdulos de Dilogo

O Editor ABAP/4

Editor ABAP/4

Transao: SE38

cs46114:
SE38 Caracterstica - Utilitrio/Ir para/Caracterstica Se o programa de erro de clculo verificar se o campo ARITMTICA EM PONTO FSICO est marcado Programa/Verificar/Programa Ampliada verifica se est conforme as diretrizes da SAP. Atentar para a coluna ERROS - Tbm pode ser checado pela SE10/request/Ordem tarefa/verificao global/Objetos (verificao de sintaxe) - Tbm checar em /Verificao global/consistncia

Atributos do Programa

A Linguagem de Programao ABAP/4

Estrutura dos Programas


Cabealho Nome Declaraes Tabelas Internas Variveis Constantes Ranges Tabelas Transparentes Instrues Organizadas por blocos

cs46114:
Line-size - tamanho da linha

No standard page ... - No utilizar o cabealh padro

Cabealho
REPORT Nome

Geralmente cada mdulo (SD,FI,..) tem sua cla de mensagens

REPORT Nome NO STANDARD PAGE HEADING LINE-SIZE C LINE-COUNT L(M) MESSAGE-ID class
Nome C L M Class nome do relatrio nmero de colunas nmero de linhas at 255 nmero de linhas para o rodap nome da classe de mensagem

Cabealho - Exemplo

Declaraes - Exemplo

Tela de Seleo - Exemplo

Eventos e Instrues
INITIALIZATION AT SELECTION SCREEN START-OF-SELECTION END-OF-SELECTION TOP-OF-PAGE (incio relatrio) END-OF-PAGE (fim relatrio) AT USER-COMMAND (tratamento de botes) AT LINE-SELECTION (Sub-rotinas)

Eventos e Instrues - Exemplo

Subrotinas - Forms

Declaraes

Tipos de Dados

cs46114:
Type - vc diz qual o tipo da varivel

Data no SAP sempre invertida

Variveis
Variveis
DATA: varname(n) TYPE _. DATA: varname LIKE varname2 VALUE valor_default.

Exemplo:
DATA: w_contador TYPE I value 100. DATA: w_data LIKE sy-datum VALUE 20040106.

cs46114:
Cuidado para no fixar hardcode no prg atravs do uso de constantes

Constantes
Constantes CONSTANTS: constname(n) TYPE _. CONSTANTS: constname(n) LIKE varname2 VALUE valor_default.

Exemplo: CONSTANTS: c_contador TYPE I value 100. CONSTANTS: c_data LIKE sy-datum VALUE 20040106.

Tabelas
Tabelas Transparentes:
TABLES: tabbanco, tab1, tab2, tab3,...tabn.

Exemplo:
TABLES: LFA1, EKKO.

cs46114: Recomendvel em casos de IOs ao banco de dados. L um volume do BD e grava na interna. Ganho de performance. Por ex.: IO de select dentro de loop.

Tabelas Internas

Uma tabela interna consiste em uma srie de linhas do mesmo tipo de dados. Os dados so armazenados linha a linha na memria, e cada linha tem a mesma estrutura.
Deve-se usar tabelas internas sempre que precisar usar registros de tabelas transparentes dentro do programa. Uma tabela interna caracterizada pelo: Tipo de linha; Chave; Tipo de acesso.

cs46114:
Standard table: Lenta. Pode criar qualquer tipo de ndice O ideal usar mais de um tipo de tabela no programa.

Tipos de Tabelas Internas


Standard table: o tipo mais apropriado se voc vai enviar entradas individuais da tabela usando ndice. Acesso por ndice o mais rpido acesso possvel;
Sorted table: o tipo mais apropriado se voc precisa de uma tabela ordenada independente do seu preenchimento; Hashed table: o tipo mais apropriado para qualquer tabela onde a operao principal acesso pelas chaves; So teis se voc quer construir e usar uma tabela interna que se assemelha a uma tabela de Banco de Dados. A vantagem que o overhead para busca de dados na tabela no aumenta com o aumento do tamanho da tabela.

cs46114:
SAP no trabalha com ponteiro. O registro lido da tabela interna e levado para header line que composto por todas as informaes do registro. No fica posicionado no registro e sim no header line.

cs46114:
BEGIN OF t_pend OCCURS 0 - forma de criar tabela interna. OCCURS 0 indica que tem header line.

Tabelas Internas

Tabelas Internas:
DATA: t_tab1 TYPE tabinttipo OF estrutname WITH HEADER LINE, t_tab2 LIKE tabinttipo OF tab1 WITH HEADER LINE.

Exemplo:
DATA: T_TAB1 TYPE STANDARD TABLE OF TP_BANCO WITH HEADER LINE, T_TAB2 TYPE STANDARD TABLE OF LFA1 WITH HEADER LINE.

Estruturas
Estruturas
TYPES: BEGIN OF <typename>, var1 TYPE _, var2 LIKE tab1-campo, ..... END OF <typename>. TYPES BEGIN OF <typename>,. INCLUDE STRUCTURE <tabbanco>. TYPES END OF <typename>,.

Exemplo
TYPES: BEGIN OF TP_BANCO numero TYPE N, agencia TYPE N, nome(30) TYPE C, END OF TP_BANCO. TYPES BEGIN OF FORNECEDOR. INCLUDE STRUCTURE LFA1. TYPES END OF FORNECEDOR.

Registros
Registros
TYPES: BEGIN OF <typename>, var1 TYPE _, var2 LIKE tab1-campo, ..... END OF <typename>. DATA: T_TAB1 TYPE <typename>.

Exemplo
TYPES: BEGIN OF TP_BANCO numero TYPE N, agencia TYPE N, nome(30) TYPE C, END OF TP_BANCO. DAtA: T_BANCO TYPE TP_BANCO.

Variveis do sistema
Campo tabela SYST SY-DATUM SY-UNAME SY-UZEIT SY-SUBRC Significado Data atual Usurio atual Hora atual Cdigo de retorno.

SY-TCODE
SY-MANDT SY-UCOMM SY-DBCNT

Cdigo da transao
Indica o nmero do Mandante Comando N de linhas retornados pelo SELECT

Para consultar outras variveis de sistema, utilizar a tabela SYST

Instrues

cs46114:
var1 = var2

atribui o valor de var2 para var1

Instrues de Atribuio
MOVE var1 TO var2. MOVE-CORRESPONDING reg1 TO reg2.

Exemplo:
...

* Declarao estrutura DATA: BEGIN OF FS_BANCO, AGENCIA(04) TYPE N, NOME(25) TYPE C, END OF FS_BANCO. DATA: w_banco(10) type C, s_banco LIKE FS_BANCO. * Comando Move MOVE Ita to w_banco. * Comando Move-corresponding MOVE-CORRESPONDING fs-banco to s_banco.

Instrues de Clculo
[COMPUTE] var1 = expresso. Operadores + (soma), ou, ADD (subtrao) ou, SUBTRACT * (multiplicao) ou, MULTIPLY / (Diviso) ou, DIVIDE ** (Potenciao) , DIV (Parte interira da diviso), MOD (Parte decimal da diviso). Funes SQRT() EXP() LOG() SIN() COS() TAN() STRLEN() n n var1 var1 TO var1. FORM var1. BY n. BY n.

(Raiz Quadrada) (Exponencial) (Log.Neperiano) (Seno) (Coseno) (Tangente) (Tamanho da String)

cs46114:
String+m(n) = equivale ao substring do PL

Operaes com Strings


Tipo de Dados: C, N, D e T. String(n) N caracteres da esquerda para String+n Aps o n-simo caracter at o fim da string String+m(n) Aps o m-simo caracter n caracteres Data atual Outra data Dia Diferena de Dias 20040107 20040107 20040101 20031231 20041207 341

DATA:

w_dia1 TYPE d, w_dia2 LIKE w_dia1, w_dia3 LIKE w_dia1, Anterior w_dif TYPE i.

w_dia1 = sy-datum. w_dia2 = w_dia1. w_dia1+6(6) = 01. W_dia3 = w_dia1 1. Move w_dia3+4(2) to w_dia2+4(2). W_dif = w_dia2 w_dia1.

Data atual: Data atual: Mudou o dia: Mudou o dia: Moveu o Ms: Diferena :

Operaes com Strings


SHIFT string BY n PLACES CIRCULAR LEFT/RIGHT.

DATA:

w_alphabet(10).

w_alphabet = ABCDEFGHIJ. SHIFT w_alphabet. w_alphabet contm: BCDEFGHIJ .

w_alphabet = ABCDEFGHIJ. SHIFT w_alphabet CIRCULAR. w_alphabet contm: BCDEFGHIJA.


w_alphabet = ABCDEFGHIJ. SHIFT w_alphabet CIRCULAR RIGHT. w_alphabet contm: JABCDEFGHI.

cs46114:
Replace-substitui caracter na string Condense-junta caracteres esquerda Strlen - tamanho da varivel

Operaes com Strings

REPLACE string1 WITH string2 INTO var1. TRANSLATE var1 USING __ TO UPPER CASE. SEARCH var1 FOR STARTING AT pos1 ENDING AT pos2. CONDENSE var1 [NO-GAPS]. STRLEN( var1 ).

cs46114:
Hotspot - mo encima da linha

Instrues de I/O
WRITE /col(dim) var1. HOTSPOT (Cria um ponto de atalho) INTENSIFIED (Cor intensa) REVERSE (Cor inversa) COLOR col_num (Nmero da cor) CENTERED (Centralizado) NO-GAP (Sem separador) NO-SIGN (Sem sinal) DD/MM/YY (Data formatada) CURRENCY moeda (Formato da moeda) DECIMALS casas (Nmero de casas decimais) ROUND casas (Arredondar casas decimais) UNDER var2 (Na mesma coluna da var2) AS CHECKBOX AS ICON AS SYMBOL (Exibir como checkbox) (Exibir cone) (Exibir como smbolo)

Instrues de I/O
ULINE/col(dim). SKIP n. FORMAT INTENSIFIED ON/OFF COLOR col_num REVERSE ON/OFF RESET. NEW-PAGE.

Instrues de I/O
PARAMETERS: p_par1 TYPE __ , p_par2 LIKE var1 DEFAULT valor_default, p_par3 AS CHECKBOX , p_par4 RADDIOBUTTON GROUP grpname OBLIGATORY. SELECTION-SCREEN: BEGIN OF BLOCK bl_name WITH FRAME TITLE title_text. END OF BLOCK bl_name. BEGIN OF LINE. END OF LINE. COMMENT pos(dim) text POSITION pos.

Instrues de I/O
SELECT-OPTIONS: s_par1 FOR campo1 NO-EXTENSION. NO INTERVALS. DEFAULT valor1 TO valor2. OBLIGATORY. NO-DISPLAY. MEMORY ID mem. MATCHCODE OBJECT obj. ,

cs46114:
CO - Contm somente os caracteres (exatamente igual)

CA - Contm pelo menos um dos caracteres

Operaes Lgicas
Operadores Simples: EQ ou = NE ou <> GT > GE >= LT < LE <= BETWEEN val1 and val2 IS INITIAL NOT val1 {operador}. Operadores para STRINGS: str1 CO str2 str1 CA str2 str1 CS str2 str1 CP str2

CS - Contm parte da palavra. Verifica a seqncia. CP - Considera true se os caracteres no existirem na string. Compara a string inteira. Inverso do CO (toda a seqncia diferente.

(Contains Only) (Contains Any) (Contains String) (Contains Pattern)

Instrues de Controle
IF condio. Bloco 1 ELSE. Bloco 2 ENDIF.
CASE varivel. WHEN valor1. Bloco 1 WHEN valor2. Bloco 2 WHEN OTHERS. Bloco n ENDCASE.

CASE X. WHEN raddiobutton1. Bloco 1 WHEN raddiobutton2. Bloco 2 ENDCASE.

cs46114:
ON CHANGE - Quando muda o valor da varivel entra no bloco

Instrues de Controle
ON CHANGE OF varivel. Bloco ENDON.
DO n TIMES. Bloco ENDDO. DO. IF condio. EXIT. ENDIF. Bloco ENDDO.

SM54 - Consegue verificar o programa ativo e marcar para debug CONTINUE - usado dentro de loop para voltar ao incio, capturando o prximo registro

WHILE condio. Bloco ENDWHILE.


CHECK condio. CONTINUE.

cs46114:
Cd de retorno devem sempre ser verificados aps o SQL para cada tabela. Assim verificado o resultado do acesso tabela. If SY-SUBRC = 0 faz COMMIT WORK else faz ROLLBACK endif

Comandos SQL
Open SQL contm as seguintes palavras-chave:

SY-DBCNT Quantos registros tem na tabela interna ROLLBACK desfaz a atualizao de todos os registros pendentes.

Cdigo de retorno SY-SUBRC SY-DBCNT

cs46114:
INTO <campo> ou <tabelase forem vrios campos> O ideal que no se coloque ABAP no SQL (bloco 1) pois degrada a performance.

Open SQL
SELECT <result> INTO <target> FROM <source> [WHERE <condition> ] [GROUP BY <fields>] [HAVING <cond>] [ORDER BY <fields>]. Bloco 1 [ENDSELECT.]

Clusula SELECT

Leitura de Tabelas
DATA: BEGIN OF WA, CARRID TYPE SPFLI-CARRID, CONNID TYPE SPFLI-CONNID, CITYFROM TYPE SPFLI-CITYFROM, CITYTO TYPE SPFLI-CITYTO, END OF WA, ITAB LIKE SORTED TABLE OF WA WITH NON-UNIQUE KEY CITYFROM CITYTO. SELECT CARRID CONNID CITYFROM CITYTO INTO CORRESPONDING FIELDS OF TABLE ITAB FROM SPFLI.
IF SY-SUBRC EQ 0. WRITE: / SY-DBCNT, 'Connections'. SKIP. LOOP AT ITAB INTO WA. WRITE: / WA-CARRID, WA-CONNID, WA-CITYFROM, WA-CITYTO. ENDLOOP. ENDIF.

cs46114:
<f> - campo da tabela

Condies Clusula WHERE


<f> <operador> <g>. <f> [NOT] BETWEEN <g1> AND <g2> [NOT] LIKE <mask> Sinais para mscaras: %,_,* e +. <f> [NOT] IN (<g1>,... ,<gn>) <f> IS[NOT] NULL <f> [NOT] IN <seltab> ...WHERE <condition1> AND <condition2> AND <condition3> AND... ...WHERE <condition1> OR <condition2> OR <condition3> OR... ...WHERE NOT <condition1>

cs46114:
COLLECT - Agrupa por um campo e guarda o somatrio a cada quebra

Comandos para Manipular Tabelas Internas



CLEAR tabint. REFRESH tabint. FREE tabint. INSERT tabint INDEX n. MODIFY tabint INDEX n. DELETE tabint INDEX n. APPEND tabint. DESCRIBE TABLE tabint LINES var1. READ TABLE tabint. Variveis do Sistema: SY-SUBRC e SY-TABIX READ TABLE tabint INDEX n. READ TABLE tabint WITH KEY condio. SORT tabint BY campo1 campo2 [DESCENDING]. COLLECT tabint. (Exemplo: ZDEMO_COLLECT)

cs46114:
SY-TABIX - guarda o ndice corrente (volume de leitura das tabelas)

Comandos para Manipular Tabelas Internas


LOOP AT tabint Bloco 1 ENDLOOP. Variveis LOOP AT tabint Bloco 1 ENDLOOP. Variveis [WHERE condio].
do Sistema: SY-TABIX FROM linha1 TO linha2.

AT NEW - for um novo registro AT END OF - quando for o ltimo registro da chave AT LAST - ltimo registro da tabela interna SUM - tabela tem que estar ordenada

do Sistema: SY-TABIX

Nveis de Quebra AT FIRST. AT NEW campo. AT END OF campo. AT LAST SUM.

..... ..... ..... .....

ENDAT ENDAT ENDAT ENDAT

(Primeiro Registro) (Novo Registro da Chave) (ltimo Registro da Chave) (ltimo Registro) (SUBTOTAL DA QUEBRA)

cs46114:
Perform externo retorna para o programa chamador

Subprogramas
Interno PERFORM nome.
Externo PERFORM nome(report_name). Sintaxe PERFORM nome USING A1 CHANGING A2 ..... FORM nome USING VALUE(par1) TYPE CHANGING par2 TYPE VALUE (par3) TYPE ENDFORM.

Evitar o uso de subrotina externa pois o objeto pode ser alterado e afetar o chamador.
PERFORM pode passar tabela como parmetro

A3. tipo tipo tipo.

Mdulos de Funo
CALL FUNCTION nome EXPORTING parmetros de envio IMPORTING parmetros de recebimento TABLES parmetros o tipo de tabela interna EXCEPTIONS cdigos de erros para SY-SUBRC. CALL FUNCTION 'GET_REL_DATE' IMPORTING E_REL_DATE = mim_date E_MAX_DATE = max_date EXCEPTIONS OTHERS = 1.

cs46114:
SELECTION-SCREEN ON VALUE-REQUEST abre o mathcode. ..ON HELPREQUEST usado para help.

Eventos
(Cabealho da Pgina) (Corpo da Lista) (Rodap do corpo da Lista) (Rodap da Pgina)

Eventos Associados ao Relatrio TOP-OF_PAGE. START-OF-SELECTION. END-OF-SELECTION. END-OF-PAGE.

Eventos Associados Tela de Seleo do Relatrio: INITIALIZATION. (Preenche os parmetros com valores) AT SELECTION-SCREEN ON VALUE-REQUEST FOR parmetro. AT SELECTION-SCREEN ON HELP-REQUEST FOR parmetro. Eventos Associados aos comandos do usurio: AT USER-COMMAND. (Varivel do Sistema: SY-UCOMM) AT LINE-SELECTION. (Processado quando escolhida uma linha vlida da lista)

cs46114:
CALL TRANSACTION -

Comandos de Execuo de Relatrio


Eventos Associados ao Relatrio
CALL TRANSACTION <tran> [AND SKIP FIRST SCREEn] LEAVE TO TRANSACTION <tran> SUBMIT <reportname> AND RETURN WITH SELECTION-TABLE <Seltab> WITH SELECTION-SCREEN VIA SELECTION-SCREEN USING SELECTION-SET <Variant> TO SAP-SPOOL DESTINATON <impressora> EXPORTING LIST TO MEMORY.

Passagem de Parmetro
SET PARAMETER ID <id_name1> FIELD <field_name1>. GET PARAMETER ID <id_name2> FIELD <field_name2>.
EXPORT <object1> <object2>... <objectn> TO MEMORY ID <id_name>. IMPORT <object1> <object2>... <objectn> FROM MEMORY ID <id_name>.

Ferramentas para cargas e interfaces

Batch Input
O Batch Input uma tcnica standard para a transferncia de grandes volumes de dados para o Sistema R/3. O fluxo transacional simulado ( SHDB) e os dados so transferidos como se entrassem de forma online. A vantagem que so executados todas as verificaes relevantes garantindo uma entrada consistente dos dados. O processo de Batch Input dividido em duas fases: Criao da sesso de Batch Input com os dados; Processamento da sesso de Batch Input executando transaes do sistema R/3 As pastas de Batch input podem ser processadas de vrias formas: Foreground; Background; Durante o processamento com display de erro;

Sesses
Funes para criar Sesses: call function 'BDC_OPEN_GROUP' exporting client = <cliente> group = <nome_pasta> user = <usurio> keep = 'X'. (manter pasta) call function 'BDC_INSERT' exporting tcode = <cod_trans> tables dynprotab = <bdc_tab>. call function 'BDC_CLOSE_GROUP'.

Sesses
Executar Sesses:
SM35 (transao utilizada para rodar o batch input) Gerar automat.programa: SHDB
(grava a transao para rodar automaticamente, tal como carga de dados parecido com macro)

Processamento: Cancelar sesso:/N Apagar sesso: /BDEL Cancelar e marcar incorreta: /NEND Alterar p/ mdulo de dilogo: /BDA Alterar p/ visuallizao de Erro: /BDE Alterar p/ execuo em background: /BDN

Call Transaction
Chama uma transao
o call transaction mais rpido que o batch input, porm mais trabalhoso para o programador. Usado para carga de dados.

Sintaxe CALL TRANSACTION <tcod> [AND SKIP FIRST SCREEN] [USING <itab>] [MODE <display_mode>] [UPDATE <update_mode>].

(pula a 1 tela da transao)

Chama a transao <tcod> enquanto mantm os dados no programa que a chamou. No final da transao, o controle retorno ao ponto de onde a transao foi chamada. CALL TRANSACTION 'XK01' USING t_bdcdata MESSAGES INTO t_msg (mensagem standard) MODE N.

BAPI
BAPIs so funes disponibilizadas pela SAP para realizar processos dentro do R/3. Exemplo: Criao pedido de compra, ordem de venda e outros. Normalmente so implementadas como mdulos de funes. Todas so criadas e gerenciadas no Function Builder (SE37). Pode ser executada por uma aplicao externa. Exemplo: VB, Delphi, VBA e outras. Para consultar as BAPIs disponveis executar a transao BAPI.
O ideal pedir ao programador para verificar a existncia de uma BAPI e s se no existir, utilizar o batch input ou call transaction.

Direct Input
Atualizao direta das tabelas do Banco de Dados do Sistema R/3 j na transferncia de dados, sem execuo de transaes do sistema.
O Direct input tem a vantagem de colocar pouca carga no sistema e a desvantagem que no so executados todas as verificaes relevantes para garantir uma entrada consistente dos dados.
Faz input direto em tabela, no muito utilizada. S utilizada em tabela Z.

ABAP Debugger

O que ? O que faz?


O ABAP Debugger uma ferramenta integrada de teste dentro do ABAP Workbench. usada para achar erros no cdigo fonte de um programa ABAP.
No Debugger, podemos executar o cdigo fonte passo a passo, desta forma o programa em execuo interrompido depois de cada passo, permitindo que voc verifique seu processo lgico e o resultado individual de comandos. Existem duas estratgias para inicializar o Debugger no ABAP Workbench: Definindo breakpoints e ento rodando o programa Ou rodando o programa em modo debugging.

Executando um Programa em Modo Debugging


Voc pode inicializar o Debugger das seguintes formas:
Object Navigator (SE80) Na tela inicial do editor ABAP (SE38) Em qualquer tela Em qualquer tela No menu ir na opo >Programa>Testar>Depurao No menu ir na opo >Programa>Executar>Depurao ( ou o boto Depurao na barra de botes ) No menu, ir na opo >Sistema>Utilitrios>Depurao ABAP4 Na caixa de comando digitar /H e ENTER

ABAP Debugger

Fields/Campos

Mostra o contedo de at oito campos. O contedo dos trs campos mais importantes so sempre mostrados. Esse o modo default do Debugger.

Table/Tabela

Mostra o contedo de uma tabela interna.

Breakpoints/Pontos de Parada

Mostra uma tela contendo todos os breakpoints. Ao lado de cada breakpoint existe um contador. Voc pode deletar breakpoints nesta tela. Quero parar nesta linha

Watchpoints

Pode-se criar watchpoints para campos. Desta forma o programa interrompido quando o valor do campo mudar para o valor definido. Quero parar quando o valor de um determinado campo ou varivel for X

Calls/Chamadas

Mostra a sequncia corrente dos eventos e a sequncia de chamadas para o breakpoint corrente. A ltima chamada ativa mostrada no topo da lista; chamadas anteriores so listadas em ordem cronolgica reversa. Quando um evento (por exemplo, START-OF-SELECTION) concludo, deletado da tela.

Overview/Sntese

Mostra a estrutura do programa. Lista seus eventos, subrotinas e mdulos, e mostra cada seo que pertence a cada evento. Mostra tambm a seo que est sendo processada no momento.

Settings/Opes

Mostra as opes correntes do Debugger.

Tipos de Execuo

Etapa Individual: Boto ou F5 Use essa opo para navegar no programa comando a comando. Isto permite que voc passe em subrotinas e em mdulos de funo, executando-as passo a passo tambm uma vez que um mdulo da subrotina ou da funo foi processado, o controle retorna ao comando seguinte do CALL FUNCTION ou do PERFORM. Entra nas subrotinas

Tipos de Execuo

Executar: Boto ou F6 Use essa opo para executar o programa linha a linha. Todos os comandos da linha corrente so processados em um nico passo. Se estiver posicionado em uma linha que chama uma subrotina, o Debugger processa a subrotina em modo oculto e retorna para a linha seguinte a chamada da subrotina. Isso permite que pule nos comandos dentro da subrotina. No entra nas subrotinas

Tipos de Execuo

Retorno: Boto ou F7 O debugger retorna de uma rotina para o ponto de controle definido no programa principal. Use esta opo para retornar de uma subrotina, mdulo de funo, ou programa chamado ao programa de chamada. Executa a subrotina e pra aps seu trmino

Tipos de Execuo

Avanar (at o cursor): Boto ou F8 Use essa opo para processar o programa at o prximo breakpoint. Se no existir mais breakpoints no programa e nenhum cursor for definido o sistema sai do modo debugging e executa o resto do programa normalmente. Executa toda a rotina at o final, sem parar.

cs46116:
Rotina SELECT/END SELECT colocar o ponto de parada depois e dar F8 ao invs de fazer F5.

cs46116:
Um job nunca estoura por timeout (apenas on-line onde o tempo fica configurado no SAP)

Como criar Breakpoints

Menu Ponto de Parada/Ponto de parada em/Instruo Abap

Entre com o comando ABAP, por exemplo CALL FUNCTION

O sistema define um breakpoint em todos os pontos em que o programa possui esse comando. ENTER . Se tiver uma mensagem de erro pode criar um break point em MESSAGE. Ir parar em todos os pontos de emisso de mensagem. Depois verificar em que ponto d a mensagem de erro. ST22 Dumpings dirios - Rolar at a linha do cdigo onde tem a seta.

cs46116:
INTO CORRESPONDING FIELDES - No SELECT possibilita que se atribua os valores de uma tabela para a atribuida, sem precisar listar todos os campos na recepo. Ele faz a comparao pelo nome do campo no select.

Como criar Watchpoints

Escolher Ponto de Parada/Criar Watchpoints Decida se voc quer ajustar um watchpoint local ou global Entre com o nome do campo que deseja definir como watchpoint O watchpoint aparece na tela Para criar um watchpoint condicional, escolher um operador ( = ; <> ; <;<=; >;>= )

SQL Trace

Ferramenta de anlise de transao (Acesso a banco de dados)


Esta ferramenta usada para analisarmos todos os acessos ao banco de dados que uma determinada transao precisa para ser executada. Geralmente utilizada quando no sabemos quais tabelas so acessadas em uma determinada transao. Podemos analisar como o R/3 realizou a pesquisa (select, chaves e ndices).

Ferramenta de anlise de transao (Acesso a banco de dados)


Para executar o trace:
Ativar o trace na transao ST05; Em uma nova sesso executar a transao desejada; Aps o trmino da transao, desativar o trace; Listar o resultado do trace.

Transaes teis

Transaes teis
SE16/SE16N Consulta as tabelas. Para consultar tabelas existe uma ferramenta chamada Data Browser acessada pela transao SE16.
A SE16 tambm permite a manuteno das tabelas caso esta esteja com a opo Atual.Tabelas Permitidas. A SE16N mostra a tabela no formato de ALV.

OBS: Evitar fazer consultas sem informar um valor limite de registros.

Transaes teis
SM30 Atualizao de Viso de Tabelas Como ferramenta de atualizao das tabelas pode ser criada uma SM30, que na verdade uma Transao Padro para controle de Tabelas.O sistema gera automaticamente as funes e telas de manuteno para a tabela.
Para gerar a SM30 preciso alocar as telas e funes em um Grupo de funes previamente criado.

Transaes teis
OSS1 SAP Net Para consultar OSS abertas com a SAP; Procurar Notas de correo para problemas no Standard. SM35 Batch Input: Sntese de Pasta SM37 Seleo de job simples SM36 Definir job

Transaes teis
SE11 ABAP/4 Dictionary Maintenance SE37 ABAP/4 Function Builder SE38 Editor ABAP/4 SE80 ABAP/4 Development Workbench SE91 Atualizao de Mensagens SE93 Atualizao de Transaes SM01 Lista de Transaes.Bloquear/Desbloquear cdigos de transaes. tambm uma boa transao para ver todas as transaes disponveis. SM12 - Libera bloqueio de uma transao

Transaes teis
SHDB Transaction recorder (BDC). CMOD Administrao de Projetos de Ampliao SAP. Coordena as mudanas dos projetos com o propsito de ativar todas as user exits existentes para um projeto particular. search_sap_menu Exibe o caminho para chegar a uma transao pela rvore de menu.

Fim