Você está na página 1de 89

SAP ABAP 7.

4
Treinamento - Módulo 1
Conteúdo

Arquitetura SAP
Linguagem ABAP
Dicionário de Dados
ABAP OO
Relatório ALV
Ampliações
Depuração
Arquitetura SAP

Produtos
Componentes
SAP GUI
Customizing e WorkBench
Transporte
Usuário e Perfis
Transação e Programa
Arquitetura SAP
Produtos

SAP Business Suite


• ERP
• CRM
• SRM
SAP NetWeaver
• 7.41 ( 7.5 )
Arquitetura SAP
Componentes
Arquitetura SAP
SAP NetWeaver

SAP NetWeaver Application Server


SAP NetWeaver Business Intelligence
SAP NetWeaver Composition Environment (CE)
SAP NetWeaver Enterprise Portal (EP)
SAP NetWeaver Identity Management (IdM)
SAP NetWeaver Master Data Management (MDM)
SAP NetWeaver Mobile
SAP NetWeaver Process Integration (PI)
SAP NetWeaver Application Server
Stack

SAP NW AS
• ABAP
• Java
Arquitetura SAP
SAP Business Suite 7

Business Suite
• SRM
• CRM
• SCM
• PLM
• ERP

S/4Hana

Módulos
Arquitetura SAP
Enhancement Package e Support Package

• Versão do Produto
• Enhancement Package
• Support Package
‣ Notas
‣ Melhorias
‣ Correções
Arquitetura SAP
Ambiente 3Corações

• SAP NetWeaver 7.4 - SP 7


• SAP ERP 6 EHP 7 (617) - SP 5
• MS Windows Server
• MS SQL Server
Arquitetura SAP
SAP GUI e Outros Cleints

• SAP GUI for Windows


• SAP GUI for Java
• Browser
• Fiori Client
Arquitetura SAP
Customizing e WorkBench

Customizing
• Configurações
• SPRO
WorkBench
• Objetos
• Programas

Client
• Dependência
Arquitetura SAP
Transporte de Request

TMS - Transport Management System


Request e Task
Rota de transporte
DEV QAS
• Customizing PRD

• WorkBench
100 300
Cópia entre mandantes 400
• Customizing 200 400
Arquitetura SAP
Usuários e Perfis

Acesso
Desenvolvedor
Perfis e Permissões
Internacionalização
Arquitetura SAP
Transações e Programas

Transações
Desenvolvimento
Negócio
Transações de negócio dos diversos módulos
Arquitetura SAP
Prática

Configurar acessos
Verificar versão do sistema
Navegar no Menu SAP (Desenvolvimento)
Linguagem ABAP

Transações e Navegação

Lista de Utilização

Sintaxe

Primeiro Programa

Tipo e Variáveis

Fluxo de Programa


Linguagem ABAP

Editor de Programa Procedural


ABAP WorkBench Orientação a Objeto
Nome de objetos Tecnologias proprietárias SAP
… Padrões de Mercado
Lista de Utilização Atualização constante
Linguagem de Programação Alinhado as novas tecnologias
Tecnologias
Negócio
Linguagem ABAP
Editor

SAP GUI
• SE38 (t-code)

Eclipse - ADT

SAP Web IDE


Linguagem ABAP
Sintaxe

Programa ABAP

report ycurso_teste1.
write ‘Hello World!’.
Linguagem ABAP
Primeiro Programa

Nome do programa
- SAP e Cliente

Pacote
- Produtivo
- Temporário
Linguagem ABAP
Características e Execução

Características
Verificação
Pretty Printer
Ativação
Execução
Linguagem ABAP
Prática

Criar o primeiro programa e executar


Linguagem ABAP
Saída

Classic List
• Write
Output Class
• cl_demo_output (=>write( ) , =>display( ) )
• cl_demo_text ( exemplo DEMO_SHOW_TEXT )
ABAP List Viewer *
• Função
• Classe
Linguagem ABAP
Tipos, Variáveis e Constantes

Tipo primitivos
Variáveis
Declarar tipos
Constantes

data ( type e like )


types
constants
Linguagem ABAP
Tipos de Dados

Numéricos (i, f, p)
Data
Hora
Texto (c, String e n)
Literais
Texto
Numérico
String Expression
Símbolo de Texto
Linguagem ABAP
Sintaxe

Programa ABAP

report ycurso_teste2.
* calcula soma
data: var1 type i.
var1 = 2 + 2.
write:/ ‘Soma: ’, var1. “ Soma: 4

data(var2) = 2 + 2.
write:/ ‘Soma: ’, var2. “ Soma: 4
cl_demo_output=>write( 'Soma' ).
cl_demo_output=>display( var2 ).
Linguagem ABAP
Prática

Criar programa criando variáveis e tipos.


1) Declarar variável usando tipos primitivos
2) Criar um tipo e uma variáveis com este tipo
3) Criar constants
Linguagem ABAP
Operadores

Atribuição
=
Numéricos
operand1 [{+|-|*|/|DIV|MOD|**} operand2
Funções numéricas
abs, trunc, acos, sin, sqrt, round, …
String / String Expression ( 'texto' / |texto {1+1}| )
&&, concatenate, strlen, (length), +position, …
Data
YYYYMMDD, operação matemática, manipulação com cadeia de caracteres
Hora
HHMMSS operação matemática, manipulação com cadeia de caracteres
Linguagem ABAP
Prática

Criar programa usando :


Operações matemáticas
String
Data/Hora… : último dia do mês, tempo até meia noite
Linguagem ABAP
Variáveis de Ambiente

Variável SY
Retorno de execução
sy-subrc
Dados do sistema
sy-mandt
sy-sysid
sy-opsys
Informações do usuário
sy-uname
Constantes
sy-abcde
Linguagem ABAP
Prática

Criar programa usando variáveis de sistema


Linguagem ABAP
Mensagem

Sintaxe
message <tipo><número>. “ usando: report … message-id <id>.
message <tipo><número>(<classe_de_mensagem>).
message ‘<texto>' type '<tipo>' id ‘<classe_de_mensagem>’ number <número>.
message … with [v1] [v2] [v3] [v4].
Linguagem ABAP
Mensagem

Tipos
- Information
- Warning
- Error
- Sucess
- Abend
- X Dump
Classe de mensagem
Variáveis de ambiente
sy-msgid
sy-msgty
sy-msgno
Linguagem ABAP
Prática

Criar programa….

Testar as formas de disparar mensagem.

Verificar a diferença entre cada tipo de mensagem e qual a reação de cada uma na execução
do programa.
Linguagem ABAP
Tipos de Programas

Report
Module
Include
Pool de Subrotinas
* Grupo de Funções
* Pool de Classe e Interfaces
Linguagem ABAP
Fluxo de Programa Report

REPORT …
INITIALIZATION.
LOAD-PROGRAM.
AT SELECTION-SCREEN.
AT SELECTION-SCREEN OUTPUT.
AT SELECTION-SCREEN ON <objeto>.
START-OF-SELECTION.

Obsoletos:
END-OF-SELECTION.
GET …
Linguagem ABAP
Tela de seleção

Parameters
PARAM TYPE type [DECIMALS dec] [OBLIGATORY]
AS CHECKBOX
RADIOBUTTON GROUP group
Selection Options
SELEC FOR type
[OBLIGATORY] [NO INTERVALS]
[DEFAULT …]
Selection Screen
BEGIN OF BLOCK block [WITH FRAME [TITLE title]]
...
SELECTION-SCREEN END OF BLOCK block.
Linguagem ABAP
Prática

Criar programa para usar validação, statement e message

Regras…
Linguagem ABAP
Estrutura de Controle - Condição

IF <cond>.
ELSEIF <cond>.
ELSE.
ENDIF.

CASE <var>.
WHEN <valor1> [OR <varlo2> […]]
WHEN OTHERS.
ENDCASE.
Linguagem ABAP
Estrutura de Controle - Operação Lógicas

Todos os tipos de dados


=, EQ, <>, NE, >, GT, <, LT, >=, GE, <=, LE
BETWEEN
IN
IS INITIAL
Caractere
CO, CN, CA, NA, CS, NS, CP, NP
Lógico
NOT, AND, OR
Linguagem ABAP
Prática

Criar programa para usar validação, statement e message

Regras…
Linguagem ABAP
Estrutura de Controle - Condição

In-Line
Condicional para atribuição

COND
COND type( WHEN <cond> THEN res1 [WHEN <cond> THEN res2]… [ELSE resN] ).
DATA(r1) = COND string( WHEN x = 1 THEN 'A' WHEN x = 2 THEN 'B' ELSE 'X' ).

SWITCH
SWITCH type( oper WHEN val1 THEN res1 [WHEN val2 THEN res2]… [ELSE resN] ).
DATA(r2) = SWITCH string( x WHEN 1 THEN 'A' WHEN 2 THEN 'B' ELSE 'X' ).
Linguagem ABAP
Prática

Criar programa usando COND e SWITCH


Linguagem ABAP
Estrutura de Controle - Repetição

DO [n TIMES].
ENDDO.

WHILE <cond>.
ENDWHILE.

Variável de ambiente : sy-index


Instrução : check
Linguagem ABAP
Prática

Criar programa usando DO e WHILE


Linguagem ABAP
Transações

SE93 - Atualização de Transação


Associar a um programa

Lista de utilização
Linguagem ABAP
Prática

Criar programa usando DO e WHILE


Linguagem ABAP
Modularização

Subrotina
FORM <sub_rotina> [TABLES <…>] [USING <…>] [CHANGING <…>] […].
ENDFORM.

Função
Function Builder (transação SE37)

Classe
Classe Builder (Transação SE24)
Linguagem ABAP
Modularização - SubRotina

Definir
FORM fazer_acao USING VALUE(p_um) TYPE i VALUE(p_dois) TYPE i
CHANGING p_texto TYPE string.
p_texto = |Numero { p_um + p_dois }|.
ENDFORM.

Executar
PERFORM fazer_acao USING p_num1 p_num2 CHANGING text.
Linguagem ABAP
Prática - Modularização SubRotina

Criar programa usando SubRotinas


Linguagem ABAP
Funções

Function Builder
Grupo de Funções
Parametros
Importing
Exporting
Changing
Tables

Executar função em programa


CALL FUNCTION ‘<NomeDaFunção>'
Linguagem ABAP
Prática x - Funções

Criar função e programa para executar a função


Linguagem ABAP
Tabelas Internas

Estrutura / WorkArea
TYPES: BEGIN OF <ty_estrutura>,
<campo1> TYPE <tipo>,
<campoN> TYPE <tipo>,
END OF <ty_estrutura>.
DATA: <wa_workarea> TYPE <ty_estrutura>.

DATA: BEGIN OF <wa_workarea>


<campo1> TYPE <tipo>,
<campoN> TYPE <tipo>,
END OF <wa_workarea>.

Tabela Intera
DATA: <it_tabela> TYPE TABLE OF <estrutura>.
Linguagem ABAP
Operação com Tabelas Internas

Incluir
INSERT
APPEND
COLLECT

Modificar
MODIFY

Excluir
DELETE
Linguagem ABAP
Prática - Tabelas Internas

Criar programa usando operações de tabela interna


Linguagem ABAP
Operação com Tabelas Internas

Buscar
READ TABLE <it_tabela> WITH KEY <campo> = <valor>.

Percorrer as linhas
LOOP AT <tabela>.
[…]
ENDLOOP.

Ordenação
SORT <tabela> BY <campo> [ASC|DESC].
Linguagem ABAP
Prática - Tabelas Internas

Criar programa…
Linguagem ABAP
Expressões de Tabela e Funções de Tabela

Table Expression ( Index, Key, Condition )


<tabela>[ numero_linha | valor_chave | condição ]

Linhas
LINES( <table> )

Existe linha
LINE_EXIST( <table_expression> )

Indice da Linha
LINE_INDEX( <table_expression> )
Linguagem ABAP
Prática - Tabelas Internas

Criar programa…

Com tabela interna de categoria e filmes.


Inserir dados nas tabelas.

Fazer busca de uma informação


Informar a quantidade registros na tabela
Dicionário de Dados

Transações e Navegação

Lista de Utilização

Sintaxe

Primeiro Programa

Tipo e Variáveis

Fluxo de Programa


Dicionário de Dados
Categorias de Dados

Domínio
Tipo de Dados
Elementos de Dados
Domínio
Tipo de Dados
Dicionário de Dados
Prática - Data Dictionary

Criar domínios e elementos de dados


Usar este domínios e elementos de dados em um programa
Dicionário de Dados
Categorias de Dados

Domínio Estrutura / Tabela

Tipo de Dados
Campo Campo … Campo
Elementos de Dados
Domínio
Elemento Elemento Tipo de
de Dados de Dados Dados
Tipo de Dados
Estrutura Tipo de
Domínio
Dados
Campos (Elementos, Tipo de Dados)
Tabela Tipo de
Dados
Campos (Elementos, Tipo de Dados)
Dicionário de Dados
Prática - Data Dictionary

Criar uma estrutura e uma tabela…


Dicionário de Dados
Gerar Atualização de Tabelas

Tabela
Nível
Grupo de Função
Autorização
Dicionário de Dados
Prática - Data Dictionary

Criar uma tabela de gênero e outra de filmes.


Gerar Atualização de tabela para ambas (1 e 2 níveis)
Dicionário de Dados
Acessando Tabelas do Dicionário de Dados

Open SQL
Native SQL

Evolução

Selecionar linhas
SELECT <campos>
FROM <tabela_ddic>
INTO TABLE <@tabela_interna>
WHERE <campo> <operador> <@variavel> […]
Dicionário de Dados
Acessando Tabelas do Dicionário de Dados

Comando
SELECT <campos> FROM <tabela_ddic> INTO TABLE <@tabela_interna> WHERE <…>.
SELECT SINGLE <campos> FROM <tabela_ddic> INTO <@work_area> WHERE <…>.

Laço de repetição
SELECT <campos> FROM <tabela_ddic> INTO <@work_area> WHERE <…>.
[…]
ENDSELECT.
Dicionário de Dados
Prática - Data Dictionary

Criar programa usando Parameters e Selection screen para a seleção de dados nas tabelas
criadas.
ABAP OO

Transações

Classes

Atributos

Métodos

Usando classes
ABAP OO
Transações

Function Builder
SE24
Editor
Teste
ABAP OO
Classes

Tipo de Classes
Características
Visibilidade
Public
Protected
Private
ABAP OO
Atributos

Tipo de atributos
Constante
Instância
Estático
Visibilidade
ABAP OO
Métodos

Tipo
Instância
Estático
Visibilidade
Parametros
Importing
Exporting
Changing
Returning
Transfere Valor
Opcional
ABAP OO
Prática - Criando Classes

Criar classe com 2 atributos (publico e privado)


Incluir 2 métodos público (GET e SET)
Incluir método estático (CALCULAR)
Incluir método privado (VERFICAR)
Testar a Classe
ABAP OO
Usando Classes

Declarar

Instanciar

Acessar atributos

Chamar métodos
ABAP OO
Prática - Data Dictionary

Usar a Classe anterior em um programa


Report

Classic List

Output Class

ALV
Report
Classic List

Comando de saída padrão


WRITE
SY-ULINE
position
length
Report
Output Class

Classes
cl_demo_output=>display()
cl_text_output
Report
ABAP List Viewer - Função

Tabela Dados
Catálogo de Campos
Tabela Interna com definição dos campos exibíveis
REUSE_ALV_FIELDCATALOG_MERGE
Exibição do ALV
REUSE_ALV_GRID_DISPLAY
Exemplos
T-Code SE83
Programas BCALV*
Report
ABAP List Viewer - Classe

Tabela Dados
Catálogo de Campos
Factory
Columns
Classes
CL_SALV_TABLE
CL_GUI_ALV_GRID
Exemplos
Programas SALV_DEMO*
BCALV_GRID_DEMO
Report
Prática

Criar programa com opção de exibição para:


Classic List
Output Class
ALV (OO)
Depuração

Break Point

Comando de Depuração

Usando depurador
Depuração
Break Point

Comando de depuração
BREAK-POINT
BREAK <user>
Depuração
Comando

Entrada de comando
/H
Todo programa ABAP é depuravel
Depuração de Sistema
Chamadas não depurareis
Depuração
Usando o Depurador

Fluxo de programa
Área de dados
Pilha de Execução
Pontos de parada
Depuração
Prática

Ativar depuração condicional via código e usar depurador para consultar e modificar variáveis

Você também pode gostar