Escolar Documentos
Profissional Documentos
Cultura Documentos
Setembro de 2004
Declarações
Tela de seleção
Tabelas internas
Variáveis de sistema
Mensagens
Comandos SQL
Comandos de Condições
Operações
Subrotinas
Autorização
Declarações
Objetivo
- Definir váriáveis, constantes, estruturas e tabelas internas a serem utilizadas no processamento da
aplicação.
Tipos de declarações
- Data : utilizado para definir variáveis, estruturas e tabelas internas.
- Type : definição de tipos como estruturas e variáveis.
- Field-Symbols : definir variáveis e estruturas, semelhante aos ponteiros do C++.
- Constants : definição de constantes.
- Statics : definir variáveis, estruturas e tabelas em rotinas (Métodos, Procedimentos e Funções), que
mantém o último valor antes do fim da execução anterior.
- Tables : cria uma estrutura no programa, de acordo com o nome da tabela, estrutura ou visão do banco
de dados.
- Ranges: cria uma tabela interna similar a um Select-Options.
Elementos de Texto
- Criação de textos fixos nos programas, classes, funções, module pool
- Pode-se definir textos para variáveis de seleção ou textos de mensagens
- Acesso : Ir para ->Elementos de Texto ->Títulos de Lista ou Textos de Seleção
Telas de Seleção
Em um programa executável a tela de seleção é gerada automaticamente com a utilização dos comandos
Select-options, Selection-screen e Parameters.
Parameter
- Parâmetro único, sem intervalos
- Exemplo: Parameter p_werks like t001w-werks
Select-Options
- Parâmetro de seleção com intervalos e valores múltiplos.
- Select-options : s_werks FOR t001w-werks
- Este recurso não está disponível em programas Module Pool (Onlines). Para isto, é preciso construir
uma tela e chamá-la.
Selection-Screen
- Criação de linhas, quadros e posicionamento de campos.
Tabelas Internas
Como funciona
- O comando LIKE torna o campo da tabela interna com as mesmas características do campo
proveniente da tabela do R3, mesmo tipo, tamanho e etc...Pode ser substituído pelo TYPE, mas a
referência deve ser feita ao elemento de dados.
- O comando OCCURS 0 determina que a tabela interna possuirá um HEADER LINE, isso é útil para as
leituras das tabelas internas que será ilustrado no comando READ TABLE.
- Neste exemplo poderiamos imprimir um relátório que nos mostraria o número da nora fiscal ITAB_NF-
NFNUM, os items ITAB_ITEM-ITMNUM e os valores ITAB_ITEM-NETWR.
Tabelas Internas
Tipos de Tabelas Internas
- Standard : O método de acesso aos dados da tabela é pesquisa seqüencial. O tempo de pesquisa é linear ao
número de entradas.
- Sorted : As entradas são armazenadas ordenadas pela chave declarada na definição. O método de acesso é
chave binária. O tempo de pesquisa tem uma relação logarítimica com o número de entradas.
- Hashed : A tabela interna é administrada por uma rotina de hash interna. O tempo de pesquisa é constante,
independente do número de entradas.
Exemplo
- LOOP AT IT_MAKT.
WRITE: / IT_MAKT-MATNR, IT_MAKT-MAKTX.
ENDLOOP.
- O comando irá ler cada registro da tabela interna IT_MAKT e irá imprimir imprimir os
campos MATNR e MAKTX ( Material e descrição ).
Tabelas Internas - Acessos
Lendo alguns registros
- LOOP AT IT_MAKT WHERE SPRAS = ‘PT’.
WRITE: / IT_MAKT-MATNR, IT_MAKT-MAKTX.
ENDLOOP.
- O comando irá ler somente os registros da tabela interna IT_MAKT onde o campo
SPRAS (Idioma) for igual ‘PT’ e irá imprimir o material e a descrição.
- O WHERE determina os filtros que o programador deseja para ler a tabela interna.
Tabelas Internas - Acessos
Comando READ
- Este comando é utilizado para ler um único registro de uma tabela interna.
Exemplo
- LOOP AT IT_NF.
READ TABLE IT_NF_ITEM WITH KEY DOCNUM = IT_NF- DOCNUM
ITMNUM = ’10’
WRITE: / IT_NF-NFNUM, IT_NF_ITEM-MATNR
ENDLOOP
- O comando irá ler todos os registros de IT_NF (Cabeçalho) e para cada registro lido,
vai ler dentre os itens da nota em IT_NF_ITEM, somente o primeiro e irá imprimir o
número da nota fiscal e o material.
- WITH KEY. Observe que o programador usou a chave para a leitura DOCNUM e
ITMNUM, desta forma o programa irá direto no registro desejado, já que a tabela de
items pode ter varios registros para o mesmo documento (DOCNUM)
Tabelas Internas - Inserção
Comando APPEND
- Utilizado para gravar registros no final de uma tabela interna. Ele copia uma linha de qualquer área
de trabalho e a coloca no final das linhas existentes. A área pode ser o cabeçalho da tabela ou uma
estrutura com a mesma característica da tabela.
Exemplo
LOOP AT IT_NF.
READ TABLE IT_NF_ITEM WITH KEY DOCNUM = IT_NF- DOCNUM
ITMNUM = ’10’.
IT_AUX-NFNUM = IT_NF-NFNUM.
IT_AUX-MATNR = IT_NF_ITEM-MATNR.
APPEND IT_AUX.
ENDLOOP
- O comando irá ler todos os registros de IT_NF (Cabeçalho) e para cada registro lido vai ler dentre os
itens da nota em IT_NF_ITEM, somente o primeiro, gravando o número da nota fiscal e o material na
tabela IT_AUX.
- Também pode-se utilizar o comando INSERT para inserir dados em uma tabela interna.
Comando INSERT
- Utilizado para inserir registros em um determina posição de uma tabela interna. Dentro de um
LOOP insere o registro na posição atual, fora deve ser informada a posição desejada.
Tabelas Internas - Exclusão
Comando DELETE
- É utilizado basicamente para excluir um ou mais registros de tabelas internas.
Dentro de um Loop, o comando DELETE sem adicionais elimina a linha atual, fora
deve ser especificado o registro ou uma condição para eliminação.
Exemplo
DELETE IT_NF WHERE NFTYPE = ‘E1’ AND
DOCTYP = ‘1’.
Comando MODIFY
- Utilizado para modificar o conteúdo de um ou mais registros de tabelas internas.
- Caso não seja especificado a cláusula TRANSPORTING, seguida dos campos a serem modificados, todos os
campos são sobrepostos com o conteúdo da área de trabalho.
- Dentro de um Loop, o comando MODIFY sem adicionais modifica a linha atual. Fora deve ser especificado o
registro ou uma condição que identifique os registros.
Exemplo
ITAB_ITEM-NETWR = IT_ITAB_ITEM-NETWR * 1,10.
MODIFY ITAB_ITEM TRANSPORTING NETWR
WHERE VBELN = ITAB_HEADER-VBELN AND
POSNR = ITAB_ITEM-POSNR.
OU
MODIFY ITAB_ITEM INDEX SY-TABIX.
Variáveis de Sistema
Objetivo
- Auxiliar o programador com algumas informações importantes como data e hora, retorno de uma função,
operação de banco de dados, leitura e manuseio de informações na memória como tabelas, etc.
- A estrutura SYST, que pode ser acessada pela transação SE11, pode-se visualizar todas as variáveis
disponíveis do sistema.
Tipos
- As mensagens podem ser do tipo :
A - Abend : após a mensagem, a aplicação é encerrada.
E – Error : mensagem de erro
I – Info : mensagem de informação
S – Status : mensagem enviada na barra de status
W – Warning : mensagem de advertência
X – Exit : após a mensagem, aplicação é encerrada com um DUMP
Classe da mensagem
Tipo da mensagem
Número da Mensagem
Comandos SQL - SELECT
Objetivo
- O comando SELECT é basicamente utilizado para popular as tabelas internas e as
variáveis. Normalmente em um programa tem no seu início a seleção de todos os
dados necessários para o processamento, guardando estas informações nas
tabelas internas e/ou nas variáveis.
- O comando irá popular a tabela interna IT_MARA com todos os registros e colunas
da tabela MARA do R3. Logicamente a tabela interna IT_MARA deverá ter na sua
declaração todos os campos que a tabela MARA possui.
Comandos SQL - SELECT
- O comando irá popular a tabela interna IT_MARA com apenas os registros onde o
campo MTART (Tipo de Material) for igual a ‘HALB’ (Produto Semi-acabado) e o
campo MATKL (Grupo de Mercadorias) for igual a ’09’ e trará somete os campos
MATNR (Material) e MTART (tipo de Material).
- A tabela interna IT_MARA neste caso terá na sua declaração somentes os campos
MATNR e MTART.
- A cláusula WHERE é o que determina o filtro que o programador deseja fazer com
os registros da tabela MARA
Comandos SQL - SELECT
- No primeiro SELECT o comando irá popular a tabela interna IT_MARA, como visto
no exemplo anterior.
- No segundo SELECT, para cada registro da tabela interna IT_MARA, o comando
irá popular a tabela interna IT_MAKT, onde o campo MATNR (material) for igual ao
campo material da tabela MAKT. Na prática este código esta buscando a decrição
dos materiais obtidos com o primeiro SELECT.
Objetivo
- O comando INSERT é utilizado para inserir dados em tabelas do dicionário de dados.
Como funciona o IF
- O IF determina qual caminho o programa vai seguir dependendo se a condição foi atendida ou não.
IF SY-SUBRC = 0.
LOOP AT IT_MARA.
WRITE:/ IT_MARA-MATNR.
ENDLOOP.
ELSE.
MESSAGE EZGEPP(01) WITH ‘ERRO’.
ENDIF.
- O programa está selecionado registros na tabela MARA e caso haja sucesso ele irá imprimir todos
os materiais selecionados.
Comandos de Condições - ELSEIF
Objetivo
- O ELSEIF é uma condição determinada pelo programador para que uma rotina ou processo seja executada ou
não pelo programa, dependendo das possíveis condições que uma condicional possa assumir.
- O CASE, que veremos adiante, oferece melhor desempenho e sempre que couber, utilizá-lo para otimizar o
processamento.
Comandos de Condições - CASE
Objetivo
- O CASE tambem é uma condição determinada pelo programador para que uma rotina ou processo seja
executada ou não pelo programa, porem se houver muitas condições o CASE pode ser mais útil.
PERFORM SELECIONA_DADOS
PERFORM MONTA_TABELA
PERFORM IMPRIME.
...
FORM SELECIONA_DADOS.
Aqui estaria todos os selects necessários para o processamento
ENDFORM.
FORM MONTA_TABELA
Aqui estaria a lógica para montar uma tabela de saida com as seleções feitas anteriormente.
ENDFORM.
FORM IMPRIME.
Aqui estaria o LOOP na tabela de saida para impressão.
ENDFORM.
Leitura e Geração de Arquivos
Objetivo
- Transferir informações do SAP, através de arquivos e que podem ser gravados tanto no cliente como no servidor
SAP.
Como funciona
- Arquivos gravados no cliente
Para gravar, utilizar função GUI_DOWNLOAD
Para ler, utilizar função GUI_UPLOAD
O grupo de funções SFES, possui uma variedade de funções para trabalho no cliente.
Em nome_file, pode conter somente o nome do arquivo (diretório DEFAULT SAP), ou um caminho específico no
servidor SAP.
Autorização
Objetivo
As verificações de autorização é um meio de proteger funções ou objetos no sistema R/3, restringindo o acesso a
transações, operações, objetos ou campos.
Como funciona
- O programador determina onde e como a validação será feita através do comando AUTHORITY-CHECK.
- O administrador determina quem e o que atribuindo valores aos objetos de autorização na composição dos perfis
de acesso.
- Através da transação SU21 é possível criar e consultar objetos de autorização.
Exemplo:
IF SY-SUBRC <> 0.
MESSAGE E091(ZGESD) WITH G_TPLST.
"Falta autorização para o local org.transpo: & !
ENDIF.
Autorização
Campos que
determinam a área de
negócio a ser verificada
O campo atividade
permite validar a ação a
ser executada além da
área de negócio
verificada pelos demais
campos.
Permite determinar as
atividade possíveis para
o objeto.
Exemplo: 01-Criar, 02-
Modificar, 03-Exibir