Escolar Documentos
Profissional Documentos
Cultura Documentos
Academia
de ABAP
01/2016
Treinamento de Introdução
Conhecendo o SAP
Todos os Direitos Reservados © Valores Corporativos Softtek S.A. de C.V. 2015. Interno.
História do
SAP R/3
Todos os Direitos Reservados © Valores Corporativos Softtek S.A. de C.V. 2011. Interno. 3
História da SAP
Todos os Direitos Reservados © Valores Corporativos Softtek S.A. de C.V. 2011. Interno. 5
Características do SAP R/3
Banco de Dados
R/3
Características do SAP R/3
Mandante
100
Servidor
DV4
Mandante
200
Fases do Projeto
Testes individuais
Levantamento Produção
/integrados
Modelagem dos
Validação Melhorias
processos
Customização Desenvolvimento
Módulos SAP
Todos os Direitos Reservados © Valores Corporativos Softtek S.A. de C.V. 2011. Interno. 11
Módulos do SAP R/3
SD FI
Sales & Financial
Distribution Accounting
MM CO
Materials
Controlling
Mgmt.
PP AM
Production Fixed Assets
Planning
R/3 Mgmt.
QM
Quality
Client / Server PS
Project
Manage-ment
PM ABAP/4 WF
System
Plant Main-tenance Workflow
HR IS
Human Industry
Resources Solutions
Módulos do SAP R/3
Módulos do SAP R/3
Módulos do SAP R/3
Módulos do SAP R/3
Módulos do SAP R/3
Módulos do SAP R/3
Módulos do SAP R/3
Módulos do SAP R/3
Módulos do SAP R/3
Módulos do SAP R/3
Módulos do SAP R/3
Módulos do SAP R/3
Módulos do SAP R/3
Navegando no
SAP R/3
Todos os Direitos Reservados © Valores Corporativos Softtek S.A. de C.V. 2011. Interno. 26
Navegando no SAP R/3
Navegando no SAP R/3
Navegando no SAP R/3
Navegando no SAP R/3
Todos os Direitos Reservados © Valores Corporativos Softtek S.A. de C.V. 2015. Interno.
História do
ABAP/4
Todos os Direitos Reservados © Valores Corporativos Softtek S.A. de C.V. 2011. Interno. 36
Definição
A dvanced
B usiness
A pplication
P rogramming
/
4
• Linguagem de programação do SAP de 4a. Geração que permite desenvolver
interfaces/programas no sistema SAP R/3
História
Todos os Direitos Reservados © Valores Corporativos Softtek S.A. de C.V. 2011. Interno. 39
Características do ABAP/4
• ORDENS E TAREFAS (TASKS): cada ordem pode possuir uma ou mais TASKS.
Cada TASK possui os objetos agrupados de acordo com seu tipo e ordem na
qual deverão ser criados no cliente de destino;
Repository R/3
Treinamento ABAP/4
Todos os Direitos Reservados © Valores Corporativos Softtek S.A. de C.V. 2015. Interno.
Dicionário de
dados
Todos os Direitos Reservados © Valores Corporativos Softtek S.A. de C.V. 2011. Interno. 47
Principais Transações
Integração
Gerenciamento de Dados
Atribuição
Descrição e Significado
Ativação dos Dados
Banco de Dados
R/3
Elementos do Dicionário de Dados
• Tabelas: armazenam dados;
• Estruturas: Possuem os mesmos elementos das tabelas mas não armazenam
dados. Só estão preenchidas em run-time;
• Visões: JOIN de tabelas e restrição de campos;
• Campos: não são objetos independentes e podem ser atualizados apenas dentro
das tabelas, pois pressupõem a existência de um elemento de dados
• Elementos de dados: é o objeto semântico. Descreve exatamente a finalidade de
um domínio em uma opção comercial específica para os campos que dela
dependem;
• Domínios: É o objeto central usado para descrever os atributos de um objeto;
• Ajuda de pesquisa: É um objeto de pesquisa do dicionário ABAP com o qual
contribui na execução do matchcode (F4);
• Ajuda de Pesquisa: É utilizada para fornecer ao usuário, quando solicitado (tecla
F4), uma lista de valores possíveis para determinado campo na tela
(principalmente campos de entrada de dados). Esta funcionalidade também é
conhecida como search help ou match code.
• Include struture: Existe uma maneira de se criar grupos de campos que possam
ser utilizados em diversas tabelas transparentes ou estruturas, isto chamamos
de include ou append.
Elementos do Dicionário de Dados
Banco de
Dados R/3 Tabela
Campo
Utiliza
Domínio
Elementos do Dicionário de Dados
Table T1
Field 1 Field 2 Field 3 Field 4
Primary Key
Elementos do Dicionário de Dados
1. Nome do Domínio.
2. Descrição do Domínio.
3. Tipo de dados (ex: CHAR, NUMC, DATS...).
4. Número de posições de um campo sem contar as
pontuações.
5. Número de casas decimais.
6. Rotina de conversão de entrada e saída de dados.
7. Domínio aceita ou não valores negativos.
8. Domínio fará distinção entre maiúsculas e
minúsculas.
Domínio
1. Valores fixos podem ser individuais ou intervalos. Restringem os valores que podem ser
atribuídos a aquele domínio..
2. Descrição do valor fixo.
Elemento de dados
1. A denominação do campo é o texto que irá aparecer como descrição do campo em uma
tabela transparente (dando sentido semântico) e também pode ser utilizado como forma de
ser o label de campos nos programas que se utilizarem deste Elemento de Dados. Os
textos aqui inseridos podem ser traduzidos através do menu Ir Para > Tradução.
Estrutura
1. Nome da estrutura
2. Descrição da estrutura
3. Nome do campo
4. Elemento de dados que representa o campo
Estrutura
1. Nome da tabela
2. Descrição da tabela
3. Classe de entrega: Onde classificamos o tipo de dados que será armazenado nesta
tabela; se é de dados mestre e movimentação, se é de customizing onde é necessária
uma request para transportar cada registro salvo nesta tabela, entre outros.
4. Regra de atualização onde podemos permitir atualização e exibição desta tabela pela
transação SE16; podemos restringir a atualização e permitir apenas a exibição, ou
ainda não permitir a atualização ou exibição da mesma pela transação SE16.
Tabela transparente
1. Acesso as configurações
técnicas
2. Acesso a criar, editar, ou deletar,
índices da tabela
3. Insere estrutura de append na
tabela
4. Adiciona chave estrangeira ao
campo selecionado
5. Adiciona Ajuda de Pesquisa ao
campo selecionado
6. Nome do campo da tabela
7. Elemento de dados do campo
8. Indicador que o campo é chave
(PRIMARY KEY)
9. Indicador se o campo deve inserir
valores iniciais para quando não é
enviado valor para este campo
Tabela transparente
1. Nome da visão
2. Descrição da visão
3. Tabelas que serão
utilizadas na seleção da
visão
4. Condições de
relacionamento entre as
tabelas do item 3
Visões
1. Resultado do INCLUDE
2. Resultado do APPEND
ABAP/4
Open SQL
Todos os Direitos Reservados © Valores Corporativos Softtek S.A. de C.V. 2011. Interno. 70
ABAP/4 Open SQL
Sistema SAP
OPEN SQL
• Instruções Open SQL só podem trabalhar com tabelas de banco de dados que
foram criadas no dicionário de dados. Para acesso a tabelas externas ao SAP é
necessário utilizar SQL Nativo.
SELECT
SELECT
-SELECT
Comando SQL utilizado para leitura das informações de uma tabela do banco de dados SAP.
Possui diversas variações.
Obs.: O comando SELECT em si, pede um ENDSELECT para fechá-lo. Em algumas variações isto não
se faz necessário.
Esta variação não é um modo eficiente para acesso ao banco. Não indicado, mesmo com
inclusão da clausula WHERE.
-Select inserindo dados em uma tabela, usando como base os dados de outra já preenchida.
Obs.1: Se ao buscar os registros com FOR ALL ENTRIES, e dois registros forem iguais, o
sistema só irá trazer um. Portanto CUIDADO com este tipode select. Sempre buscar um
campo que garanta a unicidade dos dados.
Obs.2: Sempre verificar se a tabela interna, de referência< tabela interna1>, contêm dados
e os mesmo estejam ordenados.
SELECT
Obs.: Para o uso do SELECT SINGLE, deve-se utilizar a chave completa da tabela. Se não
possuir as chaves todas, utilizar a opção UP TO 1 ROWS.
INSERT
-INSERT
1.Insere registros na tabela do dicionário.
Exemplos:
TABLES: SPFLI. Grava os valores da estrutura WA
na tabela SPFLI.
DATA: WA LIKE SPFLI.
WA-CARRID = 'LH'.
WA-CITYFROM = 'WASHINGTON'.
…
INSERT INTO SPFLI VALUES WA.
INSERT
Exemplos:
TABLES: SPFLI.
ITAB-CARRID = 'UA'.
ITAB-CONNID = '0011'.
APPEND ITAB.
ITAB-CARRID = 'LH'.
ITAB-CONNID = '1245'.
APPEND ITAB.
ITAB-CARRID = 'AA'.
ITAB-CONNID = '4574'.
APPEND ITAB.
-UPDATE
1.Modifica registros na tabela do dicionário. Um registro por vez.
Exemplos:
TABLES: SPFLI.
Exemplos:
TABLES: SFLIGHT.
UPDATE SFLIGHT SET PLANETYPE = 'A310'
FLPRICE = FLPRICE - '10000'
WHERE CARRID = 'LH'.
Exemplos:
TABLES: SPFLI.
MODIFY
-MODIFY
Este comando também altera registros na tabela do dicionário, mas contém uma diferença
importante. Com este comando, se o registro a ser alterado não for encontrado, ele é
inserido na tabela do dicionário.
Segue o mesmo esquema do comando UPDATE.
Exemplos:
TABLES: SPFLI. TABLES: SPFLI.
DATA: WA LIKE SPFLI. DATA ITAB LIKE SPFLI OCCURS 10 WITH HEADER LINE.
MOVE 'AA' TO WA-CARRID. ITAB-CARRID = 'UA'. ITAB-CONNID = '0011'.
MOVE '0064' TO WA-CONNID. APPEND ITAB.
MOVE 'WASHINGTON' TO WA-CITYFROM. ITAB-CARRID = 'LH'. ITAB-CONNID = '1245'.
… APPEND ITAB.
MODIFY SPFLI FROM WA. ITAB-CARRID = 'AA'. ITAB-CONNID = '4574'.
APPEND ITAB.
…
MODIFY SPFLI FROM TABLE ITAB.
DELETE
DELETE
-DELETE
1.Deleta registros da tabela do dicionário.
Exemplos:
TABLES: SPFLI.
Exemplos:
TABLES: SFLIGHT.
DELETE
Exemplos:
TABLES SPFLI.
ITAB-CARRID = 'UA'.
ITAB-CONNID = '0011'.
APPEND ITAB.
ITAB-CARRID = 'LH'.
ITAB-CONNID = '1245'.
APPEND ITAB. Os registros são deletados baseando-se
nos campos chave.
ITAB-CARRID = 'AA'.
ITAB-CONNID = '4574'.
APPEND ITAB.
ROLLBACK WORK
SQL Nativo permite que você use as instruções SQL especificas do banco de dados em um
programa ABAP. Sintaxe:
ENDEXEC.
ABAP/4
Codificação
Todos os Direitos Reservados © Valores Corporativos Softtek S.A. de C.V. 2011. Interno. 84
Principais Transações
Tabelas internas
Tabelas internas
Work area
Tipos
Obs.: se não for atribuído tipo a variável, esta será definida como caracter,
automáticamente.
Header Line
Header Line
GET ou GET LATE: Evento GET pode ser utilizado apenas em listas básicas em
um report. O evento GET é acionado cada vez que uma linha é
lida a partir de uma tabela de banco de dados lógico.
Os dados deste registro é carregado na work área.
O evento GET LATE ocorre antes da próxima linha de registro
do GET seja carregada do banco de dados lógico.
O evento GET requere que o banco de dados lógico seja
definido como um atributo do report (no editor ABAP,
utilize o caminho do menu Ir para > Atributos).
Comandos básicos - IF
IF
-IF… ENDIF.
Este comando permite que se desvie o fluxo do programa, dependendo da condição. Para
encerrar usa-se: ENDIF, pode-se ainda ELSEIF e ELSE. O programa só irá executar a condição
correta.
IF <condição> .
…
ENDIF.
IF <condição> .
…
ELSE.
…
ENDIF.
-IF …ELSEIF…ELSEIF…ENDIF.
IF <condição1> .
…
ELSEIF <condição2> .
...
ELSEIF <condição3> .
...
ENDIF.
LOOP
-LOOP …ENDLOOP.
CASE
-CASE …ENDCASE.
É um controle baseado em índice de objeto de dados. Este controle deve ser concluído
com ENDCASE.
CASE <f>.
WHEN <f 01> [OR <f 02> OR ...].
...
WHEN <f 03>.[OR <f 04> OR ...]
...
WHEN <f 05> [OR <f 06> OR ...].
...
WHEN ...
...
WHEN OTHERS.
...
ENDCASE.
DO
-DO …ENDDO.
Repete o processamento que está dentro de DO e ENDDO.
Terminando com os comandos EXIT, STOP e REJECT.
Pode usar CONTINUE, para terminar o passo do DO e continuar o passo seguinte.
Exemplo1:
DO 10 TIMES.
IF VBAK-VBELN eq VBAK-VBELN.
W_VBELN = VBAK-VBELN.
ENDIF.
ENDDO.
Exemplo2:
DO.
IF VBAK-VBELN is INITIAL.
EXIT.
ELSEIF VBAK-VBELN in P_VBELN.
CONTINUE.
ENDIF.
ENDDO.
Comandos básicos – WHILE/CHECK
WHILE
-WHILE …ENDWHILE.
Repete o processamento que está dentro de WHILE e ENDWHILE, se a expressão é verdadeira.
A cada passagem a expressão é verificada.
Pode usar CONTINUE , para terminar o passo do WHILE e continuar o passo seguinte.
WHILE expressão.
…
…
ENDWHILE.
Exemplo:
WHILE W_WRITE <= 10.
WRITE: / TEXT-001.
W_WRITE = W_WRITE + 1.
ENDWHILE.
CHECK
- CHECK
Para encerrar uma sub-rotina usa-se, frequentemente, ENDFORM.
Podemos terminar antes, usando os comandos EXIT e CHECK.
Se a expressão lógica estabelecida no CHECK for falsa, a sub-rotina será encerrada.
Se a expressão CHECK for aplicada a um LOOP, encerra-se o LOOP.
CHECK SY-SUBRC = 0.
Comandos básicos - MOVE
MOVE
-MOVE
<itab2> = <itab1>
-MOVE-CORRESPONDING
Reseta o valor da variável. Também aplica-se a estruturas e tabelas, limpando o header line,
mas não interferindo nos dados – no caso de tabelas.
Se a variável for alfanumérica, volta a ser branco. Se for numérica, retorna a zero.
Exemplos:
CLEAR <var1>.
CLEAR <t_tab1>. “limpa o header line da tabela
SKIP
-SKIP n
Realiza o salto de linhas. A variável n identifica a quantidade de linhas a ser pulada.
Exemplos:
SKIP. “Irá pular 1 linha – mesmo efeito que SKIP 1
SKIP 10. “Irá pular 10 linhas
ULINE
-ULINE
Imprime uma linha corrente.
Exemplos:
ULINE. “Imprime linha corrente da largura da página
ULINE /35(50). “Linha começará na posição 35 e terá comprimento
de 50 bytes
Comandos básicos - COMENTÁRIOS
COMENTÄRIOS
“ -> a aspas dupla, na mesma linha do código, serve para comentar dali para frente.
Exemplos:
* IF t001-text IS INITIAL.
* ADD 1 TO w_number.
* ENDIF.
IF t001-text IS INITIAL.
continue. “Comando para sair do Loop atual
ENDIF.
Comandos básicos – FORM/PERFORM
FORM
-FORM … ENDFORM.
Define uma subrotina dentro do programa ABAP. Pode ser executada a qualquer momento, dentro
do programa.
Exemplos:
FORM f_leitura_bseg.
Instruções.
EDFORM.
Opções:
FORM <nome_form> USING p_variavel_referencia
CHANGING p_variavel_valor
TABLES p_tabela.
Instruções
ENDFORM.
PERFORM
-PERFORM
Executa chamadas de subrotinas do programa ABAP.
Exemplos:
PERFORM f_leitura_bseg.
Opções:
PERFORM <nome_form> USING v_variavel_referencia CHANGING v_variavel_valor
TABLES t_tabela.
Tabela interna – Limpeza e Inicialização
CLEAR
-CLEAR
Limpa/Inicializa a header line da tabela interna.
Exemplo:
CLEAR t_tabela01.
REFRESH
-REFRESH
Este comando limpa os dados da tabela interna. Não libera a memória carregada.
Exemplo:
REFRESH t_tabela01.
FREE
-FREE
Este comando apaga os dados da tabela interna, liberando a memória onde ela estava
carregada.
Exemplo:
FREE t_tabela01.
Tabela interna – READ / Leitura
READ
-READ…
Realiza a leitura de dados de uma tabela interna.
Exemplos:
READ TABLE table01 into <work area> WITH KEY nome = w_nome. “Busca por campo específico
READ TABLE table02 into <work area> INDEX w_index. “Busca por posição do registro
SY-SUBRC
-SY-SUBRC
É um campo de sistema, que retorna o resultado do último comando processado.
Se estiver abaixo de um READ, retorna a condição de processamento do mesmo. Se SY-SUBRC = 0,
Significa que foi processado corretamente. Diferente disso, ERRO.
Exemplos:
READ TABLE table WITH KEY nome = w_nome.
IF sy-subrc <> 0.
WRITE: /001 ‘Erro na leitura do arquivo…’.
ENDIF.
Tabela interna – APPEND / Gravando
APPEND
-APPEND
Para incluir novos registros na tabela interna.
Exemplos:
CLEAR wa_table01. “Limpa a header line da tabela
wa_table01-nome = ‘Jose’.
wa_table01-cracha = v_cracha.
wa_table01-situacao = ‘Ativo’.
APPEND wa_table01 to table01. “Insere o registro na tabela table01
APPEND I_BKPF
-MODIFY
Comando para alterar registro de uma tabela interna.
MODIFY <itab>.
Exemplos:
MODIFY t_tabela01.
Opções:
MODIFY t_tabela02 INDEX sy-index.
DELETE
-DELETE
Comando para deleção de registro de uma tabela interna.
DELETE <itab>.
Exemplos:
DELETE t_tabela01.
Opções:
DELETE t_tabela02 INDEX sy-index.
DELETE t_tabela03 WHERE cracha = 3005.
DELETE t_tabela04 FROM 3 to 5.
Tabela interna – COLLECT
COLLECT
-COLLECT <itab01>.
Este comando também insere registros na tabela interna. A particularidade é que, ele analisa
os campos alfanuméricos. Estes sendo iguais, ele realiza a soma dos campos numéricos.
NAME PRICE
LH 100000
AR 50000
FL 10000000
LH 50000 150000
-SORT
Comando utilizado para se sortear a tabela interna.
SORT <itab>.
Exemplos:
SORT t_tabela01.
Opções:
SORT t_tabela02 BY campo2 campo3.
SORT t_tabela03 BY campo4 ASCENDING campo5 DESCENDING.
DESCRIBE
-DESCRIBE
Comando para gerar informações sobre determinada tabela interna.
Exemplos:
DESCRIBE TABLE t_tabela01 LINES LINHAS “Nº linhas preenchidas
OCCURS OCORRENCIA. “Nº ocorrências na def. da tabela
CONDENSE
Utilizado para eliminar os espaços em branco de uma string.
TRANSLATE
Utilizado para transformar os caracteres em maiúsculos ou minúsculos. E também para
converter uma string a partir de outra.
Exemplos:
DATA: T(10) VALUE 'abcdefghij',
STRING LIKE T,
STR1(4) VALUE 'cdef',
STR2(4) VALUE 'klmn',
STR3(2) VALUE 'kl',
STR4(6) VALUE 'klmnop'.
STRING = T.
REPLACE STR1 WITH STR2 INTO STRING.
WRITE / STRING.
STRING = T.
REPLACE STR1 WITH STR3 INTO STRING.
WRITE / STRING.
STRING = T.
SEARCH
Permite que se busque uma string em uma cadeia de caracteres ou em uma tabela interna.
Obs.: No caso de busca em tabela interna, a variável SY-TABIX retorna a linha em que a
string procurada foi encontrada.
STRLEN
Devolve o tamanha da string referenciada.
O SET PF-STATUS é um evento que indica qual a barra de status GUI (menu de
botões) que deve ser apresentada para o relatório.
ABAP/4
Depuração da
codificação
Todos os Direitos Reservados © Valores Corporativos Softtek S.A. de C.V. 2011. Interno. 119
Ativando a Depuração de Programas
F5 F6 F7 F8
Variáveis e Parâmetros
• Com dois clicks no é possível modificar o valor de uma variável em tempo de execução
Variáveis e Parâmetros
• Clicando em Locais/Globais é visualizar tudo que o SAP carregou na memória para aquele
programa.
• Em Desktop2 é possível navegar na pilha e visualizar cada programa sendo executado.
Verificando Tabelas
• Selecionando uma tabela interna os dados são exibidos e apertando o botão direito é possível inserir
e eliminar registros em tempo de execução.
Pontos de Paradas
Para criar um WATCHPOINT basta clicar no botão , informar a variável e o valor que pretende
localizar.
Chamadas Efetuadas
• É possível definir pontos de parada através de comandos ABAP, métodos, módulos de função,
FORMs...
Reprocessamento
Todos os Direitos Reservados © Valores Corporativos Softtek S.A. de C.V. 2011. Interno. 131
O que é o Módulo de função?
Transação: SE80
Clicar em Processar
Objeto
Criando Grupo de Função
- Adicionar no Campo Obrigatório o Grupo de Funções que deverá ser criado
anteriormente e um Texto Breve do que executa a Função.
Adicionar nome do grupo
a ser criado
Adicionar uma
descrição para o Grupo
e Salvar
Clicar em Criar (F5)
Criando Grupo de Função
Clicar em Salvar
(Enter)
Clicar em Criar
Ordem (F8)
Criando Grupo de Função
Clicar em
Avançar (Enter)
Criando Grupo de Função
Clicar em Ativar
(Ctrl+F3)
Criando Módulo de Função
Para criar módulos de função, você usa o construtor de função, uma das
ferramentas de referencia de trabalho do ABAP.
Transação: SE37
Clique em Criar
Adicione o nome do Grupo
de Função criado
anteriormente
Clique em Gravar
Criando Módulo de Função
Aba Características
Criando Módulo de Função
Na Aba Importação, deverá ser colocado (não é obrigatório) os dados que serão
importados para a Função (Nome Parâmetro, Atributo(like ou type) Tipo Referência)
o Texto breve aparecerá assim que estes campo forem preenchidos e dado “Enter”,
para a próxima linha.
Obs.: Para Criação de RFC o tributo será somente Type , o Checkbox Opcional e
Transferência de Valor devem estar marcados.
Na Aba Exportação será passada o valor que deve retorna para o Programa
depois que forem feitas todas as “seleções” feitas na função. O preenchimento é
idêntico ao da Aba Importação.
Obs: Repare que na Interface local aparece todos os parâmetros que foram
inseridos nas Abas anteriores, mostrando toda a Estrutura da Função.
Criando Módulo de Função
Na Aba Modificação, somente de for para ser alterado o valor de algum campo,
caso seja necessário, pois sempre que o programa for executado haverá a
modificação.
Na Aba Tabelas, poderão (não obrigatório) ser inseridas as tabelas internas que
serão utilizada no programa (texto fonte) (declaradas desta forma ela traz a tabela
inteira uma estrutura, caso necessite poucos campos é aconselhável declarar dentro
do texto fonte a tabela interno contendo somente os campos que serão utilizados
(sempre com campos chaves juntos), questão de performance).
Clique em Ativar
Clique em Avançar
Criando Módulo de Função
Clique em testar/executar
(F8)
Você pode usar a função construtor teste para testar módulos de função com
parâmetros de mesa.
O módulo de função pode ser chamado a partir de um programa caso ele esteja
ativo no R/3.
REPORT Z_REPORT_ACADEMIA.
Exemplo: Relatório que *-----------------------------------------------------------------------
chama a função que * Variáveis
*-----------------------------------------------------------------------
multiplica dois números: DATA num3 TYPE i.
*-----------------------------------------------------------------------
* Tela de Seleção
*-----------------------------------------------------------------------
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-000.
parameters: num1 type i obligatory,
num2 type i obligatory.
SELECTION-SCREEN END OF BLOCK bl1.
*-----------------------------------------------------------------------
* Impressão do valor retornado pela função na tela.
*-----------------------------------------------------------------------
write:/ 'Número gerado pela função Z_FUNCAO_ACADEMIA =', num3 .
endif.
Criando Módulo de Função
Adicionar o nome da
função criada
Clicar em Avançar
Criando Módulo de Função
Aba Exceções
Exemplos com Funções Standards
Pop-up executado na
transação SE37.
ABAP/4
Relatório (WRITE)
Todos os Direitos Reservados © Valores Corporativos Softtek S.A. de C.V. 2011. Interno. 163
Formatando listas : Overview
Elementos de texto :
TEXT-SYMBOLS
HEADINGS
SELECTION TEXTS
Editar LISTA
Exemplo:
O comando REPORT são definidas as características básicas para um programa ABAP, como o nome
do programa, a classe de mensagens utilizada, o tamanho da folha de impressão, etc.
Exemplos:
-WRITE
É comum os campos saírem justificados a esquerda. Os campos numéricos são alinhados a
direita.
Exemplos:
WRITE <f>.
WRITE: /TEXT-001, TEXT-002, TEXT-003+2(8).
WRITE: /002 TEXT-004.
Opções:
... NO-ZERO.
... NO-SIGN.
... DD/MM/YY.
... MM/DD/YY.
... DD/MM/YYYY.
... MM/DD/YYYY.
... DDMMYY.
... CURRENCY w.
... DECIMALS d.
... ROUND R.
... UNIT u.
... USING EDIT MASK mask.
... UNDER g.
... NO-GAP.
... LEFT-JUSTIFIED.
... CENTERED.
... RIGHT-JUSTIFIED.
Comando - WRITE
WRITE
Exemplos:
WRITE: ‘****************’.
WRITE: 5 `****************’.
SKIP 2.
ULINE.
ULINE /5(40).
V_DATUM = SY-DATUM.
V_UZEIT = SY-UZEIT.
NEW-PAGE
END-OF-PAGE
Todos os Direitos Reservados © Valores Corporativos Softtek S.A. de C.V. 2011. Interno. 172
O que é ALV
• Definir um filtro.
Exibir somente os campos desejados.
• Pesquisa.
É possível pesquisar informações específicas.
• Exportação de dados.
Pode-se copiar as listas, por exemplo, para uma planilha
ou gravá-las como arquivo local.
• Deslocar colunas.
Grupo de tipos:
É necessário a declaração do grupo de tipos SLIS onde se encontram os tipos
fundamentais para a saída de um relatório ALV.
Comando: TYPE-POOLS: SLIS.
BARRA DE FERRAMENTA
Função:
“REUSE_ALV_LIST_DISPLAY”
Relatório ALV GRID
Função: “REUSE_ALV_GRID_DISPLAY”
BARRA DE FERRAMENTA
ABAP/4
Importando e
Exportando
Dados
Todos os Direitos Reservados © Valores Corporativos Softtek S.A. de C.V. 2011. Interno. 185
Importando e exportando dados
* Caminho,nome do arquivo
gv_file = 'spfli.txt'.
3. Por fim, damos um destino a estes dados, preenchendo uma tabela interna e
utilizando funções, comandos para o usuário realizar download ou para
enviar ao servidor da aplicação.
Exportar arquivos
Resultado após a
seleção do caminho.
Exportar arquivos
CALL METHOD
cl_gui_frontend_services=>gui_download
EXPORTING
filename = gv_filename
filetype = 'ASC'
write_field_separator = 'X'
CHANGING
data_tab = gt_spfli.
Exportar arquivos
* Caminho,nome do arquivo
gv_file = 'spfli.txt'.
Todos os Direitos Reservados © Valores Corporativos Softtek S.A. de C.V. 2011. Interno. 199
Definição
Esses tipos de programas funcionam online, ou seja, instantaneamente. Por isso, eles
são dotados de uma maior capacidade de customização das telas e maior
flexibilidade para criarem uma interface mais amigável com o usuário.
Screen Attributes
Global Data
Screen layout
Screen PBO Module
Field Attibutes Painter ABAP
PAI Module
Flow Control
PBO x PAI
Lista de objetos
do Module Pool
Área de
programação
Lógica de processamento
PBO
PAI
Lógica de processamento
STATUS GUI
Onde pode ser customizada as barras de menu, de botões e teclas de função.
TITLE GUI
• Onde é modificado os nomes/’título das telas.
Lógica de processamento
Elementos disponíveis
para a tela
Propriedades
de cada
objeto
Área para
desenho da tela
SCREEN OBJECTS
É qualquer elemento da tela dentro do R/3 que permite o usuário interagir com programa ABAP.
Segue abaixo alguns exemplos:
• SCREEN
• TITLE BAR
• TEXT FIELD
• INPUT/ OUTPUT FIELD
• STATUS ICON
• GROUP BOX
• RADIO BUTTON AND CHECKBOX
• PUSHBUTTON
• SUBSCREEN
• TABSTRIP CONTROL
• TABLE CONTROL
• GUI STATUS
• LIST
• SELECTION-SCREEN
SCREEN OBJECTS
Labels
Edits
Checkbutton
Radiobutton
Button
TabStrip
TabStrip (assistente)
Frame
TabControl
SCREEN OBJECTS
Atribuição do nome
Conteúdo
Atribuição de um Ícone
Tamanho do Campo
CALL SCREEN XX - chama a tela mas após o processamento da tela chamada, retorna
para o próximo comando depois do call screen;
LEAVE SCREEN - pode ser usado em conjunto ou não com SET SCREEN;
FIELD screen-field
MODULE checa_cont.
MODULE chec_cont.
MESSAGE E....
ENDMODULE.
• Consistência para Grupo de Campos
MODULE chec_cont.
.....
MESSAGE E.... ( exemplos de message no help )
ENDMODULE.
Tabela de sistema: SCREEN
É inicializada no PBO de cada tela.
É manipulável como se fosse uma tabela interna, mas não necessita ser declarada.
Exemplo:
216
SUBSCREEN
Na criação da Tela em que será feita a referência à Subtela, criamos uma área
específica para esta Subtela.
217
SUBSCREEN
Definições de SUBCREEN
A Subtela (ou
Subscreen) é definida
nas características da
Tela.
218
SUBSCREEN
Tela de Origem
Na PBO (PROCESS BEFORE OUTPUT) deverá existir um comando para a execução desta
subtela, sendo:
CALL SUBSCREEN sub1 INCLUDING programa dynpronr.
SUB1 – Seria o nome da área definida para a SUBSCREEN
PROGRAMA – Nome do Programa onde se encontra a SUBSCREEN. Normalmente, se refere
ao mesmo programa da Tela Normal
DYNPRONR – Número da SUBSCREEN a ser executada
Quando este comando é executado, a PBO desta SUBSCREEN é executada, com todas as
rotinas definidas nela.
Na PAI (PROCESS AFTER INPUT) deverá existir um comando para a execução desta
SUBSCREEN, sendo:
CALL SUBSCREEN sub1.
Onde: SUB1 – Seria o nome da área definida para a SUBSCREEN (como na PBO)
Quando este comando é executado, a PAI desta SUBSCREEN é executada, com todas as
rotinas definidas nela.
A SUBSCREEN não tem PF-STATUS definido, utiliza-se as definições da Tela de Origem, de
onde está sendo executada a SUBSCREEN.
219
TABLE CONTROL
221
TABLE CONTROL
Change and save table
Change column width settings
Mark and swap
columns
Mark
rows
223
TABLE CONTROL
Componentes da TABSTRIP :
Criando um TABSTRIP:
Exemplo:
ABAP/4
BDC SESSION
Todos os Direitos Reservados © Valores Corporativos Softtek S.A. de C.V. 2011. Interno. 229
BDC SESSION
Sessão de
BATCH INPUT
Programa
Banco de Dados
SAP
BDC SESSION
Dados
Externos
Programa
ABAP/4
Batch Call
BAPI
Input Transaction
SAP
BDC SESSION
Modo de execução
Função OKCODE
Sai da transação corrente, marca como incorreta /n
Apaga o dado corrente na transação /bdel
Sai da transação e marca como incorreta /bend
Muda de “Display Error...” para “Foreground” /bda
Muda de “Foreground” para “Display Errors...” /bde
BDC SESSION
Aperte ENTER
Transação SHDB
Transação SHDB
Mapeamento de tela
IF p_dynbegin EQ 'X'.
wa_bdc-dynbegin = 'X'.
wa_bdc-program = p_field.
wa_bdc-dynpro = p_value.
ELSE.
wa_bdc-fnam = p_field.
wa_bdc-fval = p_value.
ENDIF.
Modo de Visualização
A - Visualiza Tudo <default>
E - Visualiza apenas se der erro
N - Não Visualiza nada
Modo de Atualização
S - Modo Síncrono (Espera terminar)
A - Modo Assíncrono <default>
CALL TRANSACTION
SY-SUBRC
0 - Sucesso
<1000 - Erro no Programa do SAP
>1000 - Erro no Processamento
(Ver campos de Sistema)
Campos de Sistema
SY-MSGID - Classe da Mensagem
SY-MSGTY - Tipo da Mensagem (E, I, W, S, A)
SY-MSGNO - Número da Mensagem
SY-MSGV1 - Variável de Mensagem 1
SY-MSGV2 - Variável de Mensagem 2
SY-MSGV3 - Variável de Mensagem 3
SY-MSGV4 - Variável de Mensagem 4
BATCH INPUT
* - Parâmetros Obrigatórios
TABLES
EXCEPTIONS
Internal_Erro =1
Not_Open =2
Queue_Error =3
Tcode_Invalid =4
Transação SM35
Transação SM35
ABAP/4 BAPI
Todos os Direitos Reservados © Valores Corporativos Softtek S.A. de C.V. 2011. Interno. 253
BAPI
O que é BAPI?
X
Batch-Input – Atualização de dados via transação
BAPI
• Imagine a situação onde desenvolvemos um sistema onde seja possível criar ordens
de venda a partir de um dispositivo móvel e queremos integrá-lo ao SAP. Quando o
vendedor fizer uma venda é necessário criar uma ordem de venda no SAP. A VBAK é
a tabela onde é registrada parte dos dados da ordem de venda, mas não temos
segurança alguma para ir diretamente na tabela e executar um comando INSERT. Isto
porque além desta tabela também devem existir outra dúzia de tabelas
correlacionadas onde é necessário fazer alguma operação para que o pedido seja
criado corretamente.
• O sistema SAP é altamente integrado e realizar operações diretamente em tabelas
standard são de alto risco.
• São casos como este que devemos usar as BAPI. No caso da criação de ordem de
venda devemos usar a função BAPI_SALESORDER_CREATEFROMDAT2 ou outra
equivalente. O sistema SAP prove uma infinidade de BAPIs que realizam as mais
diversas operações no sistema, podemos pesquisá-las na transação chamada BAPI e
verificar seus parâmetros de entrada, saída e documentação.
• Utilizando nosso exemplo, toda e qualquer transação que cria uma ordem de
venda precisa necessariamente usar uma BAPI. É desta forma que o SAP garante a
consistência dos dados de pedido.
BAPI - Exemplo
IF sy-subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait ='X'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
CLEAR: wa_banco, v_bank_ctry, v_bank_key, wa_address.
Transação BAPI
ABAP/4
Enhancements
Todos os Direitos Reservados © Valores Corporativos Softtek S.A. de C.V. 2011. Interno. 258
Enhancements
• Enhancements são a forma que a SAP criou para que possamos criar ou modificar
funcionalidades já existentes em aplicações standard da SAP.
• Quando você tenta modificar um programa standard, é solicitada uma chave de
acesso especial, isso traz como consequência a perda de garantia do programa
modificado não sendo mais atendido pelo suporte da SAP; porém se utilizarmos
enhancements, não é requisitada uma chave de acesso especial e podemos realizar
nossa implementação com garantia.
• Existem cinco formas de implementarmos enhancements no sistema SAP:
• User Exits
• Menu Exits
• Screen Exits
• BADIs
• Enhancement Framework
Enhancements – User Exists
• Podemos definir uma BADI como um objeto definido por classes, métodos,
atributos de entrada e saída. Podemos realizar múltiplas implementações da mesma
BADI.
• A transação SE18 exibe as BADIs disponíveis para implementar e na transação SE19
criamos novas implementações das BADIs.
Enhancements – BADI