Escolar Documentos
Profissional Documentos
Cultura Documentos
ABAP
Workbench
ASAP Workbench
Release: 4.6C
Departamento: Data:_'_'_
Marcas Registradas
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.
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
CAPTULO 7"", ,', , ,', ,", " " ,""", ""', ,' 85
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
EXERCCIOS 146
CAPTULO 11 147
TABSTRIP 147
CAPTULO 12 163
SAPSCRIPT 163
A lista de objetos para um objeto corrente mostrado na Object Window pode ser
mostrada pressionando-se o boto "Object Ust".
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.
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.
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
Utilize este espao para colocar observaes a respeito dos exercfcios propostos pelo
instrutor.
Acima podemos observar os comandos que geram as listas para impresso, bem como
eventos e elemtneos de textos utilizados.
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.
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.
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.
Ip(l)
I Quebra
p Poso da coluna Valor salda
I Tamanho salda Campo ou literal
Opes de formato
A posio da coluna, atravs de um valor de at 3 dlgitos ou uma varivel que respeite este
tamanho, usando o parmetro acicional AI.
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.
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.
DEMO/CHAP 02.E 1
Date 17.10.1995
Time 16:18:38
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.
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.
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>.
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.
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.
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.
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.
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.
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.
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:
Utilize este espao para colocar observaes a respeito dos exerclcios propostos pelo
instrutor.
o banco de dados de um programa ASAP pode ser acessado pelo Open SQL ou pelo
Native SQL.
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.
PartIcular
column
SAPAG
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.
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.
Table fields and work area fields have the sarne names
DATA wa spfliLIKEspfli.
SAPAG
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).
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.
Utilize este espao para colocar observaes a respeito dos exercIcios propostos pelo
instrutor.
i SAP AG
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 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.
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.
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).
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.
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
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.
Utilize este espao para colocar observaes a respeito dos exerccios propostos pelo
instrutor.
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
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.
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.
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).
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.
Utilize este espao para colocar observaes a respeito dos exerccios propostos pelo
instrutor.
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
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.
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.
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.
Comando Efeito
APPEND anexa o contedo de uma rea de trabalho ao final de uma tabela
interna
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.
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.
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 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.
READ TABLE <itab> ... INDEX <i>. L o nmero de entrada da tabela <i>.
Como utilizar o acesso com indice para processar entradas individuais da tabela
interna:
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.
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
Hashed
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.
As Work Areas (WA) tm o papel do Header Une em uma tabela sem o mesmo.
Uma Tabela Interna pode ser definida atravs do comando DATA (Como na verso
3.0F), ou atravs do comando TYPE.
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
SELECT APPEND
I
Tabla work area
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.
REPORT sapbo400i~d_itab_read,
'-.'
..'.' ,.-.-. - _. - '. ',: _: _.... ',:.-,- - - ..' : '" ". ,' . : ;. " ' " _, : ': _,... :_, -;. '. .:_ ._
OF sprli
DATA: LlKEspfli,
,';::'::::',':,'-'::.:.:.::,.':-,':
INTOTABLEit_
:. . -- ...--: .- ". " - . . :- - -,
MOVE
ENDIF.
sy....
READTABLEit flightinfo.INTOwaflightinfo
INDEXtab
IF
'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 .
Utilize este espao para colocar observaes a respeito dos exercicios propostos pelo
instrutor.
ZCUSTO
objeto grupo de
[t Mdulos de funo
+ Estruturas DOte
Subprogramas
i Mdulo PBO
MdulosPAI
tnctudes
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.
FACrORY
1I0LIDAY-CALENDAR
DATE FROM
BR
01.11.2000
DATE-TO 30.11.2000
LANGUAGE PT
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
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).
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.
Programas Visual Basic sendo utilizados como front ends do R/3.grams as frontends
to R/3
Aplicaes Workflow
O grfico seguinte mostra como a interface BAPI habilita diferentes tipos de aplicao a
serem ligados como um todo.
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.
Prov uma viso orientada a objetos dos dados e processos do Sistema R/3.
A fig ura abaixo mostra o relacionamento entre um objeto de negcios SAP e seus
relacionamentos no mduio de funo.
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.
+ Pwchasinglnlo
+ PlOcwementOperatlon
+ SowceOfSupplyDeterm
+ Servios externos
+ Administrao de estoql!eS
+ Reviso de faturas
+ Logistics Execution
+ Administrao de qualidade
+ Manuteno
Servio clientes
I"
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.
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.
BAPls Standard
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.
..
Ex.
Utilize este espao para colocar observaes a respeito dos exerclcios propostos pelo
instrutor.
ENDMODULE.
SAP AG
DK-CODE (4)
Alrllne carrler
FlIght number 10400 I
Planned fIIght
From I FRANKFURT
To I NEWYORK
Time
[
Criando Programas
Development ClaS5
Program
Functional area
Program ISAPMTALA
I wlth TOP I"elude
Exemplo: O nome do TOP Include para um programa Module Pool cujo nome
SAPMTALA ser MTALATOP.
Atributos do Programa
TllIe
Type
Applicalion
Save
Definindo Telas
I $TMP Use,'s local objects
Chooos Program
Screen no.
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).
Fullscreen OlcUProgFlelds
OlcVProgFlelds
Oetfrom Olct. II
Oel trom program
Template
Keyword
short
- medlum
-Iong
header
I Entry t
I Ch,ek I
I Radio I
80x [
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.
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).
Transaction code
Transaction text
Program
Screen number
Sequncia de Aes
Action sequence
PROCESS
ENDMQDULE. j
E... message
..
PROCESS AFTERINPUT.
. MODULE USER_COMMAND
- II
Fleld IIst
Fleld name Lg Form FctCode
MORE
OKCODE 5 OK
Definindo Interfaces I
Quando necessrio, o sistema prope valores default para o menu bar e tambm
teclas de funo, porm, podem ser modificadas.
Definindo Interfaces II
Utilize este espao para colocar observaes a respeito dos exerclclos propostos pelo
instrutor.
II
A
B
Voc pode associar um campo a quatro diferentes grupos. Os nomes dos grupos
podem ter at 3 caracteres e podem ser definidos livremente.
Utilize este espao para colocar observaes a respeito dos exerclcios propostos pelo
instrutor.
1
2
1 ,
2
3
4
6 next paga
6
7
8
9
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.
LOOP ...
MODULE INPUT_2
ENDLOOP.
FIELD Fl
MODULE INPUT_3
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.
WITH CONNECTIONS
CURSOR CONNECTIONS
ENDLOOP.
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.
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.
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.
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.
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.
Utilize este espao para colocar observaes a respeito dos exercicios propostos pelo
instrutor.
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
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.
Aps a criao do Programa On-Line, efetuar a criao das telas, as quais contero os
tabstrips.
Nesta etapa, para o desenho dos tabstrips, deve-se escolher a opo indicada acima.
Definir um nome para a tela principal do Tabstrip e criar tantas pastas quanto necessrio,
atravs do campo indicado.
Definir uma rea onde os campos sero mostrados. Esta rea definida como subtela
(conforme indicado).
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).
Caso haja necessidade de criao de novas pastas, aumente o campo indicado com
o valor desejado.
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.
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.
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 -
*& - *
*&---------------------------------------------------------------------*
o comando Call Subscreen ... responsvel pela "montagem dinmica" da tela (subtela) na
tela principal do 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:
Deve ser colocado o cdigo da funo da pgina ativa na varivel ACTIVETAB da tabstrip
control.
Aps todos esses passos, s criar a transao e a tela ser mostrada conforme acima.
Utilize este espao para colocar observaes a respeito dos exerclcios propostos pelo
instrutor.
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,
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.
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
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.
OPTIONS = ITCPO
* importing
* language
* new_archive-params
* result :=
exceptions
canceled 1
device 2
form 3
options 4
unclosed 5
others 6.
Inicializao de um formulrio
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.
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
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:
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.
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
Pg. 2
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).
INCLUDE
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.