Escolar Documentos
Profissional Documentos
Cultura Documentos
SAP - Treinamento ABAP
SAP - Treinamento ABAP
ÍNDICE
Curso Básico
Data Dictionary
Transportes
Report
Performance
BDC Session
On Line
Sapscript
Smartform
Arquitetura 3 camadas
100 A 1
100 B 2
100 C 3
Tabela dependente de mandante
200 A 2
=
Primeira chave é o mandante 200 B 3
200 D 4
300 C 2
Título del documento | 4
CURSO BÁSICO
ORDENS DE TRANSPORTE
Dois tipos principais:
• Configuração (customizing): dados, usualmente dependente
de mandante
• Repositório (workbench): levam conteúdo independente de
mandante (objetos do repositório), mas podem levar dados,
inclusive os dependente de mandante.
• Ordem aberta
• Ordem fechada
Ordem
100 A 1
100 C 3
Exibir lista de objetos: exibe lista de projetos ligados ao programa (includes, tabelas,
telas, variáveis, tabelas internas, etc).
Exibir janela de navegação: exibe pilha de navegação de objetos.
Ajuda online: exibe ajuda online da documentação do SAP.
Definir/eliminar ponto parada sessão: permite definir um ponto de parada para
depuração para a sessão ativa.
Definir/eliminar ponto parada externo: permite definir um ponto de parada para
depuração para uma chamada externa (RFC, por exemplo).
Modelo: permite incluir modelos de chamadas funções, mensagens, classes, etc.
Pretty Printer: efetua identação e efetua conversões de maiúsculas e
minúsculas de acordo com a configuração do editor.
Exemplo 1
REPORT ZEXEMP_01.
WRITE: '111111'.
WRITE: '222222',
'333333'.
WRITE: /'111111'.
WRITE: 15 '333333'.
WRITE: / text-001.
ULINE.
ULINE 8(6).
SKIP.
SKIP 2.
WRITE : 8 sy-langu.
WRITE : / sy-datum UNDER sy-langu.
Exemplo 2
REPORT ZEXEMP_02.
TOP-OF-PAGE.
WRITE: 'EXEMPLO 2 - CURSO ABAP/4',
80 'Page',
SY-PAGNO.
Exemplo 3
REPORT ZEXEMP_03.
FORMAT COLOR COL_HEADING.
WRITE : 'FUNDO AZUL'.
Exemplo 4
REPORT ZEXEMP_04.
DATA: nome(20) TYPE c,
rg TYPE i,
data TYPE bkpf-budat,
hora(8) VALUE '14:05:45'.
MOVE 'Solution Center' TO nome.
COMPUTE rg = 42159818 + 1.
data = '19970530'. "aaaammdd
Exemplo 5
REPORT ZEXEMP_05.
PARAMETER: P_NOME1(15) TYPE C OBLIGATORY,
P_NOME2(15) TYPE C DEFAULT 'Abap
Factory' LOWER CASE,
P_BOTAO1 RADIOBUTTON GROUP G1,
P_BOTAO2 RADIOBUTTON GROUP G1.
SELECT-OPTIONS: s_data FOR sy-datum.
Exemplo 6
REPORT ZEXEMP_06.
DATA: ti_t005h TYPE TABLE OF t005h,
wa_t005h TYPE t005h.
SELECT *
FROM t005h
INTO TABLE ti_t005h
WHERE land1 = p_pais
AND spras = sy-langu
ORDER BY cityc.
Exemplo 7
REPORT ZEXEMP_07.
LOOP AT tg_t005h INTO wa_t005h.
ON CHANGE OF wa_t005h-land1.
IF v_var1 = 0.
NEW-PAGE.
ENDIF.
FORMAT COLOR OFF.
WRITE 'COUNTRY CITY'.
CLEAR v_var1.
ENDON.
(…)
ENDLOOP.
Exemplo 8
REPORT ZEXEMP_08.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = v_arquivo
write_field_separator = 'X'
TABLES
data_tab = ti_spfli
EXCEPTIONS
file_write_error = 1
no_batch = 2
OTHERS = 22.
Exemplo 9
REPORT ZEXEMP_09.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = vg_arquivo
TABLES
data_tab = tg_spfli
EXCEPTIONS
file_open_error = 1
file_read_error = 2
OTHERS = 17.
IMPORTANTE
Ao salvar, indicar o pacote TRN e salvar.
O SAP pedirá uma request, clique em e digite a seguinte descrição:
Academia de Talentos Grupo 01 – Aluno ##
Anotar o número da change request para ser utilizado durante todo este curso
Atributos da transação
Atributos da transação
Cardinalidades
Formas Normais
Toda tabela deve ter pelo menos um campo chave, que será
denominado “chave primária”
Nome: ZESTRUT_##
Descrição: Estrutura de preenchimento do layout
Nome: ZTBL_##
Descrição: Tabela para manutenção via transação SM30
1-) SELECT * FROM dbtab.
....
ENDSELECT.
if SY-SUBRC <> …
1a-)…WHERE Condition
1b-)…ORDER BY f1…fn
…ORDER BY PRIMARY KEY
1c-)…UP TO n ROWS
2-) SELECT * FROM dbtab INTO TABLE itab.
2a-) …WHERE
2b-) …ORDER BY
2c-) …UP TO n ROWS
3-) SELECT * FROM dbtab APPENDING TABLE itab.
3a-) …WHERE
3b-) …ORDER BY
3c-) …UP TO n ROWS
4-) SELECT SINGLE * FROM dbtab INTO wa WHERE f1 =
g1 AND …
5-) SELECT * FROM dbtab APPENDING CORRESPONDING
FIELDS OF TABLE itab.
5a-) SELECT * FROM dbtab INTO CORRESPONDING FIELDS OF
TABLE itab.
6-) SELECT * FROM dtab
FOR ALL ENTRIES IN itab where…
Nota: verificar se a tabela não está vazia, caso em que todos registros serão
selecionados
IF NOT ( itab[] IS INITIAL ).
SELECT * FROM dtab FOR ALL ENTRIES in itab
where campo = itab-campo …
ENDIF.
1 - SELECT * FROM …<tabela>
2 - SELECT * FROM <tabela> WHERE <campo> EQ <var>
3 - SELECT * FROM <table> WHERE <table field> BETWEEN
<field1> and <field2>.
4 - SELECT * FROM <table> WHERE <table field> LIKE
….’_R%’.
5 - SELECT * FROM <table> WHERE <table field> IN
(var1,var2).
6 - SELECT * FROM <table> WHERE <table field> IN
<internal table>.
7 - SELECT * FROM <table> ORDER BY <field1>
<field2> … PRIMARY KEY.
8 - SELECT * FROM <table> BYPASSING BUFFER.
(Usado para ler diretamente da tabela original, e não do buffer).
9 - SELECT * FROM <table> APPENDING TABLE
<internal table>.
10 - SELECT …FROM <table> INTO TABLE <INTERNAL
TABLE>.
11 - SELECT …. INTO CORRESPONDING FIELDS OF TABLE
<itab>.
12 - SELECT ….. APPENDING CORRESPONDING FIELDS OF
TABLE <itab>.
13 - SELECT SINGLE * FROM SPFLI WHERE
…..<campo>….. EQ … <conteúdo>
14 - SELECT <a1> <a2> … INTO (<f1>, <f2>, … ) FROM
….<tabela> WHERE …… .
15 - SELECT MAX(campo)
MIN(campo)
AVG(campo)
COUNT(*)
FROM <table> INTO (…..,……,…..,….)
WHERE ………… .
16 - SELECT * FROM SFLIGHT WHERE PRICE IN ITAB.
17 - SELECT * FROM (<table>) INTO <work area>.
Exemplo:
18- SELECT * FROM <table> FOR ALL ENTRIES IN
<internal table> WHERE
campo1 = <conteúdo> and
campo2 = <conteúdo>
19 - SELECT MIN( price ) max (price ) INTO
(minimum, maximum) FROM sflight WHERE ...
19a - SELECT carrid MIN( price ) max (price )
INTO TABLE itab FROM sflight WHERE …
GROUP BY carrid.
Arquivo de entrada:
• Tipo de aeronave (1 linha por tipo)
Arquivo de saída:
• Tipo de aeronave
• ; (separador fixo)
• Companhia aérea
Ir para
Log de ação
Log de transporte
Tela 1000
Declaração de Variáveis
Cabeçalho e Rodapé
• Declaração de Dados:
Include ZZIHEADR
Tabelas
Constantes e Variáveis
Tabelas Internas
• Parâmetros de Entrada:
Select-Option
Parameters
Selection-screen
• Ao Comando do Usuário:
At User-Command
At Line Selection
• Cabeçalho e Rodapé
Top-of-page
End-of-page
Exercício 1
Exercício 3
• Pensando em performance
• Acesso ao banco de dados
• Manipulação dos dados
• Caso particular de migrações
O banco é
único Rede e
estações
Comunicação Banco
x Aplicação
Limitação nos
servidores de
aplicação
Principais cuidados:
• Não criar índices demasiados para tabelas com muita
atualização, pois os índices degradam estas operações.
• Criar índices disjuntos (campos distintos) e bem seletivos.
• Levar em conta a semântica do campo.
• Campo MANDT não é necessário (foi no passado)
• Direct input
• BAPI
• iDoc Melhor
• Call transaction performance
• Pasta batch input
Estes métodos podem ser utilizados via transação LSMW
ou diretamente a partir de programação
REPORT zxxxxxxx.
DATA: BEGIN OF tbdc OCCURS 100.
INCLUDE STRUCTURE bdcdata.
DATA: END OF tbdc.
* Início do programa principal
MOVE ‘sapmf02k’ TO tbdc-program.
MOVE ‘0100’ TO tbdc-dynpro.
MOVE ‘x’ TO tbdc-dynbegin.
APPEND tbdc.
MOVE ‘rf02k-lifnr’ TO tbdc-fnam.
MOVE ‘0010010’ TO tbdc-fval.
APPEND tbdc.
MOVE ‘rf02k-ekorg’ TO tbdc-fnam.
MOVE ‘cntl’ TO tbdc-fval.
APPEND tbdc.
BDC_INSERT
Chamada para cada transação no processamento Batch.
BDC_CLOSE_GROUP
Chamada após todo processamento para que a pasta de
processamento Batch seja criada.
Função BDC_OPEN_GROUP
Função BDC_INSERT
Função BDC_CLOSE_GROUP
Tela
Exibição (campos)
GUI-01
Módulos PBO
Programa
Principal Screen 2 tela 2
GUI-02
Módulos PBO
Screen 3 tela 3
Programa principal
Include TOP
LOOP AT SCREEN.
IF screen-group1 = 'G1'.
CLEAR screen-input.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
Em uma tabela:
• SPFLI-CONNID – Conexão
• CITYFROM – Origem
• CITYTO – Destino
• Total de vôos no intervalo de datas (pode ser zero)
Em uma tabela:
• SFLIGHT-FLDATE
• SFLIGHT-PRICE
• SFLIGHT-CURRENCY
Dados
Formatação
Formulário Sapscript
• Abertura de um formulário
• Inicialização de um formulário
• Seleção dos dados do formulário
• Impressão dos dados nas janelas do formulário
• Finalização do formulário
• Fechamento do formulário
call function 'OPEN_FORM'
exporting
DEVICE = 'PRINTER'
* DIALOG = 'X'
FORM = (Nome do Formulário)
LANGUAGE = (Idioma do Formulário)
OPTIONS = ITCPO
exceptions
canceled = 1
device = 2
form = 3
options = 4
unclosed = 5
others = 6.
call function 'START_FORM'
exporting
FORM = ' '
LANGUAGE = ' '
exceptions
form = 1
format = 2
unended = 3
unopened = 4
unused = 5
others = 6.
call function 'WRITE_FORM'
exporting
ELEMENT = ' '
WINDOW = 'MAIN'
exceptions
element = 1
function = 2
type = 3
unopened = 4
unstarted = 5
window = 6
others = 7.
CALL FUNCTION 'END_FORM'.
* IMPORTING
* RESULT =
* EXCEPTIONS
* UNOPENED = 1
* BAD_PAGEFORMAT_FOR_PRINT = 2
* OTHERS = 3
CALL FUNCTION 'CLOSE_FORM'.
* IMPORTING
* RESULT =
* RDI_RESULT =
* TABLES
* OTFDATA =
* EXCEPTIONS
* UNOPENED = 1
* BAD_PAGEFORMAT_FOR_PRINT = 2
* SEND_ERROR = 3
* OTHERS = 4
Transação SE71
• Traduzir formulários
Janelas VAR
Dados podem mudar, durante o preenchimento do formulário
Janelas CONST
Dados permanecem constantes após o primeiro preenchimento.
IF..ELSE..ENDIF
CASE..WHEN
DEFINE
PERFORM..USING..CHANGING
BOX..FRAME
INCLUDE
Exemplo:
/: INCLUDE name OBJECT object ID id LANGUAGE spras
IL Linha de item
Atributos standard
Espacej.linhas 1.00 LN
Alinhamento Alinh.esq.
Tabuladores
6.00 CH Alinh.à esquerda
25.00 CH Alinh.à esquerda
54.00 CH Alinh.à esquerda
73.00 CH Alinh.à esquerda
Uso:
IL &EKPO-EBELP&,,&EKPO-EMATN&,,&EKPO-TXZ01&
DADOS DE VÔO DA COMPANHIA LH
_______________________________
Relatório de Vôos
• É independente de mandante.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZEXEMPLO_00'
IMPORTING
FM_NAME = V_SMART
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
CALL FUNCTION V_SMART
TABLES
T_SPFLI = T_SPFLI
T_SFLIGHT = T_SFLIGHT
T_SCARR = T_SCARR
T_SAPLANE = T_SAPLANE
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.