Você está na página 1de 33

APOSTILA 01

Application Link Enabling - ALE


Through synchronous and asynchronous communcations.
Utiliza BAPI interfaces e IDOC data containers.
Instalaes separadas que trocam informaes.
Replica dados entre servidores de aplicativos que podem residir em instalaes (instancias) distintas.
Remote Function Call - RFC
RFC uma interface que possibilita que sistemas externos se comuniquem com os sistemas SAP.
Essa interface de comunicao baseada no protocolo CPI-C (Common Programing Interface Communication).
Na chamada da RFC necessrio que se preencha um parmetro especial, chamado DESTINATION, que onde a RFC reside.
Existem 3 tipos de chamadas RFC:
Synchronous RFC call: O programa que chama parado enquanto a funo processada no destino, aps o retorno da funo o
programa continua seu processamento.
Asynchronous RFC call: O programa e a funo chamada rodam em paralelo.
Transactional RFC call: Pode ser chamada varias funes que so processadas no destino com um LUW.
Navegao
Menu bar: No mximo 8 menus, porem os menus system e help so fixos, sendo assim sobram 6 menus programveis.
Standard toolbar: So imutveis, porem podem ficar desabilitados de acordo com a tela (o boto de criar sesses - 2 a 6 no mximo
- parmetro rdisp/max_alt_modes).
Title bar: Ttulo da tela corrente.
Application toolbar: muda de acordo com a transao corrente.
Status bar: exibe as mensagens.
F1: Sobre qualquer componente voc pode obter ajuda, pressionando F1, nessa tela tambm possvel obter as informaes
tcnicas do campo em questo.
F4: Se tiver disponvel para o campo, voc pode utilizar a tecla F4 para chamar uma tela com as possveis entradas para o campo.

Estrutura dos Dados


Repository Objects: onde reside todos os objetos do dicionrio de dados (tabelas, elementos, dominio) que so cross-client
(independente de cliente) e tambem todos o programas abap, menus, telas.
Kernel
Comunicao entre o SAP GUI e o servidor de aplicao.
Screen Processor: das solicitaes enviadas pelo usurio, as que so relacionadas com tela, visual, so validadas aqui. Isso ocorre
antes do programa carregar.
Ex.: F1, F4.
Abap interpreter: valida o codigo abap.
O Screen Processor e o Abap interpreter trocam informaes com o Dicionario de dados.
Processamento de uma requisio
A principal tarefa do dispacher inclui distribuir as transaes carregadas nos work process, conexo com a camada de apresentao
e organizao da comunicao.
A entrada do usurio recebida pela camada de apresentao (SAPGUI) que converte a solicitao em um formato proprietrio e
envia para o dispacher. As solicitaes enviadas para o dispacher so armazenadas e processadas de acordo com a chegada
(FIFO). O dispacher distribui as requisies para os work process disponveis. Depois de processada a requisio o work process
envia o resultado para o dispacher que envia para o SAPGUI. O SAPGUI interpreta o resultado e envia para a tela do usurio.
Tipos de SAPGUI
Apartir da versao 4.6B voc tem 3 opes de SAPGUI:
> for Windows.
> for Java.
> for HTML (by ITS - Tradutor/Conversor HTML-ABAP).
Camada do Banco de Dados
As tabelas do banco de dados, no possuem relacionamento. Eles so feitos de forma documental no Dicionrio de Dados.

Vantagens de se usar o Open SQL:


Portabilidade.
Acesso mais rpido (utilizao do buffer).
Tratamento automtico de cliente.
Checa a sintaxe antes de enviar para o Banco de Dados.

Work Process
Tipos de wok process:
(D) Dialog: processa tela, cada dispacher necessita de pelo menos 2 wp de dialog.
(V) Updade: pelo menos um para cada instalao.
(B) Background: pelo menos dois para cada instalao.
(S) Spool: pelo menos um para cada instalao.
(E) Lock: apenas um necessrio para cara instalao. (s existe em um servidor de aplicativo, o central instance).
(MS / M) Message Server: Toda solicitao cai no MS, que verifica a disponibilidade dos dispachers e submete a solicitao ao que
esta mais livre.
(GW / G) Gateway Server: Permite comunicao entre verses do sistema SAP e aplicaes externas.
Central Instance
O central instance exclusivo, nele reside os wp de lock, spool e o message server.
O balanceamento de carga feito no momento que o usurio efetua o logon.
Alguns servios do central instance: trigger update, request and remove locks, trigger background request.
Work Process
Os seguintes componentes esto envolvidos no processamento de uma requisio:
O dispacher que faz o controle central.
O request enqueues (administrado pelo dispacher). a lista das requisies.
Um wok process.
Buffers in Shared Memory e possibilidade de roll file.
O Task Handler (ficano wp) controla a comunicao entre o wp e a shared memory.
Se um passo de dialogo excede o tempo predefinido (varivel rdisp/max_wprun_time, default de 300 segundos) a transao termina
com um erro.
Background processing
O processamento em Background angendado em um form de jobs. Cada job pode ter um ou mais passos que so executados em
sequencia. Tambm possvel priorizar o job ("A", "C").
O Background Scheduler responsvel por disparar automaticamente os jobs no tempo especificado.
O Background Scheduler um programa ABAP que checa a tabela de jobs e verifica se tem algum job para executar naquele
instante. (o tempo default de verificao de 60 segundos - variavel rdisp/bcttime).
Printing
Um spool request gerado atravs de um processo de dialogo/background. Esse request enviado para uma tabela especial no
banco de dados. Essa tabela montada pelo wp spool, que redireciona a impresso para um servidor de impresso/impressora.
Locks
Os objetos de locks so definidos no dicionrio de dados e sempre devem iniciar com "EY" ou "EZ".
Os possveis tipos de locks so:
"S": Shared lock "E": Exclusive lock - S possvel setar um objeto com esse tipo de lock, se o objeto no possuir nenhum tipo de lock ("E" ou "S").
O mesmo usurio pode solicitar locks adicionais dentro da mesma transao.
Quando o objeto de lock ativado, gerado duas funes (ENQUEUE e DEQUEUE).
Essas funes tem o nome ENQUEUE_<object_name> e DENQUEUE_<object_name> e so usadas nos programas ABAP para
codificar lock e unlock dos dados.
Requisio de lock
Quando um lock requisitado o sistema checa na tabela de lock se no existe nenhum tipo de lock para o objeto, se o objeto estiver
com locado o sistema emite uma mensagem que a operao no pode ser executada.
Na transao SM12 possvel diferenciar os locks de programa (azul) e dialog wp (preto).
DICA: H trs maneiras de obter informaes sobre o programa: System\Status - Status bar - F1 Informaes tcnicas.
Arquitetura Cliente-Servidor

Camadas: Presentation Server - Application Server - Database.


As trs camadas sempre esto presentes, mesmo que sejam instaladas em apenas uma mquina.
DICAS: Os programas ABAP rodam no Application Server.
Exitem trs tipos de tela: Screen, Selection Screen, List.
Toda vez que um usurio pressiona a tecla ENTER, funo, menu ou boto, o controle passado da camada de apresentao para
camada de aplicao.
Por padro a tela Selection Screen ter o nmero 1000.
Em relao aos dados do banco de dados: trabalha com os dados na memria; esses dados so uma cpia dos dados do banco;
no se trabalha com os dados diretamente.
Repositrio de dados
O Banco de dados contem objectos cross-client e client-specific.
Os objetos cross-client ficam armazenados no repository.
dividido em pacotes (packages). Ex. os objectos relacionados com o mdulo SD ficam no pacote SD, os objetos do modulo MM
ficam no pacote MM.
Para verificar todas as classes de desenvolvimento, utiliza a transao SE81.
Para verificar os objetos do repository information system, utilize a transao SE84.

Transportando objetos do repositrio


Todo o desenvolvimento de projetos feito no "Development System", depois de finalizado ele transportado para o "Produciotn
System".
Para se realizar esse transporte necessrio de uma "Change Request".
ABAP
A primeira palavra da sentena chamada de "Keyword".
O ponto considerado o final da sentena.
O runtime do ABAP no case-sensitive.
Para se comentar uma linha usa-se um asteristico no inicio.
Para se comentar de um ponto especfico da linha usa-se aspas dupla ".
Para testar o retorno de uma sentena, usa a varivel de sistema sy-subrc, se ela conter o valor zero, indica que a sentena foi bem
sucedida.
DICA: Para cria uma transao, utilize a transao SE93.
Estrutura de uma tabela interna
Uma tabela interna composta basicamente de campos, elemento de dados e dominio.
Campos: so as colunas que compe a tabela.
Elemento de dados: So as informaes de texto. Ex.: Labels, F1, Idiomas.
Dominio: So as informaes tcnicas de um campos. Ex.: Tipo, Tamanho.
DICA: Existem trs tipos de tabelas: Transparente, Pool, Cluster.
Estruturas: no possuem chaves, no representam uma tabela no banco de dados, apenas uma definio.
Data Object = Varivel. Type Global Tabela/Estrutura definida no DDIC.
Data Types and Data Objects
O tipo do data object define suas informaes tcnicas.
O tipo interface parameter (funes) define os valores que sero transferidos quando o modulo for chamado.
Variveis globais: definidas no dicionrio de dados.
Variveis locais: definidas no programa ABAP.
Vantagens de se usar variveis globais:
Esto todas centralizadas em um lugar.
Pode usa-las em todo repositrio de dados.
Pode usa-las em telas.
Data Objects
Tipo predefinidos:
D : Data - YYYYMMDD.
T: Time - HHMMSS.
I : Integer.
F : Float point number.
STRING: String - tamanho variavel.
XSTRING: Byte sequence - hexadecimal de tamanho varivel.
Voc precisa definir o tamanho para os seguintes tipos predefinidos:

C: Caracter;
N: Numeric caracter.
X: Byte - hexadecimal
P: Pack number - precisa definir o nmero de casas decimais.
Se na declarao de uma varivel no for informado seu tipo, por default ela sera do tipo caracter ("C") de tamanho 1.
ABAP Statements
CLEAR = reinicia as variveis, voltam ao seu valor inicial (Numericos = 0, Alfanumericos = espao, Tabela interna exclui com header
line = exclui o header line).
COMPUTE = Os clculos no abap, so feitos apenas com esse comando.
Operaes bsicas = + adio, - subtrao, * multiplicao, / diviso, ** expoente, DIV diviso de inteiros, MOD resto de diviso de
nmeros inteiros.
STRLEN = retorna o tamanho de um alfanumrico (Ex.: TAM = STRLEN( TESTE ).
Nos loopings DO-ENDO e WHILE-ENDWHILE a varivel de sistema SY-INDEX contm a nmero de repeties (inicia em 1 - para
sair do loop pode usar o comando EXIT ou CHECK).
Apenas 5 comandos acessam o banco de dados: select, insert (append apenas para tabelas internas padro), modify (tenta
atualizar, se no conseguir insere), update e delete.
Mensagens
O abap vem com 6 tipo de mensagens, so elas:
"S": status message. O programa continua sem interrupo. Exibida na prox. Tela.
"I": Programa continua aps interrupo. Exibia uma Modal Dialog box.
"W": Mostrada na status bar. P/ consistir telas
"E": Mostrada na status bar. P/ consistir telas.
"A": Modal Dialog Box. P/ Cancelar programa.
"X": Short Dump. P/ Cancelar programa.
possvel passar para as mensagens um total de 4 parmetros.
Debug
Para inserir BREAKPOINT o programa precisa estar ativo.
F5 = passo-a-passo.
F6 = no depura subrotina.
F7 = volta para quem chamou a subrotina.
F8 = execute at o prximo ponto de parada.
WATCH POINT = Para de acordo com o valor de uma varivel (Mx: 10).
No COMMAND FIELD = \h entra no debug da tela atual.
ESTRUTURAS E TABELAS INTERNAS
TABLES = tem que usar o mesmo nome da tabela ou estrutura.
MOVE-CORRESPONDING a TO b. = Move o contedo de a para b que possuam o mesmo nome (a ordem em que os campos
esto, no relevante).
Existem 3 tipos de tabelas internas:
STANDARD TABLE = index access, key access, non-unique, mais acessado por index access. Sem classificao. No controla
duplicidade. Table scan.
SORTED TABLE = index access, key access, non-unique/unique, mais acessado por key access. Sempre ordenados de acordo com
a chave. Usando indice/chave, a pesquisa otmizada. Se usar outro tipo table scan.
HASHED TABLE = acesso apenas por chave. Os dados so otimizados em tempo de execuo. Usando chave, a pesquisa
otmizada. Se usar outro tipo table scan.
Comandos possveis em Tabelas internas:
APPEND: Insere o conteudo de uma estrutura em uma tabela interna. Pode ser usada apenas com tabela padro (STANDARD
TABLE).
INSERT: Insere o conteudo de uma estrutura em uma tabela interna. Em tabelas SORTED j insere no local correto e nas tabelas
HASHED usa o algoritimo usado.
READ: copia o conteudo de uma linha de uma tabela interna para uma estrutura.
MODIFY: sobrescreve o conteudo de uma linha de uam tabela interna com o conteudo de uma estrutura.
DELETE: exclui a linha de uma tabela interna.
COLLECT: Soma os campos numrico onde a chave igual.
COMANDOS QUE AFETAM A TABELA INTERNA INTEIRA
SORT = Ordena as colunas de uma tabela interna do tipo STANDARD ou HASHED.
REFRESH = Exclui o conteudo da tabela interna. Preserva o conteudo da area de trabalho.
FREE = Exclui o conteudo da tabela interna. Exclui o conteudo da area de trabalho.
CLEAR = mesmo efeito que refresh em tabelas sem header line.
DICA: Aps um select voc pode usar a varivel de sistema SY-DBCNT para verificar quantas linhas o select retornou.

Se voc quiser selecionar dados de um cliente especfico, basta adicionar a comando CLIENT-SPECIFIED aps a clausuala FROM.
Autorizaes
Autorizaes ligadas e informao.
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' DUMMY
ID 'ACTVT' '02'.
Os possveis retornos de uma checagem de autorizao so:
0 = tem autorizao.
4 = no tem autorizao.
8 = a checagem no foi bem sucedida porque no tem campos no objeto de autorizao.
DICA: As 4 tcnicas de reusabilidade de cdigo, so:
Classe de mtodos globais (Global Class Methods).
Objetos de Negcio (BAPI).
Mdulos de funes (Function Modulo).
Lgica de Banco de Dados (Logical Database).
Funes
Todo o escopo da funo fica entre FORM...ENDFORM.
Os parametros de funes podem ser passados de 3 maneiras:
Por valor = uma cpia do valor passado para o funo.
Por referencia = um ponteiro para a varivel passado para a funo.
Por valor e resultado = passado uma cpia do valor para a funo, quando se finaliza a funo (endform) o valor retornado para
quem chamou a funo.
Para passar os parametros para a funo (odem USING campos CHANGING campos):
Form subrotina_nome USING value(f1) CHANGING f2 value(f3). Onde:
F1 = por valor
F2 = por referencia
F3 = por valor e resultado
Os tipos dos parametros podem ser definidos ou serem herdados dos valores passados:
FORM subrotina_nome USING f1 type any f2 type c.
F1 = ira herdar o tipo da varivel passada.
F2 = ser sempre do tipo "C".
DICA: Os tipos P, C, N, X so herdados em tempo de execuo.
Os tipos I, F, D, T so de tamanho fixo.
Os tipos STRING e XSTRING no so possveis herdar.
Possveis elementos nos programas ABAP
Blocos de evento = so blocos de processamento que so chamados pelo sistema de Rumtime do ABAP ou pelo usurio.
Subrotinas = so blocos de processamento que so chamados por comandos ABAP. O desenvolvedor controla as subrotinas.
Modulos = so blocos de processamentos especiais que so chamados por comandos de tela.
LOAD-OF-PROGRAM = executado apenas uma vez no programa, executado antes da tela de seleo, porem depois que as
variveis serem criadas.
START-OF-PROGRAM = evento default, evento principal do programa, o primeiro evento para se criar a lista.
DICA: a ordem dos eventos dispostos no programa no importa, pois quem determina a ordem de execuo o rum-time do ABAP.
INICIALIZATION = executa antes de tela de seleo, porem, depois do evento LOAD-OF-PROGRAM, caso o cdigo chame o
programa novamente, o evento executado de novo.
Cabealhos
possvel configurar o cabealho de um relatrio de duas maneiras: em modo de execuo escolha o meno System/List/List header,
com esse mtodo possvel configurar uma linha de titulo e 4 linhas de cabealho. Ou vc pode configurar o titulo via cdigo ABAP.
Multilinguagem
Vc pode usar a tcnica de Text-Simbols (so literais que podem ser traduzidos).
Vc pode escrever escrever text-simbols no seu programa da seguinte maneira:
TEXT-CCC = CCC 3 caracters string.
'......'(CCC) = Usa o elemento de texto CCC no idioma logado, se no tiver a traduo para o idioma logado, usaa literal informada
como default.

DICA: no final do evento START-OF-SELECTION que so exibidos os "Writes" do programa.


AT LINE-SELECTION
Usado para criar uma lista de detalhe. A varivel de sistema SY-LSIND contem o nvel da lista que vc esta, inicia em 0. Todo duploclick na lista cai nesse evento.
A lista detalhe exibida aps o processamento do evento AT LINE-SELECTION. A Cada nvel de detalhamento a varivel SY-LSIND
incrementada ou decrementada (o mx de lista detalhes que se pode ter 20 - 0..19).
DICA: Para fazer o mouse ficar como um hiperlink, basta adicionar o comando HOTSPOT ON aps o campo. EX.: Write teste-teste
HOTSPOT ON.
Vc pode navegar na lista detalhe das seguintes formas:
Duplo click na lista.
cone "Detail list" no application toolbar.
Escolhendo uma funo de menu.
Usando a tecla F2.
Escolhendo uma dessas funes novamente, vc ir para a prxima lista detalhe.
Para utilizar os campos do relatorio atual no relatorio detalhe, vc tem q adicionar o camando HIDE logo aps o comando write dos
campos desejados.
Ex. Supondo que no relatrio detalhe usaremos apenas os campo1 e campo2.
Write campo1, campo2, campo3
Hide: campo1, campo2
Selection Screens
Capacidade de multilinguagens (Simbolos, Cabealho, Select-Text).
Types Checks (Checagem automtica de tipos).
Value Entry (Tela de manipulao de filtro).
Variantes (Possibilidade de salvar filtros).
Possible entries (F1, F4).
SELECT-OPTIONS <varivel> FOR <referencia>
A varivel criada pelo select-options, uma tabela interna com as seguintes colunas:
Sign = determina se o intervalo foi incluido ("I") ou Excludo ("E").
Option = operador (BT, EQ, LT...).
Low = Esse campo contm o valor mnimo do intervalo ou o valor.
Hight = Esse campo contm o valor mximo do intervalo.
DICA: Para utilizar a varivel do select-options no "select", "SELECT ... FROM... WHERE <campo> IN <varivel_select_options>.
AT SELECTION-SCREEN
Evento usado para consistir tela. Cada vez que o usurio pressiona a tecla ENTER, boto, um cdigo de funo ou escolhe algum
menu de funo, o sistema faz uma checagem de tipo, se a checagem estiver ok, o sistema processa o bloco de evento AT
SELECTION-SCREEN.
TELAS
Possibles entries. (F1, F4).
Editing options.
Type checks.
Flexible program flow (Tela de seleo no possui).
Consistency check during data entry (tela de seleo no tem).
Duas maneiras de chamar tela: TRANSAO ou CALL SCREEN.
Os componentes da tela so:
Atributos = Os obrigatrios so: Screen number (0...9999), Short text, Screen type, Next screen.
Layout = disposio da tela
Element list = Atributos dos elementos da tela, como, posio, tamanho, tipo.
Flow control = Processamento lgico, eventos PAI, PBO.
DICA: Se vc usar tables no programa, na hora de puxar os campos para a tela possvel puxar os campos e os labels. Se for
declarado usando DATA, tera q ser feiro em dois passos: 1 - pegar os campos atravez da varivel 2 = pegar os labels do dicionario.
OkCode a varivel que recebe o boto (Campo Fcode da tela, no programa declarar DATA okcode type sy-ucomm) que foi clicado
na tela.
DICA: O cdigo dos eventos PBO e PAI so escritos e processados pelo SCREEN PAINTER e no pelo ABAP EDITOR. No so
comandos abaps,
Para tratar os "Function Code" do evento PAI, utilizada uma funo que geralmente chamada "user_command_nnnn (n = nr tela).

Para chamar uma tela de outra basta usar o comando SET SCREEN <nrtela>.
Se setar 0 seta o final do fluxo.
DICA: O abap precisa de 3 itens para rodar: interpretador de tela, interpretador abap e dicionrio de dados.
No evento PBO e comum usar um module para zerar a varivel ok_code, seu nome geralmente clear_ok_code.
Function Module
A interface de uma funo pode conter os seguintes elementos:
Import parameters = so passados para a funo. Podem ser opcionais.
Export parameters = so enviados pela funo. Sempre so opcionais.
Changing parameters = so passados para a funo e podem ser modificados por ela. Podem ser opcionais.
Exceptions = Informaes sobre os erros. Retornados na varivel de sistema SY-SUBRC.
Grupo de funo = So funes que tratam do mesmo assunto fazem parte do mesmo grupo. Um grupo de funo (visivel em todo
grupo) pode conter Data Objects, Subroutines e screens.
Atributos das funes = RFC podem ser chamados de modo assincrono pelo sistema ou outros sistemas. Update module = contain
addicional functions for bundling database changes.
BAPIS
um misto de orientao a objetos e funes. Podem ser acessadas desde o sistema R/3 a sistemas externos.
Nomes BAPI_<business_object_name>_<method_name>.
Capacidade remota.
No trabalham com excees, os erros so reportados atraves de uma varivel RETURN.
No possuem tela.
No possuem parametros de referencia.
Chamando programas
Insertion = no meio de um programa, chama outro, e depois de terminar a execuo do programa chamado, o programa que efetuou
a chamada continua seu processamento.
SUBMIT <program_name> AND RETURN
SUBMIT <program_name> VIA SELECT-SCREEN AND RETURN
CALL TRANSACTION 'T_CODE' [AND SKIP FIRST SCREEN]
Restart = No meio de um programa, o outro e chamado, porem o que chamou encerrado.
SUBMIT <program_name>
LEAVE TO TRANSACTION 'T_CODE' [AND SKIP FIRST SCREEN]
/n[T_CODE] no command field
DICA : para rodar funes em paralelo, vc deve usar mdulos de funes,
CALL FUNCTION .... STARTING NEW TASK ...
Gerenciamento de memria
Sesso externa = SAP Memory. Vale para todas as sees abertas pelo mesmo usurio. criada no momento em que o usurio
efetua o logon. Parameter ID ficam na SAP Memory.
Sesso interna = ABAP Memory. cada programa ocupa uma sesso interna. possivel ter um no mx. 10 sesses internas. Num
"insertion" criada outra sesso interna para rodar o programa chamado, e quando o programa finalizado sua sesso interna
criada apagada.
DICA = No command fiel "/o" exibe todas as sesses do usurio.
"/o<t_code>" abre uma nova sesso (mx de sesses por usurio 6).
Se vc inicia um programa usando um cdigo de transao, todas as sesses internas so apagadas e uma nova sesso criada
para a transo. Aps a chamada a abap memory inicializada.
Passar dados entre programas
H vrias maneiras de se passar dados entre programas:
Interface do programa chamado (o programa que chama passa dados para a tela de seleo do programa chamado).
ABAP Memory = EXPORT ....TO MEMORY ID 'MY_ID_01' (nome da memoria
IMPORT ... TO MEMORY ID 'MY_ID_01' max. De 60 caracter).
Se usar dois EXPORT com o mesmo ID, um sobreescrevera o outro.
SAP Memory = SET PARAMETER ID 'COM' FIELD t_conn-connid
GET PARAMETER ID 'COM' FIELD t_conn-connid.
O nome do Id deve ser o conteudo do Parameter Id do campo.
Database tables / Shared buffer. (EXPORT / IMPORT comandos).

Arquivos locais no servidor de apresentao (GUI_UPLOAD / GUI_DOWNLOAD).

Passando dados usando uma tabela interna


CALL TRANSACTION 'T_CODE' USING bi_itab.
MODE 'X'
UPDATE 'X'
MESSAGE INFO 'X'.
A tabela interna usada deve possuir uma estrutura igual a BDCDATA.
Program = pool de modulos BDC. Preenchido uma vez para cada tela.
Dynpro = numero da tela BDC. Preenchido uma vez para cada tela.
DynBegin = Inicio BDC de uma tela. Preenche "X" para o primeiro campo da tela e os outros preencher com vazio ''.
Fnam = nome do campo
Fval = valor do campo. Esse case-sensitive.
MODE = especifica se ocorrer um erro a tela sera exibida "E" ou no sera exibida "N".
Para salvar o registro, basta inserir uma linha com o "FNAM" = bdc_okcode e "FVAL" = SAVE.
Appendix
Vc pode criar tipo de grupos (Types Groups) no dicionrio de dados. O nome do type group pode ter no mx. 5 caracteres e cada
tipo e constante definida, deve iniciar com o nome do type_group_. Para declarar um type group nos programas abap, usar o
comando TYPE-POOLS <name_type_group>.
Dois tipos so compatveis quando:
Dois elementos so compatveis quanto eles so idnticos em tipo e tamanho (e nmero de casas decimais, no caso do tipo
Package Number).
Duas estruturas so compatveis se elas tem a mesma estrutura e seus elementos so compatveis.
Duas tabelas so compatveis se o tipo da linha so compatveis e suas definies de chave, categorias e tipos so identicas.
APOSTILA 02
Data Types and Data Objects in Detail
Tipos predefinidos de dados
Tamanho fixo. Numrico. "I". Interger. 4 bytes.
Tamanho fixo. Numrico. "F". Float point number. 8 bytes.
Tamanho fixo. Numrico. "P". Package Number. 1...16 bytes.
Tamanho fixo. Caracter. "N". Number sequence. 1...65535 bytes.
Tamanho fixo. Caracter. "C". Caracter sequence. 1...65535 bytes.
Tamanho fixo. Caracter. "D". Date. 8 bytes.
Tamanho fixo. Caracter. "T". Time. 6 bytes.
Tamanho fixo. Hexadecimal. "X". Hexadecimal code. 1...65535 bytes.
Tamanho varivel. Caracter/Hexadecimal. String.
Tamanho varivel. Caracter/Hexadecimal. XString.
Os tipos C, N, X precisam ter seus tamanhos declarados no cdigo, se no forem declarados, seus tamanhos default sero 1.
O tipo P permite o tamanha de 1 a 16 bytes, se no for declarado, o seu tamanho default sera de 8 bytes e decimals 0.
DICA: As operaes s podem ser realizadas utilizando o comando COMPUTE.
Alguns comandos ABAP:
FIND = procura um caracter. Se retorno ok, sy-subrc = 0.
REPLACE = substitui o primeiro caracter encontrado.
TRANSLATE = substitui todos os caracteres encontrado.
SHIFT = movimentao.
CONDENSE = remove espaos.
OVERLAY = Substitui os espaos da primeira string pelos caracteres da segunda.
CONCATENATE = Concatena strings.
SPLIT = divide uma string ao meio.
Acessando parte de campos.
<comando> <campo>+<off>(<len>). Onde off o ponto de partida (inicia com zero) e len o tamanho a ser pego. Ex. X = W+2(5).
Pega apartir do segundo caracter 5 caracteres.
DICA: Estruturas no ocupam memria, so apenas definies. Variveis ocupam memria.
Operaes com Hexadecimal sempre so Byte a Byte.
No possuem tamanho fixo: tabelas internas, string, xstring.
Sorted table:
Data: distance_ranc type sorted table of s_distance_ty with non-unique key carrid connid
Hashed table:

Data: distance_buffer type hashed table of s_distance_ty with unique key carrid connid.
Tabelas internas
As 3 maneiras de se definir uma tabela interna so:
> Usando o comando TYPES para definir a estrutura da tabela. Depois associar o tipo a um ou mais Data Objects. Visvel apenas no
programa.
> Declarando os atributos diretamento nos Data Objects. Visvel apenas no programa.
> Definir a tabela no dicionrio de dados. Visvel para todos.
TYPES
itabtype TYPE table_kind
OF line_type
WITH key_def
[ INITIAL SIZE n ].
DATA
T_name TYPE itabtype.
table_kind
key_def
STANDARD TABLE - [ NON-UNIQUE ] { KEY col1 ... coln | DEFAULT KEY }
Defaul Key em STANDARD TABLE pe todos os campos do tipo c, n, d, t, x, string, xstring com chave.
SORTED TABLE - { UNIQUE | NON-UNIQUE } KEY col1 ... coln.
HASHED TABLE - UNIQUE KEY col1 ... coln.
Ex.
Definindo uma LINE_TYPE
TYPES:
BEGIN OF s_distance_ty,
Carrid
Connid
Distance
distid
END OF s_distance_ty.
Definindo uma TABLE_TYPE
TYPES:
Tt_distance_ty TYPE STANDARD TABLE
OF s_distance_ty
WITH NON-UNIQUE KEY distance distid.
Definindo uma tabela interna
DATA:
Tt_distance TYPE tt_distance_ty.
Definindo uma SORTED TABLE
DATA:
Distance_ranc TYPE SORTED TABLE OF s_distance_ty
WITH NON-UNIQUE KEY distid distance.
Ordenada pela sequencia da chave/indice.
Definindo uma HASHED TABLE
DATA:
Distance_buffer TYPE HASHED TABLE OF s_distance_ty
WITH UNIQUE KEY carrid connid.
Quando vc define uma STANDARD TABLE assim:
DATA t_table TYPE TABLE OF sflight
O sistem iterpreta como
DATA t_table TYPE STANDARD TABLE OF sflight WITH DEFAULT KEY.
Vc pode ter as seguintes operaes com tabelas internas:
Operaes envolvendo o Data Object: MOVE, CLEAR, FREE, SORT, SELECT INTO TABLE.
Operaes envolvendo linhas: INSERT, DELETE, READ, MODIFY, COLLECT. Retorno
Na varivel sy-subrc.
Processamento de loop: LOOP AT...ENDLOOP.
Field-Simbols
um ponteiro que pode ser manipulado em tempo de execuo.
Pode se criar um ponteiro para um tipo especfico (FIELD-SIMBOLS: <fs> TYPE i) ou pode se criar para qualquer tipo (FIELDSIMBOLS: <fs> TYPE ANY).

Para associar o valor ao ponteiro utiliza-se o comando (ASSIGN <var> TO <fs>).


Para usar <fs> = 22.
Tambem possivel associar um ponteiro para um linha de uma tabela interna (FIELD-SIMBOLS: <fs> TYPE sflight). Para usar seria,
<fs>-connid , <fs>-carrid.
INSERT
INSERT wa INTO TABLE itab = insere o conteudo da area de trabalho na tabela interna. O registro inserido de acordo com a chave
da tabela, Em tabelas standard so inserido no fim da tabela.
INSERT wa INTO TABLE itab INDEX n = Insere o conteudo da area de trabalho na tabela interna. Se N-1 for maior que o nr de
linhas da tabela a linha no inserida. Em SORTED TABLE sempre adicione linhas usando a chave. Se vc tentar inserir por indice
vc no tera sucesso, a menos que, a linha inserida tenha o mesmo indice quando a tabela tenha sido ordenada, seno ocorrera um
erro.
INSERT LINES OF itab1 INTO TABLE itabl2 [ FROM n1 TO n2 ] = Insere o contedo da tabela 1 na tabela 2. Se a tabela 1 uma
tabela co indice, vc pode inserir um conjunto de linhas.
READ
READ TABLE itab INDEX n INTO wa
[ ASSIGNING <fs> ]
[ COMPARING f1.. fm | ALL FIELDS ] |
[ TRANSPORTING f1..fk | NO FIELDS ]
Para ler linhas de uma tabela po indice e jogar seu contedo em uma area de trabalho. Sy-subrc = 0 sucesso. Sy-tfill = qtde de linhas
encontradas. Sy-tleng = tamanho das linhas.
A adio ASSIGNING insere o resultado em um field-simbols.
A adio TRANSPORTING pode transportar algumas colunas ou nenhuma coluna.
A adio COMPARING compara as linhas lidas com o contedo da rea de trabalho.
READ TABLE itab
[ FROM wa WITH TABLE KEY k1 = f1 ... kn = fn ]
[ WITH KEY col1 = f1 ... coln = fn [ BINARY SEARCH ] ]
INTO wa [ options = comandos acima ].
Para ler linhas individualmente.
Com a adio FROM wa1 INTO wa. Na wa1 vc copia os valores da chave.
MODIFY
MODIFY TABLE itab FROM wa. = Modifica o conteudo de uma linha da tabela.
Se vc quiser modificar apenas alguns campos, vc deve especificar aps o comando TRANSPORTING.
MODIFY TABLE itab FROM wa INDEX n.
MODIFY TABLE itab FROM wa TRANSPORTING f1 f2 ... WHERE log_expr.
DELETE
DELETE TABLE itab FROM wa.
DELETE TABLE itab WITH TABLE KEY k1 = f1.
DELETE itab INDEX n.
DELETE itab WHERE log_expr.
Loop
LOOP AT itab [ FROM wa | ASSIGNING <fs> ]
[ TRANSPORTING NO FIELDS ]
{ [ FROM n1 TO n2 ] | [ WHERE log_expr ] }
ENDLOOP.
Sy-tabix = indice corrente.
Sy-tfill = nr de registros percorridos.
Sy-tlen = tamanho das linhas lidas.
Tabela com Header Line
DATA:
Itab TYPE TABLE OF <tabela>
WITH DEFAULT KEY
WITH HEADER LINE.
Clear itab = se a tabela tem header line, apenas ele apagado, se no tiver, todos os dados so apagados.
Clear itab[] = apaga o conteudo da tabela interna com header line. Igual a REFRESH.
DICA: No possvel usar tabelas internas com Header line em orientao a objetos.
SELECT-OPTIONS cria uma tabela interna com Header Line (campos Sign, Option, Low, High. O comando DATA/TYPE RANGE OF
cria uma tabela interna sem header line.
Performance

READ TABLE itab INTO wa WITH TABLE KEY key.


TABLE STANDARD = Table Scan.
TABLE SORTED = Binary Search.
TABLE HASHED = Hash Algorithm.
READ TABLE itab INTO wa WITH KEY key.
LOOP AT itab INTO wa WHERE log_expr_key
ENDLOOP.
TABLE STANDARD = Table Scan.
TABLE SORTED = Binary Search.
TABLE HASHED = Table Scan.
Considerando a tabela interna com os campo carrid, connid, cityfrom. Objetivo, listar todos os voos da cidade de Frankfurt a New
York.
1 SORT itabl BY CITYFROM.
2 READ TABLE itab
WITH KEY cityfrom = 'FRANKFURT'
TRANSPORTING NO FIELDS
BINARY SEARCH.
Inicio = sy-tabix.
3 READ TABLE itab
WITH KEY cityfrom = 'NEW YORK'
TRANSPORTING NO FIELDS
BINARY SEARCH.
Fim = sy-tabix.
2 READ TABLE itab
WITH KEY cityfrom = 'FRANKFURT'
TRANSPORTING NO FIELDS
BINARY SEARCH.
4 LOOP AT itab INTO wa FROM inico TO fim.
ENDLOOP.
Orientao a Objetos
Um dos principais conceitos da Orientao o Objetos a abilidade de criar vrias instancias de uma classe.
O Modelo do objeto extraido do mundo real.
Algumas caracteristicas:
Objetos so abstraidos do mundo real.
Processos podem ser implementados de forma realistica.
Objetos so unidades feitos de variveis e funes.
Melhora a estrutura do sistema.
Manutenes so reduzidas.
Algumas Tcnicas:
Encapsulamento de dados e funes.
Poliformismo.
Herana.
Compatibilidade
Compativel com ABAP.
Comandos ABAP Objects podem ser usados em programas procedural.
Objetos podem contem comandos classicos abap.
Representao de uma Classe
Lcl_Vehicle
-------------------------- atributos
make
modell
price
color
-------------------------- metodos
set_make
display_atributes
increase_speedy
Principios da programao Orientada a Objetos
Definindo uma classe

CLASS lcl_vehicle DEFINITION.


Definies do mtodos.
ENDCLASS.
CLASS lcl_vehicle IMPLEMENTATION.
Cdigos dos mtodos.
ENDCLASS.
Atributos
Podem ter qq tipo de Data Type = ABAP Elementary types (C, N, ...), Objects reference, Interfaces reference.
Data = define atributos que se referem a instancia.
Data-Class = Verivel de classe, no se refere a instancia e sim a classe, comum em todas as instancias. So atributos estatcos
(no precisa instanciar a classe para ter acesso a esses tipos de atributos, Ex. de uso, para saber qntas classes esto instanciadas).
Nas classes vc pode apenas usar TYPE para se referir a Data Types.
Vc pode usar LIKE apenas para se referir a uma varivel da classe.
Pode se defiir um atributo com READ-ONLY.
Sesses privadas e pblicas.
Mtodos
MEHODS: <method_name>
[
IMPORTING <im_var> TYPE <type>
EXPORTING <ex_var> TYPE <type>
CHANGING <ch_var> TYPE <type>
RETURNING VALUE(<re_var>) TYPE <type>
EXCEPTIONS <exception> (sy-subrc)
RAISING <class_exception> ]
Todos os parametros podem ser passados por valor ou referencia.
Todos os parametros de entrada podem ser definidos como opcionais ou com valores defaults.
Regras
Metodos da instancia = podem usar componentes da instancia e estaticos.
Podem ser chamados usando a instancia
Metodos estaticos = S podem usar componentes estaticos. Podem ser chamados usando a classe.
Lcl_vehicle
----------------------model
make
n o vehicle
----------------------+ set_make
init_make
+ get_count
+ refere a componentes pblicos
refere a compomentes privados
_ refere a componentes estaticos
CLASS lcl_vehicle DEFINITION.
PUBLIC SECTION.
METHODS: set_make IMPORTING im_make TYPE string.
CLASS-METHODS: get_count EXPORTING ex_count TYPE i.
PRIVATE SECTION.
DATA: model TYPE string,
Make TYPE i.
CLASS-DATA: n_o_vehicle TYPE i.
ENDCLASS.
Para declarar uma varivel apontando para uma classe
DATA: r_vehicle_1 TYPE REF TO lcl_vehicle,
r_vehicle_2 TYPE REF TO lcl_vehicle.
Para cria objetos
CREATE OBJECT r_lcl_vehicle_1.
CREATE OBJECT r_lcl_vehicle_2.
Garbage Collector
O programa tem q zerar a varivel para que o garbage collector limpe e memria usada.
Se no tiver mais referencia para o objeto o garbage collector remove da memria.

Ex.
DATA: r_vehicle_1 TYPE REF TO lcl_vehicle,
r_vehicle_2 TYPE REF TO lcl_vehicle.
CREATE OBJECT r_lcl_vehicle_1.
CREATE OBJECT r_lcl_vehicle_2.
r_lcl_vehicle_2 = r_lcl_vehicle_1.
Nesse caso a instancia r_lcl_vehicle_2 passou a apontar para a mesma instancia de r_lcl_vehicle_1, sendo assim a instancia que
r_lcl_vehicle_2 apontava, sera destruida pelo garbage collector.
Buferizando referencias.
DATA:
R_vehicle TYPE REF TO lcl_vehicle,
Itab TYPE TABLE OF REF TO lcl_vehicle.
CREATE OBJECT r_vehicle.
APPEND r_vehicle TO itab.
LOOP AT itab INTO r_vehicle.
Trabalha com a instancia corrente.
ENDLOOP.
Cria uma tabela interna contendo uma coluna do tipo que referencia a uma instancia.
Acessando atributos e mtodos
H 3 tipos de metodos:
Mtodos que se comportam como gatilhos e no retornam valores.
Mtodos que retornam valores.
Mtodos que modificam ou retornam diversos valores.
DATA:
Make_name TYPE string,
R_vehicle TYPE REF TO lcl_vehicle.
CALL METHOD r_vehicle->set_make EXPORTING im_make = make_name.
Apartir da verso 6.1 o comando CALL METHOD pode ser omitido. Se o mtodo tiver apenas um parametro do tipo exporting, o
mesmo pode ser omitido
R_vehicle->set_make( make_name ).
J o parametro IMPORTING sempre deve ser declarado
R_vehicle->get_make( IMPORTING ex_make = made_make ).
Caso especial = qndo se chama uma instancia de metodo dentro de outra instancia de metodo, vc pode omitir o nome da instancia.
O metodo automaticamente executado no objeto corrente.
Para chamar metodos estaticos, a sintaxe a seguinte:
<class_name>=><class_methods>
metodos funcionais = tem apenas um parametro de RETURNING, apenas parametros de IMPORTING so possveis. Podem ser
usando em calculos.
CLASS lcl_vehicle.
PUBLIC SECTION.
METHODS: get_average_fuel
IMPORTING im_distance TYPE s_distance,
Im_fuel
TYPE ty_fuel
RETURNING Value(re_fuel) TYPE ty_fuel.
ENDCLASS.
DATA:
R_vehicle1 TYPE REF TO lcl_vehicle.
R_vehicle2 TYPE REF TO lcl_vehicle.
Avg_fuel TYPE ty_fuel.
Avg_fuel = r_vehicle1->get_average_fuel( im_distance = 500 im_fuel = 50 )
+
r_vehicle1->get_average_fuel( im_distance = 600 im_fuel = 60 )
ou

CALL METHOD r_vehicle->get_average_fuel EXPORTING im_distance = 500


Im_fuel = 50
RECEIVING re_fuel = avg_fuel.
The Constructor
Executado automaticamente na execuo do comando CREATE OBJECT.
S recebe dados (IMPORTING) e excees (EXCEPTIONS).
executado uma vez por instancia.
Cada classe so pode ter um metodo construtor.
necessario implementar esse metodos na PUBLIC SECTION.
Qndo um metodo construtor gera uma exceo a classe no criada, sendo assim a memria no ocupada.
Vc implementa o metodo construtor, qndo:
Vc precisa alocar (external) recursos.
Vc precisa inicializar atributos.
Vc precisa modificar atributos estaticos.

METHODS: constructor IMPORTING <im_parameters>


EXCEPTIONS <exceptions>.
CLASS lcl_vehicle DEFINITION.
PUBLIC SECTION.
METHODS constructor IMPORTING im_make TYPE string
Im_model TYPE string.
PRIVATE SECTION.
DATA: make TYPE string,
Model TYPE string.
CLASS-DATA: n_o_vehicle TYPE i.
ENDCLASS.
CLASS lcl_vehicle IMPLEMENTATION.
METHOD constructor.
Make = im_make.
Model = im_model.
ADD 1 TO n_o_vehicle.
ENDMETHOD.
ENDCLASS.
...
DATA r_vehicle TYPE REF TO lcl_vehicle.
...
CREATE OBJECT r_vehicle EXPORTING im_make = 'Ferrari'
Im_model = 'F40'.
Construtor estatico
um metodo estatico especial.
chamado automaticamente antes da classe ter seu primeiro acesso.
Pode ser executado apenas uma vez por programa.
Executado no comando CREATE OBJECT.
Qndo se usa algum atributo/metodo estatico.
Qndo se registro um evento SET HANDLER.
No pode ser chamado explicitamente.
Nome do metodo sempre eh <class_constructor>.
Outras
possvel ter o mesmo nome para:
Atributos. Metodos. Eventos. Types. Constantes. ALIAS name.
Para acessar os atributos de dentro da classe. Usa-se Me-><atributo_name>.
Inheritance
Componentes comum existem apenas na superclase.
Novos componentes na superclasse, ficam disponiveis automaticamente para as subclasses.
A Subclasse extremamente dependente da superclasse.
CLASS lcl_vehicle DEFINITION.
ENDCLASS.
CLASS lcl_truck DEFINITION INHERITING FROM lclvehicle.
ENDCLASS.

Redefinindo metodos
CLASS lcl_vehicle DEFINITION.
METHODS: estimate_fuel IMPORTING ...
RETURNING ...
ENDCLASS.
CLASS lcl_truck DEFINITION INHERITING FROM lclvehicle.
METHODS: estimate_fuel REDEFINITION.
ENDCLASS.
CLASS lcl_truck IMPLEMENTATION.
Super->estimate_fuel( ... ). " chama o metodo da superclasse.
ENDCLASS.
Redefinindo o metodo contrutor
CLASS lcl_vehicle DEFINITION.
METHODS: constructor IMPORTING im_make
ENDCLASS.
CLASS lcl_vehicle IMPLEMENTATION.
METHOD constructor.
Make = im_make
ENDMETHOD.
ENDCLASS.
CLASS lcl_truck DEFINITION INHERITING FROM lclvehicle.
METHODS: constructor IMPORTING im_make im_color
ENDCLASS.
CLASS lcl_truck IMPLEMENTATION.
CALL METHOD Super->constructor( im_make ).
Color = im_color.
ENDCLASS.
Lcl_vehicle
----------------------model
make
n o vehicle
# tank
----------------------+ set_make
init_make
+ get_count
+ refere a componentes pblicos
refere a compomentes privados
_ refere a componentes estaticos
# refere-se a componentes visveis apenas para as subclasses
Regras para redefinir metodos
Metodos podem ser redefinidos nas subclasses
A assinatura do metodo no pode ser mudada.
Metodos estaticos no podem ser redefinidos.
Principios de Narrowing cast
Se tivessemos a classe veiculo como pai, e dela fossem herdados as classes, carro, moto, caminho. E quisessemos percorrer
todos os veiculos e acionar um metodo comum entre elas, que foi definido na classe pai? Essa tecnica reduz a classe atual a sua
classe pai, todos seus metodos especificos so perdidos. Porem o metodo comum executado o da propria classe.
DATA:
V_veiculo TYPE REF TO lcl_veiculo,
V_moto TYPE REF TO lcl_moto.
CREATE OBJECT v_moto.
*Narrowing cast
v_veiculo = v_moto.
Widening
No caso do narrowind se quisessemos acessar um metodo especifico de uma classe? No daria pois todos os metodos especificos
da classe so "perdidos". Da entra a tcnica de windening que justamente isso, voltar a classe ao seu estado original, ou seja,
antes do narrowing.
Essa tecnica no pode ser setada estaticamente, apenas em runtime.

Para voltar a classe a sua mesmoa usa o operador <class_original> ?= <class_base>.


Porem como isso eh feito em runtime, se a classe base no for compativel com a classe original, sera gerada uma exceo
"CX_SY_MOVE_CAST_ERRO" que deve ser travada no comando TRY-CATCH-ENDTRY.
...
TRY
V_moto ? = v_veiculo
CATCH CX_SY_MOVE_CAST_ERRO
...
ENDTRY.
Interfaces
Interface s tem definio.
O que foi definido na interface, fica obrigatrio nos descendentes.
Uma classe pode implementar mais de uma interface.
Interfaces no possuem niveis de visibilidade.
Semprem devem ser implementadas na sesso PUBLIC SECTION.
Declarando uma interface
INTERFACE lif_partners.
METHODS: display_partner.
ENDINTERFACE.
CLASS lcl_rental DEFINITION.
PUBLIC SECTION.
INTERFACES lif_partners
ENDCLASS.
CLASS lcl_rental IMPLEMENTATION.
METHOD lif_partners~display_partner.
ENDCLASS.
Para acessar o metodo
<classe>-><interface>~metodo().
Eventos
Eventos so mais usados em implementaes de tela.
Emitindo eventos
Classe gera o evento (EVENTS, CLASS-EVENTS).
Objeto ou classe dispara o evento (RAISE EVENT).
Capturando eventos
Reage a um evento recebido ([CALL-]METHODS...FOR EVENT...OF....)
Para registrar o evento a ser recebido (SET HANDLER).
Disparando um evento
CLASS <class_name> DEFINITION.
EVENTS: <event> EXPORTING VALUE(<ex_par>) TYPE <type>.
ENDCLASS.
CLASS <class_name> IMPLEMENTATION.
RAISE EVENT <event> EXPORTING <ex_par> = <act_par>.
ENDCLASS.
CLASS lcl_vehicle DEFINITION.
PUBLIC SECTION.
EVENTS vehicle_created.
ENDCLASS.
CLASS lcl_vehicle IMPLEMENTATION.
RAISE EVENT vehicle_created.
ENDCLASS.
Eventos so podem ter parametro de EXPORTING os quais devem ser passados por valor.
possvel eventos estaticos.
Disparando um evento com RAISE EVENT:
O fluxo do programa interrompido.
O metodo do evento regitrado chamado e processado.
Depois do evento ser executado o programa continua.
Eventos no podem ser persistentes.

Mtodos de eventos
CLASS <class_name> DEFINITION.
METHODS:
<on_event> FOR EVENT <event>
OF <class_name> | <interface_name>
IMPORTING <ex_par>.... [SENDER].
ENDCLASS.
CLASS lcl_vehicle DEFINITION.
Private section.
METHODS:
Add_vehicle FOR EVENT vehicle_create of lcl_vehicle
IMPORTING sender.
ENDCLASS.
Registrando um evento
SET HANDLER <ref_handle>-><on_event>
FOR <ref_sender> | FOR ALL INSTANCES
[ACTVATION <var>]
CLASS lcl_rental DEFINITION.
PRIVATE SECTION.
METHODS: add_vehicle FOR EVENT vehicle_create OF ...
ENDCLASS.
CLASS lcl_rental IMPLEMENTATION.
SET HANDLER add_vehicle FOR ALL INSTANCES. * todos os filhos podem excutar o evento.
ENDCLASS.
Vc pode registar um evento usando ACTIVATION 'X' para desativar ACTIVATION ' '.
Para registar uma classe como houvinte usar o SET HANDLER.
Todos evento do objeto so incluidos em uma tabela interna de controle.
Caracteristicas do evento
Eventos so sequenciais.
No possvel definir a sequencia dos eventos.
Possuem encapsulamento.
APOSTILA 03
Dicionrio
No dicionrio de dados vc pode criar: Tipos definidos pelo usurio (Elemento de dados, estruturas e tipos de tabelas). E pode usa-los
nos programas ABAP, interfaces ou modulo de funes. Objetos que so criados no dicionrio e banco de dados so views e tabelas
(so apenas replicados para o banco de dados depois que so ativados).
Alguns servios oferecidos pelo dicionrio de dados: gerenciamento de locks, ajuda de entrada F4 e ajuda de campo F1.
Servios do dicionrio
Input helps (F4) podem ser definidos com o Search Help.
Field Help (F1) podem ser criadas documentaes no elemento de dados.
Input check pode ser definido com foreign key.
Locks. O dicionrio prove maneiras de criar locks objects
Pode ser criado logs das modificaes realizadas nas tabelas.
A performance pode ser melhorada com u uso do buffer.
Development environment (Screen Painter e ABAP tools) utilizam informaes do dicionrio durante o desenvolvimento de
programas.
Runtime environment (Screen interpreter, ABAP interpreter) utilizam informaes do dicionrio para validar os programas abap.
Database interface utiliza informaes do dicionrio para acessar os objetos no banco de dados.
Tabelas no dicionrio
As chaves sempre devem ser os primeiros campos, tem q ter pelo menos uma chave nica.
Vc deve especificar tabelas de verificaes para os campos do tipo CURR (CUKY) e QUAN (UNIT). A associao dos campos a
tabela de referencia so podem ser feitos em tempo de programa.
Elemento de dados = Contem os labels, Documentao, F1, definio semntica. Pode ser definido as informaes tcnicas (direct
type, buid-in type).
Domnio = Informaes tcnicas, Pde ser definido faixa de valores.
As tabelas do dicionrio possuem o mesmo nome das tabelas do banco de dados.
Os campos das tabelas do dicionrio possuem o mesmo nome das tabelas do banco de dados.

Os tipos dos campos das tabelas do dicionrio so convertidos em tipos compatveis do banco de dados.
A order dos campos das tabelas do dicionrio d podem ser diferente da ordem dos campos das tabelas do banco de dados.
Os programas abap podem acessar as tabelas do banco de dados de duas maneiras: OPEN SQL ou EXEC SQL.
Estrutura no tem correspondente no dicionrio de dados.
Informaes tcnicas
As 4 obrigatrias so: Data class (table space) Size Category (tamanho da tabela) Buffering (Performance) Logging (Cria log da
tabela).
Possveis entradas de Data Class = Mster data (modificado raramente), Organizational data (Customizao), Transaction data
(modificado com freqncia), System data (Utilizado pelo sistemas R/3, ex. a fonte do programa).
Size Category = H 4 categorias de tamanhos que definem possvel tamanho da tabela.
Log = utilizado para gravar as modificaes dos campos da tabela. Depende da configurao do paramentro rec/client ( = ALL todos
cliente podem ter log, = 000 possvel especificar o cliente que poder ter log, = OFF no possvel ter log no sistema). Os logs
podem ser visto na transao SCU3.
Performance
ndices = devem iniciar com Z/Y. Nome pode ter ate 3 caracteres. Pode ter ndices nicos.
Buffer = os buffer melhoram a performance de 10..100. Para zerar o buffer entre $TAB no command field. As tabelas candidatas a
buffer so tabelas mestre e tabelas q sofrem poucas alteraes e que so muito utilizadas.
Tipos de buffer:
Full buffering = qndo um registro da tabela acessada, todos os registros da tabela so carregados no buffer. Os dados so
armazenados no buffer ordenados pelas chave da tabela. Se no seleo vc no usar a chave completa, todos os registro sera lidos
no buffer, nesse caso um acesso direto aos dados seriam mais eficientes.
Generic buffering = qndo um registro da tabela acessada, todos os registros que fazem parte da chave so carregados no buffer.
Recomendado qndo as ocorrncias das generic key so pequenas, se forem grandes a performance no sera boa. Ex tabelas de
linguagens.
Single-record buffer = apenas o registro que foi acessado carregado no buffer. Devem ser utilizados em tabelas que so acessadas
com SELECT SINLGLE.
Se os buffers residirem em vrios servidores de buffrers eles precisam ser sincronizados aps um registro ser alterado. O parmetro
que determina o tempo de sincronizao rdisp/bufreftime que define o tamanho do intervalo em segundos (60 ... 3600).
Consistncia Input Checks
Os valores fixos podem ser informados no domnio. Os valores definidos como fixos ficam disponveis como check values (F4). Fixes
values so checados apenas em telas. Se a insero for feita manualmente por um programa abap, os valores no sero checados.
Pode ser definido valores individuais ou faixa de valores.
Value table
Qndo for fazer um relacionamento de um campo que usa o domnio que possue um value table, ao cria um relacionamento a tabela
informada no value table sugerida para fazer parte do relacionamento. Essa tabela no fica disponvel na checagem de valores de
entrada (F4).
Cardinalidade
Essa informao meramente informativa.
1:1 = relacionamento de 1 para 1.
1:N = relacionamento de 1 para muitos
1:C = relacionamento de 1 para 1. Pode ter ou no.
1:CN = relacionamento de 1 para muitos. Pode ter ou no.
Tabelas de texto = ao definir um relacionamento com uma tabela de texto, o atributo
Key fields of a text table deve ser marcado.
Modificando a estrutura de uma tabela
As tabelas de banco de dados podem ser ajustadas a alteraes feitas no dicionrio de dados de 3 maneiras diferentes:
Excluindo a tabela do banco de dados e criando outra, a tabela alterada e ativada no dicionrio de dados e criada no banco de
dados. Todos os dados so perdidos.
Mudando o catalogo no Banco de Dados (ALTER TABLE). A definio da tabela no banco de dados alterada. Os dados existentes
so retidos. Os ndices podem ter que ser criados novamente.
Converter a tabela. Esse o modo mais demorado para ajustar a estrutura.
Convertendo... Mudando o campo da tabela TAB de 60 para 30 caracteres...

1 A tabela locada
2 A tabela renomeada para QCM<nome_tabela> QCMTAB e todos os ndices so deletados.
3 A nova verso da tabela ativada e criada com a nova estrutura no banco de dados como nome QCM8<nome_tabela>
QCM8TAB.
4 Os dados so transportados para a nova tabela (MOVE-CORRESPONDING) no caso da reduo de tamanho do campo, os que
excederem o tamanho so truncados. Os dados so comitados de 16 em 16 megas.
5 A tabela QCMTAB excluda.
6 A tabela QCM8TAB renomeada para TAB e os ndices secundrios so recriados.
7 o lock da tabela TAB desfeito.
Possveis problemas durante a converso:
Tablespace overflow.
Os dados so perdidos se a chave reduzida de tamanho.
Invalid change of type.
Vc pode utilizar a transao SE14 para analisar os erros ocorridos na convero.
Append Structure
Entra na tabela de modo DISPLAY, boto APPEND STRUCTURE cria um include e insere na tabela. Recomenda que o nome
dos campos iniciem com ZZ_<campo>.
Funo disponvel apenas para tabelas transparentes.
No podem ser criadas para tabelas POOL e CLUSTER.
No pode ter campo do tipo LCHR, LRAW.
Views
Database view = s visualizao (select).
Maintence = possvel update.
Projection = Escolhe os campos.
Vc pode colocar um include nas views, para qndo for includo um campo na tabela, a view j puxe automaticamente.
Search Help
Componentes: Interface (transferncia de dados de entrada em sada. EXPORT e IMPORT parameter), Dialog behavior (Interao
com o usurio), Selection method (mtodo usado para seleo de dados, tabelas, views).
Views de manuteno no podem ser usadas, normalmente usa-se Database views. Tambm possvel usar help views.
O Search Help associado a um Elemento de Dados.
Exitem 3 mecanismos de anexar o Search Help a um campo do dicionrio de dados:
1* Diretamente ao campo da tabela ou estrutura.
2* Ao Check Table
3* Ao elemento de dados
Lista
O sistema gera duas linhas de cabealhos, 1 com o titulo e a pgina e outra com uma linha de quebra.
REPORT LINE-SIZE 50 LINE-COUNT 12(3), onde line-size a largura da lista e line-count o tamanho da lista, vc pode reservar
linhas para exibir o rodap, (3) .
Standard Header -> 1 list header 4 column header.
Format
Color <n> [ON | OFF] = cor de fundo
Intensified <n> [ON | OFF] = intensifica as cores
Inverse <n> [ON | OFF] = inverte as cores de fundo e do texto
Hotspot <n> [ON | OFF] = mostra uma mo ao selecionar o campo. link
input <n> [ON | OFF] = campo de entrada
reset = reseta todos os commandos acima a seus valores iniciais (OFF).
Write
AT = para utilizar varivel para determinar a coluna onde o campo sera impresso
No-gap =tira os espaos do campo
No-zero = se o conteudo do campo for igual a zero apenas os espaos so mostrados, se o campo for do tipo C,N os espaos so
substitudos por zero.
Currency <key> = formata a moeda baseada na tabela TCURX
Unit <key> = Formata a qtde dos campos baseada na tabela T006.
Using edit mask <mask> = exibe o campo de acordo com a mascara informada
under = exibe o campo embaido de outro campo
left-justified = alinha o campo a esquerda
centered = alinha o campo no centro
right-justified = alinha o campo a direita

cones e smbolos
Para usar cones adicione -> include <icon>.
Para usar smbolos adicione -> include <symbol>
Para utilizar os dois adicione -> include <list>.
Para utilizar -> write <nome_icone_ou_smbolo>
Congela as colunas -> set left scroll-boundary column <number_of_columns>. Fica fixa na rolagem.
Para especificar onde a lista sera exibida - > SCROLL LIST TO PAGE <page_number> INDEX sy-lsind LINE <line_number> [TO
LAST PAGE].
NEW-PAGE = nova pgina
NEW-LINE = nova linha
SKIP [TO LINE] <n> = salta para o n de linhas definido.
RESERVE <n> LINES = garante que o n de linhas definido sempre saiam na mesma linha
BACK = volta para primeira linha depois do cabealho da pagina corrente
POSITION <n> = posiciona na coluna n
SET BLANK LINES [ON|OFF] = tira as linhas em branco.
Text-xxx
Exibe se nao tiver o texto na linguagem de logon, seno exibe a msg no xxx (xxx).
Variveis de uma lista
Sy-linct = numero de linhas do report (line-count)
Sy-linsz = tamanho da linha do report (line-size)
Sy-srows = numero de linhas mostrada na janela
Sy-scols =numero de linhas mostrada na janela
Sy-pagno =numero da pagina corrente
Sy-linno =numero da linha corrente da pagina corrente
Sy-colno = numero da coluna corrente da pagina corrente
Selection Screen
Para criar telas de selees adicionais:
Selection-screen begin of screen 1100.

Selection-screen end of screen 1100.


Para chamar:
Call selection-screen 1100.
Parameters <f>:
[TYPE/LIKE <type>] = tipo do parametro
[DECIMALS <n>] = para o tipo p
[MEMORY ID <pid>] = troca de informao atravz da SAP Memory
[OBLIGATORY] = campo obrigatrio
[DEFAULT <value>] = valor default
[LOWER CASE] = aceita minusculo
[VALUE CHECK] = se tiver relacionamento a checagem feita pelo dicionrio
[AS CHECKBOX] = exibe um checkbox
[RADIOBUTTON GROUP <grp>] = exibe em radio button ou grupos de radio button.
Select-Options forma uma tabela interna com os campos: Sign(I Include, E Exclude, Option (BT, EQ, NE, NB, CP, NP), Low, High.
Select-Option so_carr for sflight-carrid default AA.
Select-Option <seltab> FOR <f>
DEFAULT <value>
DEFAULT <value> TO <value2>
MEMORY ID <pid>
LOWER CASE
OBLIGATORY
NO-EXTENSION = sem o botao de filtro
NO INTERVALS = sem o at
Para formar um bloco:
Selection-screen begin of block bck_t with frame title text-000.
Selection-screen end of block bck_t.
linha:
selection-screen begin of line.
Selection-screen comment 1(20) text-000.
Selection-screen comment 1(20) text-000. FOR FIELD pa_col.fica como sendo label do parametro abaixo.

Parameters pa_col as checkbox.


selection-screen end of line.
AT SELECTION-SCREEN OUTPUT = esse evento acontece apenas antes da selection screen ser mostrada.
AT SELECTION-SCREEN
ON <f> = para tratar campo individualmente
ON <seltab> = para tratar campo individualmente
ON RADIOBUTTON GROUP <grp> = para tratar um grupo
ON BLOCK <block> = para tratar um bloco.
ON HELP-REQUEST FOR <selitab> = assume o controle do F1
ON VALUE-REQUEST FOR <selitab> = assume o controle do F4.
Variantes
SAP&xxx = variantss fornecidas pelo sistema SAP.
CUS&xxx = variantes criadas Poe usurios.
Ficam armazenadas na tabela TVARV (type T).
Podemos ter variantes:
Apenas para processamentos em background
Protect variantes
Display only in catalog
System variante (transportado automaticamente).
Logical Database
Vc pode gerar uma lista atravs de:
ABAP Program (OPEN SQL).
APAP Program (NATIVE SQL).
Logical Database (GET <node>).
Logical Database:
Fornece selection-screen.
Fornece checagem de entrada e autorizao.
L registros.
Podem ser usada por qq report, query, Quick View.
O sistema SAP fornece aproximadamente 190 logical databases. Seus nome podem ter de 3 a 20 caracteres.
REPORT....
* indica banco de dados logico, criar varivel com o mesmo nome da tabela
NODES: spfli, sflight.
*processa os registro da tabela spfli
GET SPFLI FIELDS...
*processa os registros da tabela sflight
GET SFLIGHT FIELDS...
*processa os registros, na quebra
GET SFLIGHT LATE
Qndo se usa o LDB obrigatrio o uso do evento START-OF-SELECION, pois o GET s roda dentro desse evento.
Exitem 4 diferentes tipos de NODES:
>Table (TYPE T) = o nome do node deve ser igual ao nome da tabela.
>DDIC Typer (TYPE S) = Qq nome possvel. O NODE associado a uma estrutura ou tabela do dicionrio de dados.
> TYPE GROUPS (TYPE C) = o tipo no node definido em um type-group.
> Dinamicy Nodes (type A) = esse node no possue um tipo fixo.
CHECK = sai do bloco de processamento corrente se a condio for falsa.
STOP = finaliza o processamento do programa.
EXIT = finaliza o programa mas no executa o evento END-OF-SELECTION, se existe uma lista no buffer ela sera mostrada.
REJECT =
Os programas de Lgica de Banco de Dados so nomeados da seguinte maneira:
Sapdb<ldb_name>. Esses programas so uma coleo de subrotinas, onde cada uma tem seu propsito definido.
Ex. INIT = inicia o programa de banco de dados. Os acessos ao banco de dados so programados nas rotinas PUT_. Dentro dessas
rotinas feito um loop na tabela e dentro de cada looping tem um comando PUT que envia os dados para o programa.
LDB -> SE36
Dentro de um LDB, podemos ter:
Tabelas
Views
Estruturas
Table type

Data retrievals
Vantagens das views: manuteno central, acessvel a todos os usurios, necessrio apenas o comando SELECT para acessa-las.
A desvantagem que a view pouco flexvel.
For All Entries
Tabela tem que estar em ordem.
Tabela no pode ter duplicidade.
Tabela no pode estar vazia.
Extract DataSets
Gera um arquivo com os dados no servidor de aplicativo.
usado para processar um grande nmeros de dados.
No pode usar o comando EXTRACT com o grupo HEADER.
S pode ter um Dataset por programa.
Comandos permitirdos, append, sort, seqencial processing
1 Nomeando os grupos
FIELD-GROUPS: HEADER, CONNECTIONS, FLIGHTS.
Header -> obrigatrio. Contem todos os campos possiveis de classificao.
2 Especificando os campos de cada grupo
INSERT: spfli-carrid, spfli-connid, spfli-fldate INTO Header,
spfli-cityfrom, spfli-airportfrom INTO CONNECTIONS.
3 Extrair os dados
EXTRACT <grupo_nome>
Sort by <f1> * Header fields
Loop.
At <fg> * faz a quebra qndo mudar o grupo
At <fg1> with <fg2> *faz a quebra do grupo 1 desde que tenho no grupo 2.
At End Of <f> CNT(<rf>)* header field SUM(<nf>) *numeric field
Endloop.
Os commandos CNT(<rf>) SUM(<nf>) esto disponveis apenas no evento AT END OF ou AT LAST. Se tentar usar em outro evento
o programa terminar de forma anormal.
Salvando lista
Algumas maneiras de salvar listas: (local, menu, pasta local/compartilhada)
SAP Office.
Arquivo local no seu PC (ASCII, EXCEL, WORD, HTML).
rea de menu.
Favoritos no menu SAP.
Imprimindo lista
Para imprimir uma lista, vc deve preencher os parmetros de impresso, que so divididos pelas sequintes reas:
Output device and number of copies.
Spool request.
Spool control.
Cover sheets.
Output format.
Para setar os parmetros no programa -> NEW-PAGE PRINT ON <apartir desse comando todos os writes vo para spool> NEWPAGE PRINT OFF.
Para setar os parmetros usando uma funo -> SET_PRINT_PARAMETERS.
Os parmetros do comando NEW-PAGE PRINT devem ser preenchidos com a funo GET_PRINT_PARAMETERS. (se ok retorna
valid = X).
Processamento em background (JOBS)
SM50 -> ver todos os work process
SM51 -> ver todos os servidores de aplicao
Definir um job (SM36, SM37, path STL-2) Nome, Classe, Status e Destino.
Funo para automatizar o agendamento de jobs BTCK e BTC2.

Lista interativa
Pode ter ate 20 listas detalhe.
Para ter uma lista detalhe necessrio -> at line-selection/at user-command, write.
Cabealho para as sublistas -> TOP-OF-PAGE DURING LINE-SELECTION.
O que ativa a lista: duplo-clique, um clique, icone na toolbar, F2, PICK.
Sy-lsind = nr da lista corrente
Hide guarda os campos para serem usados na lista, trabalha em conjunto com sy-lilli (linha em que foi dado o duplo-clique)
Usar o clear no evento END-OF-SELECION para limpar os valores das variveir do comando HIDE.
Outras tcnicas
Para colocar titulo na janela do relatrio. SET TITLEBAR XXX.
O ttulo tem que ter at 20 caracteres. Vc pode usar at 7 variveis. O tamanho total no pode ultrapassar a 70 caracteres.
Qndo o usurio seleciona a linha, a varivel sy-lisel recebe uma copia da linha.
Para pegar o contedo do campo clicado:
At line-selection
GET CURSOR FIELD field_name VALUE field_value
Case field_name
When spfli-carrid.
SAP Grid Control
Componentes independentes
Roda no cliente (SAPGUI)
O sistema utiliza RFC para tranferir metodos criar e usar os controle no front end.
Para usar necessrio = rea (tela) , custom container control, sap grid control.
O sap container pode conter outros controle como, sap grid control, tree control, sap picture controlm sap spliter control....
Sap container so divididos em 5 grupos:
SAP custom container (CL_GUI_CUSTOM_CONTAINER) = Mostra uma rea definida no Screen Painter na tela ou subtela.
SAP dialog box container (CL_GUI_DIALOGBOX_CONTAINER) = Mostra em modo de dialogo ou em uma tela inteira.
SAP docking container (CL_GUI_DOCKING_CONTAINER) = Mostra acoplado, redimensionavel com opao de mostrar em modo de
dialogo.
SAP splitter container (CL_GUI_SPLITTER_CONTAINER) = mostra alguns grupos de controle em uma rea. Separando a rea
dentro da clula da classe
SAP easy splitter container (CL_GUI_EASY_SPLITTER_CONTAINER) = mostra controles em duas celulas, onde o usuario pode
redimensionar usando o split.
A fonte de dados para exibir o Grid pode ser de uma tabela interna, query, quickView...
Hierarquia da SAP Grid Control = CL_GUI_OBJECT > CL_GUI_CONTROL > CL_GUI_ALV_GRID_BASE > CL_GUI_ALV_GRID.
DATA: g_custom_container TYPE REF TO cl_gui_custom_container,
sap_grid TYPE REF TO cl_gui_alv_grid.
MODULE create_objects OUTPUT.
If g_custom_container is initial.
Create object g_custom_container
Exporting container_name = MY_CONTROL_AREA.
Create object sap_grid
Exporting I_parent = g_custom_container.
endif
ENDMODULE.
MODULE transfer_data OUTPUT.
CALL METHOD sap_grid->set_table_for_first_display
EXPORTING i_structure_name = SPFLI
CHANGING it_outtab = itab_spfli.
ENDMODULE.
Para configurar as colunas, usar a tabela interna do tipo LCV_T_FCAT, onde cada linha da tabela corresponde a uma coluna.
LCV_T_FCAT:
Fieldname = nome do campo da tabela de sada.
Ref_table = nome da estrutura de referencia do DIC
Ref_field = nome do campos de referencia do DIC
inttype =Tipo do campo (C, N, I, P)
outputlen = Tamanho da coluna
coltext = Texto da coluna
seltext = nome do campo no detalhe da viso
col_pos =posio da coluna

no_out = colula invisivel


icon = icone
DATA: gt_fieldcat TYPE lcv_t_fcat,
Wa_fiedcat TYPE LINE OF gt_fieldcat.
MODULE transfer_data OUTPUT.
CALL METHOD sap_grid->set_table_for_first_display
EXPORTING i_structure_name = SPFLI
CHANGING it_outtab = itab_spfli.
It_fieldcatalog = gt_fieldcatalog.
ENDMODULE.
Variantes
Data: gs_variante type disvariant.
X_save.
Gs_variant-report = sy-cprog.
X_save = A *pode salvar qq tipo de variante.
CALL METHOD sap_grid->set_table_for_first_display
EXPORTING i_structure_name = SPFLI
is_variant = gs_variant
i_save = x_save
CHANGING it_outtab = itab_spfli.
It_fieldcatalog = gt_fieldcatalog.
Para definir o header
Data: gs_layout tpe lcv_s_layo.
gs_layout-grid_title = SAP Grid Control
gs_layout-detailtitl = Detail title
gs_layout-zebra = X
CALL METHOD sap_grid->set_table_for_first_display
EXPORTING i_structure_name = SPFLI
is_variant = gs_variant
i_save = x_save
is_layout = gs_layout
CHANGING it_outtab = itab_spfli.
It_fieldcatalog = gt_fieldcatalog.
Todos os parametros do metodo set_table_for_first_display
EXPORTING
I_structure_name = nome da estrutura, tabela ou view
Is_variant = mostra variantes
I_save = salvar variantes
I_default = layout de seleo inicial
Is_layout = modificar configuraes tcnicas
Is_print = parmetros para impresso em background
It_special_groups = grupos
It_toolbar_excluding = esconder funes standard
CHANGING
It_outtab = tabela de saida
It_fieldcatalog = catalogo de campos
It_sort = ordenao para a primeira lista de saida
It_filter = filtro para a primeira lista de sada.
Eventos
Ao dar o duplo-click diparado o evento DOUBLE_CLICK, os parmetros exportados so:
E_ROW (TYPE LVC_S_ROW) = contem o numero da linha da tabela interna. INDEX
E_COLUMN (TYPE LVC_S_COL) = contem o nome da coluna clicada. FIELDNAME
Ao clicar como um link, o evento HOTSPOT_CLICK, os parmetros exportados so:
E_ROW_ID (TYPE LVC_S_ROW) = contem o numero da linha da tabela interna. INDEX
E_COLUMN (TYPE LVC_S_COL) = contem o nome da coluna clicada. FIELDNAME
Programando o evento duplo click
CLASS lcl_ils DEFINITION.
PUBLIC SECTION
METHODS on_dblclick FOR EVENT double_click OF cl_gui_alv_grid IMPORTING e_row.

ENDCLASS
CLASS lcl_ils IMPLEMENTATION
METHOD on_dblclick.

ENDMETHOD
ENDCLASS
Data : alv_dblclick type ref to lcl_ils
CREATE OBJECT sap_dblclick
SET HANDLER sap_dblclick->on_dblclick FOR alv_grid.
APOSTILA 04
Tipos de programa ABAP
1 Executable program (Type 1) : Seus blocos de processamento tem uma ordem pr-definida. Normalmente criam e mostram uma
lista.
2 Function Group (Type F) : Um grupo de funes contm mdulos de funes, variveis locais, globais e telas. (*** No pode ser
executado diretamente. So chamados de outros programas ***)
3 Module Pool (Type M) : Para esse tipo de programa vc deve criar pelo menos uma transao no qual sera especificado uma tela
inicial.
4 Include program (Type I) : Pode conter qq comando abap. (*** No pode ser executado diretamente. So chamados de outros
programas ***)
5 Interface Pool (Type J) / Class pool (Type K) : Contem global interfaces / Contem globals classes. (*** No pode ser executado
diretamente. So chamados de outros programas ***).
Telas
Os tipos de atributos de uma tela so:
Admin.: Program, Screen N, Short desc., Screen group, Changes, Generation, Status, Original lang., Dev. Class.
Type: Normal, Subscreen, Modal diaolog Box, Selection Screen.
Size: Static (Maintened, Occupied) Dynamic (Starting at, Size *** Podem ser mudados dinamicamente).
Sequence: Next Screen *** Pode ser mudado dinamicamente
Settings: Cursor position (Podem ser mudado dinamicamente)m Hold Data, Fixed font, Runtime compression, Context menu form.
Principais atributos: Screen Number, Short Text, Screen Type e Next Screen (se for igual a zero o processamento volta para o ponto
de chamada da tela e o processamento da tela termina.
Dica: Tela maiores que 9000 so reservadas a SAP Customers. Telas 1000 e 1010 so reservadas para manuteno de tabelas do
dicionrio e telas de seleo padro.
PBO (module ... OUTPUT) PAI (module .... INPUT).
Seqncia para se criar uma tela:
Configura os atributos de tela.
Define o layout da tela.
Define os atributos dos elementos das telas.
Define a lgica de fluxo.
Para que os dados sejam transportados do seu programa ABAP para a tela, os nome das variveis do programa abap e os campos
das telas devem ter os mesmos nomes.
Essa cpia dos dados da Work rea do ABAP para Work rea da Tela feita aps o processamento do evento PBO. Antes do
processamento do primeiro modulo do evento PAI o contedo da Work rea da Tela copiado para Work rea do ABAP. (Estrutura
SDYN_CONN).
Atributos que podem ser modificados dinamicamente:
Screen
-----------------#Screen-Name
----------------#screen-group1
#screen-group2
#screen-group3
#screen-group4
-------------------

screen-length
screen-input
screen-output
screen-required
screen-intensified
screen-invisible
screen-active
1 = ativo / 0 = inativo
Todos esses atributos ficam especificados na tabela SCREEN.
Para modificar os elementos da tela dinamicamente, basta codificar no evento PBO:
LOOP AT SCREEN.

MODIFY SCREEN.
ENDLOOP.
Obs: LOOP AT SCRREN WHERE e READ TABLE SCREEN no so suportados.
Para mudar a seqncia de tela dinamicamente, utilizar o comando SET SCREEN.
Esse comando apenas muda o atributo Next Screen.
A proxima tela processada apenas qndo o processamento da tela atual e finalizado ou aps o comando LEAVE SCREEN ou
LEAVE TO SCREEN 0.
Para abrir outra seqncia de telas apartir de outra, usar o comand CALL SCREEN. Ele para no ponto de chamada e volta apenas
qndo o seqncia aberta terminar.
Para encerrar o programa > LEAVE PROGRAM.
Para posicionar o curso dinamicamente > SET CURSOR FIELD <f> [OFFSET <o>]
Ex. SET CURSOR FIELD SDYN_CONN-CONNID. Offset = posicao no campo do cursor.
Para configurar o ttulo da tela > SET TITLEBAR <n> WITH <&1>...<&9>. Tamh.Max 20.
Para configurar (Menu, Standard toolbal, Application toolbal, Key Settings) > SET PF-STATUS <n>.
Se a prxima tela no tiver ttulo definido, o ttulo exibido sera o da tela anterior.
Atributos dos tipos de funes (botes) FTYPE: Normal , Exit E, System S, Transaction T, Tabstrip ctrl P, Help request H.
A Application toolbar pode conter ate 35 botoes. Cada menu pode conter ate 15 entradas (ate 3 niveis). Pode ter ate 8 menus (2 fixos
system e help).
Para executar funes de acordo com o boto pressionado, vc deve declarar uma varivel do tipo sy-ucomm (ok_code like syuccom) e nas telas no General Attributes colocar o nome dessa varivel de retorno no atributo Type OK.
Dica : Toda vez q inicial uma tela, limpar essa varivel.
Text Fields
Seus nomes no podem comear com underline e interrogao. Em runtime vc pode mudar apenas os atributos de tamanho (visible
e lenght) do texto e atributos de display (Bright e invisible). SCREEN-LENGHT, SCREEN-INTENSIFIED, SCREEN-INVISIBLE OU
SCREEN-ACTIVE.
Vc pode cria text fields de duas maneiras:
Direto na tela (digitando o texto)
Dicionrio de dados (Escolhendo um texto do elemento de dados do campo).
cones
VC pode mudar dinamicamente os valores dos atributos: lenght, visible, intensified, invisible.
Para definir uma varivel do tipo cone e enviar dinamicamente na tela .
Ex. DATA iconfield type icons-text.(tamanho 132, visible length 2).
Module set_icon.

CALL FUNCTION ICON_CREATE


EXPORTING
Name = ICON_CHECKED
Text =
IMPORTING
Result = iconfield.
EXCEPTIONS
Icon_not_found = 1.

endmodule

Grupos
VC pode mudar dinamicamente os valores dos atributos: lenght, visible, intensified, invisible.
Input/Output fields
Atributos que podem ser modificados dinamicamente: Size-Dinamic, Input Field, OutputField, Requerid, Bright, Invisible, 2
dimensional.
Vc pode cria input field de duas maneiras:
Direto na tela.
Dicionrio de dados (Escolhendo um texto do elemento de dados do campo).
Persistindo valores entre transaes. > Set parameter Paramever_id valor / Get parameter parameter_id valor.
A tabela que armazena esses dados a tabela TPARA.
Checagem automticas
Campos obrigatrios. Mandatory fields checks
Tipos dos campos. Field format check
Valores fixos Fixed values (domnio)
Relacionamento Foreign key checked.
FIELD <field_name> MODULE check_input.
Testa o campo, se tiver errado, volta para a tela (no executa o PBO novamente) e apenas o campo testado fica disponvel para o
usurio. Consistncia individual. Tem q emitir uma mensagem de erro ou aviso.
CHAIN.
FIELDS: <field_name_01>, <field_name_02> MODULE check input
ENDCHAIN.
Consiste um campo ou grupos de campos. Se houver algum erro, apenas os campos do grupo ficaro disponveis. Tem q emitir uma
mensagem de erro ou aviso.
Categorias da mensagens de dilogo
Tipos de mensagens:
A Termination = O processamento termina e o usurio tem que reiniciar a transacao
X Exit = Igual a Termination, mas short dump MESSSAGE_TYPE_X
E Error = O processamento interrompido e o usurio deve entrar com o valor correto
W Warning = Igual a Error, mas o usurio pode ou nao entrar com um novo valor
I Information = o processamento e interrompido, mas o processamento continua qundo o usurio confirma a mensagem
S Sucesso = A informao exibida na prxima tela.
DICA = os campos que fazem parte da checagem (FIELD/CHAIN) s so enviados para o programa abap na hora da checagem.
Para checar apenas qando o valor dos campos for diferente do inicial
FIELD <field_name> MODULE check_input ON INPUT.
CHAIN.
FIELDS: <field_name_01>, <field_name_02> MODULE check input ON CHAIN-INPUT
ENDCHAIN.
Para checar apenas qando o valor o usurio mudar o valor dos campos
FIELD <field_name> MODULE check_input ON REQUEST.
CHAIN.
FIELDS: <field_name_01> MODULE check input ON CHAIN-REQUEST
ENDCHAIN.
Para sair da tela sem que as checagens sejam feitas, basta codificar um module como AT EXIT-COMMAND. So pode ter um por
tela. Tem q ser codificado no PAI. No checa as 4 consistencias automticas (tipo, campos fixos, obrigatrios e foreign keys).
Ex. module exit AT EXIT-COMMAND.
Botoes standards
BACK = Volta para tela anterior
EXIT = Retorna para onde o sistema foi chamado
CANCEL = Volta para tela inicial. (inicializa os campos).
Radio button/Checkbox
Cada um associado a uma varivel(type c 1) no top include. No caso do radiobutton pode ser definido uma estrutura no abap.
Ex.:

DATA:
begin of mode,
display value X
change
create
end of mode.
Na tela colocar os nome como mode-change, mode-create para os radiosbuttons
Para checar qual esta selecionado
Constants mark value X
Module user_command_0100.
Case ok_code
When TOGGLE *ok code definidos para todos do grupo
Case mark
When mode-display
When mode-change
When mode-create
endcase
Endcase.
Endmodule.
Subscreen
uma area reservada para ser preenchida com tela em tempo de execuo.
Vc pode usar subscreen nas seguintes circunstancia:
Enhancements.
Em outro objeto de tela (Tabstrip controls)
No assistente de modificao
Em transaes web.
*** Subscreen no possuem atributos dinmicos.
CALL SUBSCREEN no permitido entre LOOP ENDLOOP ou CHAIN ENDCHAIN.
No possue o campo de retorno nomeado como ok_code.
No podem conter o modulo AT EXIT-COMMAND.
No pode usar os comandos SET TITLEBAR, SET PF_STATUS, SET SCREEN, LEAVE SCREEN em subscreens.
Para processar os eventos PBO e PAI das Subscreens:
PROCESS BEFORE OUTPUT (TELA QUE CHAMA A SUBSCREEN)
...
CALL SUBSCREEN sub01
INCLUDING <program_name> <nr_tela_subscreen>
INCLUDING sy-cprog
0110
.
PROCESS AFTER INPUT (TELA QUE CHAMA A SUBSCREEN)
...
CALL SUBSCREEN sub01.

DICA: se a subscreen no faz parte do mesmo modulo pool, vc ter que transportar os dados entre o programa abap e a subscreen
de forma manual.
Tabstrip controls
A tabstrip composta de de vrios elementos de pagina (abas), cada elemento composto de um pushbutton (Text da aba),
Subscreen rea, Contedo.
Para criar um tabstrip control, so 3 passos:
Definir uma tab area.
Definir os ttulos das tabs.
Associar uma subscreen rea a cada elemento de pagina.
Inserir um objeto TABSTRIP na tela, e no programa abap cria uma varivel com o mesmo nome da tabstrip (CONTROLS mytab type
tabstrip) e do tipo TABSTRIP (corresponde a estrutura CXTAB_TABSTRIP- (grupo CXTAB)).
O campo ACTIVETAB contem o function code da aba corrente.
Por default a tabstrip criada com duas abas.
O Function type das abas devem ser (espao) ou P. Se for espao o PAI disparado qndo usurio escolhe a aba. Se o tipo da
funo for P o usurio pode navegar entre as abas do mesmo tipo sem disparar o evento PAI.
Para adicionar outras abas, basta arrastar um pushbutton para a tabstrip.

O atributo do pushbutton Reference Object a rea a ser chamada qndo o boto for pressionado, vc pode chamar a mesma rea
para vrias abas ou diferentes reas.
Vc pode carregar todas subscreens das abas de uma vez, assim vc poder navegar entre elas, mas para isso os tipos das funes
tem que ser P e cada pushbutton deve se referir a uma rea diferente. Para chamar todas de uma vez, no evento PBO da tela
principal, basta chamar todas as subscreen, no PAI idem.
Se a aba no contem nada para exibir ela escondida, e se todas ficarem assim a tabstrip sera escondida.
Para carregar uma aba de cada vez, vc tem que indicar q todas as abas refenciam ao mesmo objeto. E nos eventos PBO e PAI da
tela principal codificar da seguinte maneira:
PBO
Module Preenche_Tela
Case my_tab_strip-activetab
When TAB1
Tela = 100
When TAB2
Tela = 200
Else
Tela = 100
Endcase.
Tab-activetab = tela.
Endmodule
PAI
Module user_command
Case ok_code
When TAB1 ou TAB2
Tab-activetab = ok_code.
endcase
endmodule
DICA = Cria variveis > DATA, TABLES, NODES, SELECT-OPTIONS, PARAMETERS, CONTROLS.
DICA = as funes responsveis por transportar dados entre o programa abap e a tela
So DYNP_VALUES_UPDATE e F4IF_FIELD_VALUE_REQUEST.
Table Control
Utilizada para exibir grande quantidade de dados em uma tabela.
Pode ser configurada pelo usurio.
Permite modificar linhas da tabela.
O tabcontrol possue vrias aes que so controladas pela camada de apresentao, como:
Rolar os registro usando a scrollbar.
Mudar o tamanho das colunas.
Selecionar colunas, linhas.
As aes de rolar verticalmente e salvar as configuraes do usurio e tecla ENTER dispara o evento PAI.
Os campos das estrutura (STEPL e LOOPC) do sistema (syst) contm informaes sobre o loop de processamento.
Qndo vc cria um tab control, vc precisa criar:
A table control rea
Table control fields.
Table control area = No dicionario se deve criar uma varivel do tipo TABLEVIEW, que corresponde a estrutura do tipo
CXTAB_CONTROL (grupo CXTAB) que contem uma complexa estrutura de campos simples e uma tabela interna.
Ex.: CONTROLS: tabcontrol type tableview using screen 0100.
Na tela vc deve adicionar o controle TABCONTROL e adicionar as colunas (DIC/PROG Fields).
Atributos em tempo de execuo
Os atributos da tabcontrol so salvos na estrutura q vc criou com CONTROLS, pode ser dividida em General aributes (atributos das
propriedadesda tab control. Ex. nr de colunas fixas, numero de linhas para rolagem vertical...) e atributos de coluna (so salvos em
uma tabela interna. Ex.atributos da estrutura screen posio da coluna... ).
DICA: Os dados trafegam do programa abap para o tabcontrol atravs de uma Work rea.
Os 3 passos para se preencher uma tabcontrol:
Faz um looping nos regitros da tabela interna.
Joga uma a um para uma rea de trabalho.
Transporta o contedo da work rea para tabela interna da tela.

Dica = obrigatrio a programao dos eventos PBO e PAI (Loop...End).


Context Menu
Context menu so atalhos para as mais freqentes funes utilizadas. Em todos os objetos que tiverem a propriedade ON_CTMENU
esto habilitados a usar o context menu.
1 Criar um pf-status do tipos context-menu.
2 Cria uma funo com nome on_ctmenu_<nome_pf-status>
using <varivel> type ref to cl_ctmenu.
3 Na funo vc tem q carregar o menu, utilizando o seguinte mtodo
call method cl_ctmenu=>load_gui_status
exporting program = sy-cprog
status = <nome_pf_status>
menu = <nome_varivel_funo>.
Alguns mtodos para manipular os menus:
Call method <instancia> -> <name> exporting .....
Add_function
Add_separator
Hide_function
Show_function
Disable_function
Enable_function
Esses so os metodos q dependem da instancia.
Exibindo uma lista
No existe como chamar uma lista utilizando o comando CALL.
A lista processada no final do evento da tela (PBO ou PAI) com o comando LEAVE TO LIST-PROCESSING.
Para enviar direto para o spool use NEW-PAGE ON e no LEAVE TO LIST-PROCESSING.
Para inserir um cabealho na lista use TOP-OF-PAGE.
Para criar um lista e mostrar em uma tela use : LEAVE TO LIST-PROCESSING.
Para assegurar que o status mostrado sera o default para listas use: SET PF-STATUS SPACE.
Depois de processada a lista mostrada na tela 120 (tela para programa bsicos).
Para exibir uma lista e retornar para outra tela : LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 300.
Se vc inserir SUPRESS DIALOG no PBO da tela q emite a lista, a tela corrente no eh mostrada.
Se vc quiser mostrar a lista de modo DIALOG, vc deve criar uma tela desse modo e no evento PBO , inserir SUPRESS DIALOG. E
LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.
Atualizao de banco de dados
Para inserir uma linha no banco de dados: INSERT <tabela> VALUE <wa>
Retorno = 0 -> linha inserida com sucesso.
Retorno = 4 -> a linha no foi inserida pq uma linha com a mesma chave j existe.
Para tentar inserir a tabela inteira: INSERT <tablela> FROM TABLE <tabela_interna>
Sy-dbcnt contem o n de registros inseridos.
Para atualiza registro: UPDATE <tabela> SET <campo> = <valor> WHERE <campo> = <valor>.
Retorno = 0 -> Pelo menos uma linha foi atualizada
Retorno = 4 -> No foi atualizado. Ex. registro na encontrado
Sy-dbcnt contem o n de registros atualizados.
Para atualizar apartir de uma tabela interna: UPDATE <tabela> FROM TABLE <tabela_intera>.
Retorno = 0 -> Todos os registro foram atualizados com sucesso.
Retorno = 4 -> Pelo menos um registro no foi atualizado.
Sy-dbcnt contem o n de registros atualizados.
Modificar um registro ou registros:
MODIFY <tabela> FROM <wa>
MODIFY <tabela> FROM TABLE <tabela_interna>.
Se encontrar , atualiza, se no, insere.
Retorno = 0 -> Todos os registro foram atualizados/inseridos com sucesso.
Retorno = 4 -> Pelo menos um registro no foi atualizado/inserido.
Sy-dbcnt contem o n de registros atualizados/inseridos.
Para excluir um registro: DELETE <tabela> WHERE <condies>
Retorno = 0 -> Deletado com sucesso
Retorno = 4 -> No foi deletado.
DELETE <tabela> FROM TABLE <tabela_interna>.
Exitem dois mtodos de desfazer as atualizaes:

Enviar uma mensagem do tipo A


Executar o comando abap ROLLBACK WORK.
LUW
Ou salva tudo ou no salva nada.
O sistema da sap da um commit automtico:
Qndo o sistema mostra uma tela sap.
Qndo o sitema envia uma msg de dialogo.
Sempre qndo a chamada assncrona e sncrona de RFC.
Com os comandos CALL TRANSACTION ou SUBMIT.
Locks
Todo o controle de lock feito no R/3 e no n o banco de dados. O work process responsvel por esse controle o wp ENQUEUE.
Uma tabela criada na memria do servidor de aplicativo para fazer esse controle.
Para trabalhar com locks necessrio gerar os objetos de lock (se11), todo objeto de lock deve iniciar com EZ... ou EY...
Ao se criar um objeto de lock e ativa-lo gerado duas funces para controle:
ENQUEUE_<nome_lock> = para pedir o bloqueio
DEQUEUE_<nome_lock> = para liberar o bloquio
Um dos parmetros a serem preenchidos na criao do lock, a propriedade LOCK MODE, que pode conter os seguintes valores:
E Exclusive = Exclusivo, apenas um usa. Se o programa pedir o lock do mesmo registro, no ocorre erro.
S Shared = Vrios programas pode ver, mas no pode pedir o lock exclusivo para alterao.
X Extended exclusive lock = Exclusivo, apenas um usa.Se o mesmo programa pedir o lock do mesmo registro, sera gerado um erro.
Possveis respostas ao se pedir um lock:
Lock setado com sucesso.
Lock no pode ser setado, por:
Um bloqueio j existe (Exception FOREIGN_LOCK)
Erro no gerenciamento de lock (Exception SYSTEM_FAILURE).
DICA = se um programa que possue locks finalizado, os locks so liberados. (terminar com message A/X, LEAVE PROGRAM,
LEAVE TO TRANSACTION, /n .
A funo de liberao de locks no possue controle de erro, sendo assim, se vc tentar desbloquear algo que no esta bloqueado,
no ocorrera nenhum erro.
Se vc quiser liberar todos os locks feitos por vc, basta usa a funo DEQUEUE_ALL.
O parmetro CLIENT uma exeo, As seguintes regras se aplicam qndo vc chama um lock module:
Se o client no for especificado, o lock se aplica apenas ao client corrente.
Se for especificado um cliente, o lock se aplica apenas a esse cliente.
Se o client for especificado com um espao, o lock se aplica a todos os clientes.
DICA = para visualizar os objetos locados SM12.
Parmetros do modulo ENQUEUE:
Mode_<tabname> = tipos de locks
<lock_parameter> = valor do campo a ser usado para lock
x_<lock parameter> = (espao/X) = lock acc correspondente ao lock parameter/lock uma linha da tabela com o valor inicial do
campo.
_scope = (1/2 pode ser desfeito pelo wp/3) = quem vai retirar o lock
_wait = se o registro estiver locado, espera um determinado tempo.
_collect = ou bloquei o conjunto de tabela ou no bloqueia nada.
Qndo se usa o bloqueio em conjunto, no final das chamadas de bloqueio deve-se chamar a funo FLUSH_ENQUEUE, essa funo
nos retorna se todas as tabelas foram locadas com sucesso. Se alguma no foi locada, uma exceo FOREIGN_LOCK gerada.
Se vc quiser deletar as entradas para o lock em conjunto, usar a funo RESET_ENQUEUE.
Tipos de locks que vc pode fazer se outro programa j estiver com o lock
Seu programa
Nada
Nada
S

Outro programa
E
X
S

Tipos de locks que vc pode fazer se vc j tiver locado


Seu programa
E, S
Nada

Seu programa
E
X

E,S

Seqncia a fazer:
Lock registro
L Registro
Altera registro
Libera registro
Na tcnica LUW as funes que fazem alteraes no banco de dados devem ser sucedidas do comando ON COMMIT, e no final das
alteraes chamar o comando COMMIT WORK que tentara executar todas as funes de alterao.
Ex.
PERFORM <subrotine1> ON COMMIT.
PERFORM <subrotine2> ON COMMIT.
PERFORM <subrotine3> ON COMMIT.
COMMIT WORK.
DICA: sempre depois de efetuar um commando de atualizao, testar se foi executado com sucesso ou no. Se no foi emitir uma
mensagem do tipo A para que seja executado rollback.
As funes usando ON COMMIT no devem ter interface.
Ao realizar o commit work, a responsabilidade por fazer a atualizao no banco de dados fica com o Work Process. Ele fica
checando se existe algum lote fechado para iniciar a execuo. Se o lote foi executado com sucesso, ele deletado, seno, o
usurio avisado que ocorreu um erro. (SM13 para monitorar as requisies de erro).
Update modules
Updates modules so como qq outra funo, tem uma interface para transferir os dados. Essa interface inclui apenas parmetros de
IMPORTING e TABLES.
Update mode:
Imediate start = prioridade alta (V1)
Imediate start no restart = prioridade alta (V1)
Start delay = prioridade baixa (V2)
Collective run = prioridade baixa (V2)
Para inserir as funes no processo LUW, basta adicionar a sua chamada o comando ON UPDATE TASK. Todas as chamadas das
funes e seus parmetros so armazenados em uma tabela de log. Ao realizar o commit work o cabealho da tabela criado e a
atualizao iniciada.
CALL FUNCTION F1 IN UPDATE TASK
EXPORTING p1 = a
DICA = essas funes no retornam dados. As passagens de parmetros so apenas por valor.
Para discartar o SAP LUW, utilizar os camando ROLLBACK / MESSAGE A:
Deleta todas as requisies de alteraes escritas ate o momento.
Deleta todos os locks setados ate o momento.
Descarca todas as alteraes executadas no LUW corrente.
Descarta todos os forms registrados com ON COMMIT.
DICA = no use os comandos COMMIT WORK / ROLLBACK WORK nos update modules, use messages do tipo a, e o logo corrente
sera terminado e o log sera flegado com um erro e o usurio poder ser avisado por email (rdisp/vbmail (0/1), rdisp/vb_mail_user_list
$ACTUSER.)
Asynchronous update = o programa de dilogo e o programa de update rodam separado. (VBLOG, VBHDR, VBMOD, VBDATA,
VBERROR).
Synchonous update = Para rodar dessa maneira, basta usar o comando, COMMIT WORK AND WAIT. O programa ficara em
aguardo se a atualizao foi bem sucedida ou no.
Local update = as funes de update rodam no mesmo work process do programa. Para fazer isso basta escrever SET UPDATE
TASK LOCAL aps as requisies.
DICAS= Chamadas com retorno (CALL FUNCTION, SUBMIT ANS RETURN, CALL TRANSACTION) Chamadas sem retorno
(SUBMIT, LEAVE TO TRANSACTION).
Processamento paralelo (abre uma sesso externa)
CALL FUNCTION ABC
STARTING NEW TASK <task_name>
EXPORTING.
Roda na mesma sesso interna > CALL FUCNTION
Roda em outra sesso interna > SUBMIT ABC AND RETURN / CALL TRANSACTION A
Meios possveis de troca de dados entre programas > CALL INTERFACE (SUBMIT B WITH ....), ABAP MEMORY, SAP MEMORY,
DB, FILE.

Se no meio do programa a (formao da luw ) tiver uma chamada com SUBMIT A AND RETURN / CALL TRANSACTION Z, depois
dessas chamadas o foca volta para o progrma A. iremos ter duas luw, uma para o programa A e outra para a chamda.
LUW A INICIO - PARA | INICIO LUW B FIM | VOLTA LUW A FIM
Se tiver os comandos SUBMIT C / LEAVE TO TRANSACTION B a luw do programa terminara e se iniciara outra luw para o
programa C/B.
INICIO LUW A FIM | INICIO LUW B/C FIM |
DICA = CADA PROGRAMA TEM SUA LUW DE TRABALHO.
Number assigment Numerado automtico
A diferente nmeros de range para sesses internas e externas.
Transao SNRO.
O tamanho do nmero no pode ser digitado diretamente, tem q usar um domnio, que pode ser do tipo NUNC ou CHAR.
Para pegar o nr, usar a funo > NUMBER_GET_NEXT.
Para saber o qnto j foi usado > NUMBER_CHECK
Para saber informaes do objeto > NUMBER_GET_INFO.
So armazenados na tabela NRIV.

Você também pode gostar