Você está na página 1de 99

p

ABAP
REPORT

ABAP
REPORT

1.00 - 2

Qual a funo do R/3?


oferecer um conjunto integrado compacto, de aplicativos empresariais de grande escala. O conjunto padro de aplicativos integrados com cada sistema R/3 o seguinte: PP MM SD FI CO AM PS WF IS HR PM QM (Production Planning - planejamento de produo) (Materials Management - gerenciamento de materiais) (Sales and Distribution - vendas e distribuio) (Financial Accounting - contabilidade financeira) (Controlling - controladoria) (Fixed Assets Management - gerenciamento de ativos fixos) (Project System - sistema de projeto) (Workflow - fluxo de trabalho) (Industry Solutions - solues de industria) (Human Resources - recursos humanos) (Plant Maintenance - manuteno das instalaes) (Quality Management - gerenciamento da qualidade)

Estes aplicativos so chamados reas funcionais, reas de aplicativo ou, s vezes, mdulos funcionais do R/3. Todos estes termos so sinnimos. Tradicionalmente, as estruturas empresariais desenvolvem um conjunto de aplicativos de processamento de dados avaliando produtos individuais e comprando esses produtos separadamente de diversos fabricantes de software. Interfaces entre eles so ento necessrias. Por exemplo, o sistema de gerenciamento de materiais precisar ser vinculado com as vendas e a distribuio e com os sistemas financeiros, e o sistema de fluxo de trabalho precisar de uma alimentao a partir do sistema do HR. Uma quantidade significativa de tempo e dinheiro de IS gasta na implementao e manuteno dessas interfaces. O R/3 vem predefinindo com os aplicativos empresariais bsicos necessrios maioria das grandes corporaes. Esses aplicativos coexistem em um ambiente homogneo. Eles so projetados para funcionar utilizando desde um nico banco de dados e um conjunto (muito grande) de tabelas. Os tamanhos de banco de dados de produo atuais variam de 12 gigabytes a aproximadamente 3 terabytes. Cerca de 8.000 tabelas de banco de dados so distribudas com o produto R/3 padro.

ABAP
REPORT

1.00 - 3

Por que voc precisa saber isso?


importante para voc, como um programador de ABAP, saber por que esses aplicativos so todos escritos inteiramente em ABAP. Esses so os aplicativos que voc deve entender para ser um bom desenvolvedor de R/3. Por exemplo, suponha que voc conhece ABAP e tenha recebido a incumbncia de escrever um relatrio financeiro que resume dbitos e crditos de cada ano fiscal para cada fabricante na empresa. Talvez voc saiba escrever cdigo em ABAP, mas voc saberia como comear a resolver essa tarefa? Ou talvez seu trabalho exija um novo desenvolvimento em ABAP/4. Voc incumbido de projetar um sistema que oferea informaes de estoque para potenciais compradores. Se voc no conhece os sistemas de vendas e financeiro e de distribuio, voc no saber se est criando algo que j existe em R/3. Tampouco voc poder saber se h tabelas do R/3 que j contm dados semelhantes ou idnticos aos tipos de dados que voc quer recuperar. Esses aplicativos so altamente integrados. Um desenvolvedor que assume a abordagem eu construirei minhas prprias tabelas e manterei minhas prprias cpias dos dados, pode logo descobrir que seus dados so redundantes e devem ser rotineiramente sincronizados com o resto do banco de dados. Ele construiu um aplicativo que no tira proveito da natureza altamente integrada do ambiente R/3. importante que o ABAP seja desenvolvido com a certeza de que dentro do R/3 no possua nada que j no atenda as necessidades da rea funcional.

ABAP
REPORT

1.00 - 4

Logon
Atravs do logon o sistema identificar se o usurio esta autorizado a entrar no SAP no client que est acessando, e atravs do seu UserId que identificado a que mdulos e transaes voc ter acesso.

Client onde se desenvolver a atividade

Barra de Ttulo Barra de Ferramentas Standard

Campo command Barra de ferramentas application

Menu do Interface

rea Screen

Barra de Status

ABAP
REPORT

1.00 - 5

Cores
Para que voc possa alterar as cores de seu ambiente tornando mais agradvel, utilize o recurso abaixo demonstrado.

Clique nas bolinhas coloridas e depois em Options....

ABAP
REPORT

1.00 - 6

cones no SAP
Abaixo alguns exemplos, com descrio, dos cones que voc ter contato no SAP.

ABAP
REPORT

1.00 - 7

Dicionrio
O Dicionrio um utilitrio que define objetos de dados, nele voc pode criar e armazenar objetos como tabelas, estruturas e visualizaes. Caminho: Clique no menu a opo Ferramentas > ABAP Workbench > Dicitionary.

DICA: Se voc digitar SE11 no campo command a tela de entrada do ABAP Dictionary ir surgir.

ABAP
REPORT

1.00 - 8

Tabelas
Dentro do R/3, uma table uma coleo de linhas onde em cada linha contm campos ou tambm chamados de colunas. Em uma table so armazenados dados persistentes, se voc colocar dados em uma table, eles continuaram ai mesmo depois de voc finalizar seu programa e ali ficaro at seu ou outro programa altera-los ou exclui-los. O nome de uma table nico dentro de todo o sistema. Utilizaremos a sflight para exemplificar uma table.

ABAP
REPORT

1.00 - 9

Data element
Uma table composta de campos, mas para criar um campo voc precisa de um data element que contm os rtulos de campo e a documentao online (F1) para o campo. Um data element pode ser utilizado em mais de um campo e em mais de uma table. Para que voc veja os data element, clique duas vezes com o mouse sobre o campo Elem. dados. Utilizaremos o campo Mandt para exemplificar.

ABAP
REPORT

1.00 - 10

Domnios
O domnio contm a caracterstica tcnica de uma campo, como o comprimento do campo e o tipo de dado. Os domnios tambm so reutilizveis podendo ser usados em mais de um data element. Para que voc veja os domnio, aproveitaremos o exemplo da pgina anterior, clique duas vezes com o mouse sobre o campo Nome do domnio. Utilizaremos o campo Mandt para exemplificar.

ABAP
REPORT

1.00 - 11

Structure
Uma structure uma descrio de uma srie de campos agrupados sob um nome em comum. Ela descreve os nomes de campo, sua sequncia e seus tipos e comprimentos de dados. Assim como a table, uma structure no ter outra com seu nome e nem com o de uma table.

Uma estrutura pode agrupar dados de vrias tabelas, ela difere de uma tabela transparente pois s matm os dados em tempo de execuo do programa.

ABAP
REPORT

1.00 - 12

Tabelas Internas
Tabelas internas so utilizadas para armazenar em tempo de execuo os dados necessrios para a processamento do seu programa. Estes dados podem ser selecionados de diversas tabelas transparentes. O nmero de linhas de uma tabela no fixo, a medida que a seleo feita voc pode acrescentar os dados na sua tabela. O acesso a tabela interna feito linha a linha utilizando uma work area como interface para transferir dados para ou de uma tabela, esta work area utilizada para armazenar temporariamente uma entrada da tabela de dados. Quando lemos uma tabela interna o contedo de endereamento enviado para uma work area. Esta work area tem a mesma estrutura da sua tabela interna.

ABAP
REPORT

1.00 - 13

Atravs deste conceito temos dois tipos de tabelas internas. WITH HEADER LINE O sistema automaticamente cria uma work area idntica a linha da sua tabela interna. WITHOUT HEADER LINE O sistema no reconhece a work area, que deve ser definida no programa.

ABAP
REPORT

1.00 - 14

Criar Programas
Caminho: Clique no menu a opo Ferramentas > ABAP Workbench Clique no boto Editor ABAP. Chegando na tela do ABAP/4 Editor, deve-se entrar com o nome do programa que ser criado. Clique em criar.

DICA: Se voc digitar SE38 no campo command a tela de entrada do editor de ABAP ir surgir.

Obs.: Todo o programa que for criado deve comear por Y ou Z

ABAP
REPORT

1.00 - 15

Nesta tela voc ir digitar os dados assinalados e clicar em salvar. Abrir uma tela menor Modificar entrada catlogo objetos onde voc dever preencher o campo Classe desevolvim. com a sua classe.

DICA: Se clicar no boto Texto fonte o editor de ABAP ir abrir j no programa como apresentado na prxima pgina.

Descrio Simples Tipo de programa rea de aplicao do programa

Obs.: Aps clicar em salvar na tela Modificar entrada catlogo objetos uma outra tela surgir solicitando o nmero da request, caso voc j tenha criado uma request anteriormente, salve o seu programa nela, caso contrrio crie uma nova. Imp.: Uma request permite o transporte do seu programa de uma mquina de desenvolvimento para uma outra de produo fisicamente diferente, pois na mesma mquina os programas so vstos em todos os clients pois so independentes. Caso no haja necessidade de transporte pode-se criar como LOCAL OBJECT.

ABAP
REPORT

1.00 - 16

Retorne para a tela inicial e tecle Modificar. O editor ABAP ser aberto. A primeira linha indicar o nome do programa e atravs desta linha que o sistema identificar e executar o programa ou por execuo direta ou por um atalho (Ex.: Uma transao).

ABAP
REPORT

1.00 - 17

Tipos de Editor
Caminho: No menu clique em Opes Clique em Modo de edio... Abrir a tela abaixo para que voc selecione qual editor ir trabalhar.

Caractersticas: Modo PC com numerao de linhas (PC mode with line numbers) Proporciona um estilo de processador de texto com comandos de cpia, recortar e colar mas com a numerao de linhas includas. Este o modo default do SAP. Modo PC com numerao de linhas (PC mode without line numbers) Proporciona um estilo de processador de texto com comandos de cpia, recortar e colar. Modo Comando (Command mode) Proporciona a mesma funcionalidade associada a verso R/2 do SAP.

ABAP
REPORT

1.00 - 18

Breakpoint

Utilize o breakpoint quando for necessrio analisar o programa linha a linha e verificar o acontecimento dos erros. A funo Continue no debugger executa comandos at o prximo ponto de breakpoint. Pode-se colocar um ponto de breakpoint na posio atual do cursor selecionando a funo Set Breakpoint ou atravs de duplo clique. Linhas onde um ponto de break point for fixo esto marcadas com um smbolo de STOP. Exiba tudo sobre os breakpoint atualmente fixados, selecionando Goto Breakpoint. Pode-se apagar pontos de breakpoint atravs de duplo clique, aps posicionar o cursor em um deles ou usando o menu de ponto de breakpoint. Utilize a declarao BREAK-POINT no Editor ABAP. Posicione o cursor e ento pode escolher Utilities Breakpoint Set. Fixe pontos de breakpoint dependente em SY-SUBRC <> 0 atravs de Breakpoint Breakpoint at... Comandos orientados de breakpoint: Voc pode fixar pontos de breakpoint atravs do ABAP para palavras-chave, eventos e seqncia de dados escolhendo Breakpoint Breakpoint at...

ABAP
REPORT

1.00 - 19

Selecionar Tabelas
Deve-se declarar as tabelas, como demonstrado na linha 3, que sero utilizadas no programa. Para leitura da base de dados (Tabelas) voc usa o comando select. O select no performtico sem autorizaes de checks. Leitura de todos os dados de uma simples entrada. Leitura de dados especificando colunas. Na linha 5, voc v que foi utilizado o comando select para recuperar os registros dos bancos de dados, onde * indica que todos os campos na tabela devem ser recuperados. Aps a figura abaixo sero apresentadas outras opes de select.

ABAP
REPORT

1.00 - 20

Sint.: select single * from... ( seleciona um nico registro) Este comando de select usado para um acesso simples na entrada de dados. Voc tem que especificar a chave completa da tabela, para obteno de um nico registro, para usar a chave use dentro do comando a condio where... Caso voc no tenha especificado a chave completa, uma mensagem de Warning aparecera no avisos do editor com erro de sintaxe (check sua performance), neste caso trar o primeiro registro encontrado na tabela. Para check use a varivel do sistema sy-subrc (retorna 0 se a leitura foi feita com sucesso, retorna 4 se entrada no existe) Este comando no tem endselect. ______________________________ select * from... endselect. (faz um processo de loop sem restries ) Este tipo de comando faz uma leitura sem restries , seria um tipo de leitura seqncia de uma tabela, esse tipo de processo no performtico Este comando tem que ser finalizado com endselect. Para check use a varivel do sistema sy-subrc ( retorna 0 se a leitura foi feita com sucesso, retorna 4 se entrada no existe) ______________________________ select * from... where... endselect. (faz um processo de loop com restries ) Este tipo de comando faz a leitura com restries que esto nas condies do where, segue tambm um processo de Loop tem uma performance muito maior que o anterior. Este comando tem que ser finalizado com endselect. Para check use a varivel do sistema sy-subrc ( retorna 0 se a leitura foi feita com sucesso, retorna 4 se entrada no existe) Operadores de comparao para comando where. eq ge le ne gt lt = >= <= <> > < => =< ><

______________________________

ABAP
REPORT

1.00 - 21

select <a1> <a2> ... into (<f1>, <f2>...) from.... where... endselect. (leitura de colunas simples) Este comando seleciona somente os campos definidos <a1> <a2>...com a condio imposta no where. Na adio do into aps o select voc especifica a sua rea de trabalho no caso <f1> <f2>... com cada campo preenchido no processo de loop. Os argumentos <a1> <a2>... tem que conter o mesmo numero de elementos para <f1> <f2>.... ______________________________

select max (distance) min (distance) count(*) from <table> into (..., ..., ...) where...(leitura de colunas agregando funes) Este comando determina o numero total dos registros de uma tabela, retorna o valor mximo ,o valor mnimo, a quantidade total, voc pode usar tambm as funes avg (mdia) e sum ( soma) Todas estas funes s podem ser usadas para campos numricos. Este comando no tem endselect. Voc pode tambm a opo adicional distintc, esta funo agrega somente um registro o primeiro que encontrar, s poder ser usado quando tiver diferentes valores nas colunas. ______________________________

select into corresponding fields of <wa>.(carrega os dados correspondente a work area definida) Este comando carrega os dados numa area de trabalho que tem que ser definida, os nomes dos campos tem que ser iguais para que sejam transportado os dados. Este comando no recomendado devido a sua baixa performance pois demanda tempo na comparao dos campos. Este comando no tem endselect. ______________________________

select into corresponding fields correspondente a uma tabela interna definida)

of

table

<itab>.(carrega os dados

Este comando carrega os dados numa tabela interna que tem que ser definida, os nomes dos campos tem que ser iguais para que sejam transportado os dados. Este comando sobrescreve os registros. Este comando no recomendado devido a sua baixa performance pois demanda tempo na comparao dos campos.

ABAP
REPORT

1.00 - 22

Este comando no tem endselect. ______________________________ select into appendig corresponding fields of dados correspondente a uma tabela interna definida)

table <itab>.(carrega os

Este comando acrescenta os dados numa tabela interna que tem que ser definida, os nomes dos campos tem que ser iguais para que sejam transportado os dados. Este comando no sobrescreve os registro e sim acrescenta novos registro Este comando no tem endselect. ______________________________ select * from <table> where <table field> between <field1> and <field2>. (leitura de dados com limite de extenso) Este comando tem o mesmo processo de um select s que voc define um processo de range onde <field1> e <field2> so os limites dos campos <table field>. Este comando no tem endselect. ______________________________ select * from <table> where <table field> like...... (leitura de dados com pesquisa) Este comando permite que voc faa uma pesquisa de campos definida no LIKE usando caracteres especiais. Caracteres especiais (coringas) _, %., voc s pode usar esta procura para campos caracteres. Sint.: ... select * from mara where matnr like %ca. ... ______________________________ select * from <table> where <table field> in (...,...) (leitura de dados com lista) Este comando usado na clausula where para comparao de lista de valores ou valores nicos, os campos no so um intervalo e sim valores fixos

ABAP
REPORT

1.00 - 23
______________________________

ABAP
REPORT

1.00 - 24

select * from <table> where <table field> in <itab> (leitura de dados com operador de uma tabela ) Este comando usado na clausula where para comparao de lista dentro de uma tabela interna que contenha valores fixos A tabela interna deve sempre incluir os campos sign, option, low, high. ______________________________

select * from <table> where <table field> in <work area> ( leitura de dados com operador de uma work area) Este comando usado na clausula where para comparao de um nico parmetro dentro de uma work area. O contedo de um campo definido. ______________________________

select * from ( <table> ) where ( <itab> ) (leitura de dados dinmica) Este comando permite que voc crie uma tabela interna com dados montados contendo uma linha com 72 caracteres (seriam dados constantes nessa linha podendo conter parnteses aspas campos em brancos enfim qualquer tipo de caracter. Ele retorna na condio where os dados contidos na tabela interna O nome das tabelas devem estar entre parnteses com branco separando os nomes. Este tipo de comando no retorna erro de sintaxe. ______________________________

select * from (<table>) into table <itab> Este processo e bastante rpido para leitura de dados de tabela interna, s que no sobrescreve nenhum registro, faz o processo de loop e busca cada registro na tabela interna um a um. Este comando no tem endselect. ______________________________

select * from (<table>) appending table <itab> Este processo e bastante rpido para leitura de dados de tabela interna, s que acrescenta os registros , faz o processo de loop e busca cada registro na tabela interna um a um. Este comando no tem endselect.

ABAP
REPORT

1.00 - 25

______________________________ select * from (<table>) for all entries in <itab> where... Este processo seleciona todos os registros para a tabela interna. Se a tabela interna no contem dados no use a condio where. Os campos da tabela transparente e da tabela interna tem que ser iguais. Esta condio for all entries exclui a adio do comando order by.... ______________________________

select * from (<table>) order by <field1> <field2> primary key (leitura de dados com seleo de ordenao) Este comando permite que voc selecione os dados na ordem da chave primaria da tabela em ordem ascendente ou os campos definidos (<field1>, <field2>), tambm em ordem ascendente Voc tambm pode acrescentar a ordem ascending ou descending, o default e a ordem ascendente Voc pode tambm fazer a ordem de uma tabela interna, neste caso deve conter a lista de campos <f1>, <f2>.... As entradas da tabela interna tem ser do tipo caracter e no mximo com 72 caracteres. ______________________________

select <a1> <a2> ... into (<f1>, <f2>...) from.<table> group by... Este comando permite um grupo de entrada do contedo de um campo. Ele determina o mximo e o mnimo <a1> <a2> de um determinado campo. ______________________________

select * from (<table>) bypassing buffer Este comando permite acesso por um determinado perodo no usando a area de memria. Voc tem que ter a certeza da leitura dos dados. Geralmente esse comando usado para tabelas em tela em tempo de execuo.

ABAP
REPORT

1.00 - 26

DICA: Utilize o boto modelo na execuo do programa para gerar um select demonstrando que no haver erro na ordem da seleo dos campos chaves.

ABAP
REPORT

1.00 - 27

Get
Se em uma base de dados lgica for necessrio a seleo de campos para uma tabela, voc pode utilizar a declarao GET para especificar somente os campos necessrios para executar o processo. Ex.: report zexemplo. tables: spfli, sflight, sbook. get spfli fields carrid connid cityfrom cityto deptime arrtime. write: spfli-carrid, spfli-connid, spfli-cityfrom, spfli-cityto, spfli-deptime, spfli-arrtime. get sflight fields fldate price currency. write:/10 sflight-fldate, sflight-price, sflight-currency. get sbook fields bookid customid custtype. write:/20 sbook-bookid, sbook-customid, sbook-custtype. No recomendado a utilizao deste comando por comprometer a performance.

ABAP
REPORT

1.00 - 28

Acessando a base de dados

ABAP Program

ABAP Open SQL

EXEC SQL

IMPORT

... SAP R/3 System

Utilize a declarao EXEC SQL quando for necessrio uma interveno direta por parte do usurio na base do banco de dados. Assim que a declarao EXEC SQL for processada em seu programa ABAP, ela torna o programa ABAP inoperante at que a declarao ENDEXEC seja processada. Sint.: ... exec sql. <sql statement> endexec. ...

ABAP
REPORT

1.00 - 29

Exibir Dados write


Quando se faz necessrio a exibio na tela do resultado de um report voc utiliza o comando write e todo o contedo que estiver aps a instruo at ser finalizado por . gerar um relatrio de sada. Como no exemplo abaixo, o write ir fornecer uma listagem de dados que foram selecionados dentro da tabela sflight produzindo um resultado como demonstrado abaixo. Ex.: report zexemplo. tables: sbook. select * from sbook where carrid = 'lh' and connid = '0400'. write: / sbook-carrid, 10 sbook-connid, 20 sbook-fldate, 35 sbook-bookid, 50 sbook-luggweight, 60 sbook-wunit. endselect. if sy-subrc ne 0. write: / 'no existem entradas para esta seleo.'. endif. skip 5. uline. skip.

ABAP
REPORT

1.00 - 30

Eventos selection

inicialization,

start-of-

Um evento como uma sub-rotina em outras linguagens, trata-se de uma seo independente do cdigo que executa uma tarefa e ento retorna para o ponto de chamada, contudo, ao contrrio das subrotinas, voc no codifica a chamada para um evento, ao contrrio, o sistema aciona o evento para voc quando uma condio especifica surge. Um evento um tag (contador) que identifica uma seo de cdigo, que associada com um evento comea com um nome de evento e termina quando o prximo nome encontrado. Os nomes dos eventos so palavras reservadas, no se podendo criar novos eventos. Os nomes dos eventos so:

inicialization
Quando voc executa um programa onde um critrio de seleo definido, o sistema normalmente processa a tela primeiro. Se voc quer que um bloco de comandos seja executado antes da tela de seleo utilize este comando.

Sint.: Antes do comando: report sapmztst. parameters firstday like sy-datum default sy-datum. tables spfli.

ABAP
REPORT

1.00 - 31

Aps o comando report sapmztst. parameters firstday like sy-datum default sy-datum. tables spfli. initialization. city_fr = 'new york'. city_to = 'frankfurt'. carrid-sign = 'i'. carrid-option = 'eq'. carrid-low = 'aa'. append carrid. firstday+6(2) = '01'.

Sint.: report zexemplo. tables sbook. select-options fl_date for sbook-fldate. initialization. move: 'I' to fl_date-sign, 'EQ' to fl_date-option, sy-datum to fl_date-low. append fl_date. move: 'BT' to fl_date-option, '19960101' to fl_date-low, '19960630' to fl_date-high. append fl_date.

ABAP
REPORT

1.00 - 32

start-of-selection
Se a primeira instruo executvel em seu programa no for procedida por um nome de evento, o sistema automaticamente insere start-of-selection antes da primeira linha de cdigo executvel. Permite o processamento antes da execuo de leitura das tabelas transparentes atravs do comando sempre acompanhado pelo comando end-of-selection.

ABAP
REPORT

1.00 - 33

Ex.:

Resultado:

ABAP
REPORT

1.00 - 34

Posicionamento de dados no relatrio uline, skip


Especificaes para o comando write.

uline
Escreve um trao no relatrio de sada ou tela de seleo

skip
Gera linhas em branco, para mais de uma linha em branco (Ex.: skip n), tambm podendo deslocarse para outro ponto de sada do relatrio (Ex.: skip n to line n). Sint.: ... WRITE: 'Text 1 ......'. SKIP. WRITE: 'Text 2 ......'. ... Resultado: Text 1 ...... Text 2 ...... / pula uma linha, p (posio da coluna), l (deslocamento a esquerda).

/p(l)

Sint.: ... write: /5 (30) field, ...

ABAP
REPORT

1.00 - 35

Comandos de sada do programa stop


Este comando interrompe o processo de leitura e vai para o final do evento end of selection, caso no tenha usado o evento ele interrompe o programa, tambm podendo ser utilizado para interromper a execuo de um loop indo direto para o endloop.

exit
Termina o loop imediatamente aps a sua utilizao, e o processo somente continua no instruo imediatamente aps o endloop. Normalmente utilizado quando se quer testar condies dentro do loop. Ex.: report exemplo. tables t100. data sap_count type i. select * from t100 where sprsl = sy-langu and arbgb = 'ds'. write / t100-text. if t100-text cs 'sap'. add 1 to sap_count. if sap_count = 3. exit. endif. endif. endselect.

ABAP
REPORT

1.00 - 36

Novas pginas new page


Voc vai utiliz-lo para causar a sada do comando write para gerar uma nova pgina. A paginao do sistema automtica, especificado no cabealho do relatrio. Sint.: ... new-page [no title with-title] [no heading with-heading] [line-count o n (m)] [line-size k] [print on print off] ... n, m e k so variveis numricas ou literais. no title desativa o ttulo padro nas pginas seguintes e with-title ativa. no heading desativa o ttulo cabealho-padro de coluna nas pginas seguintes e withheading ativa. line-count configura o nmero de linhas por pgina e o nmero de linhas reservado na parte inferior de cada pgina para um rodap. line-size configura o nmero de colunas de sada para as pginas seguintes. print on faz com que a sada das instrues write sejam enviadas para o spool em vez da lista, s permitindo a visualizao do relatrio atravs do spool e o print off faz o contrrio. O comando new-page no aciona o evento end-of-page. Ele pode ser utilizado em qualquer ponto do programa.

ABAP
REPORT

1.00 - 37

MOVE
Para mover uma valor de um campo para outro, utilize o comando move. Parte do contedo ou todo ele pode ser movido. Ao invs de move possvel utilizar o operador se atribuio =. Sint.: ... data: number type i, five type i. move 5 to five. move five to number. ...

ABAP
REPORT

1.00 - 38

Do
O comando do correspondente a um mecanismo de loop bsico. Sint.: ... do. write: / 'sy-index - begin:', (3) sy-index. if sy-index = 10. exit. endif. write: 'end:', (3) sy-index. enddo. ...

ABAP
REPORT

1.00 - 39

Tabelas de operacional
Ex.: sy-subrc sy-datum sy-uname sy-langu ...

gerenciamento

do

sistema

Algumas variveis foram criadas para validar a execuo e entrada de dados no sistema, estas variveis encontram-se na estrutura SYST. Valor de retorno de acordo com determinadas instrues ABAP/4 Sistema: Data do dia do logon Sesso: Usurio SAP no SAP logon Cdigo de idioma do logon no sistema SAP

ABAP
REPORT

1.00 - 40

Case
O comando case executa uma srie de comparaes onde somente as instrues aps a primeira correspondncia when sero executadas. Sendo muito semelhante a if/elseif, sendo sua nica diferena que em cada if/elseif voc pode especificar uma expresso complexa e em case s pode especificar um nico valor a ser comparado e os valores so sempre comparados quanto a igualdade. As strings de campo so tratadas como sendo variveis de tipo C Sint.: ... data: one type i value 1, three type p value 3. four type p value 4. do 4 times. case sy-index. when one. write / 'that is'. when 2. write 'a'. when three. write 'good'. write 'example'. when others. write '!'. endcase. enddo. ...

ABAP
REPORT

1.00 - 41

Concatenate
Une duas ou mais linhas ou campos, voc ter de informar onde os dados sero posicionados. Sint.: ... data: one(10) two(3) three(10) name(20). concatenate one ... Resultado: John F. Kennedy

value 'John', value 'F.', value 'Kennedy', two three into name separated by space.

ABAP
REPORT

1.00 - 42

Condense
Utilize o comando condense para unir campos havendo a necessidade de desloc-los da posio em que se encontram. Ex.: report zexemplo. data name(30). name(10) = 'Dr.'. name+10(10) = 'Michael'. name+20(10) = 'Hofmann'. condense name. write name. Resultado: Dr. Michael Hofmann

ABAP
REPORT

1.00 - 43

Format color / Write color

Para diferenciar ou destacar uma ou mais linhas voc utiliza os comandos format color e write color. Sint.: ... loop at i_tab. if v_flag is initial. format color 2 intensified on. v_flag = 'X'. else. format color 2 intensified off. clear v_flag. endif. write: /001 i_tab-tabname(15), 017 i_tab-fieldname(15), 034 i_tab-rollname(15), 051 i_tab-domname(15), 068 i_tab-datatype, 074 i_tab-leng no-zero, 082 i_tab-decimals no-zero, 090 i_tab-tabclass. endloop.

ABAP
REPORT

1.00 - 44

...

ABAP
REPORT

1.00 - 45

Smbolos e cones
Voc tem a opo de criar smbolos e cones para os seus programas. Um symbol uma figura bicolor simples de um smbolo comum como um circulo, quadrado, uma pasta ou documento ocupando em sua maioria apenas um caracter na lista de sada, tendo alguns ocupando dois caracteres; j um icon semelhante a um smbolo exceto por ser multicolorido, chegando a ocupar at mais que dois caracteres. Sint.: ... INCLUDE <SYMBOL>. WRITE: / SYM_RIGHT_HAND AS SYMBOL, 'Tip, Note', SYM_LEFT_HAND AS SYMBOL. ... ... INCLUDE <ICON>. WRITE: / ICON_OKAY AS ICON, 'Text line'. ...

" output as symbol " output as symbol

"output as icon

ABAP
REPORT

1.00 - 46

Ttulos dos relatrios text elements


Caminho: Clique no menu a opo Ferramentas > ABAP Workbench Clique no boto Editor ABAP. Chegando na tela do ABAP/4 Editor, selecione a opo Text-elements e clique em criar ou modificar Voc pode definir os elementos de textos num relatrio. Voc edita um titulo; define um cabealho; define colunas. Sint.: ... write va, text-001. ... text-001 o elemento de texto que voc trabalhar.

ABAP
REPORT

1.00 - 47

Reservando linhas reserve


Voc, as vezes, pode necessitar escrever de maneira agrupada informaes relacionadas que se distribuem por vrias linhas, para isso voc pode utilizar o comando reserve, que reservar linhas em um relatrio para que no haja quebra indevida de informao. Quando o comando reserve executado, o sistema verifica se h n* linhas disponveis na pgina atual, se houver menos que n linhas sobrando na pgina atual, uma quebra de pgina ocorrer acionando o end-of-page (se existir), seguido pelo comando top-of-page (se existir) fazendo a instruo write comear na parte superior da nova pgina. Se pelo menos n linhas no estiverem disponveis quando a instruo reserve for executada, o cdigo no far nada.
*

n um literal numrico e varivel.

Sint.: ... select * from <table>. reserve 3 lines. write: / <table-c1>, <table-c2>, / <table-c3>, <table-c4>, <table-c5>, / <table-c6>. skip. endselect. top-of-page. write / Relatrio. uline. ... <table> uma tabela. <table-cn> so os campos da tabela.

Resultado: Relatrio ---------------------------------------------------------------------11111 So Paulo Rua So Paulo, 9999 011-999-9999 11112 Rio Grande do Sul Rua Porto Alegre, 9999 041-999-9999

ABAP
REPORT

1.00 - 48

Ex.:

ABAP
REPORT

1.00 - 49

Formato de pginas
Voc pode usar parmetros para controlar o tamanho da pgina do relatrio, para isso voc pode utilizar os seguintes comandos: line-size line-count Define a largura da pgina Define o nmero de linhas por pgina.

Sint.: report zteste line-size 132 line-count 15. tables... ...

ABAP
REPORT

1.00 - 50

Incluindo dados append


Para adicionar uma nica linha em uma tabela interna, voc pode utilizar o comando append ele copia uma nica linha de qualquer rea de trabalho e a coloca no corpo ao final da linhas existentes, podendo ser a linha de cabealho ou qualquer outra string de campo com a mesma estrutura de uma linha no corpo. Sint.: Append wa to it. wa o nome de uma rea de trabalho it o nome de tabela interna.

ABAP
REPORT

1.00 - 51

Agrupando dados collect


Armazena os dados somando os campos numricos de uma tabela interna, assegurando que no haver duplicidade de registros. Quando o collect for executado, o sistema formar uma chave a partir dos campos de chave padro da rea de trabalho, o sistema pesquisar o corpo da tabela interna quanto uma linha com uma mesma chave daquela na rea de trabalho.

ABAP
REPORT

1.00 - 52

Classificar os dados sort


Para classificar o contedo de uma tabela interna voc pode utilizar o comando sort, as linhas podem ser classificadas por uma ou mais colunas em ordem ascendente ou descendente, sendo que a prpria sequncia de classificao pode ser alterada. Ex.: report zexemplo. data: begin of person occurs 5, name(10) type c, age type i, country(3) type c, end of person. person-name = 'Muller'. person-age = 22. person-country = 'USA'. append person. person-name = 'Moller'. person-age = 25. person-country = 'FRG'. append person. person-name = 'Mller'. person-age = 22. person-country = 'USA'. append person. person-name = 'Miller'. person-age = 23. person-country = 'USA'. append person. sort person. Resultado: Miller Moller Muller Mller 23 25 22 22 USA FRG USA USA

ABAP
REPORT

1.00 - 53

Ler os dados loop at


Para ler algumas ou todas as linhas de uma tabela interna, voc pode utilizar a instruo loop at, ela l o contedo da tabela interna, colocando as linhas do contedo, uma por vez, na rea de trabalho. O loop termina automaticamente quando a ltima linha lida e a instruo aps endloop executada. Sint.: ... loop at itab into struc. write: / struc-name, struc-blnce. endloop. ...

... loop at itab into struc where blnce <> 0. write: struc-name, struc-blnce. endloop. ...

ABAP
REPORT

1.00 - 54

Controle de quebras at first, at last


Voc pode utilizar estes comandos para executar um trecho entre a primeira e a ltima passagem do loop por uma tabela interna. Obs.: Todos estes comandos devem ser finalizados com endat. Sist.: ... loop at itab. ... at first. ... endat. ... at last. ... endat. ... endloop. ...

at new, at end of
Utilize estes comandos para detectar uma alterao em uma coluna de uma passagem de loop para a seguinte. Obs.: Todos estes comandos devem ser finalizados com endat. Sist.: ... sort by c. loop at itab. ... at new c. ... endat. ... at end of c. ... endat. ... endloop. ...

ABAP
REPORT

1.00 - 55

ABAP
REPORT

1.00 - 56

Seleo Simples parameters


Este comando quando executado em um programa gera um campo de entrada de dados numa tela de seleo antes do programa realmente em si ser executado, esta tela onde voc digitar a informao que ser a chave para a seleo dos dados do seu programa. Sint.: parameters p1 [(1)] [type t] [decimals d]... p1 o nome do parmetro. 1 a especificao interna de comprimento. t o tipo de dado d o nmero de espaos decimais (utilizado apenas como tipo p). Ex.: report zexemplo parameters aircom like spfli-carrid. Resultado:

ABAP
REPORT

1.00 - 57

Seleo com um intervalo select-option


Semelhante ao comando parameters, o comando select-options cria critrios de seleo para um campo do banco de dados, a diferena que select-options exibe dois campos para entrada de dados com um intervalo entre eles, campo to e campo from, podendo ser restringido a um s campo com no-intervals na sintaxe select-options. Ex.: report zexemplo. tables sbook. select-options fl_date for sbook-fldate. initialization. move: 'I' to fl_date-sign, 'EQ' to fl_date-option, sy-datum to fl_date-low. append fl_date. move: 'BT' to fl_date-option, '19960101' to fl_date-low, '19960630' to fl_date-high. append fl_date. Resultado:

ABAP
REPORT

1.00 - 58

Seleo Pr-Definida checkbox


Os paramentos podem ser criados como campos de dados que contenham apenas um valor de entrada e tambm podem ser criados como caixas de seleo. Quando os parameters assumem a forma das caixas de se1eo, eles so declarados como tipo C e dessa forma armazenam o valor de X quando verificados e da tecla Espao quando no verificados. Uma boa utilizao do parmetro checkbox solicitar ao usurio para indicar se ele quer que certos componentes de um relat6rio sejam exibidos.

SeIeo em um grupo radiobutton


Assim como o checkbox, o radiobutton est selecionado ou no, mas somente operam em um ou mais grupos, sendo que apenas um nico do grupo pode estar selecionado no momento da execuo do programa.
Sint.:

... selection-screen begin of block rad_blk with frame title text-OOO. parameters: rad_exl radiobutton group one, rad_ex2 radiobutton group one, rad_exl radiobutton group one, selection-screen end of block rad-blk. ...

ABAP
REPORT

1.00 - 59

No exemplo abaixo estaremos demonstrando parameters, checkbox e radiobutton. Ex.: report zexemplo. parameters: p1(15) type c, p2 like p1 obligatory lower case, p3 like sy-datum default sy-datum, cb1 as checkbox, cb2 as checkbox, rb1 radiobutton group g1 default X, rb2 radiobutton group g1, rb3 radiobutton group g1. write:/ 'You entered:', / p1 = , p1, / p2 = , p2, / p3 = , p3, / cb1= , cb1, / cb2= , cb2, / rb1= , rb1, / rb2= , rb2, / rbl= , rb3. Resultado:

ABAP
REPORT

1.00 - 60

Variantes
Quando voc entra com os mesmos dados constantemente voc pode salvar estes dados em uma variante. Para que se salve os dados, voc deve estar na tela onde eles sero preenchidos e clique no cone de salvar, de um nome para sua variante. Preencha a tela como do exemplo abaixo.

ABAP
REPORT

1.00 - 61

Expandir linhas do relatrio at selection

line-

Um programa de relatrio consiste de uma simples lista de informaes, isto significa que quando o relatrio executado os dados esto disponibilizados de acordo com o que o lhe foi solicitado. Estes relatrios podem se tornar extensos, sendo que muitas vezes seu foco distorcido mediante tantas informaes. Para estas situaes utilizamos o recurso de listas secundrias. Este tipo de relatrio no pode ser executado em background, a atuao do usurio direta. Quando houver necessidade de informaes adicionais, o usurio interage durante a execuo. Relatrios Interativos permitem voce utilizar listas secundrias, outros relatrios e transaes passando dados entre eles atravs do comando HIDE.

Eventos de controle de um Relatrio Interativo: At line-selection At PF <nn> Ocorre aps o usurio clicar duas vezes sobre uma linha do relatrio. Ocorre aps o usurio pressionar uma tecla de funo. Exemplos: Help - F1 / Cancel - F13 / Exit - F15 At user-command Ocorre aps o usurio clicar um boto definido na tela.

ABAP
REPORT

1.00 - 62

Para o cabealho da lista secundria utilize o comando - Top-of-page during line-selection

Abaixo relacionamos algumas variveis do sistema que ajudam nos controles das listas secundrias.

ABAP
REPORT

1.00 - 63

Gui interface / Gui status / Set pf-status / Set titlebar / At user comaand
gui interface Esta ferramenta nos permite montar um Menu Painter onde voc define funes como no Windows, tratada como interface com o usurio. Title Bar Titulo do Menu Painter Menu Bar Menu que sera criado Standard ToolBar Onde voc define cones Aplication ToolBar Botoes novos. gui status a definio do tipo funes de um Menu que sero ativados ou desativados: Tipos de Status Screnn Dialog Box List List in Dialog Box set pf-status um comando para uso da determinao da GUI para cada lista criada. Voc se refere a um status e tem que definir o Menu Painter. Para uma lista bsica voc pode escolher o sua GUI com status tipo LIST Na realidade um nome com mximo de 8 caracteres, para acionar a sua GUI set titlebar Este comando e para determinao do ttulo da sua GUI. at user-comand Este comando que vai controlar a ao do usurio aps definida a sua GUI.

ABAP
REPORT

1.00 - 64

As figuras abaixo demonstram como criar funes em uma tela: Entre na SE38 e informe as tabelas com as quais ir trabalhar, salve e saia.

Entre na opo Menu Painter para habilitar as funes. Preencha as informaes conforme modelo abaixo.

ABAP
REPORT

1.00 - 65

Siga as recomendaes que esto com * para definir as funes. Observe que existem o PBI (Process after Input) e o PBO (Process before output).

ABAP
REPORT

1.00 - 66

Siga como abaixo.

Siga as recomendaes que esto com * ou aps .

ABAP
REPORT

1.00 - 67

Siga as recomendaes que esto com * ou aps .

Esta funcionalidade permite que voc crie cones e funes. Ex.: Bot1 e Bot2.

ABAP
REPORT

1.00 - 68

Est opo deve ser utilizada para criar o ttulo.

ABAP
REPORT

1.00 - 69

Listas secundarias com janelas (Comando Window)


Este comando voc especifica as coordenadas de uma janela. A seqncia inicio da coluna e nmero da linha., finaliza fim da coluna e fim da linha. Automaticamente crida uma janela, ou voc pode escolher list in dialog box de uma GUI, onde voc cria titulo, botes dentro desta janela. Ex.: window starting at c1 l1 ending at c2 l2 Para gerar um ttulo para window use o adio no comando (with frame title...).

ABAP
REPORT

1.00 - 70

Componentes de ligao
Dentro do programa de ABAP voc pode chamar outros programas de report ou transao atravs dos comandos call e submit.

Chamando outro relatrio submit


Este comando utilizado quando for necessrio dentro de um programa voc chamar e processar outro programa. Voc pode impor condies para que o submit ocorra, tambm pode declarar o nome do programa que vai ser executado.

Nome da tabela selecionada ou campo eq, ne, cp, np, ge, lt, le, gt Nome do campo ou constante Tabela interna com strutcure RSPARAMS

Nome do campo ou constante Tabelas internas declaradas usando GANGES Nome da variante selecionada

ABAP
REPORT

1.00 - 71

Retorno ao relatrio submit and return


Este comando semelhante ao anterior, sendo sua diferena a opo de retornar ao programa principal aps ser processado o programa que foi chamado por submit. Sint.: ... submit report01 via selection-screen using selection-set 'variant1' using selection-sets of program 'report00' and return. ...

ABAP
REPORT

1.00 - 72

Transferncia de dados export / import


Estes comandos podem ser usados para importar ou exportar dados entre dois programas que fazem parte de uma seqncia de chamada. No esquecer que voc tem que ter um submit no programa que vai exportar os dados. Voc pode utilizar o parmetro id que ajudar a gerenciar a memria evitando que no futuro tenha problemas com o grande volume de memria ocupada por esta operao. Sint.: EXPORT <datacluster> to memory. IMPORT <datacluster> to memory. Os parmetros to e from so opcionais. Ex.: report exemplo. tables indx. data: indxkey like indx-srtfd value 'keyvalue', f1(4), f2 type p, begin of itab3 occurs 2, cont(4), end of itab3. indx-aedat = sy-datum. indx-usera = sy-uname. * export data. export f1 f2 itab3 to database indx(st) id indxkey.

report exemplo. tables indx. data: indxkey like indx-srtfd, f1(4), f2 type p, begin of tab3 occurs 10, cont(4), end of tab3. indxkey = 'indxkey'. import f1 f2 tab3 from database indx(st) id indxkey.

ABAP
REPORT

1.00 - 73

Constants
Como o nome j diz uma constante, sendo que quase idntica a uma varivel, exceto quanto ao fato de que seu valor no poder ser alterado. A instruo constants semelhante instruo data; entretanto, a adio do comando value necessrio. O comando constants pode ser usado quando for incluir um literal vrias vezes no mesmo programa definindo um valor igual ao da literal e utilizar a constante no corpo do programa e quando for necessrio alterar o valor de sua literal basta apenas alterar o valor de sua constante. Sint.: constants co1[(l)] [type t] [decimals d] value 'zaza'. co1 o nome da constante (l) a especficao interna de comprimento. t o tipo de dado. d o nmero de casas decimais (utilizadas apenas com o tipo p). 'zaza' um literal que fornece o valor da constante. Ex.: ... constants char1 value 'x'. ... constants int type i value 99. ... constants: begin of const_rec, c(2) type i value 'xx', n(2) type n value '12', x type x value 'ff', i type i value 99, p type p value 99, f type f value '9.99e9', d type d value '19950101', t type t value '235959', end of const_rec. ...

ABAP
REPORT

1.00 - 74

Types
A instruo types utilizada para definir seus prprios tipos de dados e orientar-se nos tipos j existentes. Sint.: types tp1(c) type t decimals d. types tp1 like g1. tp1 o nome do tipo. g1 o nome de uma varivel previamente definida no programa ou o nome de um campo que pertence a uma tabela ou estrutura no Data Dictionary. (d) a especficao interna de comprimento. t o tipo de dado. d o nmero de casas decimais ( utilizadas apenas com o tipo p). Ex.: report zexemplo. types wa(2) type c. data: va1 type wa value 'FOME', va2 type wa value 'SEDE'. write va1, va2. Resultado: FOME SEDE Tipos de Types: Tipo C N D T X I P F Descrio Texto (Caracter) Texto Numrico Data (YYYYMMDD) Hora (HHMMSS) Hexadecimal Whole number (integer) Packed number Floating point number Tamanho 1 1 8 6 1 4 8 8 Valor Inicial Space '00...0' '00000000' '000000' X'00' 0 0 '0.0'

ABAP
REPORT

1.00 - 75

Types Estruturados
quando um tipo definido pelo usurio pode ser baseado na definio de uma string de campo, utilizado para reduzir a redundncia e tornar a manuteno mais fcil. exemplo: report zexemplo. types: begin of address, street(26), city(15), postal_code(9), end of address. data: customer_addr type address, vendor_addr type address. customer_addr-street = 'zazzaza'. write: / customer_addr-street.

ABAP
REPORT

1.00 - 76

Clear
O comando clear configura o valor de uma varivel ou string de campo como zero. Se o dado do tipo c, o valor , por sua vez, ser configurado como espaos em branco. Sint.: clear c1 [with c2 : with 'A': with null] c1 e c2 so nomes de string de campo ou variveis. 'A' um literal de qualquer comprimento. Ex.: ... DATA: TEXT(10) VALUE 'Hello', NUMBER TYPE I VALUE 12345, ROW(10) TYPE N VALUE '1234567890', BEGIN OF PLAYER, NAME(10) VALUE 'John', TEL(8) TYPE N VALUE '08154711', MONEY TYPE P VALUE 30000, END OF PLAYER. ... CLEAR: TEXT, NUMBER, PLAYER. ...

ABAP
REPORT

1.00 - 77

Free
Utilize o comando free para excluir todas as linhas de uma tabela interna e liberar a memria associada. Trabalha da mesma forma que o comando clear. Sint.: free itab. itab uma tabela interna com ou sem uma linha de cabealho. todas as linhas so excludas e toda a memria utilizada pelo corpo da tabela interna liberada. a linha de cabealho, se existir, permanecer inalterada. utilize free quando terminar de utilizar uma itab. Ex.: data: begin of itab occurs 3, t1 like sy-index, end of itab. do 3 times. itab-t1 = sy-index. append itab. enddo. loop at itab. write itab-t1. endloop. free itab. if itab[] is initial. write: / 'no existe indicao na itab aps instruo free'. endif. Resultado: 1 2 3 no existe indicao na itab aps instruo free

ABAP
REPORT

1.00 - 78

Refresh
Ele exclui todas as linhas de uma tabela interna, mas deixa a memria alocada, voc utiliza quando quiser preencher a tabela novamente. Se voc necessita utilizar a tabela imediatamente aps limp-la, o comando refresh mais eficiente do que free j que impede alocaes desnecessrias de memria. Sint.: refresh itab. itab uma tabela interna com ou sem uma linha de cabealho. Todas as linhas so excludas. Toda a memria utilizada pelo corpo da tabela interna permanece alocada. A linha de cabealho, se existir, permanecer inalterada

Ex.: data: begin of itab occurs 3, t1 like sy-index, end of itab, v like sy-index. do 3 times. v = sy-index. do 3 times. itab-t1 = v * sy-index. append itab. enddo. write: / ''. loop at itab. write itab-t1. endloop. refresh itab. enddo. Resultado: 1 2 3 2 4 6 3 6 9

ABAP
REPORT

1.00 - 79

Executando Clculos compute


Instruo utilizada com mais freqncia para executar clculos. Sint.: compute va3 = va1 op va2 va3 a varivel de recebimento do resultado do clculo. va1 e va2 so os operandos. op um operador matemtico. Ex.: ... va3 = va2 + va3. va1 = ( va2 + va3 ) * va4 ... Quando for necessrio trabalhar com parnteses utilize um espao, ( , ), antes e depois do valor dentro do parnteses.

add ou add-corresponding
O comando add utilizado para adicionar um nmero a outro, com add-corresponding as strings de campo com os dados que tm o mesmo nome podem ser adicionadas juntamente. Sint.: ... add va1 to va2. add-corresponding st1 to st2 ...

ABAP
REPORT

1.00 - 80

Assim como demonstrado em add (funo de adicionar) abaixo demonstraremos subtrair, multiplicar e dividir. As instrues abaixo operam de forma semelhante a add. subtract ou subtract-corresponding Sint. subtract va1 from va2. subtract-corresponding st1 from st2.

multiply ou multiply-corresponding Sint.: multiply va1 by va2. multiply-corresponding st1 by st2.

divide ou divide-corresponding Sint.: divide va1 by va2. divide-corresponding st1 by st2.

ABAP
REPORT

1.00 - 81

Check
Assume a condio de IF mas com menos complexidade, com a mesma eficincia e tambm podendo ser codificada dentro de um loop, passa o controle imediatamente instruo de terminao do loop e desviando das instrues intermedirias. Aceita uma expresso lgica. Se a expresso for verdadeira, no far nada. Se for falsa, pular para o final do loop. Sint.: ... select * from mara where matnr = 1. check sy-subrc = 0. ... Ex.: report zexemplo. tables: spfli, sflight. ... select-options: sf_price for sflight-price, sp_carr for spfli-carrid, sp_from for spfli-cityfrom no database selection, sp_dept for spfli-deptime. ... get sflight. check select-options. ...

ABAP
REPORT

1.00 - 82

Read Table
utilizado para ler e localizar uma nica linha que corresponde aos critrios especficos e a coloca em uma rea de trabalho. O comando read table s pode ser utilizado para a leitura de tabelas internas, no funcionando com banco de dados. Ex.: report zexemplo. data: begin of ti occurs 3, va1(2) type n, va2 type i, end of ti, va3 like ti. ti-va1 = '5'. ti-va2 = 2. append ti. ti-va1 = '10'. ti-va2 = 5. append ti. read table ti index 2. write: / 'sy-subrc =', sy-subrc, / 'sy-tabix =', sy-tabix, / ti-va1, ti-va2. Resultado: sy-subrc = sy-tabix = 10 0 2 5

ABAP
REPORT

1.00 - 83

Insert
Voc pode utiliz-lo para inserir uma nica linha em uma tabela interna. Sint.: ... insert [wa into] itab [index n] ... wa uma rea de trabalho com a mesma estrutura de uma linha de tabela interna itab. n uma constante, literal ou varivel numrica. se wa for especificado, o contedo dela ser inserido em itab. wa dever ter a mesma estrutura que itab. se wa no for especificado, o contedo da linha de cabealho ser inserido em itab. Se itab no tiver uma linha de cabealho, wa dever ser especificado. se index for especificado, a nova linha ser inserida antes da linha n. A linha n se tornar ento a linha n + 1. a instruo insert pode ser utilizada dentro ou fora de loop at itab. Se utilizada fora, a adio index dever ser especificada. Se utilizada dentro, index ser opcional. Se a adio no for especficada, a linha atual ser assumida. exemplo: data: begin of itab occurs 5, fa1 like sy-index, end of itab. do 5 times. itab-fa1 = sy-index. append itab. enddo. itab-fa1 = -99. insert itab index 3. loop at itab. write / itab-fa1. endloop. loop at itab where fa1 >= 4. itab-fa1 = -88. insert itab. endloop. skip. loop at itab. write / itab-fa1. endloop.

ABAP
REPORT

1.00 - 84

Resultado: 1 2 993 4 5 1 2 993 884 885

ABAP
REPORT

1.00 - 85

Modify
Serve para modificar o contedo de uma ou mais linhas de uma tabela interna Sint.: modify itab [from wa] [index n] [transporting c1 c2 ... [where exp]] itab o nome de uma tabela interna com ou sem uma linha de cabealho. wa uma rea de trabalho com a mesma estrutura de uma linha no corpo de itab. v uma constante, varivel ou literal numrica. c1 e cp2 so componentes de itab. el uma expresso lgica envolvendo componentes de itab. obs.: se from wa for especificada, a linha ser sobrescrita com o contedo de wa. se from wa no for especificada, a linha ser sobrescrita com o contedo da linha de cabealho. se index n for especificada, n identificar o nmero da linha que foi sobrescrita. modify itab pode ser especificada dentro ou fora de loop at itab. Se especificada fora, index n dever ser especificado. Quando especificada dentro, index n ser opcional. Se no for especificada, a linha atual ser modificada. transporting especifica quais componentes devem ser sobrescritos e o restante permanecer inalterado. Sem ela, todos eles sero sobrescritos. usar a condio where depois de transporting far com que os componentes especificados sejam sobrescritos em todas as linhas que satisfazem a condio where. O lado esquerdo de cada parte de exp deve especificar um componente de itab. O mesmo componente pode ser especificado depois de transporting e em exp. No poder utilizar modify itab com where: - dentro do loop at itab - com a adio index

ABAP
REPORT

1.00 - 86

Ex.: report zexemplo. data: begin of itab occurs 5, t1 like sy-index, t2, end of itab, gama(5) value 'plaut'. do 5 times varying itab-t2 from gama+0 next gama+1. itab-t1 = sy-index. append itab. enddo. itab-t2 = 'v'. modify itab index 4. loop at itab. write: / itab-t1, itab-t2. endloop. loop at itab. itab-t1 = itab-t1 * 2. modify itab. endloop. skip. loop at itab. write: / itab-t1, itab-t2. endloop. itab-t2 = 'W'. modify itab transporting t2 where t1 <> 10. skip. loop at itab. write: / itab-t1, itab-t2. endloop. Resultado: 1 2 3 5 5 2 4 6 10 10 2 p l a v t p l a v t W

ABAP
REPORT

1.00 - 87

4 6 10 10

W W v t

ABAP
REPORT

1.00 - 88

Delete
Com o comando delete voc poder excluir uma ou mais linhas de uma tabela interna. Semelhante as inseres, as excluses dentro do loop at itab no afetaro imediatamente a tabela interna, ao contrrio, se tornaro efetivas na prxima passagem do loop. Sint.: Delete itab [index c] [from v] [to l] [where exp] itab uma tabela interna c, v e l so constantes, variveis e literais numricos exp uma expresso lgica envolvendo os componentes de itab.

Occurs
No limita o nmero de linhas que pode ser adicionado tabela interna, teoricamente o nmero de linhas que pode ser adicionado a uma tabela interna apenas limitado a memria virtual disponvel no servidor do aplicativo. O sistema utiliza o comando occurs apenas como uma especificao para determinar quanta memria ser alocada.

ABAP
REPORT

1.00 - 89

With Keys
Se a utilizao da adio for especificada, o sistema localizar uma linha que corresponda com a expresso key e a colocar na linha de cabealho. Usando a expresso key, voc pode procurar por uma linha especificando um valor ao invs de ndice. Ex.: report zexemplo data: begin of itab occurs 3, t1(3) type n, t2 type i, t3(3) type c, t4 type p, end of itab, begin of tabi, t1 like itab-t1, t2 like itab-t2, end of tabi, tabt like itab, t(8). itab-t1 = '100'. itab-t3 = 'pp'. itab-t2 = itab-t4 = 1. append itab. itab-t1 = '200'. itab-t3 = 'll'. itab-t2 = itab-t4 = 2. append itab. itab-t1 = '300'. itab-t3 = 'aa'. itab-t2 = itab-t4 = 3. append itab. read table itab with key t1 = '300' t2 = 3. write: / 'sy-subrc =', sy-subrc, / 'sy-tabix =', sy-tabix, / itab-t1, itab-t2, itab-t3, itab-t4. t = 't2'. read table itab into tabt with key (t) = 2. write: /, / 'sy-subrc =', sy-subrc, / 'sy-tabix =', sy-tabix, / itab-t1, itab-t2, itab-t3, itab-t4, / tabt-t1, tabt-t2, tabt-t3, tabt-t4. clear tabi. tabt-t1 = '100'. tabt-t3 = 'pp'.

ABAP
REPORT

1.00 - 90

tabt-t2 = tabt-t4 = 1. read table itab with key = tabt. write: /, / 'sy-subrc =', sy-subrc, / 'sy-tabix =', sy-tabix, / itab-t1, itab-t2, itab-t3, itab-t4. tabi-t1 = '200'. tabi-t2 = 2. read table itab into tabt with key tabi. write: /, / 'sy-subrc =', sy-subrc, / 'sy-tabix =', sy-tabix, / itab-t1, itab-t2, itab-t3, itab-t4.

Resultado: sy-subrc = sy-tabix = 300 sy-subrc = sy-tabix = 300 200 sy-subrc = sy-tabix = 100 sy-subrc = sy-tabix = 100 0 3 3 0 2 3 2 0 1 1 0 2 1 PP 1 PP 1 AA LL 3 2 AA 3

ABAP
REPORT

1.00 - 91

Form
Define o fim do evento precedente e o comeo de uma sub-rotina. As sub-rotinas no podem ser excessivas no interior de eventos. Sint.: form <sub> tables pa1 pa2... using pa3 value pa4. ... endform. <sub> o nome da sub-rotina. pa1 e pa2 so parmetros. Ex.: TYPES: BEGIN OF FLIGHT_STRUC, FLCARRID LIKE SFLIGHT-CARRID, PRICE LIKE SFLIGHT-FLDATE, END OF FLIGHT_STRUC. DATA: MY_FLIGHT IBOOK1 IBOOK2 STRUC TYPE LIKE LIKE LIKE FLIGHT_STRUC OCCURS 0, SBOOK OCCURS 0, IBOOK1 OCCURS 0, SBOOK.

PERFORM DISPLAY USING MY_FLIGHT IBOOK1 IBOOK2 STRUC. FORM DISPLAY USING P_ITAB P_BOOK1 P_BOOK2 P_STRU LIKE LIKE LIKE LIKE MY_FLIGHT[] IBOOK1[] IBOOK2[] STRUC.

DATA: L_FLIGHT LIKE LINE OF P_ITAB, L_CARRID LIKE L_FLIGHT-FLCARRID. ... WRITE: / P_STRU-CARRID, P_STRU-CONNID. ... LOOP AT P_ITAB INTO L_FLIGHT WHERE FLCARRID = L_CARRID. ... ENDLOOP. ENDFORM.

ABAP
REPORT

1.00 - 92

Perform
utilizado para chamar uma sub-rotina, no caso o form. Ex.: report zexemplo. data: number_i type i value 5, number_p type p value 4, begin of person, name(10) value 'paul', age type i value 28, end of person, alpha(10) value 'abcdefghij'. field-symbols <pointer>. assign number_p to <pointer>. perform change using 1 number_i number_p <pointer> person alpha+number_i(<pointer>). *------------------------------------------------------------------* * form change * *------------------------------------------------------------------* * ........ * *------------------------------------------------------------------* * --> value(par_1) * * --> par_number_i * * --> par_number_p * * --> par_pointer * * --> par_person * * --> par_part_of_alpha * *------------------------------------------------------------------* form change using value(par_1) par_number_i par_number_p par_pointer par_person structure person par_part_of_alpha. add par_1 to par_number_i. par_number_p = 0. par_person-name+4(1) = alpha. par_person-age = number_p + 25. add number_i to par_pointer. par_part_of_alpha = space. endform.

ABAP
REPORT

1.00 - 93

Include
Um programa include um aplicativo em que o contedo projetado para ser utilizado por outro programa, podendo estar includo em mais de um programa. Normalmente ele no completo sozinho. Um programa include deve ser do tipo i. O cdigo do programa include copiado como est e substitui o comando include no tempo de gerao do programa. Ex.: Programa Principal report zexemplo. tables: <tab1>, <tab2>. parameters va_var1 like tab1-camp1. include: zexemp1, zexemp2. top-of-page. write: / 'Resultado', va_var1. uline.

Include ZEXEMP1 *** include zexemp1. select single * from tab1 where camp1 = va_camp1.

Include ZEXEMP2 *** include zexemp2. select * from tab2 where camp1 = tab1-camp1. write: / tab2-camp1. endselect.

ABAP
REPORT

1.00 - 94

Call function
Este comando utilizado para chamar um mdulo de funo. call function um comando especfico, no necessitando que seja colocado pontos ou vrgulas depois de parmetros ou nomes de exceo. O nome do mdulo deve ser codificado em letras maisculas, se for codificado em letras minsculas, a funo no ser localizada e um dump ocorrer. exemplo: data begin of bdcdata occurs 100. include structure bdcdata. data end of bdcdata. data begin of itab occurs 10. include structure bdcmsgcoll. data end of itab. data program like sy-repid bdcdata-program bdcdata-dynpro bdcdata-dynbegin append bdcdata. clear bdcdata. bdcdata-fnam bdcdata-fval append bdcdata. ... call transaction = 'sapms38m'. = '0100'. = 'x'. = 'rs38m-programm'. = program. 'se38' using bdcdata mode 'n' messages into itab.

ABAP
REPORT

1.00 - 95

Top-of-page
Este comando utilizado para criar ttulos personalizados (cabealhos). Se no houver uma tela de seleo, o primeiro comando write executado acionar o top-of-page, caso o seu programa possua uma tela de seleo possvel que o top-of-page seja acionado duas vezes, primeiro pelo comando write executado antes da tela de seleo ser mostrada ou pelo comando write executado aps a tela de seleo ser mostrada. Ex.: report zexemplo no standard page heading. data: va1(5) value 'gata', va2(5) value 'carla'. write: / 'Como vai?'. top-of-page. write: / 'Srta.', va2. uline. Resultado:

ABAP
REPORT

1.00 - 96

End-of-page
Este comando cria rodaps de pgina, os comandos que estiverem aps o end-of-page sero executados antes da gerao de cada nova pgina. Voc precisa reservar espao na parte inferior da pgina (line-count) para o end-of-page. Ex.: report zexemplo line-count 15(2) no standard page heading. data: va1(5) value 'gata', va2(5) value 'Carla'. do 20 times. write: / 'como vai', sy-index, 'times'. enddo. top-of-page. write: / 'Srta.', va2. uline. end-of-page. write: / sy-uline, / 'Este o rodap com duas linhas reservadas'. Resultado:

ABAP
REPORT

1.00 - 97

At selection-screen
processado depois da entrada do usurio na tela de seleo ativa, podendo ocorrer aps o usurio clicar um boto. Alm da verificao de validaes de dados, mensagens de aviso, alterao do status GUI e at mesmo janelas pop-up podem ser abertas utilizando este evento. Ex.: ... select-options name for sy-repid modif id xyz. ... at selection-screen output. loop at screen. check screen-group1 = 'xyz'. screen-intensified = '1'. modify screen. endloop. ....

ABAP
REPORT

1.00 - 98

At user-command
Os botes, assim como muitas outras opes de tela de seleo baseadas em evento, podem ser muito teis na manuteno da interao com usurio e na validao de entrada do usurio. data: number1 type i value 20, number2 type i value 5, result type i. start-of-selection. write: / number1, '?', number2. at user-command. case sy-ucomm. when 'add'. result = number1 + number2. when 'subt'. result = number1 - number2. when 'mult'. result = number1 * number2. when 'divi'. result = number1 / number2. when others. write 'unknown function code'. exit. endcase. write: / 'result:', result.

Resultado: 20 ? 5

ABAP
REPORT

1.00 - 99

Message
As mensagens so mantidas e armazenadas na tabela T100 e podem ser acessadas a partir do ABAP Workbenck. Um programador efetivo emite mensagens que so descritivas e ajudam o usurio a entender a natureza do fluxo do programa. possvel atribuir a cada instruo de mensagem tipos de mensagem que tm diversos efeitos no resultado do programa.