Vous êtes sur la page 1sur 174

o N SUL T N G

ABAP
Workbench

ASAP Workbench
Release: 4.6C

Instrues para o Aluno


O material de treinamento no se destina ao aprendizado individual. Apenas em
conciliao com as explicaes do instrutor o material estar completo.

Autor: Wagner Eduardo Fernandes

Departamento: Data:_'_'_
Marcas Registradas

SAP e o logotipo SAP so marcas registradas da SAP AG.


MS-DOS e EXCEL so marcas registradas da Microsoft.
OS/2, CICS, MVS, ACFNTAM, VSE, AIX, OS/400 e AS/400 so marcas registradas
da IBM.
X-Window-System uma marca registrada da MIT University.
SINIX, UTM e BS2000 so marcas registradas da Siemens.
UNIX uma marca registrada da AT&T.
HP-UX uma marca registrada da Hewlett Packard.
DECnet, DECstation, DECsystem, VAXstation e VMS so marcas registradas da
DEC.
Ethernet uma marca registrada da Xerox Corporation.
ORACLE SQL*net, SQL*+ PRO*C so marcas registradas da ORACLE Corporation.
INFORMIX-OnLine e INFORMIX-ESQUC so marcas registradas da INFORMIX
Corporation.

Confidencialidade
Este Documento entitulado 'ABAP Workbench SAP R/3', desenvolvido para ser
utilizado para treinalnento corporativo do ERP SAP R/3, da SAP AG, de
propriedade exclusiva da ALLlANSYS CONSULTING LTOA, sendo proibida sua
cpia total ou parcial, ou mesmo divulgao sem prvia autorizao desta empresa.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 2


NDICE
CONFIDENCIALIDADE. 2
CAPTULO 1 , , ,", , , " ,.. ,', ,6

NOVIDADES NO ABAP WORKBENCH., .. " , , ,"', , ,6


ESTRUTURA DE TELAS NO ODJEcrNAVIGATOR ,6
TIPOS DE DADOS LOCAIS EM PROGIlAMAS (TYPES) 10
EXEMPLO DE CODIFICAO .. "'"'" .. ,' ,"', ,, .. ,, ,"", 11
EXERCCIOS ,',." " " , ,",',." 12
CAPTULO 2" ,', ,', .. ,', " ,"""', " .. , , " 13

RELATRIOS ," .. ,.. ,"', " .., ,", ,"', ,, ,"", ,', ,', 13
REPORTS (OVERVIEW E TCNICAS) ,.,.,.,., ,',." , ,.,.,', 13
FOIlMATO DE LISTA DE SADA ,", ,'" " 14
O CO~IANDO WRITE ,"", ,", 15
ESPECIFICA'\O DE POSI'\O E TAMANHO.,.", " 16
SINTAXE DO COMMANDO WRITE 17
OI'ES DE FORMATO , ,.. , ,", ,., , 18
ATRIBUTOS DE SADA I ,',." ,', ,",." , 19
ATIlIDUTOS OE SADA II ,.. ,"',.,",., ,., , , ,.. 20
ATRIBUTOS DOS CAMPOS DE SADA, ,.,., ,., 21
S~IDOLOS E CONES E~I LISTAS"",", , ,""', ,.. , ,."".22
RELATRIOS INTEIlATIVOS, , ,.,.,", , ,.".23
PAGE HEADINGS "' , , ,""',.",." , , ,.. 24
LISTAS SECUNDARIAS EA VARlAVEL OE SISTEMA SY-LSIND 25
SEI.E'\O DE LINHAS I - UTILIZANDO AVARlAVEL OE SISTEMA SY-LISEL 26
SELE'\O DE LINHAS II ,." , ,.. , " ,', , 27
SELE'\O DE LINHAS III ,""'"., " .. ,., 28
EXERCCIOS , ,"",", ,',." , 29
CAPTULO 3 " , ,', ,"""', " , , ,,""' 30

ABAP OPEN SQL.. , , , ,', ,"""", , ,"', " 30


EXERCcIOS " , ,., ,'"", ,.. " , , 38
CAPTULO 4 ,' ,..,',' '" ,""" ," , """'" '.. ,'" ,", .. 39

ESTRUTURAS DE PROGRAMAS E DADOS " ,""', .., , 39


EXERCCIOS ,., " , "., ,',." , " 46
CAPTULO 5 " , " ,""', ,"""", .. ,", ,', ,", " ,", ,"""" 47

MODULARIZAO E ESTRUTURA DE PROGRAMAS , 47


EXEIlCCIOS " , ,.,." .. , "",., ,, , , 58
CAPTULO 6 , ,", " ,', ,"", ,"', ,',', 59

TABELAS INTERNAS, , ,"', ,""""""", ,'" , ,"""',.. ,", ,,', .. 59


ENTENDENDO OS NOVOS TIPOS DE TAU ELAS INTERNAS 71
Standard 71
Sorted 71
Hashed. 71

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 3


CONSIIlERAES ...................................................................................................................... 72
WORK REA DA TABELA INTERNA................................................................................................. 73
LOOPING DE LEITURA NA TABELA INTERNA ................................................................................. 78
ACESSANDO ENTRADAS INDIVIDUAIS EM TABELAS INTERNAS ............................................... 79
MODIFICANDO UMA TABELA INTERNA ATRAVS DO NDICE. .................................................. 80
MODIFICANDO UMA TABELA INTERNA ATRAVS DE CHAVES ....................................................... 81
DELETANDO UMA TABELA INTERNA................................................................................... 82
TABELAS INTENAS COM E SEM HEADER LINE .................................................................... 83
EXERCcIOS ............................................................................................................................ 84

CAPTULO 7"", ,', , ,', ,", " " ,""", ""', ,' 85

MDULOS DE FUNO , ,', ,""', ,', ,', ,""", ,"', , 85


BAI'I ,"', ".,', ,", .. , , ,"' .. ,""', ,., .. ,"", ',.' 97
Dejinio , "., ,", " , "., ,"', .."., , , ,' 97
Integrao ,', " " , ,.,', : , " , "." ,',.,""', , , , ," 97
BAI'ls - INTERFACE COM O SISTEMA Rl3 98
BOR ,.. ,.. ,"', , , ,.. , ,"", ,.. ,., " ,.,." ,"",', , "." 98
D EFINIAo" ,",.,',.,", ,', , ,""",' ,', ,', ,""',",.,", ,' ,", 98
UTlLIZAAo 98
INTEGRAAo .. " ,.. ,.. , " ,,', ,', , , ,""',', , ,.,", 99
BApI BllOWSER,., ,", , , , ,"', " ,', ""', , , , ,""" 100
BApls STANllARD, .. "., , ,"""", " .. ,""', , " , " " .. ,.. , 103
BApls I~IPLEMENTADASCOMO MDULOS DE FUNAo , 104
EXERCi CIOS ,', , ,', , ,"', """', , ,, ,.. ,"', ,""""', .. ,', , 105

CA I'TULO 8 ,,,,, ,' " ,"'''' " ,,''', " " '''''''' ,""', " ,," " ".""", 106

DIALOG pROGRAMMING - ON-LINE .""., " ,""', .." ,'" " ..,,""""".. ,"", 106

SCREEN pAINTER - ABAI' .'".. ',.,"', .. ,.,"," ,', .. " "", ,.".".. ,"'"", ,,, , 107
CO~IUNICAAoENTRE OS ~IDULOS"",', ,.,'''''''''''', , ,.. ,.. ,', , ,"'" 108
OVERVIEW: CRIANDO UM DIALOG pROGRAM """""" "" ,,",, .. , 109
CIUANllO PROGRAMAS ,.. """"""""",.,"', ,, , "'"" , " .. ," .." .. " , ," 110
ATRIIlUTOS DO pROGRMIA""." ,", , " "." ,"", .. ,.,',.,,,.,""', , 111
DEFININDO TELAS .. , ,.,"', " ,""" ,'"" "' ,', " ,""', ,., 1 12
UTILIZANDO CAMPOS 110 DICIONARIO ABAp ."." "." 113
DEFININDO ELE~IENTOS GRAFICOS (GRAPIIICAL SCREEN pAINTER) ""."",, 114
DEFININDO O FLUXO LGICO (FLOW LOGIC) " " """ .. ",, 115
CHIANDO UMA SEQUf:NCIA DE TELAS " " "" .. " """".,, 116
DEFININDO CAMI'OS NO MODULE 1'001, "" "" ",, 117
CIUANllO MODULES ABAp"",."",.,""',.,", , ,"",.,.,, ,'"., ,', , , ,""" 118
O PROCESSAMENTO NO THE MOllULE 1'001, "" " "" .. 119
CHAMADAS VIA TRANSAAo , , ".,""', ,""' , ,.. , ,""""""", , , ',., 120
SEQUNCIA DE AES .. ,', .. ,." .. , ,,""' ,"', ,', , ,.. ,.. ,"""",.,""" ,' 121
INPUT CHECKS NO MODULE 1'001, " "." "" 122
COMANDO FIELD E TRANSPORTE DE DADOS "" " 123
ALTERANDO A SEQUNCIA DE TELAS IlINAMICAMENTE .. " " " " 124
INTERPRETANDO FUNCTfN CODES NO PROGRAI\IA " , 125
MENU pAINTER: OVERVIEW ." ,.. '.,,, ,""", ,""', , ", " ,"""" 126
DEFININDO INTERFAces I " , "., " , " "., .. , , ,"", ,"', " ,.,.127
DEFININDO INTERFACES" , , , ,.,",., ,., """, ,"', "., , ,"", 128
EXERCcIOS ,"', , " , " "',., ,"."",., ,""",", 129

CAPTULO 09, , ,'".. , " "''''''".. " ", ,'".".",, ,"" ,""""""'".,"", 130

MODIFICAO DINMICA EM TELAS ", ,'""", " ..,,"', " ,,"",, 130
EXERCi CIOS"" , , ," ,.. ,"', ," ",.,", " """' ""', ,", ,,., .. ,',.,' 134

COPYRIGHT ALLlANSYS CONSULT1NG - 2002 Pg. 4


CAPTULO 10 135

TABLE CONTROL 135

EXERCCIOS 146

CAPTULO 11 147

TABSTRIP 147

1 -CRIAO DO PROGRAMA ON-LINE (MODULE POOL) 148


2 - CRIAO DAS TELAS- SCREEN PAINTER 149
3 - DESENHAR A TELA COM OS TABSTRIPS DESEJADOS 150
4 - DEFINIR OS ATRIBUTOS DO TAllSTRIP 151
5-DEFINIODA SUllTELA 152
6 - ASSOCIAO DAS PASTAS COM A(S) SUBTELAS(S) 153
7 - DEFINIO DE MAIS PASTAS 154
8 - CRIAO DA TELA COM OS CA~IPOS DE DADOS 155
9 - DEFINIO DO LAY-OUT DOS CAMPOS DAS TELAS 156
10 - DEFINiO DOS CONTROLES DO TABSTRIP 157
ll-CIlMIANDO A EXECUO DO TAllSTRIP 158
12 - NAVEGAO PELO T AllSTRIP 159
13-TABSTRIl'PIWNTO 161
EXERCCIOS 162

CAPTULO 12 163

SAPSCRIPT 163

1-0 QUE SAPSCRlPT E QUANDO UTILIZAR 163


2 - LIMITAES E PROIlLE~IAS DA FERRAMENTA 163
Programa de Povoamento de SAPscript ,., " 164
Abertum dejormulrio, , ,.. , , " ,', 164
Inicializac70 de umjormulrio " ,.." , , 166
Selec70 dos dados , , , 167
Impressc70 dos dados nas janelas, , , , , , , 167
3 - O FORMuLAmo 169
3.1. Header " , , , ,., 169
3.2. Pargrajos , ,', , , 169
3.3. Caracter Slring, " , , , , 169
3.4. Janelas ,', "., 170
3.5. Pginas , , , ,'.,.171
3.6. Page Windows ,", ,' , " 171
3.7. Text Elemenls 171
4 - MANUTENO DE 1101mULARIos 172
4.1. Criar umjormulrio novo, ,.. , , , , , 172
4.2. Copiarjormlllrios em oulro idioma (Traduc7o) 172
4.3. Copiar IImjormulrio de 01111'0 cliente 173
5 - INCLUSO DE LOGOS NO FORMuLAmo 173
6 - ALTERAO DEPHOGRAMAS/ LAYOUT STANDARDS 174

COPYRIGHT ALLIANSYS CONSULTING - 2002 Pg. 5


Captulo 1
Novidades no ABAP WorkBench
Estrutura de Telas no Object Navigator

O Object Navigator dividido em duas reas:


o Uma rea ( esquerda), onde a lista de objetos pode ser mostrada
hierarquicamente.
o A janela de objetos (Object Window - Localizada direita), na qual os
objetos podem ser mostrados e editados.
A rea onde os objetos so mostrados hierarquicamente pode ser fechada utilizando-se o
botao "Close Browser".

A lista de objetos para um objeto corrente mostrado na Object Window pode ser
mostrada pressionando-se o boto "Object Ust".

Pode-se escolher funes a partir do menu de contexto em ambas as janelas


(esquerda ou direita).

Os objetos do repositrio so organizados hierarquicamente:

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 6


Cada componente de aplicao consiste de mltiplas classes de
desenvolvimento.
Cada classe de desenvolvimento pode conter muitos tipos de objetos do
repositrio: programas, grupos de funo, Objetos do dicionrio ASAP, ...
Cada objeto do repositrio pode consistir de diferentes tipos de objetos:
Programas podem conter: Dados globais, types, campos, eventos,...
Grupos de funo podem conter: Dados globais, mdulos de funo, ...

Pode-se entrar com o tipo de lista de objetos e o nome na parte superior da


hierarquia. A lista de objetos e ento mostrada na rea da hierarquia.

SAPMZCOMISSAO IPrograma IZC(


Tipos objeto programa
DDIC
Campos
PSO
dulosPAI

Efetuando-se um doubl-click em um sub-objeto na lista de objetos, expande-se a


hierarquia e mostra-se uma sub-lista hierrquica.
No caso de um sub-objeto que no possui sublista, este mesmo objeto ser
mostrado na tela Object Window (direita).
Pode-se utilizar os rcones para nevegar pelo histrico ou hierarquicamente entre as
listas de objeto.

Lista de objetos Prvia.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 7


Prxima Lista de Objetos

Lista de Objetos de nfvel mais alto.

Lista de Favoritos, nela pode-se: Adicionar, Processar o objeto, Mostrar tipo de


objeto, abrindo-se o editor.

Efetuar o Refresh da Lista de Objetos.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg, 8


}-
I'

PSD

STATUS moo
'

__ I

Navegao:
o Efetuando-se um double-click em um programa existente, inicia-se a
ferramenta correspondente no Workbench na Object Window.
o Se o objeto no existir, passIvei cria-lo simplesmente efetuando-se um
doubleclick neste objeto.

Efetuando-se um Rlght-click em um objeto existente, passivei executa-lo


diretamente ou executa-lo em Debugging Mode.

COPYRIGHT ALLlANSYS CONSULTING 2002 Pg. 9


Tipos de Dados Locais em Programas (Types)

As caracterlsticas tcnicas dos campos so ainda definidas no domnio.

A partir da verso 4.6, as caracteristicas tcnicas podem ser definidas diretamente no data
element, sem que haja a necessidade de criao de domfnios.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 10


TYPES: <user_defned_type> TYPE <type>
Navega para a
declarao local do Data
Typc ou para a
Declarao do Type no
dicionrio ABAP
DATA: <data_object> TYPE <type>

Quando da definio de types ou variveis, voc pode referenciar types pr-definidos.


Para mais informaes documentao, utilize como referncia as palavras-chave TYPE ou
DATA.

Os typos pr-definidos so:

C - Caracter
N - Numrico
D - Data (YYYMMMDD)
T - Time (HHMMSS)
X - Byte (Hexadecimal)
I-Inteiro
P - Packed
F - Ponto Flutuante
STRING - Caracter tipo string
XSTRING - Hexadecimal para imagens.

Exemplo de Codificao

COPYRIGHT ALLIANSYS CONSULTING - 2002 Pg. 11


Exerccios

Utilize este espao para colocar observaes a respeito dos exercfcios propostos pelo
instrutor.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 12


Captulo 2
Relatrios

Reports (Overview e Tcnicas)

Acima podemos observar os comandos que geram as listas para impresso, bem como
eventos e elemtneos de textos utilizados.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 13


Formato de lista de sada

DEMO/CHAP 02.A WRITE 1

Date 17.10.2001 Time 14:46:10

o comando WRITE gera uma Ilsta de salda.


Por default, a lista consiste em uma pgina continua.

Tambm por default, o ABAP gera duas linhas HEADER. O ttulo da lista e o cabealho da
Ilsta (se disponlvel) aparecece no topo esquerda, enquanto que o nmero da pgina
aparece no topo, ao lado direito. Estes valores permanecem vlldos quando o relatrio
"rolado" pela tela.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 14


o comando WRITE

DEMO/CHAP 02.A WRITE 1

Date 17.10.2001 Time 14:46:10

o comando WRITE gera a sarda do contedo de um campo, ou uma constante, de acordo


com o seu tipo bsico.

Sucessivos WRITEs geram salda em uma mesma linha. Quando uma linha completa, a
sarda continua na prxima linha. Por default, dois campos que seguem um ao lado do outro
devem ser separados por um branco. Voc pode usar a adio NO-GAP para suprimir a
impresso dos caracteres em branco.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 15


Especificao de Posio e Tamanho

DEMO/CHAP 02.8 WRITE 1

Date 10f17J1995
Time 16:18:38
I I

I I
I I
Coluna 5 Coluna 20

Voc pode especificar um formato para o valor de sarda. Este permite voc definir uma
quabra de linha, a linha inicial e o tamanho da sada.

o aditivo ULlNE produz uma linha slida.

COPYRIGHT ALLIANSYS CONSULTING - 2002 Pg. 16


Sintaxe do commando WRITE

Ip(l)
I Quebra
p Poso da coluna Valor salda
I Tamanho salda Campo ou literal

Opes de formato

necessrio passar algumas informaes adicionais ao comando WRITE como:

A posio da coluna, atravs de um valor de at 3 dlgitos ou uma varivel que respeite este
tamanho, usando o parmetro acicional AI.

Voc pode omitir especificaes de formato inteiramente ou especificaes individuais de


formato.

A ordem das clusulas deve ser respeitada.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 17


Opes de Formato

Date 10{17/95
Time 07:08:17
I I
I 1
I

Coluna 5 Coluna 20

Para formatar um campo data, voc deve utilizar a opo DDJMMIYYYY. Para formatar um
campo de data sem o formato DDJMMIYYYY, voc deve especificar o tamanho da salda do
campo, inclusive os caracteres de formatao (I), por exemplo.

Atravs da opo de formatao UNDER, voc garante o posicionamento abaixo do campo


relacionado (posio relativa).

Para definir a posio dos campos, voc pode usar os parmetros LEFT-JUSTIFIED, RIGHT-
JUSTIFIED e CENTERED. O default : campos numricos so posicionados RIGHT-
JUSTIFIED e todos os outros, LEFT-JUSTIFIED.

Utilizando USING EDIT MASK, voc pode especificar um template de formato. O underscore
indica como posio de salda. O sistema imprime diretamente qualquer outro caracter usado
no template.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 18


Atributos de Sada I

DEMO/CHAP 02.E 1

Date 17.10.1995
Time 16:18:38

o comando FORMAT determina como os dados iro aparecer na tela.


Em qualquer formato de tela, voc deve setar atravs do comando FORMAT os comandos
WRITE que aparecem na nova linha adiante.

o comando FORMAT tem as seguintes opes:


INTENSIFIED display highlight
INPUT entrada
COLOR <n> seta a cor do background
INVERSE influencia a cor do foreground e background
Usando o parmetro OFF, voc pode desligar qualquer opo.
Os valores abaixo so default:
INTENSIFIED
INPUT OFF
COLOROFF.
Usando a adio RESET, voc pode resetar todos os formatos: INTENSIFIED
OFF CaLOR OFF INPUT OFF.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 19


Atributos de Sada II

As listas seguintes mostram as sete cores que voc pode usar em relatrios. Voc ativa
estas cores especificando um valor numrico ou um nome simblico. Voc pode deixar
"highlight" os elementos para facilitar a legibilidade.

FORMAT COLOR. ..
OFF or COL_BACKGROUND Background
1 COL_HEADING Heading
2 COl_NORMAL Corpo
3 COL-TOTAL Total
4 COL_KEY Chave
5 COLwPOSITIVE Valores positivos
6 COl_NEGATIVE Valores
Negativos
7 COL_GROUP Nveis de grupo
Voc pode especificar o ON, OFF e <n> (para CaLOR) dinamicamente utilizando
sintaxe diferente, por exemplo:
DATA: C TYPE I VALUE 5.
FORMAT INTENSIFIED ON CaLOR =C.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 20


Atributos dos campos de sada

Usando o comando WRITE, voc pode especificar atributos para um valor de salda. Os
atributos de salda so os mesmos que os do comando FORMAT.

As especificaes do comando WRITE so aplicadas somente aos valores associados este


comando. A formatao da linha sofre um overwrite.

COPYRIGHT ALLIANSYS CONSULTING - 2002 Pg. 21


Smbolos e fcones em Listas

DEMO/CHAP 02.1 Symbols 1

1 SAPAG
69190 Walldorf
06227/34-0

2 John Smith
69190 Walldorf
06227/12345

Usando a adio AS SYMBOL do comando WRITE, voc pode usar srmbolos em relatrios.
Os nomes dos sfmbolos utilizados so definidos no programa include <SYMBOL>.

Com o comando WRITE <f> AS ICON voc pode incluir cones em relatrios, voc ir
precisar do programa include <ICON> declarado em seu programa. Note que nem
todos os cones podem ser impressos em listas. Ver include <L1ST>.

Para um overview de todos os smbolos disponveis, veja a documentao


disponvel. Voc deve acessar os cones pejos seus nomes previamente definidos.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 22


Relatrios Interativos.

Eventos

o relatrio Interativo permite que seja gerada uma segunda lista, ou seja um segundo
relatrio, a partir de um evento efetuado em uma linha deste relatrio (drill-down).

Este evento pode ser destinado a vrias linhas ao mesmo tempo, utilizando-se o evento AT
PF <funo> como pode tambm ser sensivel ao double-click, neste caso utilizamos o
comando AT UNE-SELECTION.

Pode tambm ser utilizado o comando AT USER-COMMAND ao invs do AT PF <funo>.

Algumas facilidades so criadas com o drill-down, como por exemplo o evento TOP-OF-
PAGE DURING UNE-SELECTION, o qual utilizado para formatar cabealhos em listas
secundrias.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 23


Page Headings

o evento TOP-OF-PAGE ocorre quando criamos uma lista bsica.


Para criarmos uma lista secundria (drill-down), o sistema dispe do evento TOP-OF-PAGE
DURING LINE-SELECTION para criar cabealhos para as listas secundrias, pois o sistema
no habilita cabealhos para listas secundrias, como foi explicado anteriormente.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 24


Listas Secundrias e a varivel de sistema SY-LSIND

8asl.c
SYLSIND:O
.

2. Secondary 3. Secondary
Ust IIst

Uma lista pode gerar at 20 nveis de drill-down. Para os seguintes nfveis de lista, voc pode
utilizar as mesmas funes como as utilizadas para as listas bsicas (Scrol!, Print). Utiliza-se
o Icone BACK ou EXIT para voltar aos nveis inferiores, a partir das listas secundrias.

A varivel de sistema SY-lSIND contm o Indice (correspondente ao nvel) do report que


est sendo criado. O sistema soma 1 varivel no incio do processamento do bloco
interativo. Voc pode distinguir o processo para diferentes nfveis, utilizando o comando
CASE, por exemplo.

Quando a varivel de sistema SY-LSIND alterada, voc pode formatar o tipo de sarda que
pode variar, de acordo com o tipo de relatrio que pertence a cada nvel de drill-down.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 25


Seleo de linhas 1- Utilizando a varivel de sistema SY-LISEL

Usurios freqUentemente querem selecionar a linha em uma lista corrente e mostrar dados
adicionais para aquela linha correspondente. Para prover o dado correspondente para a
respectiva linha, voc pode usar a varivel de sistema SY-llSEL. A linha selecionada
automaticamente transferida para a varivel SY-L1SEL. O contedo da varivel SY-llSEL
ento utilizada para recuperar dados adicionais.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 26


Seleo de Linhas II

Carrier Flght no.

AA 0169 12121994
LH 0454 17111994

Voc pode utilizar o comando HIDE para "esconder"o contedo do campo que dever ser
utilizado como chave para gerar uma nova lista. Estes campos declarados no HIDE so
armazenados em uma rea especial. O sistema armazena para cada campo, seu nome e
valor.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 27


Seleo de Linhas III

Quando o usurio selecionar uma linha e ativar a tecla de funo, o sistema executa a
seguinte sequencia automaticamente antes de processar o bloco correspondente:

A varivel de sistema SY-LlSEL preenchida com o contedo da linha selecionada. O


contedo do campo, disponlvel na rea HIDE utilizado para selecionar o contedo de
alguma seleo posterior.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg, 28


Exerccios

Utilize este espao para colocar observaes a respeito dos exerclcios propostos pelo
instrutor.

COPYRIGHT ALLlANSYS CONSULT1NG - 2002 Pg. 29


Captulo 3
ABAP Open SQL

o banco de dados de um programa ASAP pode ser acessado pelo Open SQL ou pelo
Native SQL.

As instrues do Open SQL so um subconjunto do Standard SQL totalmente integrado na


linguagem ASAP. Permitem ao usurio acessar o banco de dados de maneira uniforme a
partir dos programas, independentemente do sistema de banco de dados em uso. As
instrues do Open SQL so convertidas em instrues do Standard SQL especficas do
banco de dados pela interface do banco de dados. O Open SQL contm a Linguagem de
Manipulao de Dados (DML), parte do Standard SQL, que permite ler e modificar os
dados. A Linguagem de Definio de Dados (DO L) e a Linguagem de Controle de Dados
(oCL), partes do Standard SQL, so controladas pelo ASAP Dictonary e pelo conceito de
autorizao, respectivamente, os quais unificam e ampliam as funes oferecidas pelos
vrios sistemas de banco de dados.

o Open SQL contm instrues DML SELECT, UPDATE, INSERT, DELETE e MODIFY. O
usurio no deve modificar as entradas do banco de dados sem antes entender o conceito
de transao SAP (consultar o captulo Conceito de Transao deste curso). As instrues
do Open SQL definem um valor no campo cdigo de retorno SY-SUSRC. Se SY-SUBRC O, =
a operao foi bem sucedida. Se SY-SUBRC <> O, a operao no teve sucesso.

The R/3 Client/Server Architecture

FIGURA024 - Arqultetura C/ient/Server

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 30


Open SQL Statements: Overview

FIGURA025 - SQL Overview

SELECT Statement: Overview

PartIcular
column

SAPAG

FIGURA026 - Statements Overview

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 31


Native SQL est conectado ao ASAP de forma bem genrica. Permite ao usurio aplicar
todas as funes oferecidas pela interface de programao do sistema do banco de dados
que esteja sendo usado. Diferentemente das instrues do Open SQL, as instrues do
Native SQL no so verificadas e convertidas pela interface do banco de dados. Em vez
disso, passam diretamente ao sistema do banco de dados, ou seja, os programas escritos
usando o Native SQL so especIficas do banco de dados. Convm no usar o Native SQL
para escrever aplicaes do sistema R/3.

F1GURA027 - SQL Nativo

A instruo SELECT do Open SQL deve ser usada para ler dados do banco de dados.
Subjacente instruo SELECT existe uma lgica complexa que permite acesso a muitos
tipos diferentes de tabelas do banco de dados.

A instruo contm uma srie de clusulas, cada qual com uma tarefa diferente:

A clusula SELECT especifica se o resultado da seleo deve ser uma linha simples ou
vrias linhas; se os campos que devem ser inclurdos no resultado; se o resultado poder
conter duas ou mais linhas idnticas.
A clusula INTO especifica o objeto de dados interno do programa no qual o usurio deseja
colocar os dados seleconados.
A clusula FROM especifica a origem dos dados (tabela do banco de dados ou viso).
A clusula WHERE especifica as condies que devem ser atendidas por uma entrada de
tabela para ser inclulda no resultado.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 32


FIGURA028 - Sintaxe Comando SELECr

A instruo SELECT SINGLE permite ao usurio ler uma linha simples de uma tabela do
banco de dados. Para garantir a leitura de uma nica entrada, preciso especificar todos os
campos-chave da clusula WHERE.

COPYRIGHT ALLIANSYS CONSULTING - 2002 Pg. 33


Using the SELEcr Statement for a Single Line

Table fields and work area fields have the sarne names

FIGURA029 - SELECT SINGLE

Sendo usada a adio CORRESPONDING FIELDS OF na clusula INTO, o usurio pode


preencher a rea-alvo de trabalho, componente por componente. O sistema apenas
preenche aqueles componentes que tm nomes idnticos s colunas da tabela do banco de
dados. Se essa adio no for utilizada, o sistema preenche a rea de trabalho a partir do
lado esquerdo, desconsiderando sua estrutura. Caso o sistema encontre uma entrada de
tabela condizente com essas condies, SY-SUBRC tem valor O.

Caso o operador no use a adio SINGLE na clusula SELECT,o sistema l todas as


entradas da tabela que satisfaam o critrio da clusula WHERE.o programa ABAP l os
dados, linha por linha, na rea-alvo em um loop. Deve-se usar a instruo ENDSELECT
para marcar o final do loop.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 34


Using the SELECT Statement for Several Lines

FilIs work area

DATA wa spfliLIKEspfli.

SAPAG

FIGURA030 - SELECT ~ ENDSELECT

Todas as instrues entre SELECT e ENDSELECT so executadas para cada entrada do


banco de dados que lida. Quando o sistema selecona pelo menos uma entrada, SY-
SUBRC = O. Depois que a instruo SELECT tiver sido executada em cada passo do loop, o
campo de sistema SY-DBCNT contm o nmero de linhas lido. Depois da instruo
ENDSELECT, esse campo conter o nmero total de linhas lido.

o sistema permite ler, de uma s6 vez, os dados da tabela do banco de dados para uma
tabela interna usando a instruo SELECT .," INTO TABLE (busca de matriz).

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 35


Using the SELECT Statement for an Internal Table

Reads ali data


records specltled ln
the WHERE condlllon
from the dalabase

FlGURA031 - SELECT INTO TABLE

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 36


o sistema no utiliza um loop para ler os dados para uma tabela interna. Assim, no
preciso usar uma instruo ENDSELECT. Quando o sistema consegue ler pelo menos uma
entrada da tabela, SY-SUBRC =O. Utilizar uma busca de matriz , quase sempre, mais
eficiente do que ler as entradas da tabela em um loop e anex-Ias a uma tabela interna.

FlGURA032 - SELECTcom a Clusula INTO TABLE

o usurio especifica quais os registros de dados que devem ser lidos do banco de dados
usando a clusula WHERE. O sistema permite digitar apenas os nomes dos campos da
tabela do banco de dados a serem lidos na clusula WHERE.

o nome da tabela do banco de dados a ser acessado encontra-se na clusula FROM


(exemplo de uma instruo correta: SELECT FROM spfli WHERE carrid
o =". ; exemplo de
uma instruo incorreta: SELECT ...FROM spfli WHERE spf1i-carrid =." ) e <value> pode ser
qualquer objeto de dados: literal, uma constante ou um campo. Vrias condies lgicas
podem ser acrescentadas clusula WHERE usando-se AND ou OR.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 37


Exerccios

Utilize este espao para colocar observaes a respeito dos exercIcios propostos pelo
instrutor.

COPYRIGHT ALLIANSYS CONSULTING - 2002 Pg. 38


Captulo 4
Estruturas de Programas e Dados

o conceito de categoria do ASAP permite ao usurio diferenciar claramente entre


categorias de dados e objetos de dados. Categorias de dados e objetos de dados
ocupam dois intervalos de nomes diferentes, ou seja, um nome pode significar tanto
uma categoria de dados quanto um objeto de dados.

A atribuio de categorias de objeto de dados feita pela referncia do objeto a uma


categoria ASAP predefinida, a uma categoria definida pelo usurio ou a um objeto
do Dictionary. O sistema tambm permite referir o objeto a um outro objeto de dados
existente. Neste caso, todos os atributos da categoria so herdados pelo novo objeto
de dados.

As categorias de dados definidas pelo usurio podem ser elementares ou


estruturadas. As categorias de dados elementares no podem ser divididas em
outros componentes. Por outro lado, as categorias de dados estruturadas so
compostas livremente de categorias de dados elementares e estruturadas. Nas
categorias de dados estruturadas existe uma diferena entre categorias de
estruturas e categorias de tabelas:
Categorias de estruturas (conhecidas como estruturas ou registros em outras
terminologias) podem ter componentes de qualquer categoria.
Categorias de tabelas (conhecidas como matrizes em outras terminologias)
podem ter linhas de qualquer tipo.
No nvel mais elevado, categorias de estruturas e categorias de tabelas podem
conter em si outras categorias de estruturas e de tabelas.

Predefined Data Types

Data type Moaning In!tlal valuo

i SAP AG

FIGURA066 - Data Types

COPYRIGHT ALLIANSYS CONSULTING - 2002 Pg. 39


No ABAP existem oito categorias de dados predefinidos. As categorias de dados
numricos P, I e F tm as seguintes propriedades e intervalos de valores:

Categoria propriedade interv. valor adequada para


I nO inteiro -231 a +231 contadores, quantidades,
indices,
prazos
P nO decimal 2 carac. por byte moedas, comprimentos, pesos
F pto. flutuante -2,2E-308 a +1 ,8E308 clculo em um intervalo de
valor muito grande

Os clculos com nmeros da categoria I so os mais econmicos; em seguida vm


as categorias F e P. Mas deve-se observar que a aproximao pode induzir a erros
com nmeros da categoria F. Especificamente, desaconselha-se comparar dois
nmeros dessa categoria (ponto flutuante). Em vez disso, preciso verificar se a
diferena entre os dois fica dentro de uma tolerncia aceitvel. Nmeros com ponto
flutuante devem ser usados apenas para problemas matemticos nos quais possam
ser aceitos erros de aproximao. Para problemas comerciais, em geral usa-se a
categoria P.

Nas categorias de nmeros P, dois dgitos so armazenados em cada byte. A ltima


metade do byte usada para o sinal de menos ou mais.

Nas categorias de dados P,N,C e X, o sistema permite digtar um comprimento entre


parnteses depois do nome da categoria. O comprimento default das categorias
ser usado se o campo "comprimento" estiver em branco.

Na categoria de dados P, possvel usar o suplemento DECIMALS para determinar


o nmero de casas decimais a ser usado (mximo = 14). Se nenhuma categoria for
informada, automaticamente o campo ser de categoria C.

Cada campo elementar se apresenta de modo standard, com um valor inicial


adequado sua categoria. O usurio pode definir um valor de incio para um campo
elementar usando o suplemento VALUES. Com VALUES o sistema permite apenas
a especificao de um objeto de dados fixo.

Regras para dar nomes aos objetos de dados:


Um nome pode ter 30 caracteres, no mximo (letras, nmeros ou smbolos).
Os seguintes sim bolos NO so permitidos: ( ) + . , :
SPACE uma constante predefinida.

Definir categorias de estruturas usando a sintaxe TYPES: BEGIN OF <type>, ... ,


END OF <type>. Os componentes da estrutura podem ser definidos como um objeto
de dados: o usurio define o comprimento e a categoria. As categorias de estrutura
podem conter outras categorias de estrutura ou categorias de tabelas.

COPYRIGHT ALLIANSYS CONSULTING - 2002 Pg. 40


Por uma questo de compatibilidade, tambm se pode definir estruturas utilizando
DATA: BEGIN OF <rec>, ... , END OF <rec> sem ter de declarar uma categoria de
estrutura.

Regras para nomear estruturas:


Um nome pode ter 30 caracteres, no mximo (letras, nmeros ou smbolos).
Os nomes no podem conter apenas nmeros.
Recomendaes: Como caractere inicial, utilizar sempre uma letra; em
nomes compostos, utilizar uma sublinha.

Uma tabela interna uma sequncia de linhas de mesmo tipo. As categorias de


tabelas podem conter outras categorias de tabelas ou de estruturas. Para saber
como definir as categorias de tabelas, consulte o captulo Tabelas internas ou a
documentao da palavra-chave TYPES.

Objetos de dados e categorias definidas pelo usurio tambm podem ser definidos
mediante consulta aos objetos do ABAP Dictionary. O suplemento lIKE com as
instrues DATA e TYPES deve ser usado para fazer referncia a um objeto do
ABAP Dictionary.
Sempre que um objeto do ABAP Dictionary modificado, todos os objetos de
dados e categorias definidas pelo usurio que fazem referncia a esse objeto
so alterados para refletir tais modificaes.
O usurio pode definir categorias de dados em um grupo de categorias no ABAP
Dictionary em vez de defini-Ias no programa ABAP. O nome do grupo de categorias
no ABAP Dictionary tem 5 caracteres, no mximo. Os nomes das categorias no
grupo de categorias <typepool> devem iniciar com <typepool> seguido por uma
sublinha. As categorias de um grupo de categorias devem ser declaradas nos
programas ABAP com o comando TYPE-POOLS.

A instruo PARAMETERS um elemento de linguagem declarativa para


estabelecimento de campos internos do relatrio. A diferena entre as instrues
PARAMETERS e DATA est em que os campos declarados usando PARAMETERS
so apresentados para entrada na tela de seleo.

Utilizando a instruo PARAMETERS, o sistema permite utilizar as adies TYPE e


lIKE, assim como quando utilizada a instruo DATA. Similarmente forma com
que se usa VALUE com DATA para atribuir um valor inicial, o sistema permite usar o
suplemento DEFAULT com a instruo PARAMETERS para definir um valor default
para o campo. Este valor pode ser uma literal, uma constante ou um campo de
sistema que toma o seu valor do sistema no momento em que o relatrio
processado (por exemplo, sy-datum).

A instruo TABLES declara um objeto de dados interno que atua como uma
interface de tela sempre que os campos da tela se referirem ao mesmo objeto do
Dictionary. TABLES deve ser usada para definir uma rea de trabalho apropriada no
programa ABAP para aqueles dados que o usurio digita em uma tela ou que so
passados tela pelo programa.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 41


As constantes so definidas atravs da palavra-chave CONSTANTS do ABAP. As
constantes exigem o suplemento VALUE pois este define os seus valores. O ABAP
reconhece duas categorias de literais: os literais numricos e os literais de texto,
sendo que estes ltimos esto sempre entre aspas simples (').

Nmeros inteiros (precedidos por sinal de menos, se negativos) so armazenados


como literais numricos sob as categorias I (at nove dlgitos, inclusive) ou P (dez
dlgitos ou mais). Todos os outros literais (caracteres, nmeros decimais, nmeros
com ponto flutuante) so armazenados como literais de texto sob a categoria de
dados C.

Se necessrio, o processador ABAP executa uma converso de categoria (consulte


a transparncia sobre converso de categoria). Para inserir um sinal de aspas
simples (') em um literal de texto preciso digit-lo duas vezes. Simbolos de texto
so literais de texto.

Sim bolos de texto so um outro tipo de literal. Ao contrrio dos literais de texto
simples, os smbolos de texto tm a vantagem de poder ser traduzidos. Os smbolos
de texto permitem retirar textos do texto fonte para armazen-los em outro lugar,
onde possam ser mais facilmente alterados para objetos como listas independentes
de linguagem.

O sistema permite enderear simbolos de texto em um programa de uma das duas


formas:
TEXT-<xxx> (xxx = sequncia de caracteres de trs digitos)
'<Text>'xxx (xxx = sequncia de caracteres de trs digitos)

A criao de smbolos de texto pode ser feita usando Forward Navigation ou o


Repository Browser sob Elementos de texto. At este ponto, conhecemos as
seguintes instrues declarativas:

TYPES Definio da categoria


DATA Definio dos campos elementares, cadeias de campo e tabelas internas
CONSTANTS Definio de constantes
PARAMETERS Definio de parmetros de entrada
TABLES Definio de reas de trabalho de tabelas

No captulo Tabelas internas, assim como no subcapitulo sobre Telas de seleo do


captulo Dilogos, o texto disserta sobre a seguinte instruo declarativa:

SELECT-OPTIONS Definio das opes de seleo

O sistema exibe uma sntese das instrues declarativas do ABAP pressionando-se


o boto Editor "i" e selecionando-se ABAP Overview, Sintese da Linguagem de
programao ABAP Classificao das palavras-chave por categoria.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 42


A instruo CLEAR usada para restaurar qualquer objeto de dados varivel ao
valor inicial, adequado a esta categoria. Nas estruturas, cada componente individual
restaurado. As tabelas internas so restauradas, componente por componente,
linha por linha, aos seus valores iniciais, adequados a esta categoria.

Existem vrias instrues do ASAP com as quais possvel atribuir valores a


objetos de dados. A mais importante delas a instruo MOVE. Se no houver
correspondncia entre as estruturas e as categorias dos objetos de dados, porque
existem regras de converso de categoria.

As instrues MOVE-CORRESPONDING <rec1> TO <rec2> transportam os valores,


campo a campo, entre as estruturas <rec1> e <rec2>. Isto funciona apenas se os
componentes tiverem nomes idnticos.

O sistema procura em todos os campos do <rec1> os nomes que tambm ocorrem


em <rec2> e transporta o campo <rec1 >-<field name> para <rec2>-<field name> em
todos os casos em que houver concordncia. Todos os outros campos permanecem
inalterados.

Se o usurio relacionar uns com os outros objetos de dados de categorias


diferentes, ASAP executa uma converso de categoria, desde que tenha sido
definida uma regra de converso para as categorias em questo.

Uma sntese abrangente das regras de converso para categorias elementares pode
ser encontrada na documentao on-Iine do comando DATA. Os campos de
categoria C so gravados com justificao esquerda. Usando-se "converter para
campos da categoria C", o campo preenchido com espaos em branco se for muito
curto e truncado se for muito longo (ver os exemplos 1 e 2, acima).

Ao converter um campo de categoria C em campo de categoria P, o sistema permite


apenas digitos, sinal de menos ou mais e o ponto decimal (ver o exemplo 3, acima).
O sistema permite converter um campo compactado em campo de categoria C: os
zeros precedentes so convertidos em espaos (ver o exemplo 4, acima).

O sistema ASAP tem regras para converso de:


estruturas em estruturas
campos elementares em estruturas
estruturas em campos elementares

As tabelas internas podem ser apenas convertidas em outras tabelas internas. Em


seguida, os tipos de linha adequados so convertidos.

COPYRIGHT ALLlANSYS CONSULT1NG - 2002 Pg. 43


A palavra-chave COMPUTE opcional. O sistema permite agrupar expresses em
parnteses, o quanto possfvel. Os operadores e os parnteses que fazem parte das
expresses valem por uma palavra. Assim sendo, devem estar separados por
espaos. Entretanto, o parntese de abertura no deve estar separado do nome da
funo, por exemplo: SQRT( ." )
Errado: a = (B+EXP(C*E/SIN(3-G).
Certo: a = ( B + EXP( C * E / SIN( 3 - G ).

Existe uma aritmtica separada no processador do ABAP para cada uma das
categorias de dados P, I e F. Uma expresso aritmtica calculada usando-se
apenas uma aritmtica simples. A hierarquia que determina qual aritmtica ser
usada a seguinte: I, P, F. Os operadores e o campo do resultado passam para a
determinao da aritmtica (ver RSAAA04K).
O retorno dos operadores DIV e MOD sempre um nmero inteiro (ver a
documentao on-line de COMPUTE). O retorno da funo STRLEN o
comprimento de uma cadeia. Na documentao on-Iine de COMPUTE encontra-se
uma slntese de todas as funes. Para as operaes aritmticas simples, o sistema
permite usar formas abreviadas de ADD, SUBTRACT, MULTIPLY e DIVIDE.

O sistema permite enderear e modificar sub-reas de um campo elementar


especificando o offset e o comprimento. No se deve usar offset e comprimento com
estruturas. Neste caso, deve-se enderear os subcampos de modo simblico. Com
algumas instrues, os detalhes de offset e de comprimento podem ser fornecidos
como variveis (MOVE, ASSIGN, parmetro atual, WRITE ". TO).

O sistema ABAP calcula o nmero de dias desde 01.01.0001, se o campo de data


for convertido para um campo numrico. Inversamente, um valor numrico atribudo
a um campo de data interpretado como o nmero de dias desde 01.01.0001. Os
valores dos campos de datas so convertidos em valores numricos (nmero de
dias desde 01.01.0001) antes de qualquer clculo.

O sistema ABAP no tem uma instruo GOTO ou equivalente. Existem outros


comandos de controle, assim como aqueles acima mencionados. Por exemplo, a
instruo de loop LOOP ". ENDLOOP que l tabelas internas, e a diferenciao de
caso
AT ". ENDAT para processamento de nvel de controle na instruo LOOP.

As instrues de controle podem ser agrupadas.

As expresses lgicas podem ser ligadas com NOT, AND e ORo As expresses em
parnteses podem ser agrupadas tanto quanto possfvel. Os parnteses que
denotam sub-expresses sempre valem por uma palavra. Assim, devem estar
separados por espaos. Se forem comparados dois campos da categoria C com
comprimentos diferentes, o campo mais curto ser encompridado para se igualar ao
mais longo no momento em que a comparao feita, pelo preenchimento com
espaos, a partir da extrema direita. Existe uma srie de outros operadores

COPYRIGHT ALLlANSYS CONSUL TING - 2002 Pg. 44


comparativos que podem ser usados para comparar cadeias e comparaes de bit.
(Ver a documentao on-line da instruo IF).

As instrues IF e CASE permitem diferenciaes de caso:

CASE ... ENDCASE:


Apenas uma das sequncias das instrues executada.
A instruo WHEN OTHERS opcional.

IF ... ENDIF:
As instrues ELSE e ELSEIF so opcionais.
Desde que a expresso lgica esteja informada, a sequncia seguinte de
instrues executada.
A seo ELSE ou ELSEIF processada quando a expresso lgica no
estiver mencionada. Se no existir a instruo ELSE ou nenhuma outra
ELSEIF, o programa avana depois da instruo ENDIF.
O sistema permite incluir qualquer nmero de instrues ELSEIF entre IF e
ENDIF. No mximo, uma das sequncias de instrues ser executada.

Os loops DO e WHILE tambm so usados no sistema ASAP. sy-index o contador


do loop dos comandos de loop DO e WHILE. O valor de sy-index igual a 1 durante
o primeiro passo do loop, e o sistema o aumenta 1 a cada passo do loop.

Os loops DO tm as seguintes caracterfsticas:


O parmetro <n> TIMES opcional. Se no estiver especificado, ser preciso
construir uma condio de terminao no loop (ver a instruo EXIT).
A quantidade de passos do loop no pode ser alterada pelo campo sy-index,
nem o contador do loop em DO ... ENDDO.

Os loops WHILE tm as seguintes caractersticas:


Desde que informada a expresso lgica, a sequncia de instrues
executada.
O nmero de passos do loop no pode ser alterado pelo campo sy-index no
loop WHILE ... ENDWHILE.

Existem duas instrues disponlveis para o processamento do loop:


CHECK <Iogical expression>: Se no for preenchido o campo da expresso
lgica, o sistema passa ao prximo passo do loop. Todas as instrues entre
CHECK e ENDDO I ENDWHILE so ignoradas. Se a expresso lgica for
informada, a instruo CHECK fica sem efeito.
Consultar tambm: a documentao da palavra-chave CONTINUE.
As instrues EXIT na estrutura de um loop fazem com que o sistema saia do
loop atual.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 45


Exerccios

Utilize este espao para colocar observaes a respeito dos exerccios propostos pelo
instrutor.

COPYRIGHT ALLlANSYS CONSULTlNG - 2002 Pg. 46


Captulo 5
Modularizao e estrutura de programas

Um programa ASAP um conjunto de blocos de processamento. Bloco de


processamento uma seo passiva de um texto de programa, processado em
seqUncia quando chamado. Blocos de processamento so as menores unidades
do ABAP e no podem ser divididos ou agrupados.
Todas as declaraes globais so processadas quando o programa gerado e
formam um bloco de processamento lgico. Por motivos de organizao, todas as
declaraes globais devem ser inseridas no inicio dos programas.

FIGURA045 - Global Data

Em todos os programas vistos neste curso at o momento, havia apenas um bloco


de processamento alm da declarao de dados. Em casos como esse, o bloco no
precisa ser explicitamente declarado. Todavia, em programas mais complexos, so
necessrios vrios blocos de processamento, com tipo e nome especificados.

Todas as declaraes globais so reconhecidas pelo sistema por meio das palavras-
chave declarativas do ABAP. Essas palavras formam um bloco de processamento
lgico (independentemente do local onde elas esto situadas no texto do programa).
Quando o programa gerado, o sistema pesquisa todo o cdigo de programa para

COPYR1GHT ALLlANSYS CONSULTING - 2002 Pg. 47


localizar instrues declarativas. No entanto, por motivos de organizao, entrar
todas as instrues declarativas no incio dos programas.

H diversos tipos de blocos de processamento:

Blocos de tempo: em programas executveis (tipo 1), o sistema supervisor ASAP


responsvel por chamar os blocos de tempo em uma seqUncia especial,
desenvolvida para gerar uma lista.

Subprogramas: mdulos internos do programa, que possuem uma interface.


Com uma declarao ASAP, possvel chamar um subprograma em um
programa, a partir de qualquer outro bloco de processamento.
Mdulos de funo: mdulos com uma interface transparente, disponveis
em todo o sistema. Esses mdulos podem ser chamados de qualquer bloco
de processamento e em qualquer programa ASAP que utilize uma declarao
ASAP especial.
Existe outro tipo de bloco de processamento que ser abordado no captulo
Dilogos.

Quando chamados, todos os blocos de processamento so processados em


seqUncia. Se um subprograma ou mdulo de funo chamado a partir de um
bloco de processamento, o sistema interrompe o bloco, para process-lo. Ao
retornar para o bloco de processamento, a execuo retomada a partir da prxima
declarao ASAP.

Os eventos mais facilmente compreensveis so os de um programa executvel (tipo


1). O sstema supervisor ASAP chama blocos de tempo em uma seqUncia criada
para gerar e processar listas:

Primeiramente, o bloco de tempo INITIALlZATION chamado


Em seguida, uma tela de seleo enviada ao servidor de apresentao
Assim que o usurio sai da tela de seleo, START-Of-SELECTION
ativado
Uma lista enviada ao servidor de apresentao.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 48


FIGURA046 - INITIA L1ZATlON

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 49


FIGURA047 - START-OF-SELECT/ON

Em um programa ASAP, um bloco de tempo tem incio com uma palavra-chave de


evento e termina quando o prximo bloco de processamento comea. No h uma
declarao ASAP que represente o fim de um boco de tempo. Os blocos de tempo
so chamados pelo sistema supervisor ASAP. A ordem em que os blocos de tempo
so organizados no programa irrelevante - o sistema possui uma ordem
predefinida para que eles sejam ativados.

START-OF-SELECTION o primeiro evento para processamento de dados e


gerao de uma lista. Ele chamado pelo sistema supervisor ASAP assim que o
usurio sai da tela de seleo standard.

INITIALlZATION um evento que pode ser usado para definir um grande nmero de
valores propostos. Esse bloco de tempo permite definir valores propostos que s
podem ser determinados no tempo de execuo. No exemplo anterior, atribuldo o
valor '2' para a varivel F3. Em seguida, o sistema supervisor ASAP pode enviar
uma tela de seleo para o servidor de apresentao com essa varivel e caso ela
aparea na tela, esse valor ser mostrado '2' e ainda passvel de modificao.

Os subprogramas so blocos de processamento com uma interface definida, que


podem ser chamados a partir de qualquer outro bloco de processamento por meio
de uma declarao ASAP. Os subprogramas permitem encapsulamento do
programa interno. Os parmetros da interface so chamados de parmetros
formais e os parmetros que o usurio passa para o subprograma so chamados
parmetros atuais.

COPYRIGHT ALLlANSYS CONSULT1NG - 2002 Pg. 50


FlGURA048 - Parmetros atuais

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 51


FIGURA049 - Parmetros formais

o bloco de processamento de um subprograma comea com 'FORM <subroutine


name> <interface definition>' e termina com'
0.0ENDFORM. ' possvel utilizar a
o

declarao DATA em uma rotina FORM para declarar os dados locais. Se um objeto
local tem o mesmo nome de um objeto global, o global ser invisvel dentro do
subprograma.

COPYRIGHT ALLlANSYS CONSULT1NG - 2002 Pg. 52


FIGURA050 - Definio de variveis LOCAIS

A interface definida da seguinte maneira:

Aps USING, deve~se relacionar em uma lista todos os parmetros que o


subprograma s precisa ler.
Aps CHANGING, deve-se relacionar em uma lista todos os parmetros que
o subprograma vai modificar e cujos valores sero transferidos para o
programa de chamada.

Digitar os parmetros como a seguir:

Usar TYPE para que o parmetro siga um determinado modelo, que pode ser
definido internamente no programa ou pode ser um tipo ASAP predefinido
Usar LlKE para fazer um parmetro compatvel com um objeto de dados
global ou tipos ASAP Dictionary
Existe a possibilidade de omitir o tipo. Nesse caso, o parmetro formal herda
o tipo do parmetro atual correspondente.
Se o nome do parmetro utilizado aps USING ou CHANGING, o
endereo do objeto de dados do programa de chamada transferido
(transferncia de endereo).

COPYRIGHT ALLIANSYS CONSULTING - 2002 Pg. 53


Se VALUE nome do parmetro utilizado em vez do nome do
parmetro, o sistema cria automaticamente uma cpia local do parmetro
(pass by value).

Dentro de um programa possvel definir dados globais. Todos os dados que


constam em uma declarao DATA de um programa ABAP mas no so indicados
em uma rotina FORM so interpretados como dados globais. Os dados globais
podem ser visualizados em todo o programa, inclusive nos subprogramas.

Os dados locais so definidos dentro dos subprogramas. A declarao DATA pode


ser utilizada em uma rotina FORM para indicar objetos de dados que so visveis
apenas dentro dessa rotina. Esses objetos existem somente quando FORM est em
execuo. Se um objeto de dados local e um objeto de dados global tm o mesmo
nome, durante a execuo do subprograma, apenas o objeto local pode ser
mencionado por esse nome.

FIGURA051 - Criao de FORM's

As rotinas FORM podem ser chamadas a partir de qualquer bloco de pro,cessamento


ABAP por meio de PERFORM <nome do subprograma> <interface>. E
recomendvel inserir as rotinas fORM no final do texto de programa, para que os
programas sejam mais facilmente compreensveis. Posicionar as rotinas depois de

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 54


todos os blocos de tempo pode evitar muitos erros em potencial, j que as
declaraes FORM delimitam os blocos de tempo.

o nmero de parmetros atuais deve ser igual ao de parmetros formais. No


posslvel ter parmetros opcionais. Os parmetros so atribudos na seqUncia em
que esto reacionados na lista.

Quando um subprograma chamado com a declarao PERFORM, o sistema


verifica se os tipos dos parmetros atuais de PERFORM so compativeis com os
parmetros formais. H diferentes verificaes para os diferentes tipos:

Verificaes completas de tipo:


- TYPE D, F, I ou T.
LlKE <f>,TYPE <ud> Esses tipos so totalmente especificados. O sistema
verifica se a categoria de dados do parmetro atual est de acordo com o tipo do
parmetro formalud> = definido pelo usurio).

Verificaes parciais de tipos genricos


TYPE C, N, P ou X. O sistema verifica se o parmetro atual possui o tipo C,
N, P ou X. O comprimento do parmetro e o nmero de casas decimais no
suplemento DECIMALS (tipo P) so transferidos do parmetro atual para o
parmetro formal.
- TYPE <ud> todas as informaes no especificadas dos tipos genricos,
definidos pelo usurio, so herdadas de um parmetro atual pelo
parmetro formal.

A interface definida na rotina FORM. USING e CHANGING na declarao do


PERFORM so apenas para documentao.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 55


FIGURA052 - Typing nos FORM's

Com LlKE ou TYPE, as estruturas de dados podem ser transferidas (por exemplo:
estruturas, linhas de cabealho de tabelas internas, reas de trabalho de tabelas)
com uma descrio da estrutura. Os campos individuais de uma estrutura no so
reconhecidos no subprograma se o tipo do parmetro formal no especificado.

necessrio especificar o tipo de parmetro formal correspondente na declarao


FORM antes de transferir uma tabela interna para um subprograma, como seria feito
com uma estrutura. As tabelas internas so transferidas sem a rea de trabalho.
Desse modo, necessrio declarar uma dessas tabelas com uma declarao DATA
local.

H diversas maneiras de especificar o tipo de uma tabela:

TYPE TABLE O sistema verifica se o parmetro atual uma tabela interna.


Todos os atributos e a estrutura da tabela so transferidos do parmetro atua!
para o formal.
LlKE <do> A categoria de dados do parmetro atual deve ser exatamente a
mesma que o tipo do parmetro formal (<do>= objeto de dados)

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 56


TYPE <ud> A categoria de dados deve ser a mesma do tipo definido pelo
usurio <ud>. posslvel declarar tipos genricos.
LlKE <Dictionary type> A categoria de dados deve ser compatvel com o tipo
ABAP Dictionary.

COPYRIGHT ALLIANSYS CONSULTING - 2002 Pg. 57


Exerccios

Utilize este espao para colocar observaes a respeito dos exerccios propostos pelo
instrutor.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 58


Captulo 6
Tabelas internas.

Uma tabela interna (tambm denominada matriz) uma sequncia de entradas ou


linhas de mesmo tipo. Em geral, elas so usadas para arquivar os resultados de
processamento ou os dados de origem.

So usadas para:
Armazenamento temporrio de dados das tabelas do banco de dados para
processamento posterior
Arquivamento de dados para a exibio de listas
Arquivo de dados para comunicao com o computador de mesa, outros servidores
de aplicaes do sistema R/3 ou sistemas no-SAPo

o nmero de linhas de uma tabela interna no esttico nem predeterminado. O


sistema de tempo de execuo do ASAP expande as tabelas internas de modo
dinmico, de acordo com a necessidade. Os nicos fatores limitantes do volume de
dados que pode ser administrado por uma tabela interna so as barreiras de
capacidade concretas definidas durante a instalao do sistema.

Na definio, 8 KS de memria esto alocados para cada tabela interna. Caso seja
necessria mais memria durante o tempo de execuo, o sistema coloca
disposio mais blocos de 8 KS.

COPYRIGHT ALLIANSYS CONSULTING - 2002 Pg. 59


Programa ZEXEMPLO gravado

FIGURA034 - Tabelas internas

As tabelas internas so descritas atravs de vrios atributos, um dos quais o tipo


de linha.
Esse tipo de linha determina a estrutura dos registras de dados que podem ser
armazenados em uma tabela interna. O tipo de linha de uma tabela interna pode ser
composto de qualquer categoria de dados do ABAP, incluindo outras tabelas
internas.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 60


- DATA: BEGIN OF struc,

- DATA itab TYPE itabtypa [WITH HEADER LIME).


- DATA itab ITYPE tabkind OF linatypelLIKE tabkind OF lineobj}
WITH [UNIQUEINON-UNIQUE] keydaf
[INITIAL SIZE n] [WITH HEADER LINE].
- DATA itab {TYPE TABLE Of linetypelLIKE TABLE OF lineobj}.
- DATA itab TYPE RANGE Of type,
DATA itab LIKE RANGE Of f.
- DATA itab [TYPE linatypelLIKE lineobj] OCCURS n
[WITH HEADER LIME].
- DATA: BEGIN OF itab OCCURS n,
OF itab [VALID BETWEEN f1 AND f2).
D,fdrfrng'iLs6rIi:qIflIIljt~l:l(\
- DATA: BEGIN Of CO~mON PART c,
ENO OF COMMON PART.

FIGURA035 - Sintaxe - Tabelas Internas

Outro atributo das tabelas internas so as chaves, que ajudam a identificar as


entradas da tabela. O importante na definio de uma chave a sequncia de seus
campos. Por exemplo, a chave CARRID CONNID diferente da chave CONNID
CARRID.

As chaves da tabela interna tambm podem ser definidas como EXCLUSIVAS ou


NO EXCLUSIVAS. Isso determina se as entradas com chaves idnticas podem ser
aceitas ou no.

O sistema permite o acesso aos registros de dados em uma tabela interna de formas
diferentes, similares aos tipos de acesso aos dados para tabelas normais do banco
de dados. O usurio pode acessar um s registro de dados, ou mltiplos, ou todos
os registras da tabela ao mesmo tempo.

O tipo de acesso define como o ABAP acessa entradas individuais de tabela.


Existem dois tipos diferentes de acesso aos dados no ABAP: com ndice e com
chave.

Acesso com ndice: significa usar o ndice do registro de dados que o sistema
mantm para acessar os dados

Acesso com chave: significa usar um termo de pesquisa, em geral uma chave de
tabela ou uma chave de tabela genrica, para ter acesso aos dados.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg, 61


Outro atributo de tabela interna a categoria de tabela. As tabelas internas podem
ser divididas em trs categorias, de acordo com o modo de acesso aos dados:

Tabelas standard: mantm, internamente, um ndice linear e podem ser acessadas


atravs do seu ndice ou de suas chaves.
Tabelas ordenadas: so ordenadas de acordo com a chave e gravadas. Aqui,
tambm, um ndice linear atualizado internamente. Este tipo de tabela tambm
pode ser acessada atravs do seu ndice ou de suas chaves.
Tabelas aleatrias de prova: no mantm ndice linear interno e podem ser
acessadas apenas atravs de suas chaves.

A categoria de tabela a ser usada depende de como as entradas daquela tabela so


normalmente acessadas. Tabelas standard devem ser usadas se as entradas forem
normalmente acessadas atravs de ndice; se as entradas forem feitas normalmente
atravs de chaves, recomenda-se a tabela ordenada; se forem feitas exclusivamente
com chaves, devem ser utilizadas tabelas aleatrias de prova.

FIGURA036 - Tipos de Tabelas Internas

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 62


Ao contrrio dos conceitos de matriz em outras linguagens de programao, em
ABAP no se permite o acesso direto s entradas de tabela: tais operaes so
conduzidas atravs de reas de trabalho.

As seguintes operaes podem ser executadas com tabelas internas em ABAP:

Comando Efeito
APPEND anexa o contedo de uma rea de trabalho ao final de uma tabela
interna

INSERT insere o contedo de uma rea de trabalho em um determinado ponto


(nO linha)
MODIFY sobrescreve uma linha especifica com o contedo de uma rea de
trabalho
DELETE apaga uma linha especfica de uma tabela interna
LOOPAT insere as entradas de uma tabela interna, linha por linha em uma rea
de trabalho
READ TABLE insere exatamente uma entrada da tabela interna em uma rea de
trabalho
SORT ordena uma tabela interna
CLEAR limpa (apaga) uma rea de trabalho ou uma tabela interna

As quatro categorias de tabela itabkind, com os tipos de Iinhaslinetyp,


sequncias-chavekeydef e o modo exclusivo/no exclusivo (UNIQUEINON-
UNI QUE ) so utilizados para especificar todos os atributos de uma tabela.

Na definio, 8 KB de memria so alocados para cada tabela interna. Caso se


precise de mais memria durante o tempo de execuo, o sistema coloca
disposio da tabela outros blocos de 8 KB. Se necessrio, a quantidade de
memria atribufda a uma tabela interna pode ser reduzida no comeo de cada
programa. O suplemento opcionallNITIAL SIZE <n> proporciona tabela memria
suficiente no inicio do tempo de execuo para armazenar o volume "n" de entradas
de tabela.

Como mencionado no captulo sobre estruturas de dados do programa ABAP, o


sistema permite usar tabelas internas sempre que houver uma sequncia de
entradas ou linhas de mesmo tipo. Isto ocorre quase sempre quando um programa
precisa de uma cpia interna de uma determinada tabela do banco de dados (por
exemplo.

O usurio pode preencher uma tabela interna com registros de dados de uma tabela
do banco de dados utilizando um loop SELECT para colocar registros individuais de
dados na rea de trabalho de uma tabela interna e, depois, anexando o contedo da
rea de trabalho tabela interna no loop SELECT.
A instruo APPEND deve ser utilizada para preencher uma tabela interna:
APPEND <wa> TO <itab> acrescenta o contedo de uma rea de trabalho <wa> ao
final da tabela interna <itab>. Ao declarar uma tabela standard, o usurio no
precisa usar o suplemento STANDARD.

COPYRIGHT ALLIANSYS CONSULTING - 2002 Pg. 63


FIGURA037 - Comando APPEND

o usurio pode preencher uma tabela interna com todo o contedo de uma tabela
do banco de dados utilizando uma nica instruo SELECT. Assim, o sistema l os
registros em lote, no individualmente. Depois, este lote inserido como um todo na
tabela interna. Este tipo de acesso de leitura mais eficiente do ponto de vista da
performance do que ler e inserir dados em loop, registro por registro. Considerando
que aqui no usado qualquer loop, a instruo ENDSELECT no necessria.

Ao utilizar o formulrio bsico ... INTO TABLE... , todos os registros de dados j


encontrados so inseridos na tabela interna e todas as entradas anteriores da tabela
so sobrescritas. Com o formulrio ... INTO CORRESPONDING FIELDS OF
TABLE... todos os campos da quantidade de resultado so colocados nos
respectivos campos da tabela interna. Isso muito til quando a tabela interna em
questo for composta de vrias colunas especificas de uma tabela do banco de
dados.

COPYRIGHT ALLIANSYS CONSULTING - 2002 Pg. 64


FIGURA038 - Clusula INTO CORRESPONDING FIELDS OF

Para ordenar uma tabela interna, deve-se usar a instruo SORT. As adies BY
<f> e ASCENDING ou DESCENDING permitem restringir a ordenao a campos
especficos e determinar a sequncia e a hierarquia da ordenao.

A instruo de loop LOOP AT .. ENDLOOP permite processar mltiplas entradas


de tabela interna. Cada vez que a instruo executada no loop, o sistema coloca a
prxima entrada da tabela na rea de trabalho <wa> especificada no campo INTO.

o comando LOOP permite acessar as entradas da tabela interna atravs de indice e


de chaves. Ao acessar a tabela atravs de chaves, recomenda-se restringir o
nmero de entradas ou linhas a serem lidas com a clusula WHERE, exatamente
como se faz com um comando SELECT.

No incio de cada loop, SY-TABIX preenchido com o ndice da entrada da tabela


atual. Depois que o loop processado, SY-TABIX volta ao valor que possula antes
do incio do processamento do loop.

COPYRIGHT ALLlANSYS CONSULT1NG - 2002 Pg. 65


FIGURA040 - SY-TABIX

A instruo READ TABLE <itab> deve ser utilizada para ler entradas individuais da
tabela. Todas as entradas de tabela lidas so colocadas na rea de trabalho <wa>.
Se o acesso de leitura tiver sido bem sucedido, o campo SY-SUBRC igual a zero;
todos os outros valores significam que o acesso de leitura no pde ser executado
com sucesso. O sistema fornece automaticamente ao campo SY-TABIX o valor do
ndice da entrada de tabela lida.

Com o comando READ o usurio pode acessar as entradas da tabela interna


atravs do ndice e das chaves. Ao acessar uma tabela interna com chaves, o termo
de pesquisa tirado dos campos~chave da tabela interna, enquanto os valores do
termo de pesquisa so tirados dos respectivos subcampos da rea de trabalho <wa>
que foi informada no campo FROM. Assim, o sistema l a primeira entrada <itab>
que corresponde ao termo de pesquisa.

READ TABLE <itab> ... INDEX <i>. L o nmero de entrada da tabela <i>.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 66


FIGURA041 - READ TABLE

Como utilizar o acesso com indice para processar entradas individuais da tabela
interna:

A instruo MODIFY <itab> [FROM <wa>] INDEX <i> sobrescreve a entrada da


tabela i com o contedo da rea de trabalho. A linha i j deve existir.
A instruo INSERT [<wa> INTO] <itab> INDEX <I> cria uma nova entrada de
tabela antes de i utilizando o contedo da rea de trabalho. Se a tabela tiver
entradas = <i> -1, o contedo da rea de trabalho anexado tabela interna.
A instruo DELETE <tab> INDEX <i> elimina a entrada de tabela .

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 67


FIGURA042 - Efetivando alteraes no contedo de tabelas internas

As instrues MODIFY TABLE, INSERT TABLE e DELETE TABLE permitem


acessar as entradas da tabela interna atravs de chaves.
Ao acessar uma tabela interna com chaves, o termo de pesquisa tirado dos
campos-chave da tabela interna e os valores do termo de pesquisa so tirados dos
respectivos subcampos da rea de trabalho <wa> que foi informada no campo
FROM.
Note que, se usada com uma tabela standard, a instruo INSERT TABLE atua
como APPEND. Mas quando usada com uma tabela ordenada, INSERT TABLE
insere as entradas j ordenadas.

@ COPYRIGHT ALLIANSYS CONSULTING - 2002 Pg. 68


Variants:
1. MODIFY itab [FR~1 wa] [INDEX idx) [TRANSPORTING f1 ... fn).
2. MODIFY TABLE itab [FR~1 wa] (TRANSPORTING f1 ... fn].
3. MODIFY itab [FROM waJ TRANSPORTING fl ... fn ~JHERE eond.
Variant MODIFY itab [FR~1 wa] [INDEX idx) [TRANSPORTING fI ... fn).
Effeet Changes a single entry in the ~QJ~nn)~i~til~ itab, specifying
the key explicitly or implieitly. Vou ean only use this variant
with index table (standard or sorted tables).
If you specify 'FROM wa", the new values are taken from tha
work area wa. If you do not specify FROM, the header line of
itab is used as the work area.
Vou can use "INDEX idx" to specify the table index of the line
you want to change. This may be omitted within a k~~a at an
internal table. ln this case, the current table line is
changed.
The INDEX specification ean come before the FROM addition.
If you specify "TRANSPOflTING fI ... fn", only components fl,
f2, ... of the work area are copied into the table. Vou can
also specify components dynamical1y in the form (name). The

FIGURA043 - MODIFY TABLE

A instruo CLEAR utilizada para restaurar o contedo de um objeto de dados ao


seu valor inicial, de acordo com a sua categoria. Considerando que as entradas
da tabela interna so sempre de uma nica categoria, suficiente uma instruo
CLEAR para eliminar toda a tabela,

CLEAR <wa> - inicializa uma rea de trabalho <wa>.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 69


FIGURA044 - CLEAR

As tabelas internas podem ser definidas com ou sem uma linha de cabealho. Uma
tabela Interna com linha de cabealho composta por uma rea de trabalho (linha
de cabealho) e o corpo real da tabela, ambos endereados com o mesmo nome.
A interpretao desse nome depende do contexto em que utilizado. Por exemplo:
em MOVE o nome interpretado como linha de cabealho; em SEARCH
interpretado como o corpo da tabela.

O usurio pode declarar uma tabela interna com uma linha de cabealho atravs do
suplemento WITH HEADER UNE. Para evitar erros, recomenda-se que o usurio
crie tabelas internas sem linhas de cabealho. Entretanto, nas tabelas internas com
linhas de cabealho quase sempre possvel usar uma sintaxe reduzida para
certas operaes.

COPYRIGHT ALLIANSYS CONSULTING - 2002 Pg. 70


Entendendo os novos tipos de Tabelas internas

Standard
As linhas podem ser acessadas utilizando o Indice da tabela ou a chave. Ao utilizar a
chave, o tempo de resposta depender da quantidade de entradas da tabela. A chave ser
sempre no nica.

Sorted

As linhas so sempre gravadas de acordo com a sua chave. As linhas so


acessadas utilizando o Indice ou a chave. Ao utilizar a chave, o tempo de resposta ter
relao logarltmica com a quantidade de linhas de tabela, pois utilizada pesquisa binria. A
chave de uma tabela sorted pode ser tanto UNIQUE quanto NONUNIQUE. Tabelas sorted
so geralmente conhecidas como index fabies.

Hashed

As linhas so acessadas pela chave. O tempo de resposta constante, no dependendo


do nmero de entradas na tabela, pois utiliza um algoritmo especial. Neste tipo de tabela a
chave deve sempre ser UNIQUE.

COPYRIGHT ALLIANSYS CONSULT1NG - 2002 Pg. 71


Consideraes
Ao ler tabelas tipo Sorted ou Hashed, utilizar WITH TABLE KEY, caso contrrio o
sistema utilizar a procura linear ao invs de blnary 5earch.

No preencher tabelas internas tipo Sorted com operaes com fndice (INSERT wa
INTO tab1 INDEX tabix, APPEND tab1 FROM wa), pois o 50rt ser corrompido.

Um bom exemplo de utilizao de tabela interna tipo Hashed a armazenagem de


dados mestre freqentemente lidos, que so carregados em uma tabela interna, para evitar
leituras redundantes na base de dados.

o comando MODIFY pode ser utilizado com uma clusula WHERE.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 72


Work rea da Tabela Interna

Internal table <itab>

As Work Areas (WA) tm o papel do Header Une em uma tabela sem o mesmo.

Todas as leituras elou gravaes tm necessariamente que passar pela WA.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 73


Definio de Tabelas internas

Uma Tabela Interna pode ser definida atravs do comando DATA (Como na verso
3.0F), ou atravs do comando TYPE.

A principal diferena entre esses dois modos de declarao de Tabelas que:


No primeiro caso (DATA), a declarao da tabela j est alocando o espao
em memria.
No segudo caso (TYPE), somente feita uma referncia do tipo definido no
TYPES, sendo assim, no ocupa lugar na memria, sendo necessrio, para
isso, a declarao da tabela atravs do comando DATA, fazendo referncia
a um TYPE.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 74


Preenchendo uma Tabela Interna

REPORT s a p b c 4 0 0 i t d _ d e c l a r i n g _ f i l l i n g .

DATA: it flightinfo
DATA: wa f l i g h t i n f o

Internal tabla it_flightinfo

SELECT APPEND

I
Tabla work area

Para preenchimento da Tabela interna, todos os dados so movidos previamente


para uma Work rea (wa) e posteriormente inseridos na tabela interna.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 75


Preenchendo a Tabela Interna a partir da Transparent Table (Select)

*FROMspfl i INTO TABLE


WHERE carrid = ' A A ' .

Para leitura de uma tabela transparent, o Select gera dados para a Work Area (wa) e
posteriormente feito o Append a partir dessa Work rea, efetivando-se a insero.

A Clusula INTO TABLE faz a insero dos dados diretamente, sem passar pela
Work rea. Este segundo exemplo muito mais performante que o primeiro.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 76


Sorteando Tabelas Internas

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 77


Looping de leitura na Tabela Interna

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 78


Acessando Entradas individuais em Tabelas internas

REPORT sapbo400i~d_itab_read,
'-.'
..'.' ,.-.-. - _. - '. ',: _: _.... ',:.-,- - - ..' : '" ". ,' . : ;. " ' " _, : ': _,... :_, -;. '. .:_ ._

OF sprli

DATA: LlKEspfli,
,';::'::::',':,'-'::.:.:.::,.':-,':
INTOTABLEit_
:. . -- ...--: .- ". " - . . :- - -,

MOVE

ENDIF.
sy....
READTABLEit flightinfo.INTOwaflightinfo
INDEXtab
IF

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 79


Modificando uma Tabela Interna atravs do ndice

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 80


Modificando uma Tabela Interna atravs de Chaves

'LH' to w a _ f l i g h t i n f o - c a r r i d ,
'0400' to w a _ f l i g h t i n f o - c o n n i d .

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 81


Deletando uma Tabela Interna

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 82


Tabelas Intenas COM e SEM Header Une

c Header line <itab>

Intarnal labia <itab>

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 83


Exerccios

Utilize este espao para colocar observaes a respeito dos exercicios propostos pelo
instrutor.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 84


Captulo 7
Mdulos de Funo

Mdulos de funo so subprogramas externos com uma interface transparente. A


interface considerada transparente porque no est incluida nas declaraes do
programa ASAP para a parte executvel do mdulo de funo. A interface definida
separadamente e pode ser atualizada independentemente do texto.

Com os parmetros opcionais, acrscimos interface podem tornar as declaraes


do programa ASAP completamente executveis sem qualquer modificao. Eles so
armazenados de forma centralizada no Repository R/3.

Cada mdulo de funo pertence a um grupo de funes. Um grupo de funes


um programa ASAP do tipo F, criado exclusivamente para armazenar mdulos de
funo. O Sistema de informao de substituio permite procurar mdulos de
funo. O Function Suilder, uma das ferramentas do ASAP Workbench, utilizado
para criar mdulos de funo. Alm de utilizar os mdulos de funo dentro de um
sistema R/3, tambm possvei cham-los a partir de outros sistemas R/3, R/2 ou
externos.

ZCUSTO
objeto grupo de
[t Mdulos de funo
+ Estruturas DOte

Subprogramas
i Mdulo PBO
MdulosPAI

tnctudes

FIGURA053 - Grupo de Funes

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 85


Cada mdulo de funo pertence a um grupo de funes. O grupo de funes um
programa ASAP com o tipo F, criado exclusivamente para conter mdulos de
funo. Os grupos de funo no so executveis. Os mdulos de funo so
subprogramas externos - eles no podem ser gravados no programa que os chama.

Quando um mdulo de funo chamado, o sistema carrega todo o grupo de


funes na rea de memria do programa de chamada. Todos os mdulos de
funo de um grupo de funes possuem um tema em comum. Por exemplo: todos
os mdulos do grupo SCAL executam clculos de data.

Grupos de funes so criados no browser de substituio. O nome de um grupo


de funes pode ter at 30 caracteres. So permitidos apenas caracteres
alfa numricos e a sublinha U. Se o usurio no est usando o prprio conjunto de
nomes, o grupo de funes deve comear por Z_ ou Y_. To logo so chamados,
os grupos de funes se tornam acessveis no sistema.

COPYRIGHT ALLlANSYS CONSULT1NG - 2002 Pg. 86


FIGURA054 - Grupo de funes no Funclion Bul/der

A categoria de objeto Grupo de funes, no browser de substituio, permite criar


um novo mdulo de funo em um grupo de funes existente. Um mdulo de
funo composto de dados administrativos, interface, texto fonte e documentao.
O nome de um mdulo de funo pode ter, no mximo, 30 caracteres. So
permitidos apenas caracteres alfanumricos e a sublinha Ll.

Caso o usurio no esteja utilizando o prprio conjunto de nomes, o mdulo de


funo deve comear por Z_ ou Y_. Um mdulo de funo se torna ativo no sistema
quando chamado pelo usurio. Assim que a chamada feita, o sistema gera o
grupo de funes a que o mdulo pertence.

Um mdulo de funo composto de:

Informaes administrativas: nome do mdulo de funes, breve descrio, grupo


de funes, responsvel, ltima modificao feita por... , tipo de processamento,
classe de desenvolvimento...
Interface
Parmetros da interface: possvel utilizar objetos de dados elementares,
estruturas ou tabelas nternas como parmetros de importao, exportao e
modificao. Os mdulos de funo utilizam os mesmos mtodos de
transmisso de parmetros que as rotinas FORM.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 87


Excees: se, durante o processamento, ocorre um erro em um mdulo,
possvel inserir a correo dentro do prprio mdulo como uma exceo.
Documentao da interface: necessrio fornecer uma breve descrio
dos parmetros e das excees da interface. Para entrar mais dados na
documentao, basta clicar sobre qualquer uma dessas descries. A
documentao do mdulo de funo contm interligaes automticas para
informaes mais detalhadas.
Texto fonte e Documentao: possvel documentar separadamente cada
mdulo de funo. Essa informao pode ser traduzida e exibida no idioma do
usurio.

FIGURA055 - Function Builder-/nf. Administrativas

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 88


FIGURA056 - Funclion Builder- Parmetros de Importao

FIGURA057 - Funclion Builder- Parmetros de Exportao

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 89


FIGURA058 - Function Builder

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 90


FIGURA060 - Function Builder- Excees

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 91


Como exemplo de parmetros de interface so utilizados parmetros de
importao:

Como no caso das rotinas FORM, possvel:

Determinar uma estrutura ou tipo de referncia para tornar obrigatria uma


verificao de tipos nos parmetros de interface. necessrio definir um tipo
de referncia para estruturas e para tabelas internas. Se o usurio no
determina um tipo de referncia para os parmetros elementares, o parmetro
formal herda o tipo do parmetro atual.
Determinar, ao definir a interface, se os parmetros devem ser transferidos
por referncia ou por valor. No primeiro caso, a opo 'Referncia'
selecionada.

Diferentemente da rotinas FORM, os mdulos de funo permitem definir os


parmetros opcionais de interface. Nesse caso, o usurio pode fornecer um valor
proposto. Esse valor (ou o valor inicial da categoria de dados correspondente)
utilizado se o programa de chamada no fomece o parmetro.

Os tipos do ASAP Dictionary ou os tipos predefinidos ASAP s podem ser utilizados


para verificao. Uma categoria de tabela deve ser gravada em um pool de tipos no
ASAP Dictionary, para as tabelas intemas.
Do ponto de vista do mdulo de funo, parmetros de importao so aqueles
recebidos do programa e parmetros de exportao so aqueles retransmitidos para
o programa.

possvel antecipar possveis erros e escrever o programa de modo que eles no


causem erros de tempo de execuo. As possveis excees so denominadas na
interface do mdulo de funo e acionadas a partir do texto de programa, por meio
da declarao RAISE. Cada programa que chama o mdulo de funo consulta sy-
subrc para interpretar as excees. No mdulo de funo tambm possvel
garantir que o sistema exiba uma mensagem de erro se a exceo ocorrer, mesmo
que ela no seja diretamente tratada pelo programa de chamada. Para obter mais
informaes, consulte a documentao e pesquise as palavras-chave MESSAGE ...
RAISING.

COPYRIGHT ALLlANSYS CONSULT1NG - 2002 Pg. 92


FIGURA062 - Exemplo de Sintaxe

o sistema cria um modelo de programa para cada mdulo de funo. Os parmetros


de interface e excees definidas pelo usurio so automaticamente inseridas como
linhas de comentrio no texto do mdulo. Todavia, preciso lembrar que a
definio da interface, no essas linhas, o que realmente define a interface. No
modificar manualmente as linhas de comentrio pois elas so automaticamente
atualizadas quando a definio da interface sofre alguma alterao. As declaraes
ABAP do mdulo de funo so escritas entre as declaraes FUNCTION e
ENDFUNCTION. Por exemplo: o usurio aciona a exceo MAX_EQ_O por meio da
instruo RAI8E MAX_EQ_O.

Assim que um mdulo de funo est pronto e ativado, ele pode ser testado no
Function Builder. Um modelo de entrada permite especificar os parmetros IMPORT.
O resultado transferido para os parmetros EXPORT e exibido. O sistema
memoriza a exceo ativada, caso ocorra um erro.

O tempo de execuo do mdulo de funo exibido em microssegundos. Esses


valores esto sujeitos s mesmas condies que a transao de anlise de tempo
de execuo. Portanto, o usurio deve repetir o teste diversas vezes com os
mesmos dados. Os dados do teste podem ser gravados em um diretrio de dados
de teste. A funo de teste do Function Builder pode ser utilizada para testar
mdulos de funo com parmetros de tabela. possivel criar seqncias de teste.

COPYRIGHT ALLIANSYS CONSULTING - 2002 Pg. 93


FIGURA063 - Teste de mdulos de Funo-I

COPYRIGHT ALLlANSYS CONSULT1NG - 2002 Pg. 94


Teste p/grupo de
Mdulo dI.' funo DAV_ATTRIDUTES_GET
Maisculas/Minsculas

TlIlp.exec. : 918.655 Hicrosl.'gundos

Sist .dest .RFC:

FACrORY
1I0LIDAY-CALENDAR
DATE FROM
BR
01.11.2000
DATE-TO 30.11.2000
LANGUAGE PT

YEAR DF VALID FROM 1996


YEAR=DF=UAlID=rO 2001
RETURHCODE

FIGURA064 - Teste de mdulos de Funo-1/

01.11.2000 3
02.11.2000 X X 193 Huertos
03.11.2000 5
04.11.2000 X Sbado Sbado,
05.11.2000 7 DO DOMingo
06.11.2000 1 2il-feit"a 2il-fe'
07.11.2000 2
OS .11.2000 3
09.11.2000
10.11.2000 5 6il-feit'
11.11.2000 SO Sbado sbado,
12.11.2000 7 DO DOll'l1ngo DOMingo
13.11.2000 1 2il-feit"a
14.11.2000 2
15.11.2000 X X 191 Proclanat. Proclanation of the Republic 3
16.11.2000

FIGURA065 - Teste de mdulos de Funo -/II

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 95


possivel chamar qualquer verso ativa de um mdulo de funo existente no
repository do R/3 a partir de um programa. Para isso, basta utilizar um modelo de
declarao do ABAP Editor (boto 'Modelo') e entrar o nome do mdulo de funo.
Em seguida, o sistema gera uma declarao ABAP CAL L FUNCTION '<nome do
mdulo de funo>', que inclui a interface do mdulo, e insere essa declarao no
programa, na posio atual do cursor.

Preencher os parmetros atuais e, se necessrio, escrever as declaraes que


processaro qualquer exceo destacada. Os valores dos parmetros de interface
so atribuldos explicitamente pelo nome do parmetro atual. No necessrio
atribuir um parmetro atual a um opcional. Nesse caso, o usurio pode eliminar a
linha que contm o parmetro opcional. Assegurar que, durante a atribuio de
parmetros, o parmetro do mdulo de funo esteja sempre esquerda e o atual
direita.

Os mdulos de funo podem ser iniciados tanto no modo asslncrono quanto


paralelo. possvel fazer o encapsulamento dos dilogos de usurio. O usurio
pode criar mdulos de funo que podem ser iniciados pela Chamada de funo
remota. As seguintes opes de acesso remoto esto disponveis:

A partir da World Wide Web, para permitir o acesso a um sistema R/3


A partir de outro sistema R/3
A partir de seus prprios programas (por exemplo: Visual Basic, JAVA ou
eH).

COPYRIGHT ALLlANSYS CONSUL TING - 2002 Pg. 96


BAPI
Definio
A BAPI (Business Application Programming Interface) a interface que prov acesso
aos processos e dados nas apiicaes de negcios de sistemas como o R/3.

BAPis so definidas como mtodos APl dos objetos de negcio SAPo Esses Objetos
de Negcio e suas BAPls so descritas e armazenadas no BOR (Business Object
Repository).

A BAPI impiementada, no entanto como um mdulo de funo que armazenada


no Function Builder.

Integrao
BAPls podem ser chamadas no R/3 por aplicaes externas e outros programas. BAPls
so padres de comunicao para aplicaes de negcios. A interface de tecnologia BAPI
formam a base para os seguintes desenvoivimentos.

R/3 satellite systems

Componentes isoiados dentro do sistema R/3 em contexto com o Business


framework.

Cenrios distribuldos R/3 usando ALE (Application Link Enabiing)

Conexo do Sistema R/3 internet utilizando IACs (Internet Applicalion


Components).

Programas Visual Basic sendo utilizados como front ends do R/3.grams as frontends
to R/3

Aplicaes Workflow

Conexo com softwares No-SAP.

Conexo com sistemas legados.

O grfico seguinte mostra como a interface BAPI habilita diferentes tipos de aplicao a
serem ligados como um todo.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 97


BAPls - Interface com o Sistema R/3

RI3 satellite systems I


dlstributed systems (ALE)

Internet f Vis ualBaslclJAVA...


Intranet

Custorners and Partners'


DeveloJlments
Is 0latin9 Comp onents ln ti ness Framework
(R/3, RI2)

BOR
Definio
O Business Object Repository (BOR) o repositrio de objetos orientados do R/3.
Eie contm, entre outros objetos, Objetos de Negcio SAP e seus mtodos.

No BOR, uma Business Application Programming Interface (BAPi) definida como


um mtodo APl de um Objeto de Negcio. Portanto definida, a BAPI se torna standard com
garantia total bem como seu contedo e interface.
Utilizao
Com relao aos objetos de negcio SAP e suas BAPls, a BOR tm as seguintes
funes:

Prov uma viso orientada a objetos dos dados e processos do Sistema R/3.

Funes de aplicao do R/3 so acessadas utilizando mtodos (BAPI). A


implementao de informao encapsulada, somente a interface de funcionaiidade
do mtodo vislvel ao usurio.

Arranja as diferentes interfaces de acordo com a hierarquia de componentes,


habilitando funes a serem encontradas e recuperadas de forma rpida e fcil.

Gerencia o processo de Update das BAPls.

COPYRIGHT ALLlANSYS CONSULT1NG - 2002 Pg. 98


Integrao
Uma BAPI definida na BOR como um mtodo de um objeto de negcio SAPo Uma
BAPI implementada, no entanto, como um mdulo de funo, a qual armazenada no
Function Builder. Voc somente deve definir uma BAPI como um objeto de negcio SAP
na BOR se este mdulo de funo estiver completamente implementado.

A fig ura abaixo mostra o relacionamento entre um objeto de negcios SAP e seus
relacionamentos no mduio de funo.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 99


BAPI Browser

Voc pode mostrar mais informaes nos objetos de negcios e as BAPls que
pertencem a eles utilizando o BAPI Explorer. A tela composta por duas partes: a rea
hierrquica e a janela de detalhes.

A rea hierrquica mostra os componentes hierarquicamente. Voc pode expandir


um componente de aplicao para procurar quais aplicaes o objeto pertence. Se voc
expandir um simples objeto de negcio, o sistema mostra uma sub-rvore, exibindo quais
so as chaves de atributos e mtodos APl que pertencem a ele.

COPYRIGHT ALLIANSYS CONSULT1NG - 2002 Pg. 100


+
+ Contabilidade financeira
+ Tesouraria
+ Conlrolling
+ Administrao de investimentos
+ Controiling empresarial
Adminislrao de bens imobilirios
+ Logstica geral
+ Vendas e distribuio
- Administrao de materiais
- Compras
@ PurchaseReqltem
@ PurchaseOrder

+ Pwchasinglnlo
+ PlOcwementOperatlon
+ SowceOfSupplyDeterm
+ Servios externos
+ Administrao de estoql!eS
+ Reviso de faturas
+ Logistics Execution
+ Administrao de qualidade
+ Manuteno
Servio clientes

I"

Se voc expandir uma sub-rvore para um objeto de negcios no BAPI Explorer, o


sistema mostrar o seguinte:

Atributo Chave: o qual prov um nico identificador para cada objeto de negcio,
Mtodos de instncia especfflca: os quais referem-se s chaves identificadas pelos
atributos.
Mtodos de instncia no-especifica: os quais podem ser chamados por todas as
instncias de um tipo de objeto.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 101


Se voc expandir uma subestrutura para um mtodo, o sistema retornar os nomes


de seus parmetros de Import e exporto Voc pode obter mais detalhadas informaes
escolhendo a pasta "ferramentas".

BAPls usualmente tem um parmetro de export chamado RETURN. Isto pode ser
uma estrutura ou tabela interna. O parmetro de retorno contm informaes de erros que
podem ocorrer durante o processamento da BAPI. No h parmetros de EXCEPTIONS
para BAPls.

COPYRIGHT ALLlANSYS CONSULTING 2002 Pg. 102


Para visualizar informaes completas de um tipo de objeto de negcio, use o
BUSINESS OBJECT BUILDER. O sistema mostrar uma rvore com os tipos de objeto,
incluindo os mtodos APl no-SAPo

BAPls Standard

As BAPls com nomenclatura standard contm mtodos standard, os trs mais


importantes so listados abaixo:

GetLlst - Retorna o contedo dos campos-chave para o objeto que foi escolhido.
GetDetail - Retorna informaes detaihadas (atributos) para os objetos requeridos.
CreateFromData - Cria um novo objeto no R/3 e retorna informaes sobreele.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 103


BAPls implementadas como Mdulos de Funo

..

Na verso 4.6 as BAPls tm sido implementadas utilizando Mdulos de Funo.


posslvel visualizar o mdulo de funo para a BAPI que voc escolheu atravs do BAPI
Explorer atravs dos seguintes passos:

Selecione a BAPI na rea hierrquica.


Na janela de informaes detalhadas (direita) escolha a tab "ferramentas".
Escolha "functlon bullder". O sistema mostrar o nome do mdulo de funo.

Para implementao da funo, dever ser criado um programa que utilizar a


BAPI atravs do comando: CALL FUNCTION.

Ex.

CALL FUNCTION 'BAPI_PO_CREATE'

OBS. Os parmetros devero seguir estritamente a regra da funo.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 104


Exerccios

Utilize este espao para colocar observaes a respeito dos exerclcios propostos pelo
instrutor.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 105


Captulo 8
Dialog Programming - On-Line

Os principais componentes de um programa On-Iine

o necessria a utilizao do Screen Painter e do Menu Painter para a criao


dos templates e dos programas controladores das telas.
o O fluxo lgico do processamento da tela definido no programa ASAP (Module
pool)
o Os campos definidos nas telas devem ser obtidos atravs de estruturas elou
tabelas definidas no dicionrio de dados.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 106


Sereen Painter ABAP

Screen Painter - ABAP/4

FROCESS BEFORE OUTPUT.


MODULE INIT.

PROCESS AFTER INPUT.


MODULE READ.

ENDMODULE.

SAP AG

Para criao de uma tela, devem ser seguidos os seguintes passos:


Defina os componentes bsicos da tela (screen attributes).
Desenhe o layout da tela utilizando o fullscreen editor.
Defina os os atributos dos campos (field Iist).
Escreva o fluxo lgico da tela. (flow logic).
Os mais importantes componentes do programa ABAP so encontrados nos
seguintes objetos:
Global data ou Estruturas do dicionrio no TOP include (declarao de dados)
Module PBO (Process Before Output)
Module PAI (Process After Input)
Subrotinas (se necessrio)

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 107


Comunicao entre os mdulos

Communication: Screen - ABAP/4 Module Pool

Control passes trom the dlalog processor to the ABAP14 processor


Control passes tram fhe ABAP!4 processor to fhe dlalog processor
Module paol work area , , .
TABLES: SPFLI.
t

SPFLI-CONNID CARRID CONNID

DK-CODE (4)

O Fluxo lgico dividido em dois eventos para cada tela:


O PROCESS SEFORE OUTPUT evento (PSO), executado antes da tela
ser apresentada.
O PROCESS AFTER INPUT evento (PAI), executado aps o usurio ter
acionado algum boto ou disparado algum evento na tela anteriormente
apresentada.
O sistema processa os mdulos em um evento sequencialmente.
Em cada mdulo, o controle passado do processador de dilogos (tela) para o
processador do programa ASAP, e aps o processamento, o controle
retornado ao processador de dilogos (tela).
Quando todos os mdulos do PSO terminarem a execuo, os contedos dos
campos na Work Area do ASAP so copiados para a Work Area da tela em
nomes idnticos.
Antes do PAI ser processado, os contedos dos campos na Work Area da tela
so copiados para a Work Area do ASAP em nomes idnticos.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 108


Overview: Criando um Dialog Program

Overview: Criando um Dialog Program

Alrllne carrler
FlIght number 10400 I

Planned fIIght
From I FRANKFURT
To I NEWYORK
Time
[

A seguir ns criaremos um Dialog Program que mostrar dados do Flight


Connection, por exemplo. Na primeira tela, o usurio entrar com a chave da
tabela, e na segunda tela, ser mostrado o contedo dos campos referentes
tabela SPFLI.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 109


Criando Programas

Criando Programas
Development ClaS5
Program
Functional area

Program ISAPMTALA
I wlth TOP I"elude

o Crie o seu programa (ASAP Module Pool) no Development Workbench seguindo


a regra de nomenclatura abaixo:
o O nome dever iniciar com as letras SAPo
o A quarta posio do nome do programa dever ser sempre M (Module Pool).
o A quinta posio, no caso de programas customizveis dever ser Z ou Y,
(como nos programas reports, iniciados obrigatoriamente com essas letras).
o Escolha a opo TOP Include, pois desta forma, ser criado o include que ser
utilizado para a declarao dos dados globais.
o Se voc utilizar os ineludes, o sistema automaticamente sugerir os nomes para
eles, seguindo uma regra particular, de acordo com o nome do programa
principal (module pool) e com um determinado sufixo, o qual facilitar a sua
identificao dentro do programa.

Exemplo: O nome do TOP Include para um programa Module Pool cujo nome
SAPMTALA ser MTALATOP.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 110


Atributos do Programa

Atributos do Programa

TllIe

Type
Applicalion

Save

Nos atributos do programa, voc define o Ttulo, o tipo do programa e a aplicao.


Para programas Module Pool, escolha o tipo de programa M.

COPYRIGHT ALLIANSYS CONSULTING - 2002 Pg. III


Definindo Telas

Definindo Telas
I $TMP Use,'s local objects

Chooos Program
Screen no.

Continue Screen Attributes

Crie as telas necessrias para o seu programa Module Pool partir da lista de
objetos.
Aps voc ter digitado o nmero da tela, o sistema abre uma nova tela com
dados daquela tela.
Digite uma pequena descrio para a tela.
Escolha a opo NORMAL, e especifique o nmero da prxima tela (se
necessrio, no momento da execuo, o sistema desviar para o nmero da tela
indicado nesse campo, caso esteja preenchido).

COPYRIGHT ALLlANSYS CONSULTING 2002 Pg, 112


Utilizando Campos do dicionrio ASAP

Utilizando campos do dicionrio ABAP

Fullscreen OlcUProgFlelds

OlcVProgFlelds

Oetfrom Olct. II
Oel trom program

Template

Keyword
short
- medlum
-Iong
header

Geraimente, voc define campos utilizando os campos prviamente definidos no


dicionrio ABAP.
Podem ser utiiizados tambm campos j definidos no mdule pool, bastando
para isso que exista uma gerao prvia deste module poo!.
Podem ser feitas cpias dos campos de sada e dos templates (telas)
individualmente ou juntas.

COPYRIGHT ALLIANSYS CONSULTING - 2002 Pg. J 13


Definindo Elementos Grficos (Graphical Screen Painter)

Lay out da tela (Graphical Screen Painter)

[Fl'Id aUr. II IDlet.lprog.f1.Ids li IFI'ld lIsI li

I Entry t
I Ch,ek I
I Radio I
80x [

Para desenhar telas, utilize o Screen Painter.


A interface do Screen Painter Grfico contm funes easy-to-use para definio
de diversos elementos da tela (ex: campos de entrada/sada, labels, boxes,
botes, etc). Voc escolhe cada elemento e os posiciona na tela utilizando o
mouse.
Para deletar elementos da tela, necessrio selecionar cada elemento com o
mouse (foco) e pressionar delete.
possvel tambm mover os elementos grficos pela tela, somente clicando e
arrastando o mesmo.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 114


Definindo o Fluxo Lgico (Flow Logic)

Definindo o Flow Control

Nos Flow Logics no so permitidos palavras reservadas (IF, PERFORM, WHILE


etc) da mesma forma em que so permitidos nos programas. O Flow Logic,
embora se parea muito com o programa (o editor o mesmo), no tem o
mesmo comportamento. Ele usado basicamente para ordenar o
processamento da tela, e para isso so criados os MODULES, que tm uma
funco anloga do PERFORM.
Para criarmos um MODULE, escreva o seu nome no flow logic no lugar desejado
e efetue um double-e1ick. O sistema criar uma subrotina iniciando com
MODULE <nome> e terminando com ENDMODULE no inelude apropriado. Isto
pode ser facilmente observado efetuando uma navegao pelo include.
Se no existirem includes, o sistema poder criar um (se voc permitir) ou
poder incluir a subrotina no programa principal (o que alis, no
recomendado) .

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 115


Criando uma sequncia de telas

Criando uma sequncia de telas


I Scree" 10 Copy

Flow control

PROCESS BEFORE
OUTPUT.
PROCESS AFTER
INPUT.

Fleld IIst
SPFLICARRID
SPFLICARRID SPFLICONNID
SPFLICDNNID
SPFLICITYFROM
SPFLICITYFROM _ _ SPFLICITYTO
SPFLICITYTO

Para telas com estrutura similar, voc pode copiar uma tela existente e, se
necessrio, modific-Ia.
Para fazer isto, voc utiliza o Development Workbench posicionando o cursor na
tela que voc deseja copiar e escolha a opo COPY.
Quando terminar o processo com sucesso, o sistema mostrar a tela como um
novo sub-objeto do module pool e voc poder edit-lo.

Importante: Sempre que voc copiar uma tela o flow logic tambm ser copiado, e o
Module que aparece declarado nos f10w logics somente a "chamada" desse
mdule, esteja ciente que as subrotinas (modules) podem ser compartilhadas por
vrias telas, e que a modificao de uma subrotina com esse nvel de amarrao
deve ser feita com muita ateno.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 116


Definindo Campos no Module Pool

Definindo campos no Module Pool

No processamento do dilogo, os dados so passados entre as telas e


programas ABAP durante a execuo. O sistema efetua a comunicao
automaticamente, mas necessrio que seja utilizado o nome idntico dos
campos nas telas e no module poo!.
Defina os dados globais no TOP include. Para que todas as telas possam
"enxerg-lo".

COPYRIGHT ALLlANSYS CONSULT1NG - 2002 Pg. 117


Criando Modules ABAP

Criando Modules ABAP

$TMP _ User's local objeets


LI programs

PBO module IINITIALIZE PAI module I READ_SPFLI


ln Inelude prog. MTALAo01 ln Inelude prog. I MTALAI01

Durante o processo de criao dos mdulos PAI elou PBO, voc pode associ-
los aos includes desejados ou deixar que o sistema automaticamente faa isto
por voc. Neste caso os mdulos no PBO sero criados nos includes com o
sufixo 001 (xxxxxI01), e os do PAI, nos includes com sufixo 101 (xxxxx001).

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. J 18


o processamento no the Module Pool

o Processamento do Module Pool

As subrotinas provenientes dos mdulos do PBO tm a adio OUTPUT, e as


provenientes do PAI tm a adio INPUT.

COPYRIGHT ALLIANSYS CONSULTING - 2002 Pg. 119


Chamadas via transao

Definindo chamadas via transao

Transaction code
Transaction text
Program
Screen number

Para executar um programa ASAP Module Pool, necessria a criao de uma


transao.
Transaes customizadas devem iniciar com Z ou Y.
O sistema armazena suas especficaes de transaes na tabela TSTC.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 120


Sequncia de Aes

Sequncia de Aes
Action sequence

Quando todos os mdulos do PBO terminarem a execuo, os contedos dos


campos na Work Area do ABAP so copiados para a Work Area da tela em
nomes idnticos.
Antes do PAI ser processado, os contedos dos campos na Work Area da tela
so copiados para a Work Area do ABAP em nomes idnticos.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 121


Input Checks no Module Pool

Input Checking no Module Pool

PROCESS

ENDMQDULE. j

E... message

Pronto para nova checagem

Se for necessria a checagem dos campos de entrada no module pool e incluir


um tratamento de mensagem de erro, dever ser utilizado o comando FIELD,
associado ao campo que desejamos checar. Se for necessrio o tratamento mais
apurado, pode ser associado um module especifico a esse comando.

COPYRIGHT ALLIANSYS CONSULTING - 2002 Pg. 122


Comando FIELD e transporte de dados

Comando FIELD e transporte de dados

No mdulo PAI, campos da tela so transportados com nomes idnticos para


Work areas do programa ABAP.
Campos no associados a comandos FIELD so transportados primeiro. Todos
os outros campos so copiados somente quando todos os FIELD tiverem sido
executados.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 123


Alterando a sequncia de telas dinamicamente

Alterando a sequncia de telas dinamicamente

Screen attrlbutes Screen attrlbutes

screen number 100 screen number

next 5Creen 1100 next screen 200

..

Se as funes do seu dialog program requererem um controle de processamento


diferenciado, pode ser feito o controle da sequncia das telas dinamicamente,
usando o comando SET SCREEN.
O comando SET SCREEN nnn temporariamente sobrepe o controle feito nos
atributos da tela no campo next screen.
A tela nnn deve ser uma tela do mesmo module pool.
Quando a tela corrente termina seu processamento, o sistema desvia o controle
para a tela definida no campo next screen. Se voc quiser cancelar a tela
corrente, pode ser usado o comando LEAVE SCREEN.
Pode ser usado o comando CALL SCREEN para controle da sequncia da tela
dinamicamente. Aqui, voc pode inserir a sequncia de telas a aps retornar
para a tela original que originou a chamada.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 124


Interpretando FuncUon Codes no programa

Interpretando Function Codes no Programa

PROCESS AFTERINPUT.

. MODULE USER_COMMAND
- II

Fleld IIst
Fleld name Lg Form FctCode
MORE

OKCODE 5 OK

Quando definido um Pushbutton para possibilitar ao usurio escolher funes


especificas, quando o boto pressionado, o evento PAI disparado.
Pode-se criar um FuncUon Code para cada Pushbutton.
Existe um formato (dicionrio) pr definido para funcUon codes, o OK, com
tamanho de 4 bytes.
Para permitir a execuo correta de uma funo associada a um pushbutton,
necessria a criao de um campo chamado exatamente de OKCODE. Este
campo contm o valor do funcUon code aps os dados serem transportados da
tela para o programa.

COPYRIGHT ALLIANSYS CONSULT1NG - 2002 Pg. 125


Menu Panter: Overview

Usa-se o Menu Painter para definir funes na tela em um status particular e


associ-los a um apropriado menu, a saber: menu bar, standard toolbar e
application toolbar.
Pode-se tambm definir um ttulo para a tela.
Em geral, define-se um menu bar para cada dialog program e associa-se esse
menu bar a um status. Para cada status, define-se qual funo estar
ativalinativa.
Cada alterao nos status (menus) deve ser seguida de uma re-gerao da tela
completa.
Para associar um status e um ttulo a uma tela, isto deve ser feito no seu PBO,
usando o comando SET PF-STATUS e SET TITLEBAR, respectivamente.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 126


Definindo Interfaces I

Definindo Interfaces I

Quando necessrio, o sistema prope valores default para o menu bar e tambm
teclas de funo, porm, podem ser modificadas.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 127


Definindo Interfaces II

Definindo Interfaces II

As funes mais utilizadas podem ser associadas tambm ao application toolbar.


Antes de fazer esse procedimento, um function code deve ser associado ao
pushbutton respectivo.
As funes standard so automaticamente associadas.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 128


Exerccos

Utilize este espao para colocar observaes a respeito dos exerclclos propostos pelo
instrutor.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 129


Capitulo 09
Modificao Dinmica em telas

Modificaes Dinmicas em Telas

II
A
B

Podem ser feitas mudanas temporrias em certos atributos de campos. Ex.:


Fazer com que um campo com atributo de display somente, seja alterado para
receber entrada de digitao etc.
Esta facilidade faz com que possam ser utilizadas as mesmas telas, somente
com a alterao dos atributos dos seus campos, desta forma a quantidade de
telas reduzida consideravelmente.

COPYRIGHT ALLlANSYS CONSULT1NG - 2002 Pg. 130


Atributos modificbeis da tabela SCREEN

Os campos da tela e seus respectivos atributos so armazenados


automaticamente em uma tebela interna (do sistema) chamada SCREEN.
A tabela SCREEN inicializada com os campos definidos no Screen Painter e
tem seus campos reinicializados a cada execuo do PSO.
Para determinar o campo que voc deve alterar um ou mais atributos, voc
precisa ler o campo SCREEN-NAME e os campos SCREEN-GROUP1 at
SCREEN-GROUP4, atravs de um Loop na tabela SCREEN.
As funes standard so automaticamente associadas.

COPYRIGHT ALLIANSYS CONSULTING - 2002 Pg. 131


Atributos do campo - Grupos de Modificao

Voc pode associar um campo a quatro diferentes grupos. Os nomes dos grupos
podem ter at 3 caracteres e podem ser definidos livremente.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 132


Modificaes Dinmicas em Telas - Programa

o cdigo (programa) para alterar dinamicamente os atributos dos campos devem


ser executados no evento PBO.
As mudanas devem ser feitas dentro de um Loop na tabela SCREEN, e
somente desta forma.(No possvel o acesso via READ TABLE...).
As mudanas feitas so realmente ativadas aps o comando MODIFY SCREEN.

COPYRIGHT ALLlANSYS CONSULT1NG - 2002 Pg. 133


Exerccios

Utilize este espao para colocar observaes a respeito dos exerclcios propostos pelo
instrutor.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 134


Captulo 10
Table Control

ABAP/4 lable Control (Function Scope)

possivel mostrar ou permitir entrada em linhas simples com a facilidade do


table control.
As caracteristicas so as seguintes:
O grid pode ser redimensionado para display ou edio dos dados.
Largura da coluna pode ser redimensionada, inclusive a modificao da
posio das mesmas.
A seleo da coluna fica em modo high-light.
As funes standard so automaticamente associadas.
Cabealhos de colunas so mostradas como pushbuttons para seleo de
colunas.
Scrolling Horizontal e Vertical.
Atributos da clula pode ser alterado dinamicamente.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 135


Preenchimento das tabelas de controle

Dalabase lable Inlernal lable Table control


("buffer")

1
2
1 ,
2
3
4
6 next paga
6
7
8
9

Por questes de performance, voc l os dados para o table control somente


uma vez e as armazena em uma tabela interna.
O controle das linhas obtido da leitura desta tabela interna.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 136


Princpios de Aplicao do Table Control

Screcn 1 Screen 2 (with table control)

H somente uma Work Area para edio de linhas no table control. Por esta
razo, voc precisa um LOOP... ENDLOOP para cada table control em ambos os
eventos PBO e PAI no respectivo flow logic.
No PBO, uma linha do table control deve ser preenchida com uma linha da
tabela interna a cada passo do loop.
Similarmente, o mesmo processo feito no PAI.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 137


Transporte de campos no PSO

Em telas contendo table contrais, a sequncia de transporte dos campos muda.


No PBO, campos so transportados do module pool para a tela a cada vez que o
loop precessado no flow logic. Os demais campos so transportados
normalmente.

COPYRIGHT ALLIANSYS CONSULTING - 2002 Pg. 138


Transporte dos Campo no PAI

PROCE$$ AFTER INPUT.

LOOP ...
MODULE INPUT_2
ENDLOOP.
FIELD Fl
MODULE INPUT_3

No PAI todos os campos de tela que no pertencem ao table control e no esto


especificados em qualquer comando FIELD so transportados aos respectivos
work fields do mdule pool.
O contedo do table control transportado linha a linha aos respectivos work
fields do module pool a cada passo do loop.
As funes standard so automaticamente associadas.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 139


Criando Table Controls

IAtlributes II IOtct.lprog.netds I Fteld list


lexl I'
Entry I

Table

No Editor grfico, voc escolhe TABLE para criar o table control e usa o boto
esquerdo do mouse para posicion-lo na tela.
Ento aps esse procedimento, defina os campos para o table control atravs do
dicionrio ABAP.

COPYRIGHT ALLIANSYS CONSULTING - 2002 Pg. 140


o comando CONTROLS define o objeto de dados do tipo TABLEVIEW, que
corresponde ao tipo CXTAB_CONTROL, definido no dicionrio ABAP.
Os valores iniciais so colocados atravs do Screen Painter. Com a clusula
USING SCREEN, voc determina a tela a qual ser referenciada com os valores
iniciais do table control.

COPYRIGHT ALLlANSYS CONSULT1NG - 2002 Pg. 141


Table Controls no Flow Logic 1

WITH CONNECTIONS
CURSOR CONNECTIONS

ENDLOOP.

PROCESS AFTER INPUT.


MODIFY SPFLI_ITAB
FrELD SPFLI_ITAB-MARK INDEX
MODULE MODIFY_SPFLI_ITAB CONNECTIONS -CURRENT_LINE
ON REQUEST.
ENDLOQP.

No flow logic, voc pode ler tabelas internas usando o comando LOOP. Voc
define a referencia dos respectivos table controls especificando WITH CONTROL
<ctrl>.
Voc determina qual tabela de entrada vai ser lida especificando CURSOR
<CTRL> - CURRENT UNE. O sistema calcula a linha corrente atravs do
TOP_UNE + SY-STEPL.
O sistema calcula o TOP_UNE automaticamente sempre que h alterao na
posio do scroll-bar.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 142


labia Controls no Flow Logic 2

SFLIGHT_ITAB_READ
READ TABLE SFLIGHT_ITAB
INDEX FLIGHTS -CURREUT_LINE
II" SY-SUBRC EO O.
SFLIOHT_!TAB
TO SFLIGHT.
PROCESS BEFORE OUTPUT. ELSE.
LOOP WITH CONTROL FLIGHTS.
ENDIF.
MODULE ENDMODULE.

ENDLOOP.

PROCESS AFTER INPUT. MODULE MODIFY_SFLIGHT_ITAB


L O O P WITH CONTROL FLIGHTS MOVEwCORRESPONDING SFLIQHT
FrELD SFLIGHT-PRICE TO SFLIGHT_ITAB.
MODULE MODIFY_SFLIGHT_ITAB MOOIFY SFLIGHT_ITAB
ON REQUEST. INDEX FLIGHTS -CURRENT_LINE
ENDLOOP. ENDMODULE.

Se voc usa o comando LOOP sem uma tabela interna no flow logic, voc
precisa ler os dados no PBO o qual chamado a cada passo do loop.
Desta forma o sistema no pode determinar o nmero de entradas desta tabela,
voc precisa ento do comando EXIT FROM STEP-LOOP para garantir que
linhas em branco no sero preenchidas no table control.
Voc precisa tambm determinar o nmero de linhas para o scrolling vertical.

COPYRIGHT ALLlANSYS CONSULT1NG - 2002 Pg. 143


Modificando Table Controls

Voc pode mudar os atributos do table control atravs dos atributos dos campos.
Para modificar os atributos de uma clula individual voc aitera a tabela
SCREEN, normalmente.

COPYRIGHT ALLIANSYS CONSULTING - 2002 Pg. 144


Paginao do Table Control (Exemplo)

MODULE OUTPUT.
LOOPLINES = SY-LOOPC.
ENDMODULE,

MODULE INPUT.

WHEN I F21'
FLIGHTS-TOP_LINE 1.
WHEN' F22 I .
FLIGHTS-TOP_LINE =
FLIGHTS-TOP_LINE - LOOPLINES.
IF FLIGHTS-TOP_LINE < 1.
FLIGHTSTOP_LINE 1.

WHEN I F24'
FLIGHTS-TOP_LINE =
FLIGHTS_ITAB_LINES
LOQPLINES + 1.
ENDMODULE.

Para implementar a paginao necessrio calcular usando o atributo do table


control TOP_L1NE.
Para isso (no PAI), voc precisa saber qual o nmero de linhas corrente na
tabela respectiva do table control.
No PBO, a varivel de sistema SY-LOOPC contm o corrente nmero de linhas
do table control. No PAI, ela contm o nmero de linhas correntemente
carregadas.
SY-LOOPC somente contm o valor entre LOOP e ENDLOOP porque ela conta
o nmero de passos do loop.

COPYRIGHT ALLlANSYS CONSULT1NG - 2002 Pg. 145


Exerccios

Utilize este espao para colocar observaes a respeito dos exercicios propostos pelo
instrutor.

COPYRIGHT ALLlANSYS CONSULT1NG - 2002 Pg. 146


Captulo 11
Tabstrp

A tcnica de utilizao de TABSTRIPS possibilita de uma forma fcil a apresentao de


diferentes componentes de uma aplicao em uma simples tela e permitindo a navegao
entre os mesmos.

Basicamente utilizado quando em uma tela com diferentes tipos de dados "poluem"
demasiadamente uma tela. Neste caso so criadas vrias "pastas" (tabstrips) que so
facilmente acessadas.

Em cada tela do Tabstrip criada uma Subtela, que onde os componentes da mesma so
posicionados. Esses elementos basicamente podem ser:
Campos
Step-Ioops
Table-controls
Botes

A seguir veremos passo a passo como um tabstrip criado:

COPYRIGHT ALLIANSYS CONSULT1NG - 2002 Pg. 147


1 - Criao do Programa Online (Module Pool)

Na transao SE80 (Object Navigator), crie um programa OnLine (Module Pool) que dever
ser utilizado para servir de base das telas a serem criadas no Screen Painter.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 148


2 - Criao das Telas - Screen Painter

Aps a criao do Programa On-Line, efetuar a criao das telas, as quais contero os
tabstrips.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 149


3 - Desenhar a tela com os tabstrips desejados.

Nesta etapa, para o desenho dos tabstrips, deve-se escolher a opo indicada acima.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 150


4 - Definir os atributos do tabstrip

Definir um nome para a tela principal do Tabstrip e criar tantas pastas quanto necessrio,
atravs do campo indicado.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 151


5 - Definio da Subtela.

Definir uma rea onde os campos sero mostrados. Esta rea definida como subtela
(conforme indicado).

COPYRIGHT ALLIANSYS CONSULT1NG - 2002 Pg. 152


6 - Associao das pastas com a(s) Subtelas(s).

Podem ser criadas tantas subtelas quanto pastas a serem utilizadas, porm, para minimizar
os controles e por conseguinte a complexidade do programa, sugerimos que seja criada uma
subtela somente (este procedimento somente possivel pois as pastas compartilham uma
rea idntica - mesmo tamanho. caso contrrio isso no seria posslvel).

Nas telas de atributos de todas as pastas, associar as subtelas na janela de atributos.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 153


7 - Definio de mais pastas

Caso haja necessidade de criao de novas pastas, aumente o campo indicado com
o valor desejado.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 154


8 - Criao da tela com os campos de dados.

Nesta etapa, dever ser criada uma ou mais telas (de acordo com o necessrio) para que os
campos sejam armazenados.

Esta teia dever ser montada dinamicamente no espao reservado na subteia dos tabstrips.

COPYRIGHT ALLlANSYS CONSULT1NG - 2002 Pg. 155


9 - Definio do Lay-out dos campos das telas.

Efetuar a criao dos campos da forma em que devero aparecer na tela pronta.
Este procedimento idntico ao desenvolvimento das telas de um programa on-Iine
normal.

COPYRIGHT ALLlANSYS CONSULT1NG - 2002 Pg. 156


10- Definio dos controles do tabstrip.

pool SAPMZ001_TAB *
*& *
*&---------------------------------------------------------------------*
*&
-I -
*&---------------------------------------------------------------------*
IHGLUDE TAOTUP

- IHCLUDE
- IHCLUDE !'12U01-TAOI U1 --
- IHCLUDE
-
No Programa Inelude xxxxTOP, dever ser inserido o cdigo abaixo:

*&---------------------------------------------------------------------*
*& Include H2UU1 TABSTOP -
*& - *
*&---------------------------------------------------------------------*

data: num_tela like sy-dynnr value 300' ,

controls: tela type tabstrip.


I

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 157


11 - Chamando a execuo do Tabstrip.

PROCESS BEFORE OUTPUT,


* t'100ULE STATUS_0200.
module seta_tela.
call subsct'een subtela including 'SAPt'lZ 001_TAB' num_tela.
*
PROCESS AFTER INPUT.
* MODULE USER_COHHANO_0200.

o comando Call Subscreen ... responsvel pela "montagem dinmica" da tela (subtela) na
tela principal do tabstrip.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 158


12 - Navegao pelo Tabstrip

*----------------------------------------------------------------------*
***IMGLUDE MZ001_TABO01 ,
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
l'lODULE STATUS_0100 OUTPUT,
SET PF-STATUS 'MENU'.
SET TITLEBAR '001'.
EMDMODULE. .. STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*e, l'lodule SETA_TELA OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE SETA_TELA OUTPUT.
case SY-UCOllllll.
'OOT1'.
nUlIl_tela = '0300'.\
'OOT1',
=

l'lhen 'OOT2'.
nUlIl_tela = '0400'.
'OOT2',
"Ihen 'OOT3'.
nUlIl tela = '0500'.
'OOT3',
endcase.
ENDMODULE. " SETA_TELA OUTPUT

A navegao conseguida atravs dos comandos acima, que devem ser declarados
no PBO da tela principal.
Ao utilizar seleo dinmica de tela em um tabstrip control:

Todas as pginas compartiiham a mesma rea de subtela.

As telas de subtelas so chamadas no flow logic usando uma varivel.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 159


No bloco PBO, voc deve chamar um mdulo antes da chamada subtela que copia o nome
da subtela que se deseja chamar na varivel apropriada.

Deve ser colocado o cdigo da funo da pgina ativa na varivel ACTIVETAB da tabstrip
control.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 160


13 - Tabstrip pronto.

Aps todos esses passos, s criar a transao e a tela ser mostrada conforme acima.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 161


Exerccios

Utilize este espao para colocar observaes a respeito dos exerclcios propostos pelo
instrutor.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 162


Captulo 12
Sapscript

1 - O Que SAPscript e quando utilizar

SAPscript a ferramenta do SAP para criao de relatrios mais elaborados,


chamados de formulrios. A opo pela utilizao da ferramenta geralmente se d pela
necessidade de alguns recursos que no podem ser obtidos atravs de cdigo ASAP
comum, como nos chamados "reports", tais como insero de logotipos, fontes de tamanhos
ou tipos diferentes, etc... Muitas vezes, tambm, dependendo da necessidade do relatrio,
pode compensar mais utilizar o desenvolvimento de um relatrio convencional sobre um
formulrio pr-impresso, que j contenha o layout e logotipo desejados.

2 Limitaes e Problemas da Ferramenta

Embora seja a ferramenta de gerao de formulrios mais poderosa do SAP, o


SAPscript ainda apresenta uma srie de limitaes, principalmente no que diz respeito a
verificao de erros e anlise de debug. Um comando escrito na grafia errada dentro do
formulrio, jamais ser detectado pelo mesmo. Somente a no funciopnalidade esperada do
comando poder levar ao programador descobrir se prprio erro.
O modo debug no ambiente de SAPscript pode ser ativado na transao SE71
(Ferramentas -> Processamento de Texto -> Layout Set), atravs do menu Utilittios -> Ativar
Debug. O mtodo correto consiste em se preencher o nome do formulrio e idioma nos
campos da tela, antes de percorrer o caminho do menu. Algumas vezes, no entanto,
principalmente para um processamento em backgroubd, o formulrio no permite ser
debugado, embora percorrendo o caminho acima citado, nenhuma mensagem de
impossibilidade seja exibida. Simplesmente, nenhuma tentativa de debug funciona. Nesses
casos, o programador deve utilizar de artiffcios como imprimir o contedo dos campos a
serem checados em pontos estratgicos do formulrio, para observar seu comportamento.
O comportamento de um formulrio SAPscript pode tambm ser muitas vezes irritante,
principalmente quando se desconhece alguns de seus detalhes. Um dos problemas mais
comuns do formulrio SAPscript quanto a utilizao de logotipos nos relatrios gerados.
Sua filosofia pode parecer bastante simples e ,mas essa operao bastant senslvel, e
devem ser salientados alguns pontos:
1. O objeto com o logotipo deve ser gerado a partir de um programa ASAP, atravs
da transao SE38, chamado RX.... O modo como o arquivo com o logotipo
tratado, deve ser cuidadosamente verificado, pois implicar no sucesso ou fracasso
da exibio do logotipo esperado. Inicialmente, deve ser ressaltado que o arquivo
deve estar no foramto .TIF . Observado esse ponto, assegurar que o arquivo no
apresente mais do que 16 cores e por ltimo o seu tamanho no apresenta uma
relao direta com o tamanho que ser obtido dentro do formulrio SAPscripl. At
onde se tem noticias, ningum nunca descobriu uma relao correta e geral para o
tamanho de um logo em pixels e seu tamanho dentro do formulrio. Geralmente essa
relao s observada caso a caso, aps algumas tentativas de erro e acero.

2. Nessa hora entra a segunda dificuldade de se trabalhar com logotipos em SAPscripl.


Ao se executar o formulrio, em uma visualizao na tela, o usurio nunca Ir
conseguir enxergar o logotipo. Esse somente ir aparecer na impresso em papel
(ainda que impresso do layout do formulrio, e no seu contedo final - Utilitrios ->
Imprimir Layout).

Essas duas caracteristicas podem tomar algumas horas do programador, ainda que bem
experiente no trabalho com SAPscripl.
importante se observar tambm que os formulrios so "client dependent", o que
significa dizer que devem ser transportados a todos os clientes em que se deseja executa-lo,

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 163


independentemente de estar na mesma instncia que j o tenha. Isso no pareceria ser
muito complicado se no fosse um trabalho a mais controlar a verso de todos no momento
que uma alterao feita. Pior do que eles, so os objetos gerados como os logotipos, que
alm de dependentes do cliente, no esto vinculados a nenhuma request, no podendo
nem ser transportados de um cliente para outro.
Por falar em transporte, sempre bom reforar que no momento do transporte de um
formulrio SAPscript, necessrio assegurar que todas as estruturas utilizadas por ele,
tenham sido transportadas anteriormente. O objetivo assegurar que tudo que ser utilizado
pelo formulrio j esteja no cliente, no momento em que este for introduzido, para que no
haja erros. A ordem mais aconselhada para esses transportes seria:

1. Estrutura
2. Layout
3. Programa de povoamento

Tambm vale a pena chamar a ateno para que essas 3 classes de objetos estejam
em requests separadas no desenvolvimento de um projeto, o que pode evitar problemas
quando algum deles no estiver no desenvolvimento propriamente e necessitar ser reparado.

Programa de Povoamento de SAPscript

O programa de povoamento o programa responsvel pelo controle da impresso


do formulrio. atravs dele que o formulrio aberto, que os dados so enviados para as
janelas corretas, que feito o controle de quebra de pginas, que feito o fechamento do
formulrio, etc... , feita nele. O formulrio apenas um "dispositivo" para output dos dados.
A construo de um programa de povoamento deve ser a seguinte estrutura:

Abertura de um formulrio
Inicializao de um formulrio
Seleo dos dados do formulrio
Impresso dos dados nas janelas do formulrio
Fechamento do formulrio

Abertura de formulrio

O primeiro passo para a impresso de um SAPscript atravs de um programa a


abertura de um formulrio para que se possa fazer o povoamento.

Para que se possa inicializar um formulrio necessrio que este esteja aberto.
Portanto, obrigatria a presena de um comando de abertura num programa de
povoamento.

A abertura de um formulrio gera automaticamente a inicializao de um formulrio.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 164


o comando para a abertura de um formulrio a seguinte funo:
Call function 'OPEN FORM'
exporting
* APPLICATION 'TX'
ARCHIVE INDEX , ,
* , ,
* ARCHIVE PARAMS
DEVICE 'PRINTER'
* DIALOG 'X'
FORM = (nome do formulrio)
LANGUAGE = (idioma do formulrio)
* OPTIONS ITCPO
* importing
* language
* new_archive_params
* result
exceptions
canceled 1
device 2
form 3
options = 4
unclosed 5
others = 6.

Os parmetros mais importantes a serem passados para a funo so:


DEVICE Dispositivo onde ser gerado o formulrio (geraimente PRINTER)
FORM Nome do formulrio a ser aberto
LANGUAGE Idioma a ser utilizado

Dois outros parmetros tambm muitas vezes utilizados so o dialog e o options.


No primeiro, indica-se se a caixa de dilogo para confirmao da impresso deve ou
no ser apresentado. Caso este deva ser omitido, os dados para impresso sero tomados
de uma estrutura a ser colocada no segundo parmetro. Nessa estrutura so passados os
dados tais como nmero de cpias e nome da impressora. A opo de no exibio da caixa
de dilogo est diretamente ligada a utilizao do segundo parmetro. Se a exibio estiver
desabilitada (DIALOG=' '), mas a estrutura ITCPO no estiver preenchida, a caixa de
dilogo ser exibida.
Alguns dos campos mais importantes e que normalmente so utilizados na estrutura
ITCPOso:
TDCOPIES Nmero de cpias
TDDEST Dispositivo de salda
TDPREVIEW Print Preview
TDIMMED Salda imediata

COPYRIGHT ALLlANSYS CONSULT1NG - 2002 Pg. 165


Exemplo de abertura do formulrio ZSCR_CURSO.
Call function 'OPEN_FORM'
exporting
* APPLICATION 'TX'
* ARCHIVE INDEX ' '
* ARCHIVE PARAMS ' '
DEVICE = 'PRINTER'
,,
DIALOG
FORM = 'ZSCR_CURSO'
LANGUAGE = 'P'

OPTIONS = ITCPO
* importing
* language
* new_archive-params
* result :=

exceptions
canceled 1
device 2
form 3
options 4
unclosed 5
others 6.

Neste exemplo, o formulrio ZSCR_CURSO no idioma portugus est aberto, sem a


exibio da caixa de dilogo de impresso, utilizando a impressora IMP1 e executando a
impresso imediata de 2 cpias.

Inicializao de um formulrio

A abertura de um formulrio automaticamente gera a inicializao do mesmo.


Mas, imagine por exemplo que estejamos gerando relatrios para uma empresa de
computadores onde, para cada novo computador vendido, deve ser gerado um novo
relatrio, e esse relatrio deve conter todos os componentes presentes no computador em
questo.
A abertura de um formulrio inicia o primeiro, mas para cada novo computador
vendido um novo formulrio deve ser gerado.
Para isso utilizados o comando de inicializao. Este comando permite que, numa
mesma impresso, sejam gerados vrios formulrios diferentes, como se estivssemos
abrindo um novo para cada computador vendido.
Este comando no obrigatrio e pode no ser utilizado caso no haja necessidade
da quebra e criao de vrios formulrios para uma s seleo de dados.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 166


o comando para inicializao de um formulrio a seguinte funo:
Call function '8TART_FORM'
exporting
* ARCHIVE INDEX
FORM = \ ,
LANGUAGE
* 8TARTPAGE
* PROGRAM
* importing
* language =
exceptions
form 1
format 2
unended 3
unopened = 4
unused 5
others 6.

A funo muito similar funo OPEN_FORM, e novamente mais importante so o


nome (FORM) e o idioma (LANGUAGE) do formulrio.
Para que se possa utilizar um comando START_FORM obrigatrio que um
comando de OPEN_FORM tenha sido executado.

Seleo dos dados

A seleo dos dados feita normaimente com comando SELECT e demais


comandos ABAP, como j foi visto em tpicos anteriores.
Um ponto importante que deve ser obseNado que no poss[vel utilizar tabelas
internas e variveis do programa para a impresso dos dados SAPscripl. Portanto, se
algum dado que deva ser impresso estiver numa tabela interna ou varivel, este deve ser
copiado para uma estrutura para que possa ser enviado ao SAPscript.

Impresso dos dados nas janelas

A impresso dos dados nas janelas na maioria das vezes feita simultaneamente
com a seleo dos dados, ou seja, a medida que os dados so selecionados, so enviados
imediatamente para o formulrio.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 167


o comando para impresso dos dados a seguinte funo:
Call function 'WRITE FORM'
exporting
ELEMENT
, ,
FUNCTION \SET\
* \ BODY \
* TYPE
WINDOW = 'MAIN'
* importing
* pending_lines
exceptions
element 1
function = 2
type 3
unopened 4
unstarted 5
window 6
others = 7.

Dois parmetros so os mais importantes:


ELEMENT Determina qual Data Element ser utilizado dentro do SAPscript
WINDOW janela na quai os dados devem ser impressos

Neste ponto fica evidente a diferenciao entre os tipos de janela MAIN e demais
janelas.
Para as janelas do tipo MAIN, cada comando de escrita (write_form) significa uma
nova linha no formulrio e o valor a ser impresso o valor que o campo armazena no
m9mento do comando de impresso.
Por exemplo, digamos que o campo MARA-MATNR tenha o valor '1234' e que um
comando de impresso seja dado para a janela MAIN que ir imprimir este campo. Logo em
seguida uma nova seleo da tabela MARA feita e o campo MATNR agora vale '5678'. Se
uma nova impresso na janela MAIN for executada o resuitado ser o seguinte:
1234
5678

J as janelas que no forem do tipo MAIN imprimem os dados uma nica vez, no
final da impresso do formulrio ou na quebra de pgina, com os valores armazenados nos
campos no momento do encerramento ou no momento da quebra, e no no momento da
escrita (write_form), ou seja, se no exemplo anterior fosse utilizada uma janela no-MAIN, o
resultado final seria somente 5678.
Na realidade, a utilizao de um comando WRITE_FORM numa janela no-MAIN
utilizada para a escolha de qual eiemento de texto ser utilizado para a impresso dos
dados.
Exemplo:
Uma janela HEADER no-MAIN contm dois elementos de texto chamados FRASE1
e FRASE2 da seguinte forma:
IE FRASE1
&MARA-MATNR& Teste de Frase 1
IE FRASE2
&MARA-MATNR& Teste de Frase 2

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 168


Se um comando WRITE_FORM for executado para a janela HEADER utilizando o
elemento de texto FRASE1,
Call function 'WRITE_FORM'
exporting
ELEMENT 'FRASE1'
* FUNCTION \SET'
* TYPE 'BODY\

WINDOW = 'HEADER'

estar sendo indicado ao programa que, ao se escrever o formulrio, deve ser impresso o
elemento de texto FRASE1 para a janela HEADER (somente um elemento de texto
utilizado para cada janela no-MAIN).
No caso do exemplo, se o campo MATNR for igual a '1234' no encerramento do formulrio,
seria impressa a seguinte frase:

1234 Teste de Frase 1


o elemento de texto a ser impresso ser sempre o ltimo a ser selecionado antes do
finai ou da quebra de pgina.
Se nenhum for selecionado, ao encerrar o formulrio ou mudar de pgina sero
impressos os dados que no pertenam a nenhum elemento de texto. Portanto, no caso de
um campo que deva ser impresso sempre em todas as pginas, como nmero de pgina por
exemplo, basta coloca-lo fora de qualquer elemento de texto e no selecionar nenhum
elemento de texto para a janela que, automaticamente, este dado ser impresso em todas as
pginas.

3 - O Formulrio
Trabalhar com um formulrio SAPscript no complicado, desde que se entenda
seus componentes da maneira correta. Um layout composto por vrios componentes,
dentre os quais podemos citar:

3.1. Header
Informaes gerais do formulrio, como formato e orientao da pgina em que ser
utilizado, pargrafo e fontes default do mesmo (quando no for especificado nenhuma dentro
do form). Nesse tpico aparece tambm o ttulo do formulrio, a classe de desenvolvimento
do mesmo e os idiomas do formulrio original e o corrente,

3.2. Pargrafos
So elementos que podem ser criados pelo usurio e apresentam informaes dos
textos de uma determinada janela. Nesses pargrafos so determinados tipos de fontes,
tabuiaes, negrito ou sublinhado, etc.. ,
Para criar um pargrafo novo, utilizar o caminho do menu Processar - > Create
Element, lembrando que em um formulrio standard, somente se pode alterar o layout no
idioma original.

3.3. Caracter String


So informaes semelhantes s do pargrafo, no que diz respeito a formatao de
textos, no entanto podem ser aplicados a trechos e no necessariamente a linhas do
formulrio,

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 169


Sua sintaxe de utiiizao se assemelha a programao HTNL, conforme exemplo a
seguir. Imagine um Caracter string definido com o nome B, cuja formatao de texto seja o
incremento do modelo negrito a uma determinada fonte. Sua utilizao seria:
<B>Texto</>
E o resultado seria:

Texto

3.4. Janelas
As janelas so a base da construo do layout. As janelas podem ser criadas sem
limites e tem por finalidade dividir espacialmente as regies de um formulrio para operaes
independentes.
Essas janelas podem ser criadas basicamente em 3 tipos distintos:

MAIN
Janelas do tipo MAIN so as mais importantes do relatrio Oanela pela qual o
formulrio se guia). Somente permitido um tipo de janela MAIN por formulrio, e a nica
janela obrigatria em uma pgina. Pode-se criar mais de uma janela MAIN por pgina, no
entanto essas janelas, na verdade, s so divididas fisicamente, uma vez que seus
elementos e processamentos obedecem aos mesmos comandos, e no podem ter nomes
diferentes. A passagem de uma janela MAl N para outra pode ser automtica ou forada pelo
usurio. Quando o espao tisico de uma janela MAIN est tomado e necessita-se de mais
dados na mesma, o formulrio automaticamente passa prxima janela MAiN do formulrio.
atravs desse principio que um relatrio ganha nmero de pginas automaticamente
quando da execuo de um relatrio desse tipo, conforme os dados so preenchidos. Para
forar a passagem de uma janela MAIN para outra, o usurio poder utilizar o comando:

I: NEXT-WINDOW

A lgica de seqUncia das janelas MAIN de um formulrio segue a um critrio.


Dentro de um a pgina a navegao de uma MAIN para outra segue de acordo com os
Indices dessas janelas dentro do formulrio, e quando uma nova pgina gerada, a
contagem segue a mesma disposio, continuamente.
O exemplo abaixo, figura a situao de uma diagramao conforme uma pgina de
jornal. A seqUncia de preenchimento dos dados na pgina atravs do povoamento segue:
Pg. 1

Pg. 2

COPYRIGHT ALLlANSYS CONSULT1NG - 2002 Pg. 170


VAR
Essa janela apresenta uma caracterlstica prpria, que necessita de verificao
constante do formulrio com seus dados, que podem variar durante a execuo do relatrio.
Esse tipo de janela deve ser utilizada quando se pretende trabalhar com textos que variam,
como exemplos de mensagens que podem mudar durante o decorrer da execuo do
formulrio.

CONST
So janelas que no merecem multa preocupao de processamento por parte do
formulrio, uma vez que seus dados devem ser mantidos os mesmos desde seu primeiro
preenchimento at o fechamento do formulrio. Geralmente nesse tipo de janela so
incluldos objetos e textos que permanecem os mesmos durante todo o relatrio,
independente do nmero de pginas, como logo e rodaps.
Na atual verso do SAP, esta distino de ateno de processamento do formulrio
s terica, mas deve ser levada em conta, pois deve ser tratada por verses mais novas do
sistema.

3.5. Pginas
As pginas so elementos responsveis pelo agrupamento das janeias durante
certos momentos do relatrio. Geralmente s so definidas duas pginas, que acabam em
processo reflexivo, por formulrio.
Geralmente uma pgina FIRST, que apresenta um layout de apresentao dos
documentos e outra NEXT, que contm os layouts das outras pginas subseqUentes do
documento. Isso acontece, por exemplo, quando se quer obter um relatrio com o logotipo da
empresa na primeira pgina, mas as seguintes, devem ocupar a folha inteira com os dados
do relatrio at o final. Cada uma das pginas criadas devem conter um nome (FIRST, NXT,
...) e pode conter um pargrafo default e um link para a prxima pgina. Esse Iink serve para
formar a seqUncia em que as pginas do relatrio devem ser geradas. Seguindo o exemplo
anterior, deverlamos informar:
FIRST -> NEXT
NEXT -> NEXT

Aps a primeira pgina, seria chamada a segunda, com um layout diferente (sem o
logotipo). A partir dessa, todas apresentariam o mesmo tipo de layout (com dados do
relatrio aproveitando a pgina inteira).

3.6. Page Windows


As page windows podem ser entendidas pelo nosso conceito de layout propriamente
dito. So os elementos responsveis pelo aparecimento ou no das janelas dentro de uma
determinada pgina, bem como seus posicionamentos em relao folha a ser impressa.
tambm atravs das page windows que o programador ter acesso aos Text Elements de
cada uma das janelas, responsveis pelo tratamento dos dados em tempo de execuo do
formulrio.

3.7. Text Elements


Corresponde lgica de processamento e comportamento de uma janela durante a
execuo do formulrio. responsvel pelos valores que sero impressos no mesmo, bem
como seu posicionamento dentro da janela e seu tipo de caracter.
De dentro de uma Page Window, posslvel selecionarmos qualquer uma das
janelas existentes em uma determinada pgina, simplesmente clicando o mouse sobre o seu
nome e apertando o boto selecionar, ou memso dando um "doubl-click" diretamente sobre

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 171


o nome da janela desejada. Uma vez selecionada a janela, se apertarmos o boto Text
Element, uma tela semelhante a do editor de ABAP/4 do SAP ir se abrir, com as linhas onde
a lgica da janela ser introduzida.
Nesses elementos do SAPscript, o programador poder utilizar alguns comandos
semelhantes ao do ABAP/4, com a indicao de que se trata de uma linha de comando para
o formulrio (/:, esquerda da linha). Abaixo, alguns dos comandos que podem ser utilizados
de dentro dos elementos de texto de uma janela em SAPscript:

IF... EL5E ... ENDIF


CA5E..,WHEN
DEFINE

PERFORM U5ING CHANGING


BOX... FRAME

INCLUDE

o comando INCLUDE dentro de uma janela de um formulrio SAPscript serve para


inserir um objeto no mesmo. Esse objeto pode ser desde um logo, at um texto com vrias
linhas. A sintaxe bastante simples, e somente deve-se ter um cuidado bastante especial
com o idioma que se trata esse objeto. Independentemente do idioma do formulrio, deve-se
sempre utilizar o idioma em que o objeto foi criado.

4 Manuteno de formulrios

A maioria dos formulrios feita pela mesma transao cilada anteriormente (SE71).
Nessa ela o nome do formulrio e o idioma do mesmo so parmetros obrigatrios. Nessa
tela so feitas praticamente todas as operaes com os formulrios do SAP.

4.1. Criar um formulrio novo


Um formulrio pode ser criado inteiramente a partir dessa transao. Preenchendo
um nome do formulrio, que comece por Z ou Y, no diretamente seguidos por caracteres
especiais, como o '_', o usurio poder apertar o boto Criar ou ir ao menu Layout .> Criar.
a idioma preenchido ser entendido como idioma original do formulrio. A partir dai, outros
formulrios podero ser traduzidos a partir desse original, nas mais diferentes IInguas, porm
todos mantero as caracterlsticas do formulrio original. Ao mesmo tempo que uma
alterao desse original, implica na imediata alterao de todos os seus "filhos".

4.2. Copiar formulrios em outro idioma (Traduo)


Uma vez criado um formulrio (conforme descrito acima), poder ser copiado sobre
ele, as informaes de um outro formulrio do mesmo client, atravs do menu Layout .>
Copy form, j de dentro da primeira tela do formulrio criado (Header).

Ateno que essa cpia fiel ao formulrio copiado, e no poupa nenhuma


informao que j existisse no formulrio que recebe a cpia.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 172


4.3. Copiar um formulrio de outro cliente
Um formulrio pode tambm ser copiado de um outro client na mesma instncia,
atravs do menu Utilitrios -> Copy from c1ient, da primeira janela da transao SE71,
fora de qualquer formulrio especfico,
Essa opo Ir abrir uma outra janela que recebe basicamente 3 informaes.
Nome do formulrio a ser copiado
Cliente em que se encontra o original
Nome da cpia no client corrente

Os outros dois campos de check Box geralmente no so alterados, pois tratam de


informaes como cpia do formulrio somente no idioma original e exibio ou no de um
log de erros ao final da execuo da cpia,
Uma vez entrados os parmetros, deve-se apertar o boto Executar e obter uma
cpia com sucesso em todos os idiomas existentes do formulrio,
O cliente de origem do formulrio, quando for cpia de forms standards, deve ser
mantido 000, uma vez que o repositrio dos formulrios originais do SAP encontram-se todos
no 000, e podem ser lidos de todos os outros.

5 - Incluso de logos no formulrio

Utilizar logotipos em formulrios SAPscript, no das tarefas mais simples que se


possa ter. Teoricamente falando, o processo bastante simples e consiste em gerar no
sistema um objeto no formato hexadecimal, que possa ser interpretado pelo SAPscript,
originando a incluso de uma imagem. No entanto, devido as limitaes expostas no comeo
deste documento, isso pode levar um certo tempo at reproduzir o resultado desejado.
Para gerarmos o objeto no client desejado (lembre-se que esse objeto no pode ser
transportado... ), devemos executar o programa standard RSTXLDMC, com um arquivo no
formato .TIF.
(A figura no pode ter mais de 16 cores)
Preencher o primeiro campo (file name), com o path complexo do arquivo da imagem
do logotipo. Esse caminho pode ser no servidor ou local.
O segundo campo (type) determina se o logotipo deve ser gerado monocromtico
(default) ou colorido.
O ltimo parmetro que exige ser preenchido o Text Name, onde feita a
atribuio do nome do objeto que ser referenciado de dentro do formulrio (padro: ZHEX-
MACRO-... ).
A gerao desse logo est intimamente ligado ao formato do arquivo TIF. Isso quer dizer que
o seu tamanho obtido no formulrio est relatrio ao tamanho da imagem geradora do objeto.
Tomar cuidado com o nmero de cores da imagem (16 cores) e lembrar na hora de
fazer os testes, que o logotipo no aparece na tela, somente em impresses no papel.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 173


6 - Alterao de Programas I Layout Standards
Na maioria das vezes o trabalho a ser realizado com SAPscript alterar os originais
do SAP, pois estes raramente atendem s exigncias do cliente.
O procedimento para alterao depende muito das caracterlsticas do programa de
povoamento standard e das caracterlsticas das funes do SAP que iro utilizar tal
SAPscript. No entanto, alguns procedimentos so padro, e outros so utilizados na grande
maioria das alteraes.
1. Fazer uma cpia do programa standard e dos includes (se existirem) que necessitam
de alterao
2. Fazer uma cpia do layout standard
3. No DELETAR janelas, elementos de textos, etc. na cpia do, layoutset. Mesmo que
alguns (ou todos) os dados e janelas do standard no sejam utilizados, o programa
de povoamento continuar tentando executar escritas em janelas e elementos de
dados especlficos, j que uma cpia do standard. Os novos dados e janelas devem
ser apenas adicionados.
4. Encontrar as posies idias para alteraes no programa de povoamento. Quando
os novos dados devem ser impressos na MAIN, procurar por comandos
WRITE_FORM dentro do programa e colocar as alteraes o mais prximo posslvel
do WRITE_FORM correto. Se devem ser impressos em outras janelas, procurar pelo
comando CLOSE_FORM I END_FORM e colocar as alteraes imediatamente antes
destes comandos (sempre que posslvel)
5. Colocar todas as alteraes juntas sempre que possfvel, identificando visivelmente,
atravs de comentrios, o bloco de alteraes. Isso facilita a manuteno e
visualizao do cdigo, alm de facilitar a busca por posslveis erros, visto que, na
sua grande maioria, os programas standard da SAP so bastante complicados.

COPYRIGHT ALLlANSYS CONSULTING - 2002 Pg. 174

Vous aimerez peut-être aussi