Você está na página 1de 66

Workshop Desenvolvedores ABAP/4 Semana I

Valinhos, maro / 2007

Objetivos
1. 2. Ter uma viso do que o software de gesto SAP R/3. Ter uma viso geral das ferramentas de desenvolvimento do SAP R/3.

1. 2. 3. 4. 5. 6. 7. 8. 9.
3. 4.

ABAP Dictionary Open SQL Report (Listas e ALV) Tabela Interna BDC CT/ BI BAPI Module Pool SAPScript Outras funcionalidades

Ter uma viso geral das principais tabelas e mdulos do R/3 Ter uma viso geral do ambiente de projetos e postura de consultor.

O que SAP R/3 ?

SD MM PP

QM Application Demo PS ABAP/4 PM WF DW IS HR

SAP R/3

FI CO AM

Novos Termos
SAP: Empresa alem construtora do R/3 e outros coligados. R/3: Sistema de Gesto Empresarial: Integrao de Dados. Segurana da informao. Atualizao de informaes em tempo real. Unificao do banco de dados

ABAP/4: Linguagem de programao nativa do R/3 Mdulos: MM, SD, FI, CO, PP .... reas de funcionalidades do R/3

Overview ABAP/4: Conceitos do SAP R/3


Software com arquitetura em trs camadas Ambiente de desenvolvimento eficiente e integrado Trabalha com qualquer banco de dados relacional Dentro do ABAP/4 o acesso feito via interface Open SQL ABAP Workbench: rea de trabalho com as ferramentas ABAP Repository: parte de DB para organizao dos desenvolvimentos

Todos os desenvolvimentos so classificados atravs de uma Classe de Desenvolvimento

Overview ABAP/4: Menu e Transaes


Menu: Caminho dentro do sistema para acesso a alguma funcionalidade Transao: Acesso rpido a alguma funcionalidade do menu Transaes ABAP: ABAP Editor (SE38) para escrita e edio de programas, programas do tipo executvel (Relatrios e Cargas). ABAP Dictionary (SE11) para edio de objetos relacionados com o banco de dados e objetos especficos da aplicao. Menu Painter (SE41) para desenho de interfaces de usurio (barra de menu, ferramentas standard e ferramentas de aplicao). Screen Painter (SE51) para desenho de telas para dilogo de usurio, no utilizado para criao de telas de seleo. Function Builder (SE37) para programao de mdulos de funes. Repository Browser (SE80) integra todas as ferramentas do ABAP Workbench.

Overview ABAP/4: Ambiente e Landscape


Ambiente de Desenvolvimento ( Client desenvolvimento ABAP e Client de customizaes funcionais/Testes ). Diviso de Clients/Mandante: Client desenvolvimentos ABAP Client customizaes funcionais Outros de acordo com a necessidade do cliente Ambiente de Qualidade ( onde so feitos os testes de usurios para aprovao final). Ambiente de Produo ( onde realmente os dados da empresa esto sendo processados). Observaes: Os objetos so transportados de um ambiente para outro atravs de Requests, cada objeto criado em ABAP amarrado a uma request a mesma no final do desenvolvimento liberada e transportada.

Overview ABAP/4: Client e Particularidades


Com a diviso de clients no ambiente de desenvolvimento necessrio saber se o mesmo client dependent ou client independent Cdigo fonte de programas Independent Telas, Menus e Funes Independent Estrutura de tabela, elemento de dados e domnios Independent Registro de dados da tabela Dependent Objetos de Textos, Formulrio SapScript - Dependent Os objetos criados devem ter nomes de clientes, inicial com Z ou Y (os campos em append de tabelas ZZ ou YY)

O R/3 cdigo aberto, pode ser alterado, s que a SAP marca os programas com uma chave de registro de alterao e deixa de dar garantia na funcionalidade e integridade de banco.

Overview ABAP/4: Ordens ou Requests


Ordens ou Change Requests: Recurso atravs do qual um conjunto de objetos por ser transferido entre client ou instncia Nomenclatura:

Os objetos criados no SAP podem ser locais ou transportveis

O objeto fica reservado em uma request, atravs de um usurio, pode ser alterado enquanto o status = modificvel, aps status = release no pode mais ser alterado
Transaes: SE01 ( Objetos, Status), SE09 (Objetos ABAP / Liberao), SE10 (Customizing / Liberao)

Dicionrio de Dados: Introduo


Atributos: So os qualificadores de uma entidade, isto , representam no modelo o que uma entidade pretende ser. Exemplos: Nome, RG, CPF, Endereo, Nro Conta, Nro Agncia, Nro Banco Domnio: Conjunto de valores permissveis para um atributo. Exemplo: Estado Civil, Sexo, Cor, Meses do Ano. Relacionamento: a associao entre duas entidades, ou seja, representa a maneira como duas entidades esto relacionadas ou ligadas. Exemplos: Conta-Corrente de um Cliente, Agncias de um Banco, ContasCorrente de uma Agncia.

Restries de Mapeamento: Representam o modo como as diferentes entidades de um modelo se relacionam. Determinadas pela cardinalidade dos relacionamentos entre as entidades.

Dicionrio de Dados: Introduo


Um-para-Um: Uma ocorrncia da Entidade A est relacionada com uma e apenas uma ocorrncia da Entidade B. Um-para-N: Uma ocorrncia da Entidade A est relacionada com uma ou vrias ocorrncias da Entidade B. N-para-Um: Vrias ocorrncias da Entidade A esto relacionadas com apenas uma ocorrncia da Entidade B. N-para-N: Vrias ocorrncias da Entidade A est relacionada com vrias ocorrncias da Entidade B.Modelo Relacional

Dicionrio de Dados: Introduo


Um banco de Dados Relacional a implementao fsica do Modelo Entidade-Relacionamento Cada tabela possui uma estrutura similar quilo que pretende a representar, isto , tabelas so formadas de linhas que por sua vez so formadas por colunas. Colunas representam fisicamente os Atributos. A cada linha da tabela chamamos de Ocorrncia e o conjunto de ocorrncias pode ou no estar relacionado com ocorrncias de outras tabelas. Chave Primria: Conjunto de atributos que garante a unicidade de cada ocorrncia da tabela. Exemplos: RG, CPF, Nro Chassis. Chave Estrangeira: Quando a chave primria de uma tabela um atributo em outra(s) tabela(s).

Dicionrio de Dados: Introduo


Dicionrio ABAP (SE11) Tabelas, Vises, Indices Tipos de Dados: Elemento de dados, estruturas e dominios Mais: Search Helps, objetos de lock OBS: O dicionrio integrado com as outras ferramentas de desenvolvimento do R/3.

Dicionrio de Dados: Tipos de Dados


Tipos pr-definidos

I - campos numricos sem decimais, contadores, etc. P campos numricos com decimais, quantidade e moeda. Tomar cuidado com clculos feitos entre campos com nmero de casas decimais diferentes. C campo alfa, mais utilizado para conter textos, pode conter nmeros e at efetuar clculos, mas no usual. N campo alfa, utilizado para conter nmeros sem decimais e preenchidos com zero a esquerda. D campo data, armazenado no banco de dados no formato AAAAMMDD, mostrado em tela de acordo com a customizao de cada usurio, permite-se fazer contas do tipo 20041201 + 31 = 20050101. T - campo hora, armazenado no banco de dados no formato HHMMSS, mostrado em tela de acordo com a customizao de cada usurio.

Dicionrio de Dados: Tipos de Dados


Tipos possveis de definio em programa

Dicionrio de Dados: Tipos de Dados


Tipos mais utilizados

1 - Estrutura: consiste em vrios campos com tipos de dados elementares e tem tamanho fixo. (array)
3 Tabela Interna: uma estrutura que pode variar em tamanho, no que diz respeito a linhas. (matriz)

Exemplos: TYPES: number TYPE i, length TYPE p DECIMAL 2, code(3) TYPE c. TYPES: BEGIN OF <estrutura>, <campos>.. END OF <estrutura>.

Dicionrio de Dados: Transao SE11


Elemento de Dados: a definio semntica para um campo individual, nele colocamos os textos do campo e amarramos a um domnio. Domnio: a definio tcnica do campo, onde colocamos o tipo de dados, o tamanho do campo e tabela de valores possveis. Estrutura: So conjuntos de campos elementares ou do prprio tipo estrutura e so utilizadas para referncias em tela ou no programa. Tabela Transparente (database table): So as tabelas que possuem uma estrutura criada no dicionrio de dados e que so refletidas no banco de dados, so elas que contm os dados necessrios para o sistema, atravs de instrues do ABAP OPEN SQL conseguimos obter essas informaes. Vises: So agrupamentos de <n> tabelas transparentes que possuem ligaes entre si, funciona como se fosse um INNER JOIN s que j est pr-criado no dicionrio de dados, pode ser utilizada no SELECT como se fosse uma tabela normal.

Dicionrio de Dados: Tabela Transparente


Uma tabela consiste de colunas (campos) e linhas (registros). Cada tabela possui um nome e atributos, como por exemplo, a classe de desenvolvimento e a autorizao para manuteno. Cada campo deve ter um nome nico dentro da tabela, e pode fazer parte de uma chave. Cada tabela deve ter uma chave primria, que composta por campos cujos valores identificam unicamente os registros de uma tabela. As tabelas definidas no dicionrio de dados do R/3 so criadas no banco de dados assim que ativadas. Durante a ativao, a descrio da tabela dentro do dicionrio traduzida para a definio de tabela correspondente na linguagem do banco de dados que estiver sendo usado. A ordem dos campos no banco de dados no precisa seguir a ordem estabelecida no dicionrio de dados (com exceo dos campos de chave primria), o que permite a extenso das tabelas standard do R/3 atravs e append structures, que so definies de campos adicionais definveis pelo usurio sem haver a necessidade de alterao da definio normal da tabela Standard. Os includes so estruturas definidas separadamente que podem ser inseridas em outras tabelas.

Dicionrio de Dados: Domnio e El. de Dados

Dicionrio de Dados: Observaes


Visibilidade

Referncia: Conceito LIKE : Eu utilizo o comando LIKE na criao de um tipo de dados dentro do programa ABAP para referenciar diretamente o objeto a um tipo de dados do Dicionrio de Dados ABAP, isto muito utilizado, pois, se eu estou trabalhando com um campo que reflexo de um campo que j existe em uma tabela transparente eu no preciso descobrir o tipo e tamanho do campo para defini-lo no programa basta eu referenci-lo utilizando LIKE.

Dicionrio de Dados:

Dvidas?!?

Editor ABAP: Transao SE38


Transao para acesso ao editor ABAP (SE38) Criar, exibir e modificar um programa Padro de nomenclatura, Z ou Y

Editor ABAP: Transao SE38


Na janela de Objetos parciais h 5 opes bsicas de objetos associados a um programa ABAP: Texto fonte: Atravs desta opo acionamos o editor de programas ABAP. Variantes: Definem-se os valores pr-definidos para os parmetros de execuo de um programa ABAP. Os parmetros de um programa so definidos pelos comandos Parameters e Select-options do ABAP. Atributos: Definem-se os atributos de programa, como classe de desenvolvimento, ttulo, categoria, status, aplicao, etc. Documentao: Texto com uma descrio breve do que o programa executa e as suas condies necessrias para execuo. Elementos de texto: Definem-se os textos que sero relacionados s mensagens, rtulos de parmetros do programa e ttulos e nome de colunas para o relatrio gerado pelo programa.

Editor ABAP: Criao de um programa

Editor ABAP: Criao de um programa

Editor ABAP: Criao de um programa

Criar hbito de salvar, verificar e ativar.

Editor ABAP: Criao de um programa

Verificao de sintaxe deve ser peridica.


Facilita o fato de resolvermos cada erro de uma vez

Editor ABAP: Tela de Seleo


SELECTION-SCREEN: comando utilizado para definir a tela de seleo, com ele pode se criar blocos dentro de uma mesma tela, incluir frames com textos explicativos, etc. PARAMETER: utilizado para criao de um campo nico de seleo, obter as suas variaes de sintaxe atravs do help (F1).

SELECTION-SCREEN BEGIN OF BLOCK bloco3 WITH FRAME TITLE text-003. PARAMETER: p_num1 TYPE i, p_sin(1) TYPE c, p_num2 TYPE i. PARAMETER: P_MATNR LIKE MARA-MATNR. SELECTION-SCREEN end of BLOCK bloco3.

Editor ABAP: Tela de Seleo


TYPE: est definindo o tipo da varivel de tela de seleo, deve-se entrar com o tamanho e o tipo do dado a ser armazenado. LIKE: est definindo o tipo da varivel de tela de seleo por referncia, dizendo que a varivel ter o mesmo tipo e tamanho da varivel MATNR da tabela MARA que esto no Dicionrio ABAP. Utilizao no SELECT: para utilizao no comando select, usa-se o comparativo = ou EQ caso o campo esteja em branco ele busca todos os registros que tenham contedo igual a branco Where MATNR = P_MATNR.

Editor ABAP: Tela de Seleo


SELECT-OPTIONS: utilizado para criao de um campo de/at de seleo com vrias opes de comparaes, obter as suas variaes de sintaxe atravs do help (F1).
TABLES: MARA. SELECTION-SCREEN BEGIN OF BLOCK bloco4 WITH FRAME TITLE text-004. SELECT-OPTIONS: S_MATNR FOR MARA-MATNR. SELECTION-SCREEN end of BLOCK bloco4.

FOR: Para a opo Select-options utilizasse FOR no lugar do LIKE. TABLES: O Comando tables, disponibiliza a estrutura da tabela do banco de dados, para ser utilizada dentro do programa, obrigatria essa disponibilizao quando a tabela vai ser utilizada no FOR.

Editor ABAP: Tela de Seleo


TABELA DO SELECT-OPTIONS:

Utilizao no SELECT: para utilizao no comando select, usa-se o comparativo IN e automaticamente ele j entende o tipo de comparao a fazer, caso o campo esteja em branco ele busca todos os registros. Where MATNR IN S_MATNR.

Utilizao no SELECT: para utilizao no comando select, usa-se o comparativo IN e automaticamente ele j entende o tipo de comparao a fazer, caso o campo esteja em branco ele busca todos os registros.

Editor ABAP: Comandos principais


DATA: utilizado para definir uma varivel de qualquer tipo (simples, estrutura ou tabela interna).
DATA: V_num TYPE i. DATA: v_matnr LIKE mara-matnr. DATA: s_mara LIKE mara. DATA: begin of t_mara occurs 0, matnr LIKE mara-matnr, end of t_mara.

IF e CASE: so utilizados como comparativos na lgica do ABAP.

CASE p_sin. WHEN '+'. v_num = p_num1 + p_num2. WHEN '-'. v_num = p_num1 + p_num2. WHEN OTHERS. ENDCASE.

Detalhes: No trmino de toda instruo ABAP, deve ter um ponto final, para evitar repeties pode-se utilizar : aps o comando e , separando as instrues, mas, deve terminar com . Quando me referencio a uma string utilizo aspas simples.
I

Editor ABAP: Comandos principais


MOVE ou = : esses so os comandos de atribuio de valores. MOVE: 2 to v_num, 'MATERIAL to v_matnr. ou v_num = 2. v_matnr = MATERIAL. WRITE e WRITE ... TO ... : Utilizado para imprimir em tela, pode se tambm mover o resultado dessa impresso para dentro de outra varivel. Quando se executa o comando write o ABAP faz todas as tradues necessrias de acordo com a configurao do usurio (moeda, quantidade). Ver variaes com o F1. write: / v_num. Ou write; v_num to v_aux. I

Editor ABAP: Executando Programas


Executando Programa:Na SE38 s clicar aqui ou tecla F8 fora ou dentro do cdigo fonte

Alguns Exemplos EXEMPLO 1 REPORT ZEXP0001. WRITE: '111111'. WRITE: '222222', '333333'. WRITE: /'111111'. WRITE: 15 '333333'. WRITE: / TEXT-001. ULINE. ULINE 8(6). SKIP. SKIP 2. WRITE : 8 SY-LANGU. WRITE : / SY-DATUM UNDER SY-LANGU.

Editor ABAP: Variveis de sistema


Existem alguns tipos de variveis chamadas de variveis do sistema. Elas possuem informaes e dados do processamento, como o idioma de acesso (sy-langu), a data (sy-datum), a hora (sy-uzeit), etc.. Essas informaes esto contidas na estrutura SYST (Campos de sistema ABAP, que pode ser abreviada para SY) e podem ser acessadas conforme o exemplo acima, o nome da estrutura mais o campo que se deseja.

EXEMPLO 2 REPORT ZEXC0002 NO STANDARD PAGE HEADING. WRITE 'PAG 1'. NEW-PAGE. WRITE 'PAG 2'. TOP-OF-PAGE. WRITE : 'EXEMPLO 2 - CURSO ABAP/4', 80 'Page', SY-PAGNO. ULINE.

Editor ABAP: Exemplos


EXEMPLO 3 REPORT ZEXP0003. WRITE : 'NORMAL'. FORMAT INTENSIFIED OFF. WRITE : 'NEGRITO '. FORMAT COLOR 1. WRITE : 'FUNDO AZUL'. FORMAT COLOR OFF. FORMAT INTENSIFIED ON. WRITE : 'NORMAL'.

Editor ABAP: Exemplos


EXEMPLO 4 REPORT ZEXP0004. DATA: NOME(20) TYPE C, RG(10) TYPE I, DATA LIKE BKPF-BUDAT, HORA(8) VALUE '14:05:45'. MOVE 'Solution Center' TO NOME. RG = 42159818. DATA = '19973005'. SKIP 2. WRITE: 'Nome:', NOME, / 'RG:', RG UNDER NOME, / 'Data:', DATA, / 'Hora:', HORA.

Editor ABAP: Exemplos


EXEMPLO 5 REPORT ZEXP0005. PARAMETER: P_NOME1(15) TYPE C, P_NOME2(15) TYPE C DEFAULT 'Abap Factory', P_BOTAO1 RADIOBUTTON GROUP G1, P_BOTAO2 RADIOBUTTON GROUP G1. WRITE P_NOME1. IF P_NOME2 NE 'ABAP FACTORY'. WRITE P_NOME2. ENDIF. IF P_BOTAO1 = 'X'. WRITE / 'BOTO 1 ACIONADO'. ELSE. WRITE / 'BOTO 2 ACIONADO'. ENDIF.

Editor ABAP

Dvidas?!?

Open SQL: Comandos


O ABAP oferece um conjunto de comandos que permite realizar operaes com os dados armazenados no banco, o Open SQL. A idia central do Open SQL prover uma linguagem de acesso ao banco independente de plataforma. Os comandos Open SQL tm de passar pelo interpretador ABAP, que os traduz para os comandos SQL do banco de dados que esteja sendo utilizado.
SELECT: Leitura de dados no banco INSERT: Insere dados do banco UPDATE: Atualiza dados MODIFY: Atualiza dados existentes ou insere caso no existam DELETE: apaga registros do banco

Campos de sistema: Os dois principais campos de sistema envolvidos em operaes do Open SQL so o SY-SUBRC, que retorna zero caso a operao tenha sido bem-sucedida, e o SY-DBCNT, que retorna o nmero de registros afetados pelo comando.

Open SQL: Select


O comando SELECT retorna um conjunto de dados (registros) que atendam a um determinado critrio. As clusulas do comando SELECT so as seguintes:
SELECT <lista de campos>: Pode-se selecionar uma lista de campos a serem retornados, separados por espaos, ou o caractere * para retornar todos os campos disponveis. A opo SINGLE retorna somente um registro que atenda s restries impostas. Caso a tabela tenha sido declarada atravs de TABLES, automaticamente criado um registro na memria com o mesmo nome para manipul-la; caso o SELECT traga campos de mais de uma tabela, no possvel utilizar esse artifcio. Nesse caso, as tabelas no precisam ser declaradas em TABLES, mas a seleo dos campos deve separar o nome da tabela e o campo com um til (~). Exemplo:

TABLES: SFLIGHT. DATA: T_SFLIGHT LIKE SFLIGHT. SELECT CARRID CONNID FLDATE SEATSOCC FROM SFLIGHT INTO TABLE T_SFLIGHT.

Open SQL: Select


INTO [<lista de campos>| TABLE <tabela interna>]: Permite armazenar o retorno numa tabela interna ou em campos definidos com o comando DATA. O uso de SELECT sem especificar SINGLE ou INTO TABLE exige o uso de ENDSELECT . FROM <tabela> [[INNER|LEFT OUTER] JOIN <tabela>, ..]: Especifica a origem dos dados
FOR ALL ENTRIES Usado quando selecionamos dados de uma tabela e precisamos de dados de outra tabela para compor as condies do where
SELECT * FROM dtab FOR ALL ENTRIES in itab where EXEMPLO: SELECT * FROM BSEG FOR ALL ENTRIES IN T_BKPF WHERE BUKRS = T_BKPF-BUKRS AND BELNR = T_BKPF-BELNR AND BELNR = T_BKPF-BELNR. Onde T_BKPF uma tabela interna que recebeu a tebela BKPF.

Open SQL: Select (For all entries e Where)


NOTA: se itab estiver vazia, esse comando selecionar todo o contedo da tabela, pois nenhuma restrio est sendo colocada. Uma maneira de fazer essa verificao a seguinte:

IF NOT itab[] IS INITIAL. se itab no est vazia SELECT * FROM dtab FOR ALL ENTRIES in itab where campo = itab-campo ENDIF.

WHERE <condies>: A clusula WHERE especifica as condies de busca. Por exemplo, WHERE CARRID = AA faz com que apenas os registros em que o campo CARRID tenha contedo igual a AA sejam retornados

Open SQL: Comandos de interferncia


INSERT: O comando INSERT insere um novo registro no banco de dados, a partir de uma rea de dados especificada em TABLES ou uma rea declarada com DATA. Para usar INSERT, devem-se colocar os dados desejados na rea intermediria e, em seguida, chamar o comando INSERT. Caso a rea no seja especificada em TABLES, deve ser usada a opo FROM:
UPDATE: O comando UPDATE funciona como o comando INSERT, podendo alterar dados no banco a partir de uma rea ou tabela interna. No caso da tabela interna, no necessrio especificar a clusula WHERE: sero alterados os registros correspondentes de acordo com as chaves. MODIFY: O comando MODIFY opera da mesma forma que o comando UPDATE, mas insere um novo registro caso o registro especificado no exista. DELETE: O comando DELETE elimina registros do banco. Ele opera da mesma forma que o comando INSERT.

Open SQL: Comandos de interferncia


LUW COMMIT e ROLLBACK: Quando trabalhamos com alterao nos dados do banco, bom sabermos que todas as alteraes que estamos fazendo ainda no aconteceram efetivamente no banco, isso s ocorre quando encontra-se o primeiro comit, automaticamente quando acaba a execuo de um programa j executado um commit:

Exemplo:
INSERT <tabela1>. IF SY-SUBRC = 0. INSERT <tabela2>. IF SY-SUBRC = 0. COMMIT WORK. ELSE. ROLLBACK WORK. ENDIF. ENDIF.

OBS: As consideraes devem ser lidas e estudadas.

Open SQL: Mensagens


MESSAGE <tipo>+<numero>+(<classe mensagens>) Exemlo: MESSAGE I368(00) with Erro XXXXX. Tipos de Mensagem

Open SQL: Comandos de interferncia


EXEMPLO 6 REPORT ZEXP0006 message-id za. PARAMETER: P_PAIS LIKE T005S-LAND1. TABLES T005H. SELECT * FROM T005H WHERE LAND1 = P_PAIS ORDER BY CITYC. WRITE: / T005H-Bezei, T005H-LAND1. ENDSELECT. IF SY-SUBRC NE 0. MESSAGE I000. ENDIF.

Open SQL

Dvidas?!?

Report/Listas: Criao de lista bsica

Exemplo:

REPORT ZSELECT00 . TABLES: SPFLI, SFLIGHT. SELECT * FROM SPFLI. WRITE: / SPFLI-CARRID, SPFLI-CONNID, SPFLI-CITYFROM, SPFLI-AIRPFROM, SPFLI-CITYTO, SPFLI-AIRPTO. ENDSELECT.

Report/Listas : Cabealho e Rodap


Existem alguns comandos e opes que permitem melhorar o aspecto e a funcionalidade de uma lista. No exemplo, a lista ainda no tem cabealho. Para cri-los, pode-se editar diretamente o cabealho usando a opo:

Saltar Elementos de Texto Ttulos de Lista.


Para criar um cabealho prprio, deve-se colocar na declarao REPORT do incio do programa a opo NO STANDARD PAGE HEADING e implementar no programa o evento TOP-OF-PAGE. Caso tambm queira um rodap para cada pgina, use o evento END-OF-PAGE para escrev-lo.

Report/Listas : Apresentao dos campos


Para melhorar a apresentao da lista, podemos modificar a forma como os campos so exibidos. Por exemplo, podemos mudar a cor com a opo COLOR do comando WRITE;
Podemos mudar a intensidade da cor com a opo INTENSIFIED {ON|OFF}.

Transformar o campo num HOTSPOT para uso em listas com drilldown. Exemplo:
WRITE: / SPFLI-CARRID COLOR COL_KEY INTENSIFIED OFF HOTSPOT CENTERED.

Mudar o posicionamento dos campos com WRITE AT. A opo COLOR admite qualquer uma das cores padro do R/3, disponveis na transao LIBS: Exemplo:
WRITE: /10(5) SPFLI-CARRID COLOR COL_KEY INTENSIFIED OFF HOTSPOT.

Report/Listas : Unidade de medida e Moeda


Para formatar automaticamente na lista campos numa determinada unidade de medida e valores monetrios, pode-se utilizar as opes UNIT e CURRENCY, seguidas do campo que contm a chave da unidade, Veja o exemplo a seguir:

WRITE: /20(6) SFLIGHT-FLDATE, SFLIGHT-CURRENCY, 'Sem CURRENCY:', (12) SFLIGHT-PAYMENTSUM, 'Com CURRENCY:', (12) SFLIGHT-PAYMENTSUM CURRENCY SFLIGHT-CURRENCY. Um trecho do report seria: 150420 ITL Sem CURRENCY: 683.231,44 Com CURRENCY: 68.323.144 130520 ITL Sem CURRENCY: 318.202,60 Com CURRENCY: 31.820.260

Report/Listas : Smbolos de Textos


O ABAP permite a criao de smbolos de texto, que so elementos do repositrio que permitem a criao de tabelas de texto para uso nos programas ABAP. Cada smbolo de texto pode ser criado em vrias linguagens. Suponha que exista o seguinte trecho de cdigo: WRITE: /10 'Assentos ocupados:', SFLIGHT-SEATSOCC.
Utilizando smbolos de texto, o comando ficaria WRITE: /10 TEXT-001(ZCLMENS), SFLIGHT-SEATSOCC. Toda vez que o interpretador ABAP encontra um campo que comea com TEXT, coloca naquela posio um smbolo de texto correspondente ao nmero aps o hfen na classe entre parnteses. Para editar os smbolos de texto, use, na janela do editor ABAP, a opo Saltar Elementos de Texto Smbolos de Texto

Report/Listas : Listas Complexas


O Evento AT LINE-SELECTION O processamento das listas de detalhe dentro do R/3 feito pelo evento AT LINE-SELECTION. HIDE Atravs do comando HIDE, possvel armazenar informao a respeito de uma linha para uso do evento AT LINE-SELECTION. O comando HIDE guarda a informao sobre os campos desejados, alm do nmero da linha que est sendo processada, em uma tabela interna, que automaticamente acessada no evento AT LINESELECTION. Veja o seguinte exemplo:

WRITE: SFLIGHT-CARRID, SFLIGHT-CONNID, SFLIGHT-FLDATE, SFLIGHTSEATSOCC. HIDE: SFLIGHT-CARRID, SFLIGHT-CONNID, SFLIGHT-FLDATE. AT LINE-SELECTION. SELECT * FROM SBOOK WHERE CARRID = SFLIGHT-CARRID AND CONNID = SFLIGHT-CONNID AND FLDATE = SFLIGHT-FLDATE.

Report/Listas

Dvidas?!?

Modularizao
Todo programa ABAP estruturado e desenvolvido para ser processado em bloco Blocos de processamentos que so chamados pelo sistema Blocos de Eventos Mdulos de Dilogo
Blocos de processamentos que so chamados pelo programa. Sub-rotinas Mdulos de funo Mtodos

Modularizao
INCLUDES Programa do tipo include, pode se modularizar um programa utilizando cdigos fontes no executveis chamados includes e chama-se esses cdigos de dentro do programa principal. comumente usado para declaraes de variveis em programas muito extensos
Sub-rotina - FORM Para estruturar nossos programas, utilizamos os blocos de processamentos controlados pelo nosso pr[oprio programa os FORMs, delimitamos as rotinas de processamentos em pequenos grupos, o que facilita a manuteno de nosso cdigo. Podemos passar e receber valores para essas rotinas.
START... PERFORM TESTE123. END.... FORM TESTE123. <cdigo fonte com a rotina desejada> ENDFORM

Modularizao
Mdulos de Funes So rotinas de processamento externas e independentes de programa, ficam amarradas a um grupo de funes e tem o seu cdigo desenvolvidos em includes,podem ser chamadas por <n> programas diferentes, tambm trabalham com passagem de parmetros e de tabelas, e com excees (erros no processamento). Praticamente pouco se cria em matria de funes, o que mais fazemos utilizar as funes prontas disponibilizadas pela SAP

Modularizao
Blocos de Eventos. Os blocos de eventos so controlados pelo sistema e s valem para programas do tipo executvel. Abaixo vemos os principais: REPORT... INICIALIZATION. Primeiro passo a ser executado no programa, antes da tela de seleo e antes da lgica de processamento. AT SELECTION-SCREEN. Executa logo aps sair da tela de seleo, utilizado para fazer tratamentos de obrigatoriedade de campos e similares. TOP-OF-PAGE. Executa quando encontrado o primeiro comando WRITE dentro da lgica principal, utilizado para colocar cabealho, textos que devem sair em todas as pginas. END-OF-PAGE. Informaes que apaream no rodap do relatrio
OBS: essas informaes s aparecero se o tamanho da pgina estiver definido no comando REPORT e somente qdo houver quebra de pgina. Caso contrrio, no aparecer

Modularizao
START-OF-SELECTION. Entre o START-OF-SELECTION e o END-OF-SELECTION, se encontra a lgica principal do programa, quando programamos de uma forma estruturada colocamos aqui apenas chamadas de sub-rotinas, para evitar poluio de cdigo.
Ex: START-OF-SELECTION. PERFORM seleciona_dados. PERFORM tratamento_interno. PERFORM impressao_dados. PERFORM gera_arquivos. END-OF-SELECTION.

AT LINE-SELECTION. Somente executado se o usurio der um duplo click em uma linha mostrada no relatrio, ou marcar a linha e pedir para ver detalhe, utilizada para listas interativas, drill-down. AT USER-COMMAND. Somente executado se o usurio der um click em algum objeto do menu, utilizado para listas com botes de interao.

Modularizao

Dvidas?!?

Tabela Interna : Definio

Estruturas complexas de armazenamento temporrio.


Dentro de um programa ABAP, muitas vezes impossvel trabalhar apenas com os comandos de seleo e alterao de dados diretamente na tabela. Para manipular localmente os dados, o ABAP permite o uso de tabelas internas, que so reas de memria organizadas como tabelas. Essas tabelas internas podem ter o mesmo formato de uma tabela do banco de dados, o que as qualifica para serem usadas como reas de manipulao intermediria, o que traz benefcios em termos de performance geral do R/3. Uma tabela interna declarada atravs do comando DATA, onde se especifica qual o tipo de linha da tabela, se ela tem headerline e qual a forma de operao da mesma.

Tabela Interna : Comandos


Insero: APPEND: Inclui um novo registro na TI, no ltimo registro. INSERT: Inseri um novo registro em uma posio especifica COLLECT: Compara os campos tipo texto, caso encontre chaves iguais, soma os campos numricos, se no inclui um novo registro
Excluso: DELETE: Exclui um registro da tabela interna, usado dentro do loop at exclui o registro corrente, caso contrrio usar o INDEX mostrando a linha a ser excluda REFRESH: Limpa todos os registros da TI CLEAR: Limpa somente o contedo do header line da TI Alterao: MODIFY: Altera um registro da tabela interna, usado dentro do loop at altera o registro corrente, caso contrrio usar o INDEX mostrando a linha a ser alterada

Tabela Interna : Comandos


Leitura de dados: LOOP AT <TI> WHERE <condio>: Utilizado para ler mais de uma linha da tabela interna, para os casos de tabela interna com Header line automaticamente o sistema joga os dados para este registro, caso no deve-se indicar onde ser jogado os dados lidos. Filtro a opo WHERE
READ TABLE <TI> WITH KEY <condio>: Como o Loop at l os dados de uma tabela interna s que apenas uma linha por vez

OBS: Os comandos DELETE e MODIFY quando usados de forma incorreta fora do loop at e sem a indicao do INDEX, ocasiona Short Dump.

Tabela Interna : Declarao


Por exemplo, para declarar uma tabela interna, conforme no exemplo, usou-se a declarao TYPES para declarar uma estrutura que contm os campos que desejamos ter na tabela. Em seguida, a tabela criada atravs da declarao DATA, usando a estrutura como modelo. Exemplos: data: begin of t_spfli occurs 0, carrid like spfli-carrid, connid like spfli-connid, end of t_spfli.
data: begin of t_sflight occurs 0. include structure sflight. data: end of t_sflight. data: t_aux like t_sflight occurs 0 with header line.

Tabela Interna

Dvidas?!?

Você também pode gostar