Você está na página 1de 136

SAP R/3

SAP

Curso de formao SAP R/3

Pgina 1 de 83

B17774GR

ndice

1. Viso global do SAP 2. O ambiente de Desenvolvimento 3. Dicionrio de Dados 4. Intrues de Controle 5. Report (Write e ALV) 6. Module Pool (On-Line) 7. Outras Funcionalidades

Pgina 2 de 163

1. Viso global do SAP

1. Viso global da SAP


1.1. O que SAP? 1.2. Mdulos que engloba 1.3. Tratamento de mandantes 1.4. Opes do menu principal 1.5. Opes da barra de ferramentas

Pgina 3 de 163

1.1. O que SAP?

Sap R/3 um software de gesto que simplifica todos os processos administrativos de uma empresa, principalmente as funcionalidades financeiras, logstica e de recursos humanos. Uma caracterstica destacada seu alto grau de integrao. Deve ser destacado tambm sua grande flexibilidade, j que por ser parametrizvel, pode ser implantado aos processos e necessidades de qualquer tipo de indstria.

Pgina 4 de 163

1.2. Mdulos que engloba

Solues integradas SD Comercial


Materiais Financeira Controlling

FI Gesto

Extensa funcionalidade

MM

CO

Sistemas abertos

Produo

PP

R/3
HR
Solues Setoriais

Tesouraria

TR

Arquitetura modular Neutralidade setorial Multinacional Multilinguagem

Arquitetura Cliente/Servidor

QM

Qualidade

Manuteno

Client/Server PM ABAP/4 WF
Recursos humanos

PS
Projetos

Workflow

IS

Filosofia de gesto empresarial

Pgina 5 de 163

1.3. Tratamento de mandantes

Um mandante um ambiente de trabalho. a primeira unidade organizacional que necessria criar no SAP. Dentro de uma mesma mquina podemos ter vrios mandantes (ex: desenvolvimento, testes e produtivo). Existem pontos de parametrizao dependentes e independentes de mandante.

Pgina 6 de 163

2. O ambiente de Desenvolvimento

2. O ambiente de Desenvolvimento
2.1. Arquitetura do Sistema R/3 2.2. Tratamento de mandantes 2.3. Logon no SAP R/3 2.4. Opes do menu principal 2.5. Opes da barra de ferramentas

Pgina 7 de 163

Arquitetura do Sistema R/3

3 Camadas
Base de Dados Cliente

Servidor

Pgina 8 de 163

Tratamento de Mandantes

Client 100 Client 200 Client ...

DEV

QAS
c

PRD
c
Pgina 9 de 163

Logon no SAP R/3

Pgina 10 de 163

O Ambiente de Desenvolvimento

Pgina 11 de 163

Opes do Menu Principal

Acesso: Sistema > Criar modo.


Cria um modo paralelo de forma que podamos trabalhar com vrios processos ao mesmo tempo.

Acesso: Sistema > Sair do sistema.


Abandona SAP.

Pgina 12 de 163

Opes do Menu Principal

Pgina 13 de 163

Opes da barra de ferramentas

Escrevendo a transao correspondente permite acessar os processos sem a necessidade dos Menus. A transao /o, cria outro modo. A transao /n, serve para sair de da transao. Pressionando a flecha da direita visualizaremos as ltimas transaes realizadas.

Pgina 14 de 163

1.5. Opes da barra de ferramentas


Volta / Exit / Cancela Salvar Paginar Exibir / Modificar Imprimir Check Enter Abre Novo Modo
Pgina 15 de 163

1.5. Opes da barra de ferramentas

Ativar Objeto HELP

Matchcode. Equivale a pressionar F4. Permite visualizar os possveis valores de entrada dos campos.

Pgina 16 de 163

3. Dicionrio de Dados

3. Dicionrio de Dados
3.1. Transaes

3.2. Composio e Tipos de Tabelas

3.3. Criando Tabelas

3.4. Prog. de Manuteno de Tabelas

Pgina 17 de 163

Transaes SE11 / SE16

Pgina 18 de 163

Tipos de Tabelas

3 Tipos Especficos

Transparente : Mais utilizado. Relacionamento 1-1. Pool : Cluster: Utilizados para dados do sistema. Relacionamento N-1 com uma tabela do DB. Armazenamento de dados de 2, ou mais, tabelas muito grandes . BSEG, por exemplo.

Pgina 19 de 163

Componentes de Tabelas

Banco de Dados Tabelas

-Elemento de Dados
CAMPOS

- Domnio

Pgina 20 de 163

Domnio Tipos de Dados

Tipo
CHAR DEC DATS TIMS INT1, INT2, INT4 NUMC

Descrio
Strings de caractere (mximo de 255 caracteres) Valores decimais (comprimento mximo de 31) Campo Date Campo Time Valores inteiros Campo de caractere que pode conter apenas numricos

Pgina 21 de 163

Elementos de Dados

Pgina 22 de 163

Criando Tabelas

Pgina 23 de 163

Criando Tabelas

Pgina 24 de 163

Criando Tabelas

Pgina 25 de 163

Criando Tabelas

Pgina 26 de 163

Programa de Manuteno de Tabelas


SE11; Digite o nome de sua tabela; Pressione o boto Display; Escolha o menu utilities -> Table Maintenance Generator; Autorization Groups = &NC&; Function Group com o nome de funo que voc possa trabalhar, por exemplo, ZF01. Clique no boto FIND SCR. NUMBER(S) na parte superior da tela.

Selecione a opo Propose screen number(s) e pressione ENTER.

Pgina 27 de 163

Programa de Manuteno de Tabelas SM30

Pgina 28 de 163

Chave Estrangeira
Comece na SE11; Digite o nome da tabela no campo Database Name; Escolha o boto Change; Posicione no campo que ser a chave estrangeira na sua tabela; Clique no cone Foreign Key; No campo Check Table, digite o nome da tabela que far o relacionamento, ou seja, o nome da tabela que ser de verificao; Pressione o boto Generate proposal; Em seguida clique no boto Copy. Ative a tabela, clicando no cone Activate ou pressionando as teclas CTRL + F3.

Pgina 29 de 163

Tabelas do SAP FLIGHT Model

Pgina 30 de 163

Modelo de Dados da Ordem de Vendas (SD)

Pgina 31 de 163

Criando ndices de Tabelas

Pgina 32 de 163

Criando ndices de Tabelas

Pgina 33 de 163

Criando ndices de Tabelas

Pgina 34 de 163

4. Conceitos de Dados

4.1. 4.2. 4.3. 4.4. 4.5. 4.6. 4.7.

Tipos de Dados Definindo Variveis Clculos de Valores Converses de Dados Definindo Constantes Definindo String de Campos Expresses Lgicas

Pgina 35 de 163

Tipos de Dados

Pr-Definidos

P,I,F,C,N,D,T,X

Elementar Definidos por Usurio Estrutura Tipo Tabela Interna

Tipo Estrutura

Tipo de Dados
P I F N C D T X

Significado
Nmero Packed Inteiro Float(ponto flutuante) Texto Numrico Caracter Data(YYYYMMDD) Hora(HHMMSS) Hexadecimal

Valor Inicial
0 0 0.000 00...0 Branco(vazio) 00000000 000000 X00 8 4 8 1 1 8 6 1

Tamanho default

Tamanho Permitido
1-16 4 8 1-max 1-max 8 6 1-max

Pgina 36 de 163

Definindo Variveis

- Varivel Local - Varivel Global - Varivel Externa Variveis, Strings de campos(estruturas) e Tabelas Internas

- Constantes - Literal

Pgina 37 de 163

Definindo Variveis - Sintaxe

data v1[(l)] [type t] [decimals d] [value xxx]. data v1 like v2 [value xxx].
Onde: v1 o nome da varivel; v2 o nome de uma varivel previamente definida no programa ou o nome de um campo que pertence a uma tabela ou estrutura no dicionrio de dados; (l) a especificao interna do comprimento; T o tipo de dado; D o nmero de espaos de decimais (utilizado para apenas com o tipo P); xxx um literal que fornece um valor padro;

Pgina 38 de 163

Definindo Variveis - Exemplo

DATA contador type I. DATA: nome(30) type C, Dt_nascimento type D, SOMA type I value 1. DATA: begin of table i_tabela occurs 0, id_campo(3) type n, nome_campo like [tabela]-[campo] end of table i_tabela.
Pgina 39 de 163

Inicializando e Atribuindo Valores a Variveis Inicializando uma Varivel Comando CLEAR Sintaxe CLEAR: NOME, DT_NASCIMENTO, SOMA, it_tabela[], it_tabela.

Atribuindo Valores a uma Varivel Comando MOVE Sintaxes MOVE <dado1> TO <dado2>. Dado1 = dado2.
Pgina 40 de 163

Clculo de Valores
Operador
+ * / ** DIV MOD Adio Subtrao Multiplicao Diviso Exponenciao Diviso de inteiro Resto da diviso de inteiro

Operao

Comando V_total = dado1 [operador] dado2. Sintaxes V_total = dado1 + dado2. V_total = dado1 MOD dado2.
Pgina 41 de 163

Converso de Dados
Tipo
C X N

Quando atribuir para um campo maior, o valor from ser: from


Preenchido direita com espaos em branco Preenchido direita com zeros Preenchido esquerda com zeros

Quando atribuir para um campo menor, o valor from ser: from


Truncando direita Truncado direita Truncado esquerda

Atribudo se o valor numrico se adequar ao campo to. P Preenchido esquerda com zeros Se o valor numrico for grande demais para o campo de recebimento, um curto dump ocorrer.

PONTOS DE ATENO
-A compactao peculiar executada para os tipos de c a n; - A capacidade de atribuir valores invlidos aos tipos d e t; - O tratamento desigual de caracteres invlidos durante a converso dos tipos de c a x; - A utilizao inesperada do byte de sinal reservado em converses de p para c; - O uso de * para indicar estouro em converses de p para c; - Um campo c completamente em branco convertido para um campo p com um valor zero;
Pgina 42 de 163

Subcampos A parte de um campo referenciada pela especificao de um deslocamento e/ou comprimento. Comando Campo1[+x][(y)] = Campo2[+x][(y)]. Sintaxe V_dia = v_data+6(2).
Onde: - Campo1 e Campo2 so nomes de strings de campo ou de varivel; - X um deslocamento baseado em zero desde o incio do campo; - Y um comprimento em bytes.

Pgina 43 de 163

Clculo de Datas Atribuir o resultado de um clculo de dois, ou mais, campo data (tipo d) a uma varivel compactada (tipo n, i, p) dar a diferena em dias. Sintaxe V_diferena_dias = data1 data2. Exemplo
Data: data1 type d, data2 type d, v_dif_dias(3) type n. Data1 = sy-datum. Data2 = 20080101. V_dif_dias = data1 data2. V_dif_dias = nmero de dias j corridos no ano.
Pgina 44 de 163

Definindo Tipos Comando Types t [(l)] [type t] [decimals d]. Types t1 like v1.
Onde: - T1 o nome do tipo - V1 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. - (l) a especificao interna de comprimento - t o tipo de dado. - d o nmero de casas decimais(utilizadas apenas com o tipo p).

Considere um tipo definido pelo usurio como uma varivel, mas uma que voc no possa utilizar par armazenar dados. Poder apenas ser utilizado para definir o tipo de criao de outras variveis.

Pgina 45 de 163

Definindo String de Campo Comandos


Data: begin of fs1, f1[(l)] [type t] [decimals d] [value xxx], f2[(l)] [type t] [decimals d] [value xxx], .. End of fs1. --------------------ou-----------------Data begin of fs1. Data f1[(l)] [type t] [decimals d] [value xxx]. Data f2[(l)] [type t] [decimals d] [value xxx]. . [include structure st1.] --------------------ou-----------------Data fs1 like fs2.
Onde: - FS1 o nome da string de campo. - F1 e F2 so os campos (tambm denominados componentes) da string de campo. - FS2 o nome de uma string de campo previamente definida ou o nome de uma tabela ou estrutura no Data Dictionary. - (l) a especificao interna de comprimento - T o tipo de dado. - D o nmero de casas decimais (utilizadas apenas com o tipo p). xxx um literal que fornece um valor padro. - ST1 o nome de uma estrutura ou tabela no Data Dictionary.

Pgina 46 de 163

Definio de Constantes Comando Constants c1[(l)] [type t] [decimals d] value xxx. Constants c1 like cv value xxxx.
Onde: - C1 o nome da constante. - Cv o nome de uma constante ou varivel previamente definida ou o nome de um campo que pertence a uma tabela ou estrutura no Data Dictionary. - (l) a especificao interna de comprimento - t o tipo de dado - d o nmero de casas decimais (utilizadas apenas com o tipo p) - xxx um literal que fornece o valor da constante.

Exemplos Constants c1(2) type c value AA. Constants c2 like c1 value BB. Constants data_inicio like sy-datum value 20050301.
Pgina 47 de 163

Expresses Lgicas So os comandos de operao que indicam alguma regra lgica a ser aplicada a uma ou mais variveis, dentro do contexto e necessidade do programa.
Operador EQ NE GT GE LT LE BETWEEN f1 and f2 IS INITIAL AND OR NOT = <> > >= < <= ou =< ou => ou >< Igual Diferente Maior que Maior ou igual a Menor que Menor ou igual a Intervalo Valor inicial E Ou Negao Significado

Pgina 48 de 163

5. Instrues de Controle Comuns

5.1. 5.2. 5.3. 5.4. 5.5. 5.6. 5.7.

Editor ABAP-4 IF CASE EXIT / CONTINUE DO WHILE CHECK

Pgina 49 de 163

Instruo IF Comandos
IF / ELSEIF / ELSE / ENDIF.

Sintaxe
If [not] expresso [ and [not] expresso ] [ or [not] expresso]. .. [elseif expresso .] ....... [else.] ....... Endif.
Onde: - Expresso uma expresso lgica que avalia quanto a uma condio verdadeira ou falsa. - ..... representa qualquer nmero de linhas de cdigo. At mesmo zero linhas so permitidas.
Pgina 50 de 163

Utilizando Operadores de String


H distino entre maisculo e minsculo.
Sim

Operador

Significa

Verdadeiro quando
V1 for composto somente de caracteres em v2 V1 pode conter caracteres que no esto em v2 V1 pode conter pelo menos um caractere em v2 V1 no pode conter nenhum caractere em v V1 pode conter a string de caractere em v2 V1 no pode conter a string de caractere em v2 V1 pode conter o padro em v2 V1 no pode conter o padro em v2

Os espaos em branco finais so ignorados.


No

v1 CO v2

Contm somente

v1 CN v2

Not v1 CO v2

Sim

No

v1 CA v2

Contm qualquer

Sim

No

v1 NA v2 v1 CS v2

Not v1 ca v2 Contm string

Sim No

No Sim

v1 NS v2

Not v1 CS v2

No

Sim

v1 CP v2 v1 NP v2

Contm padro Not v1 CP v2

No No

Sim Sim

Pgina 51 de 163

Instruo CASE Comandos


CASE / WHEN / ENDCASE.

Sintaxe
Case v1. When v2[ or vn ]. When v3 [or vn ]. When others. Endcase.
Onde: - V1 ou v2 podem ser uma varivel, literal, constante ou string de campo. - ... representa qualquer nmero de linhas de cdigo. At mesmo zero linhas so permitidas.

Observaes Verificar Apostila. (Pg 71)


Pgina 52 de 163

Instruo EXIT Comandos


EXIT

Sintaxe
Exit.

Exit pode ser utilizada em vrias situaes. Essa instruo pode ter diversos efeitos, dependendo do local onde aparece no cdigo. Entretanto, ela sempre impede processamentos posteriores. Dentro de estruturas de loop, tal instruo ignora o processamento de loop introduzido pelas instrues como loop, select, do e while. Dentro de sub-rotinas, ignora as sub-rotinas introduzidas por FORM.

Pgina 53 de 163

Instruo DO Comandos
DO / ENDDO.
Onde: - V1 uma varivel, literal ou constante. - S uma string de campo com os componentes c1 e c2. - F1 uma varivel. Os componentes de s podem ser convertidos para o tipo de dados e comprimentos de f1. - .... representa qualquer nmero de clusulas varying completas. - ----- representa qualquer nmero de linhas de cdigo - Os seguintes pontos se aplicam: - Os loops DO podem ser aninhados por um nmero ilimitado de vezes. - exit impede o processamento de loop posterior e sai imediatamente do loop atual. No termina o programa quando dentro de um loop DO. O processamento continuar na prxima instruo executvel depois de ENDDO. - Voc pode criar um loop infinito pela codificao de DO sem qualquer adio. Nessa situao, utilize exit dentro do loop para terminar o processamento de loop. - Modificar o valor de v1 dentro do loop no afetar o processamento de loop.
Pgina 54 de 163

Sintaxe
Do [v1 times] [ varying f1 from s-c1 next s-c2 [varying f2 from s2-c1 next s2-c2 ...]]. .. [exit] ------Enddo.

Instruo While Comandos


WHILE / ENDWHILE.

Sintaxe
While exp [ vary f1 form s-c1 next s-c2 [ vary f2 from s2-c1 next s2-c2 ....] . [exit] . Endwhile.
Onde: - Exp uma expresso lgica - S uma string de campo com os componentes c1 e c2 - F1 uma varivel. Os componentes de s podem ser convertidos para o tipo de dado e comprimento de f1. - ..... representa qualquer nmero de clusula vary completas. - ..... representa qualquer nmero de linhas de cdigo.
Pgina 55 de 163

Instruo CONTINUE Comandos


CONTINUE.

Sintaxe
[do/while/select/loop} .......... Continue ......... Enddo/endwhile/endselect/endloop]
Onde: - representa qualquer nmero de linhas de cdigo. - O continue pode somente ser codificado dentro de um loop. - Continue no tem adies.

Pgina 56 de 163

Instruo CHECK Comandos


CHECK

Sintaxe
[do/while/select/loop} .......... Check exp ......... Enddo/endwhile/endselect/endloop]
Onde: - exp uma expresso lgica - ..... representa qualquer nmero de linhas de cdigo.

Pgina 57 de 163

Comparao CHECK / EXIT / CONTINUE

Instruo

Efeito

Exit Continue Check exp

Sai do loop atual Faz um salto incondicional para o final do loop Saltar para o final do loop se exp for falso.

Pgina 58 de 163

6. Tabelas Internas

6.1. 6.2. 6.3. 6.4. 6.5. 6.6.

O que ? Declarao Comando APPEND Comandos de Leitura Comandos Adicionais Trabalhando com TI Interrupes de Controle

Pgina 59 de 163

O que ? Declarao de uma TI


Uma tabela interna uma tabela temporria armazenada na RAM do servidor do aplicativo. Ela criada e preenchida por um programa durante a execuo e descartada quando o programa termina. Utilize a tabela interna como um armazenamento temporrio para a manipulao de dados ou como um buffer privado temporrio.

Sintaxe de declarao de uma TI


Data: begin of nome_tabela occurs num_registros, mandt like sflight-mandt, carrid like sflight-carrid, connid like sflight-connid, fldate like sflight-fldate, end of nome_tabela. nome_tabela like sflight occurs 0 with header line.

Data:

A tabela interna existe apenas durante a execuo do programa.


Pgina 60 de 163

O que ? Declarao de uma TI


Uma Tabela interna consiste em um corpo e uma linha opcional de cabealho.
Indice
Header

MANDT
000 000 000 000 000 000 000 000

CARRID
AA AA DT AA AA DT DT AA

CONNID
1907 1920 0601 1907 1900 0625 0612 1907

FLDATE
20.02.2008 01.01.2008 15.02.2008 20.02.2008 05.03.2008 10.04.2008 20.05.3008 23.06.2008

1 2 3 4 5 6 7

O corpo armazena as linhas da tabela interna. Todas as linhas dentro dela tm a mesma estrutura. A linha de cabealho uma string de campo com a mesma estrutura de uma linha do corpo, mas pode apenas armazenar uma linha nica.

Pgina 61 de 163

Instruo APPEND Comandos


APPEND

Sintaxe
APPEND [wa to] [initial line to] it.
Onde: - Wa o nome de uma rea de trabalho. - It o nome de uma tabela interna previamente definida. Os seguintes pontos se aplicam: - wa deve ter a mesma estrutura de uma linha do corpo. - wa pode ser a linha de cabealho ou pode ser qualquer string de campo com a mesma estrutura de uma linha no corpo. - Se voc no especificar uma rea de trabalho, o sistema utilizar a linha de cabealho como padro. Na verdade, a linha de cabealho a rea de trabalho padro. - Depois de append, sy-tabix configurada com o nmero de linha relativo da linha recm acrescentada. Por exemplo, depois de acrescentar a primeira linha, sy-tabix ser configurada como 1. Depois de acrescentar asegunda linha, sytabix ser configurada com 2 e assim por diante.
Pgina 62 de 163

Comandos de Leitura - LOOP Comandos


LOOP Leitura de vrias linhas da Tabela Interna

Sintaxe
Loop at it [into wa] [from m] [to n] [where exp]. Endloop.
Onde: - it o nome de uma tabela interna. - wa o nome de uma rea de trabalho - m e n so literais de inteiro, constantes ou variveis que representam um nmero de linha relativo. Por exemplo, 1 significa a primeira linha na tabela, 2 significa a segunda e assim por diante. - exp uma expresso lgica que restringe as linhas que so lidas. - ...... representa qualquer nmero de linhas de cdigo. Essas linhas so executadas uma nica vez para cada linha recuperada da tabela interna.

Pgina 63 de 163

Comandos de Leitura - LOOP


Os seguintes pontos se aplicam: - wa deve ter a mesma estrutura de uma linha do corpo - wa pode ser a linha de cabealho ou qualquer string de campo com a mesma estrutura de uma linha no corpo. - Se voc no especificar uma rea de trabalho, o sistema utilizar a linha de cabealho como padro. Por exemplo, loop at it into it l as linhas da tabela interna it, colocando-as uma por vez na linha de cabealho it. Uma instruo equivalente loop at it. - Se from no for especificada, o padro ser comear a leitura a partir da primeira linha. - Se to no for especificada, o padro ser ler at a ltima linha. - Os componentes de it especificados na expresso lgica no devem ser precedidos pelo nome da tabela interna. Por exemplo, where f1=X est correta, mas where it-f1 = X causar um erro de sintaxe. - exp pode ser qualquer expresso lgica. Entretanto, o primeiro operando de cada comparao deve ser um componente da tabela interna. Por exemplo, se it contivesse um componente f1, ento where f1 = X estaria correta; where X = f1 estaria incorreta e causaria um erro de sintaxe. - As adies from, to e where podero ser misturadas, se assim for desejado.

Pgina 64 de 163

Comandos de Leitura READ TABLE Comandos


READ TABLE Leitura de uma nica linha da Tabela Interna

Sintaxe
Read table it [into wa] [index i : with key keyexp [binary search] ] [comparing cmpexp].
Onde: - It o nome de uma tabela interna - Wa o nome da rea de trabalho - I um literal de inteiro, constante ou varivel que representa um nmero de linha relativo. Por exemplo, 1 significa a primeira linha na tabela, 2 significa a segunda e assim por diante. - Keyexp uma expresso que representa um valor a ser localizado - Cmpexp uma expresso de comparao que representa um teste a ser executado na linha localizada.

Pgina 65 de 163

Comandos de Leitura READ TABLE


Instrues Adicionais :
- O ndice de linha de uma tabela interna corresponde ao seu nmero de linha relativa. Por exemplo, a primeira linha na tabela tem o ndice 1, a segunda tem o ndice 2 e assim por diante. Na instruo read table, se index i estiver especificada, o sistema ir recuperar

- INDEX

- WITH KEY - Se with key keyexp for expecificada, o sistema localizar uma linha que corresponda com a expresso key e a colocar na linha de cabealho. Se mais de uma linha corresponder com a expresso, a primeira localizada(a que tiver o menor ndice) ser retornada.

- Binary Search - Sempre que utilizar a adio with key, voc tambm dever utilizar a adio binary search, o que faz com que a linha seja localizada com o uso de um algoritmo binrio de pesquisa, em vez de uma varredura de tabela linear. Isso resulta nos mesmos ganhos de desempenho dos alcanados com a pesquisa de uma tabela de banco de dados atravs de um ndice. De antemo, a tabela deve ser classificada em ordem ascendente pelos componentes especificados na expresso key.

Pgina 66 de 163

Instruo SORT Comandos


SORT

Sintaxe
Sort it [descending] [as text] [by f1 [ascending: descending] [as text] f2 .....].
Onde: - It o nome de uma tabela interna. - F1 e f2 so os componentes de it. - .... representa qualquer nmero de nomes de campo opcionalmente seguidos por ascending , descending, e/ou as text.

Pgina 67 de 163

Verificando contedo de uma TI Verificando se uma TI est vazia Sintaxe


If it[] is initial.
Se o teste for verdadeiro, a tabela interna estar vazia. Quando falso, ele ir conter pelo menos uma linha.

Verificando a quantidade de registros de uma TI Sintaxe


Describe table it [lines i] [occurs j].
Se a adio lines i for especificada, o nmero de linhas ser colocado em sy-tfill e i. Se a adio occurs j for especificada, o tamanho da clusula occurs ser colocado em sytoccu e j.

Pgina 68 de 163

Trabalhando com TI Inserindo Linhas Comandos


INSERT

Sintaxe
Insert [wa into] it [index n].
Onde: - Wa uma rea de trabalho com a mesma estrutura de uma linha da tabela interna it. - N um constante, literal ou varivel numrica. Pontos de Ateno: - Se wa for especificado, o contedo de wa ser inserido em it. Wa dever ter a mesma estrutura que it. - Se wa no for especificado, o contedo da linha de cabealho ser inserido em it. Se it 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. - Instruo insert pode ser utilizada dentro ou fora de loop at it. Se utilizada fora, a adio index dever ser especificada. Se utilizada dentro, index ser opcional. Se a adio for especificada, a linha atual ser assumida.
Pgina 69 de 163

Trabalhando com TI Modificando Linhas Comandos


INSERT

Sintaxe
Modify it [from wa] [index n] [ transporting c1 c2 ....[where exp]].
Onde: - it 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 it. - N uma constante, varivel ou literal numrico. - C1 e c2 so componentes de it - Exp uma expresso lgica envolvendo componentes de it Pontos de Ateno: - 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 do cabealho. - Se index n for especificada, n identificar o nmero da linha que ser sobrescrita. - Modify it pode ser especificada dentro ou fora de loop at it. Se especificada fora, index n dever ser especificado. Quando especificada dentro, index n ser opcional. - Transporting especifica quais componentes devem ser sobrescritos. Sem ela, todos eles sero sobrescritos.
Pgina 70 de 163

Trabalhando com TI Apagando Linhas Comandos


FREE

Sintaxe
FREE it.
Onde: - it o nome de uma tabela interna com ou sem uma linha de cabealho.

Utilize FREE quando quiser excluir todas as linhas, e no for utilizar novamente a tabela interna, desalocando a memria destinada a ela.

Pgina 71 de 163

Trabalhando com TI Apagando Linhas Comandos


CLEAR

Sintaxe
CLEAR it. CLEAR it[].
Onde: - it o nome de uma tabela interna com ou sem uma linha de cabealho.

Instruo

Se it tiver uma linha de cabealho

Se it no tiver uma linha de cabealho

Clear it Clear it[]

Limpar a linha de cabealho Excluir todas as linhas

Excluir todas as linhas Excluir todas as linhas

Utilize CLEAR quando quiser excluir todas as linhas, mas quiser preencher a tabela interna novamente.
Pgina 72 de 163

Trabalhando com TI Apagando Linhas Comandos


REFRESH

Sintaxe
REFRESH it.
Onde: - it o nome de uma tabela interna com ou sem uma linha de cabealho.

Utilize REFRESH quando quiser excluir todas as linhas, mas quiser preencher a tabela interna novamente.

Pgina 73 de 163

Trabalhando com TI Apagando Linhas Comandos


DELETE

Sintaxe
Delete it (a) index n (b) from i to j (c) where exp
Onde: - n um valor constante, varivel ou literal numrico; - exp uma expresso lgica envolvendo os componentes de it.

Pgina 74 de 163

Trabalhando com TI Comando COLLECT Comandos


COLLECT

Sintaxe
Collect [wa into] it
Onde: - It uma tabela interna - Wa uma rea de trabalho que tem a mesma estrutura de it.

Quando collect for executado, o sistema formar uma chave a partir dos campos de chave padro na rea de trabalho. Os campos de chave padro so os campos de caractere (tipo c, n, d, t e x). O sistema ento pesquisar o corpo da tabela interna quanto a uma linha com a mesma chave daquela na rea de trabalho. Se no localizar uma, a linha ser acrescentada ao final da tabela. Se localizar uma, os campos numricos (tipos i, p e f) na rea de trabalho sero adicionados nos campos correspondentes da linha localizada.
Pgina 75 de 163

TI Interrupes de Controle Comandos


AT FIRST / ENDAT AT END / ENDAT
Onde: - It uma tabela interna - ..... representa qualquer nmero de linhas de cdigos(at mesmo zero).

Sintaxe
Loop at it. ..... At first. ..... Endat. .... At last. ..... Endat. ..... Endloop.

Utilize at first para: - Executar o loop do processamento de inicializao - Escrever os totais no incio de um relatrio - Escrever cabealhos Utilize at last para: - Executar o loop do processamento de terminao - Escrever os totais ao trmino de um relatrio - Escrever rodaps

Pgina 76 de 163

TI Interrupes de Controle Comandos


AT NEW / ENDAT AT END OF / ENDAT
Onde: - It uma tabela interna - c um campo componente de It - ..... representa qualquer nmero de linhas de cdigos(at mesmo zero). Utilizando at new: - Se o nvel de controle for alterado; - Se qualquer campo antes do nvel de controle for alterado; - Se essa for a primeira execuo do loop; Utilizando at end of: - Se o nvel de controle for alterado; - Se qualquer campo antes do nvel de controle for alterado; - Se essa for a ltima linha da tabela;

Sintaxe
Loop at it. ..... At new c. ..... Endat. .... At end of c. ..... Endat. ..... Endloop.

No utilize as instrues de interrupo de controle dentro de uma estrutura loop at it where ....; os efeitos sero imprevisveis.
Pgina 77 de 163

TI Interrupes de Controle Comandos


SUM
Onde: - It uma tabela interna - ..... representa qualquer nmero de linhas de cdigos(at mesmo zero).

Sintaxe
Loop at it. ..... At first/last/new/end of. . Sum. . Endat. ..... Endloop.
Utilize sum para: - Localiza todas as linhas que tm os mesmos valores dentro do campo de nvel de controle e todos os campos esquerda dele; - Soma cada coluna numrica direita do nvel de controle; - Coloca os totais nos campos correspondentes da rea de trabalho.

Pgina 78 de 163

TI Interrupes de Controle Comandos


ON CHANGE OF
Onde: - v1 e v2 so nomes de string de campo ou variveis; - ..... Indica que qualquer nmero de condies que poder vir em seguida; - ..... representa qualquer nmero de linhas de cdigos(at mesmo zero). O on change of se caracteriza por poder ser utilizado em qualquer instruo de loop, no apenas em loop at. Por exemplo, pode ser utilizada no do enddo, while endwhile. J a instruo at new s pode ser utilizada dentro da instruo loop at.

Sintaxe
Loop at it. ..... On change of v1 [or v2]. . [else. .] Endon. ..... Endloop.

Pgina 79 de 163

7. Instruo WRITE

7.1. 7.2. 7.3. 7.4. 7.5.

Utilizao Formataes Adies para a instruo Mscara de Edio Instruo LINE

Pgina 80 de 163

WRITE - Utilizao Comandos


WRITE

Sintaxe
Write [at] [/p(l)] v1[+o(sl)] (1) under v2 : no-gap (2) using edit mask m : using no edit mask (3) mm/dd/yy : dd/mm/yy (4) mm/dd/yyyy : dd/mm/yyyy (5) mmddyy : ddmmyy :yymmdd (6) no-zero (7) no-sign (8) decimals n (9) round n (10) currency c : unit u (11) left-justified : centered : right-justified
Pgina 81 de 163

Formataes Comprimento de exibio


O comprimento de sada de um campo corresponde ao nmero de caracteres utilizados para a exibio do valor daquele campo (comprimento padro); Os campos do Data Dictionary te tipos de dados do DDIC, como DEC, CHAR, CURR e assim por diante. Todos eles so baseados em tipos de dados do ABAP/4 e herdam o formato e o comprimento padro do tipo de dado do abap/4; Alm disso, os campos do DDIC tm seu comprimento de sada e nmero de decimais definidos no domnio. Campos Compactadores: o comprimento de sada padro de um campo do tipo p duas vezes o comprimento de campo definido. Se casas decimais forem definidas, o comprimento de sada padro ser aumentado em 1, equivalente ento a 2 * comprimento do campo + 1. Formatao Padro: o formato padro derivado do tipo de dado da varivel. A sada de campos numricos (tipo p, i e f) alinhada direita com zeros iniciais suprimidos e para o restante alinhada esquerda. Formatao adicional especfica ao tipo tambm se aplica. Para campos do tipo D (data) ser utilizada a formatao definida em User Defaults, contanto que o comprimento de sada mnimo (10) seja respeitado.

Pgina 82 de 163

Instruo WRITE Comandos


WRITE

Sintaxe
Write [at] [/p(l)] v1[+o(sl)]
Onde: - V1 um nome de string de campo, varivel ou literal - P, l e n so literais numricos ou variveis - P a especificao de posio. Identifica a coluna de sada na qual o campo de sada deve comear. - L a especificao de comprimento. Identifica o comprimento do campo de sada no qual o valor deve ser escrito. - o uma especificao de deslocamento de subcampo que pode conter somente literais numricos. - sl uma especificao de comprimento de subcampo que pode conter somente literais numricos.

Pgina 83 de 163

Adies p/ Instruo WRITE Comandos


UNDER v2 : no-gap.

Sintaxe
Write [at] [/p(l)] v1[+o(sl)] under v2 : no-gap.

Utilizar under far com que o primeiro caractere do campo seja posicionado na mesma coluna do primeiro caractere de um campo anteriormente escrito. Voc no poder utilizar under com uma especificao explcita de posio.

A utilizao de no-gap ir suprimir o espao intermedirio, colocando automaticamente depois de um campo, se o campo seguinte no tiver nenhuma especificao de coluna.

Pgina 84 de 163

Adies p/ Instruo WRITE Comandos


USING EDIT MASK M : USING NO EDIT MASK.

Sintaxe
Write [at] [/p(l)] v1[+o(sl)] Using edit mask m : using no edit mask.
Onde: - m uma mascara de edio. As mscaras de edio permitem: - Inserir caracteres na sada - Mover o sinal para o incio de um campo numrico - Inserir ou mover artificialmente um ponto decimal - Exibir um nmero de ponto flutuante sem a utilizao de notao cientfica

Pgina 85 de 163

Adies p/ Instruo WRITE Comandos


LEFT-JUSTIFIED, CENTERED E RIGHT-JUSTIFIED

Sintaxe
Write [at] [/p(l)] v1[+o(sl)] left-justified.

Com a utilizao de left-justified, centered e right-justified, voc pode mudar o valor de sada dentro do espao distribudo para o campo de sada.

Pgina 86 de 163

Adies p/ Instruo WRITE Comandos


SY-ULINE / SY-VLINE

Sintaxe
Write [at] [/p(l)] sy-uline.

Para escrever um linha horizontal que comea em posio 5 para um comprimento de 10, voc codifica write 5(10) sy-uline. Para criar uma linha vertical, utilize suvline; por exemplo, write: sy-vline, X, sy-vline escreveria uma linha vertical em qualquer lado de um X.

Pgina 87 de 163

Adies p/ Gerao de Relatrio Comandos


LINE-COUNT / LINE-SIZE

Sintaxe
Report line-size i line-count j(k).
Onde: - I, j e k so constantes numricas. - i especifica a largura da lista de sada (em caracteres). - j especifica o nmero de linhas por pgina na lista de sada. - k especifica o nmero de linhas reservado para um rodap na parte inferior de cada pgina. - No coloque i, j ou k entre aspas.

Pgina 88 de 163

Adies p/ Gerao de Relatrio

Comandos
SKIP

Sintaxe
Skip [n: to line n].
Onde: - n um literal numrico ou uma varivel.

A instruo SKIP permite que voc gere linhas em branco e mova a posio atual de sada para cima ou para baixo dentro da pgina atual de sada.

Pgina 89 de 163

Adies p/ Gerao de Relatrio

Comandos
NEW-PAGE.

Sintaxe
New-page.

No momento em que reconhecer a instruo New-page, o compilador ABAP-4 ir criar uma nova pgina no seu relatrio.

Pgina 90 de 163

8. Modularizao: Eventos e Sub-Rotinas

8.1. 8.2. 8.3. 8.4. 8.5.

Unidades de Modularizao Eventos Sub-Rotinas Passagem de Parmetros Mdulos de Funo

Pgina 91 de 163

Unidades de Modularizao
Ela permite a voc separar um grupo de linhas de cdigo do restante e ento execut-las em um tempo especifico. As linhas de cdigo dentro de uma unidade de modularizao comportam-se de maneira muito semelhante a um mini-programa que pode ser chamado de outro programa.

O ABAP/4 oferece trs tipos de unidades de modularizao: - Eventos - Sub-rotinas - Mdulo de funo

Utilize as unidades de modularizao para eliminar o cdigo redundante dentro de seu programa e para torn-lo mais fcil de ler.

Pgina 92 de 163

Eventos
Ao contrrio da primeira impresso, os programas ABAP/4 so baseados em eventos. Um bom entendimento sobre eles a chave para um bom entendimento de ABAP/4.

Comandos
INITIALIZATION. START-OF-SELECTION / END-OF-SELECTION. TOP-OF-PAGE / END-OF-PAGE.

Quando voc executa um programa, esses eventos so associados pro um programa de driver.

Pgina 93 de 163

Eventos
Um programa em geral segue os seguintes passos: - Aciona o evento initialization, fazendo com que o cdigo que pertence a initialization seja executado. Se voc no tiver codificado um evento initialization em seu programa, o programa de driver pular esse passo. - Mostra a tela de seleo para seu programa. (Uma tela de seleo contm os campos de entrada para suas instrues de parmetro.) Se seu programa no tiver uma tela de seleo, ele pular esse passo. - Aciona o evento start-of-selection, fazendo com que o cdigo que pertence a esse evento seja executado. Se voc no tiver codificado um evento start-of-selection em seu programa, ele pular esse passo. - Aciona o evento end-of-selection em seu programa, executando todo o cdigo que pertence a ele. Se voc no tiver codificado um end-of-selection, ele pular esse passo. - Mostra a lista de sada para o usurio.

Pgina 94 de 163

Eventos
Categoria Driver Initialization At selection-screen Start-of-selection Get End-of-selection Usurio At line-selection At pfn At user-command Programa Top-of-page End-of-page Eventos

Os eventos de driver so acionados pelo programa de driver. Os eventos de usurio so acionados pelo usurio atravs da interface com ele. Os eventos de programa so os acionados de dentro de seu programa.

Pgina 95 de 163

Eventos
Acionando top-of-page top-ofSe seu programa no tiver uma tela de seleo, a primeira instruo write executada aciona o evento top-of-page. Se seu programa tiver uma tela de seleo, possvel que top-of-page seja acionada duas vezes: - Pela primeira instruo write executada antes de a tela de seleo ser mostrada - Pela primeira instruo write executada depois que a tela de seleo mostrada. Somente se estiver fazendo algo incomum em top-of page, como abrir arquivos ou inicializar dados, voc precisar ter cuidado com o efeito de acionamento duplo.

Padronizando start-selection startSe a primeira instruo executvel em seu programa no for precedida por um nome de evento, em tempo de execuo o sistema automaticamente insere startof-selection antes da primeira linha de cdigo executvel.

Voc no deve colocar definies de dados dentro de eventos. Embora isso no cause um erro de sintaxe, trata-se de um estilo de trataprogramao pobre. Todas as definies de dados seriam feitas na parte superior do programa.
Pgina 96 de 163

Eventos
Saindo de um evento
Voc pode sair de um evento a qualquer hora utilizando as seguintes instrues: - Exit -Check - Stop Em todos os eventos: - Check imediatamente deixa o evento atual e o processamento continua com o prximo evento (ou ao, como exibir a tela de seleo ou lista de sada). - Stop imediatamente deixa o evento atual e vai diretamente para o evento end-ofselection. Executar stop dentro de end-of-selection deixa o evento. No causa um loop infinito.

Pgina 97 de 163

Eventos
Em eventos que ocorrem antes de start-of-selection
e check tm o mesmo comportamento. Eles deixam o evento imediatamente e o processamento continua com o prximo evento (ou ao, como exibio da tela de seleo).
- exit

Em start-of-selection e eventos que ocorrem depois dele:


- exit termina o relatrio e mostra a lista de sada. Existe uma nica exceo; dentro de top-of-page, exit comporta-se como check. - check deixa o evento e o processamento continua com o prximo evento (ou ao, como exibio da lista de sada).

Check, exit e stop no configuram o valor de sy-subrc. Se quiser configur-la, voc pode atribuir um valor numrico a ela antes de partir.

Pgina 98 de 163

Sub-Rotinas

Uma sub-rotina uma seo de cdigo reutilizvel. como uma mini-programa que pode ser chamado de outro ponto em seu programa. Dentro dele voc pode definir variveis, executar instrues, computar resultados e escrever sada. Para chamar uma sub-rotina, utilize a instruo perform. Para definir uma sub-rotina, utilize a instruo form para indicar o incio de uma sub-rotina e utilize enform para indicar o seu fim. O nome de uma sub-rotina no pode exceder 30 caracteres.

Pgina 99 de 163

Sub-Rotinas Comandos
FORM / ENDFORM.
Onde: -S o nome da sub-rotina. -T1, t2, u1, u2, c1 e c2 so parmetros. - Tables permite que as tabelas internas sejam passadas como parmetros. - A adio value no pode ser utilizada depois de tables. - A adio value pode ser aplicada a quaisquer variveis passadas via using ou changing. - ..... representa qualquer nmero de linhas de cdigo.

Sintaxe
Form [tables t1 t2 ....] [using u1 value(u2) .] [changing c1 value(c2) .]

Os seguintes pontos se aplicam: - Todas as adies so opcionais. - Quando elas so codificadas, as adies devem aparecer na ordem mostrada aqui. Se codificadas, tables dever vir primeiro, e depois dela using e changing. - Cada adio somente pode ser especificada uma vez. Por exemplo, a adio tables somente pode aparecer uma vez. Entretanto, tabelas mltiplas podem aparecer depois dela. - No utilize vrgulas para separar parmetros. - tables somente permite que tabelas internas sejam passadas no tabelas de banco de dados. - Uma sub-rotina pode chamar outra sub-rotina. - A recurso suportada. Uma sub-rotina pode chamar a si mesma ou uma sub-rotina que a chama de volta. - As definies de sub-rotina no podem ser aninhadas.
Pgina 100 de 163

Sub-Rotinas Comandos
PERFORM
Onde: - s, s1, s2, s3, so nomes de sub-rotina. - N uma varivel numrica. - A) e b) so mutuamente exclusivos. - Tables , using e changing podem aparecer com a) ou b). - A adio value() no pode ser utilizada com perform.

Sintaxe
Form [tables t1 t2 ....] [using u1 value(u2) .] [changing c1 value(c2) .]

Utilizando a sintaxe b) voc pode especificar que uma sub-rotina de uma lista de sub-rotina seja executada. A n-sima sub-rotina na lista de nomes seguindo of executada.

Pgina 101 de 163

Sub-rotinas
Saindo de um evento
Voc pode sair de um evento a qualquer hora utilizando as seguintes instrues: - Exit -Check - Stop Em todos os eventos: - check e exit imediatamente deixam a sub-rotina e o processamento continua com a prxima instruo executvel depois de perform. - stop imediatamente deixa a sub-rotina e vai diretamente para o evento end-ofselection. Check, exit e stop no configuram o valor de sy-subrc. Se voc quiser configur-lo, atribua um valor numrico para ele antes de deixar.

Pgina 102 de 163

Sub-Rotinas

Definindo variveis locais e globais


Uma varivel global aquela que definida fora de uma sub-rotina utilzando a instruo tables ou data. Ela pode ser acessada de qualquer ponto no programa, seja dentro de um evento ou dentro de uma sub-rotina. boa prtica de programao colocar definies de variveis globais na parte superior do programa, e algum lugar antes da primeira linha de cdigo executvel. Uma varivel definida dentro de uma sub-rotina utilizando a instruo local, data ou static. Dizemos que ela local sub-rotina. As variveis definidas utilizando local so acessveis de fora da sub-rotina; as variveis definidas utilizando data ou statics no so. Assim, se a sub-rotina chama outra sub-rotina, variveis definidas utilizando local so visveis de dentro da sub-rotina chamada variveis definidas utilizando data ou statics no so.

Pgina 103 de 163

Sub-Rotinas Passando Parmetros Comandos


TABLES / USING / CHANGING

Sintaxe
Form [tables t1 t2 ....] [using u1 value(u2) .] [changing c1 value(c2) .]
Lembre-se: - perform e form devem conter o mesmo nmero de parmetros. - A sintaxe nas instrues perform e form pode diferir. - A sintaxe na instruo form determina apenas o mtodo pelo qual um parmetro passado. - A adio value() no pode ser utilizada na instruo perform. - Using deve vir antes de changing. - A adio using s pode ocorrer uma vez em uma instruo. A mesma regra se aplica a changing.
Pgina 104 de 163

Sub-Rotinas Passando TI como Parmetro


Voc pode utilizar um dos dois mtodos para passar uma tabela interna para uma subrotina: 1 Passar com a linha de cabealho 2 Passar apenas o corpo
Mtodo Sintaxe Como passado

Com linha

Form s1 tables it

Por referncia

Corpo apenas

Form s1 using it[]

Por referncia

Form s1 changing it[]

Por referncia

Form s1 using value (it[])

Por valor

Form s1 changing value(it[])

Por valor e resultado

Pgina 105 de 163

Include Comandos
INCLUDE

Sintaxe
Include ipgm
Onde Ipgm um programa do tipo i.

Um programa include deve ser do tipo i. Voc especifica o programa do tipo no campo Type na tela Program Attributes quando voc cria o programa. A instruo include copia o contedo do programa include no programa de incluso. O cdigo do programa include copiado como est e substitui a instruo include no tempo da gerao de programa. A SAP utiliza includes para reduzir a redundncia de cdigo e dividir programas muito grandes em unidade menores.

Pgina 106 de 163

Mdulos de Funo
Um mdulo de funo a ltima das quatro unidades principais de modularizao do ABAP/4. Ele muito semelhante a uma sub-rotina externa sob esses aspectos: - Ambos existem dentro de um programa externo; - Ambos ativam os parmetros a serem passados e retornados; - Os parmetros podem ser passados por valor, por valor e resultado, ou por referncia. As diferenas importantes entre mdulos de funo e sub-rotinas externas so as seguintes: - Os mdulos de funo tm uma tela especial utilizada para definir parmetros os parmetros no so definidos via instrues de ABAP/4; - As reas de trabalho tables no so compartilhadas entre o mdulo de funo e o programa de chamada; - Para chamar um mdulo de funo, utilizada uma sintaxe diferente da empregada para chamar uma sub-rotina. - Para sair de um mdulo de funo, utilizada a instruo raise em vez de check, exit ou stop.

Pgina 107 de 163

9. Tela de Seleo

9.1. 9.2. 9.3. 9.4. 9.5.

Eventos Selection-Screen Parameter Select-Options Message

Pgina 108 de 163

Eventos

- O evento INITIALIZATION esse bloco no qual voc especifica os valores-padro iniciais de sua tela de seleo, com base no fato de os critrios serem ou no necessrios para manter a integridade de dados digitados pelo usurio.

- O evento AT SELECTION-SCREEN
processado depois da entrada do usurio na tela de seleo ativa. Isso pode ocorrer quando o usurio pressiona um tecla de funo ou d um clique em um boto., bem como no caso de muitos outros elementos que podem interagir com o usurio. Alm de verificao de validaes de dados, mensagens de aviso, alterao do status GUI e at mesmo janelas pop-up podem ser abertas utilizando o evento at selection-screen.

Pgina 109 de 163

Eventos 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 o usurio e na validao de entrada do usurio. Essa instruo, quando utilizada junto com o comando at selection-screen, uma excelente maneira de interagir com o usurio quando este digita dados.

Sintaxe
selection-screen pushbutton 10(20) text-003 user-command eng1. selection-screen pushbutton 50(20) text-004 user-command germ. at selection-screen. at user-command. case sy-ucomm. when 'eng1'. lang-english = 'Y'. when 'germ'. lang-english = 'Y'. Endcase.
Pgina 110 de 163

Selection-Screen

Comandos
SELECTION-SCREEN

Sintaxe
Selection-screen begin of block block0 with frame title text-000.

Ao definir telas de entrada para utilizao na informao de dados, vrios elementos de seleo podem ser combinados para manter a integridade dos dados e ainda continuarem de fcil utilizao. Esses elementos incluem campos de entrada padro como opes de seleo e parmetros, assim como outros, tais como caixas de seleo, botes de opo e botes pushbutton.

Pgina 111 de 163

Selection-Screen Outras Adies

- Selection-screen comment - coloca um comentrio na tela de seleo. - Selection-screen uline - coloca um sublinhado na tela em uma posio especificada para um comprimento especificado; - Selection-screen position - Uma ferramenta muito til que especifica um comentrio para o prximo parmetro de campo na tela. til para selection-options assim como pra parameters. - Selection-screen begin-of-line e selection-screen end-of-line - Todos os campos de entrada definidos entre essas duas instrues so colocados um do lado do outro na mesma linha. - Selection-screen skip o n - Essa instruo cria uma linha em branco para as n linhas na tela de seleo.

Pgina 112 de 163

PARAMETER

Comandos
PARAMETERS

Sintaxe
Parameters v1[(n)] [type t1] [like tabela-campo] (1) obligatory (2) default (3) lower case

A instruo parameter nas telas de seleo cria uma estrutura de dados no programa que armazena a entrada inserida no campo Parameter pelo usurio em tempo de execuo.

Pgina 113 de 163

PARAMETER Checkbox / Radiobutton

Comandos
CHECKBOX

Sintaxe
parameters: testparm as checkbox default 'X'.

Comandos
RADIOBUTTON

Sintaxe
parameters: opcao1 as radiobutton group opcao, opcao2 as radiobutton group opcao.

Pgina 114 de 163

SELECT-OPTIONS Comandos
SELECT-OPTIONS

Sintaxe
Select-options sel FOR f.
A instruo select-options utilizada de maneira semelhante instruo parameters, no sentido de que cria critrios de seleo para um campo de banco de dados. A diferena principal entre as duas que a instruo select-options cria dois campos de entrada que contm tanto um campo FROM como um campo TO, em oposio a somente uma nica entrada de campo. -SIGN - Pode significar INCLUSIVE, que o padro, ou EXCLUSIVE, que pode ser marcada na janela Complex Selections. - OPTION - Pode armazenar valores BT (entre), CP (contm padro), EQ (igual para) e GE (maior que ou igual a). - Low - Armazena a entrada de valor no campo FROM. - HIGH - Armazena a entrada de valor no campo TO.

Pgina 115 de 163

MESSAGE Comandos
MESSAGE

Sintaxe
report example line-count 65 line-size 132 message-id fs. Message tiponnn(classe) [with text text-campotexto].
As mensagens so mantidas e armazenadas na tabela T100 e podem ser acessadas a partir do ABAP workbench. Um programador efetivo emite mensagens que so descritivas e ajudam o usurio a entender a natureza do fluxo do programa. Tipos de Mensagens: - S - sucess, essa mensagem exibida na linha de status da tela seguinte. - A - Abend, a transao atual interrompida e uma mensagem exibida at que o usurio confirme-a. - E - Error, o usurio deve inserir dados para continuar. - W - Warning, o usurio pode tanto modificar os dados de entrada como pressionar Enter para prosseguir. - I - Information, o usurio deve pressionar <enter> par continuar no mesmo ponto do programa.
Pgina 116 de 163

10. SELECT

10.1. 10.2. 10.3. 10.4. 10.5.

Introduo Seleo Adies JOIN Performance

Pgina 117 de 163

Seleo de Dados Comandos


SELECT

Comandos
INTO / WHERE

Sintaxe
SELECT * FROM dbtab. ENDSELECT.
Teste de sucesso do select:

Sintaxe
SELECT f1 f2 f3 fn FROM dbtab INTO [(f1,f2,f3,,fn)] [table i_tabela] Where f1 = [constante/varivel] [and/or] fn = [constante/varivel]. [] [ENDSELECT.]

If sy-subrc ne 0. Write: Nenhum dado foi selecionado. Endif.

Pgina 118 de 163

Select - Aditions Adies


ORDER BY f1fn / ORDER BY PRIMARY KEY UP TO n ROWS. INTO TABLE itab APPENDING TABLE itab APPENDING CORRESPONDING FILEDS OF TABLE itab. FOR ALL ENTRIES in itab MIN (campo) MAX (campo) AVG (campo) COUNT (*)

Pgina 119 de 163

Select Mais Usados Mais Usados:


SELECT * FROM ... <tabela> SELECT * FROM <tabela> WHERE <campo> EQ <contedo>. SELECT * FROM <tabela> WHERE <table field> BETWEEN <field1> AND <field2>. SELECT * FROM <tabela> WHERE <table field> IN <internal table>. SELECT * FROM <tabela> APPENDING TABLE <internal table>. SELECT * FROM <tabela> INTO TABLE <internal table>. SELECT INTO CORRESPONDING FIELDS OF TABLE <internal table>. SELECT SINGLE * FROM <tabela> WHERE <campo> EQ <contedo>. SELECT <a1> <a2> ... INTO ( <f1>, <f2>, ) FROM <tabela> WHERE SELECT * FROM (<tabela>) INTO <work area>. SELECT * FROM <tabela> FOR ALL ENTRIES IN <tabela interna> WHERE campo1 = contedo AND campo2 = contedo .

Pgina 120 de 163

10. ALV

10.1. 10.2. 10.3. 10.4. 10.5.

Introduo Barra de Ferramentas Imagens Principais Funes Programa Exemplo

Pgina 121 de 163

ALV Relatrios Interativos Report Tradicional

Pgina 122 de 163

ALV Relatrios Interativos

Report ALV

Pgina 123 de 163

ALV - Barra de Ferramentas

Selecione uma linha e clique nesse boto. A linha ser destacada em forma de coluna. Reapresenta do relatrio. Marca todas as linhas. Desmarca todas as linhas. Todo o relatrio ficar classificado na ordem crescente por essa coluna. Idem ao anterior, mas a classificao na ordem decrescente. Voc poder filtrar o seu relatrio baseando-se em valores de campos. Totaliza a coluna selecionada. A coluna deve conter um valor. Apresenta subtotais de um total geral, para a coluna selecionada. Mostra como ir ficar a impresso do relatrio. Exporta o relatrio para o Microsoft Excel. Exporta o relatrio para o Microsoft Word. Grava o relatrio em arquivo.
Pgina 124 de 163

ALV Barra de Ferramentas

Pgina 125 de 163

ALV Barra de Ferramentas

Pgina 126 de 163

ALV - Figura

No exemplo acima foi utilizado como background a imagem ALV_BACKGROUND e o nome do logotipo ENJOYSAP_LOGO.

Pgina 127 de 163

ALV Figura Transao 0FPM002

Pgina 128 de 163

ALV - Figura

Pgina 129 de 163

ALV Funes e Comandos Necessrios


type-pools: vrm, slis. data: t_linecolor t_listheader t_fieldcat t_sort data: v_listheader v_layout v_print v_variante

"Necessrio para uso de ALV "Tipos globais para ALV

Definio de tipos

type slis_specialcol_alv occurs 0 with header line, type slis_t_listheader, type slis_t_fieldcat_alv with header line, type slis_sortinfo_alv occurs 0 with header line.

Definio de tabelas utilizadas Definio de variveis

type slis_listheader, type slis_layout_alv, type slis_print_alv, like disvariant.

"Cabealho "layout para sada "Ctrl de impresso "Variante de exibio

Pgina 130 de 163

ALV Funes e Comandos Necessrios

call function 'REUSE_ALV_VARIANT_DEFAULT_GET' EXPORTING i_save = 'A' CHANGING cs_variant = v_variante EXCEPTIONS not_found = 2. t_linecolor-fieldname = 'VBELN'. t_linecolor-color-col = '6'. t_linecolor-color-inv = '1'. "Inverso, 1 liga e 0 desliga append t_linecolor.

Busca layout de exibio default para o relatrio. Se houver algum formato padro para o relatrio, essa funo busca e j apresenta o relatrio nesse formato.

Permite informar a cor que voc deseja para a coluna, inclusive pelo valor da varivel

Pgina 131 de 163

ALV Funes e Comandos Necessrios


clear t_fieldcat. t_fieldcat-fieldname = 'MARK'. t_fieldcat-tabname = 'T_ALV'. t_fieldcat-reptext_ddic = 'S'. t_fieldcat-inttype = 'C'. t_fieldcat-outputlen = 1. t_fieldcat-checkbox = 'X'. append t_fieldcat. clear t_fieldcat. t_fieldcat-fieldname = 'VBELN'. t_fieldcat-tabname = 'T_ALV'. t_fieldcat-reptext_ddic = 'Doc. Fatura'. t_fieldcat-inttype = 'C'. t_fieldcat-outputlen = 10. append t_fieldcat. (todos os campos a serem exibidos na tela devem constar na tabela FIELDCAT)
Pgina 132 de 163

Principal tabela do ALV, a tabela de FIELDCAT contm todos os campos, a seqncia, a formatao a ser utilizada e outras caractersticas de exibio. Monta tabela para apresentao do relatrio. Aqui montamos um catlogo com as informaes dos campos. Veja que no estamos preenchendo todas as opes do catlogo, no necessrio. No programa voc poder analisar as principais opes.

ALV Campos Especiais da Tab FIELDCAT

* Para o campo NETWR, o relatrio j vai mostrar linha de total clear t_fieldcat. t_fieldcat-fieldname = 'NETWR'. t_fieldcat-tabname = 'T_ALV'. t_fieldcat-reptext_ddic = 'Valor lquido'. t_fieldcat-inttype = 'P'. t_fieldcat-outputlen = 15. t_fieldcat-do_sum = 'X'. append t_fieldcat.

* Os campos abaixo no iro aparecer no * relatrio, apenas quando o usurio modificar * o layout e inserir esses campos nas colunas a * serem apresentadas clear t_fieldcat. t_fieldcat-fieldname = 'FKART'. t_fieldcat-tabname = 'T_ALV'. t_fieldcat-reptext_ddic = 'Tp do documento'. t_fieldcat-inttype = 'C'. t_fieldcat-outputlen = 4. t_fieldcat-no_out = 'X'. append t_fieldcat.

Pgina 133 de 163

ALV Funes e Comandos Necessrios Preparao p/ chamada da Exibio do Relatrio


* Preenchendo algumas opes de impresso (No obrigatrio) v_layout-expand_all = 'X'. "Abrir subitens v_layout-colwidth_optimize = 'X'. "Largura melhor possvel da coluna v_layout-edit = 'X'. "Permitir a edio * Indicando para funo qual o layout que deve ser apresentado inicialmente v_variante-variant = p_varia. v_print-no_print_listinfos = 'X'.

Pgina 134 de 163

ALV Funes e Comandos Necessrios Chamada da Exibio do Relatrio


call function 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = v_repid i_background_id = 'ALV_BACKGROUND' i_callback_top_of_page = 'ZF_TOP_OF_PAGE' * i_callback_pf_status_set = 'ZF_STATUS' i_callback_user_command = 'ZF_USER_COMMAND' it_fieldcat = t_fieldcat[] is_layout = v_layout it_sort = t_sort[] i_default = 'X' i_save = 'A' is_variant = v_variante is_print = v_print TABLES t_outtab = t_alv EXCEPTIONS program_error =1 others = 2.
Pgina 135 de 163

10. SELECT

10.1. 10.2. 10.3. 10.4. 10.5.

Introduo Seleo Adies JOIN Performance

Pgina 136 de 163