Escolar Documentos
Profissional Documentos
Cultura Documentos
SAP
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
Pgina 3 de 163
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
FI Gesto
Extensa funcionalidade
MM
CO
Sistemas abertos
Produo
PP
R/3
HR
Solues Setoriais
Tesouraria
TR
Arquitetura Cliente/Servidor
QM
Qualidade
Manuteno
Client/Server PM ABAP/4 WF
Recursos humanos
PS
Projetos
Workflow
IS
Pgina 5 de 163
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
3 Camadas
Base de Dados Cliente
Servidor
Pgina 8 de 163
Tratamento de Mandantes
DEV
QAS
c
PRD
c
Pgina 9 de 163
Pgina 10 de 163
O Ambiente de Desenvolvimento
Pgina 11 de 163
Pgina 12 de 163
Pgina 13 de 163
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
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
Pgina 17 de 163
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
-Elemento de Dados
CAMPOS
- Domnio
Pgina 20 de 163
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
Pgina 27 de 163
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
Pgina 30 de 163
Pgina 31 de 163
Pgina 32 de 163
Pgina 33 de 163
Pgina 34 de 163
4. Conceitos de Dados
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
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
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
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
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
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
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
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
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
Sim No
No Sim
v1 NS v2
Not v1 CS v2
No
Sim
v1 CP v2 v1 NP v2
No No
Sim Sim
Pgina 51 de 163
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.
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.
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
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
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
Instruo
Efeito
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
O que ? Declarao Comando APPEND Comandos de Leitura Comandos Adicionais Trabalhando com TI Interrupes de Controle
Pgina 59 de 163
Data:
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
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
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
Pgina 64 de 163
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
- 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
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
Pgina 68 de 163
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
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
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
Sintaxe
CLEAR it. CLEAR it[].
Onde: - it o nome de uma tabela interna com ou sem uma linha de cabealho.
Instruo
Utilize CLEAR quando quiser excluir todas as linhas, mas quiser preencher a tabela interna novamente.
Pgina 72 de 163
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
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
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
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
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
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
Sintaxe
Loop at it. ..... On change of v1 [or v2]. . [else. .] Endon. ..... Endloop.
Pgina 79 de 163
7. Instruo WRITE
Pgina 80 de 163
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
Pgina 82 de 163
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
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
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
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
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
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
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
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
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
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.
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.
Sub-Rotinas
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
Com linha
Form s1 tables it
Por referncia
Corpo apenas
Por referncia
Por referncia
Por valor
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.
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.
9. Tela de Seleo
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.
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.
- 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.
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.
Comandos
CHECKBOX
Sintaxe
parameters: testparm as checkbox default 'X'.
Comandos
RADIOBUTTON
Sintaxe
parameters: opcao1 as radiobutton group opcao, opcao2 as radiobutton group opcao.
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.
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
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.]
10. ALV
Report ALV
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 - Figura
No exemplo acima foi utilizado como background a imagem ALV_BACKGROUND e o nome do logotipo ENJOYSAP_LOGO.
ALV - Figura
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.
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
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.
* 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.
10. SELECT