Você está na página 1de 239

ACADEMIA INTERNA

ABAP / SAP R3
Introduo SAP R/3
Dicionrio de Dados*
Programao
Relatrios
ALV*
On Line*
Batch-Input/Call Transaction*
SapScript*
Exits

* exerccios
Cronograma
www.softtek.com.br
Click to edit Master title style
3 3 3
3
INTRODUO SAP R/3
Objetivos
O que SAP R/3
Funcionais e Basis Components
Arquitetura
Projetos
Navegao

O que o SAP R/3?

SAP - R/3
Gesto Empresarial - ERP
Integrao
Acesso a informao em tempo real e segura
Tomada de deciso
Evoluo e melhorias constantes

Funcionais e Basis Components
R/3
Cliente / Servidor
ABAP/4
FI
Contabilidade
Financeira
CO
Controladoria

AM
Ativos. Fixos

PS
Gerenc. de
Projetos
OC
Comunicao
IS
Soluces
Setoriais
MM
Gerenc.de
Materiais
HR
Recursos
Humanos
SD
Vendas e
Distribuio
PP
Plan. da
Produo
QM
Controle de
Qualidade
PM
Manuteno
da Planta
Sistemas
abertos
Arquitetura
Cliente/Servidor
Modelo de dados
empresariais
Desenhado
para todo
tipo de negcios
Multinacional
Funcionalidades
sofisticadas
Solues integradas
Funcionais e Basis Components
Sistema R/3
Sales & Distribution : A soluo completa para o
gerenciamento integrado de todas tarefas para vendas,
faturamento e expedio.
Materials Management : O processo completo de compras,
com suporte integrado de resultados e planejamento de
produo.
Production Planning : O sistema de PCP ajustvel para
todos os tipos de produo com suporte integrado de
resultados e do gerenciamento de compras.
Quality Management : O sistema para o controle da
qualidade assegurada em todas as reas da cadeia
logstica.
Plant Maintenance : A soluo independente de indstria
para a administrao da manuteno de sistemas
produtivos.
Human Resources Management : Desde o
processamento integrado de administrao RH,
gerenciamento de tempo e despesas de viagens at
a folha de pagamento.
Human Resources Planning : Planejamento
organizacional, posicionamento, desenvolvimento
educacional e controle do custo de pessoal em um
sistema totalmente integrado.
Sistema R/3
Financial Accounting: Uma ampla viso do desempenho
que inclui gerenciamento de caixa, banco eletrnico,
controladoria financeira, oramento de caixa e
consolidao.
Controlling: Contabilidade de custos, desde a
contabilidade de centros de custos e de elementos de
custos at a anlise de lucratividade.
Asset Management : O gerenciamento completo de todos
os ativos fixos, desde da contabilidade tradicional de ativos
e gerenciamento tcnico de ativos at a controladoria de
investimentos.
Project Information System : A integrao de todas as
reas de servios para o planejamento de projetos,
processamento e controle.
Executive Information System (EIS) : Acesso rpido aos
dados, fatos e representaes grficas para decises
gerenciais.
Sistema R/3
Estrutura Organizacional
Grupo de empresas
Armazm
Organizao de
compras
Sociedade
Centro
0001
1000
001
0002
2000 3000
0002 0004 0005
0002
0003
WM
0088
0001
0001
Mdulo FI e suas funes
Contabilidade Geral
Contas a Receber
Controlling Financeiro
Gesto Oramentria
Consolidao
Ativos Financeiros
FI-FI
FI-LC
FI-FM
FI-FC
FI-AR
FI-AP
FI-GL
Contas a Pagar
Contabilidade Empresarial
Base Dados Documentos
Contabilidade Geral
MM
SD
HR
AM
MM
Fornecedores
Clientes
Pessoal
Ativos
Materiais
FI
FI
Consolidao
Ledgers
PCB
Custos
de
Projetos
JOB
Ordens
de
Custos
CCA
Contab.
Centros
Custos
PC
Custo de
Produtos
PA
Anlise de
Rentabilidade
PM-
PP
Contas a Pagar
Compensao
Fornecedor
Qualificao
de fornecedor
Estatsticas
Antecipaes
Promissrias
Pagtos.
parciais
Relatrios
Previso de
cobrana e pagto.
Registro de moeda
Rankings
EDI
Gesto e preveno de
tesouraria
CO
Auditora
MM
Recebto.
Pedido de
compra
Fatura
EDI
Pagtos
Cheque
Transferncia
Compensao
Letras
Pagar
Recebto.
Clculo de
interesses
Cartas a forn.
Confirmao
de saldos
Correspondncia
Pagtos
Gesto de Materiais - Processo de Abastecimento
Gesto de Pedidos
Follow-up de Pedidos
Pedidos Fatura
Verificao de faturas
Entrada de mercadoria
e gesto de estoques
Gesto de
Materiais
Seleo de fornecedores
Associao de fonte aquisio
Planejamento
Fornecedor
Contrato marco
Planejamento
de necesidades
Logstica - R/3
Plano de Vendas

Vendas
Distribuio
Faturamento
SD

Compras
Gesto de Estoques
Verif. Facturas
MM


Custo de Produtos


Controle
de produo





Planej. Capacidade


MRP


Planej, Produo
PP

Planej. Paradas
Manuteno

Planej. Inspeo
Gesto de inspeo

Controle em planta
PDC
PM
QM
PP-
SFC
FI CO AM HR
CAD CAM CAP CAQ
Provedor
Cliente
Contabil.
Financeira
Contabilid.
de Custos
Ativos
Fixos
Recursos
Humanos
Recursos Humanos
Gastos de Viagens Salrios

Organizaco de
Rec. Humanos

Planejamento de
Rec. Humanos

Control de custos
de Rec. Humanos
Gesto
de Tempos
Relatrios
estatsticas
Datos Mestres
de Pessoal
FI / CO
Contabilidade Financeira / Analtica
PP
Controle e planejamento
de produo
PM
Manuteno
HR

ABAP ?
ABAP
A
B
A
P
/
4
dvanced
usiness
pplication
rogramming
www.softtek.com.br
Click to edit Master title style
21 21 21
21

Arquitetura

Arquitetura em 3 camadas
Banco de Dados
R/3
Application Server
Presentation Server
Banco de Dados
R/3
Logon Balancing
Servidores
Servidor
DV4
Servidor
QA4
Servidor
PR4
Ambiente de
desenvolvimento
Ambiente de
consolidao
Ambiente de
produo
Mandantes
Servidor
DVL
Mandante
003
Mandante
120
Requests
Ambiente de desenvolvimento: client 200
Task
Request
Transporte
Servidor
DV4
Servidor
QA4
Servidor
PR4
Ambiente de
desenvolvimento
Ambiente de
consolidao
Ambiente de
produo
www.softtek.com.br
Click to edit Master title style
28 28 28
28
Projetos
Fases
Levantamento - BC
Modelagem dos processos atuais
Como devero ser os processos - BC
Customizao
Desenvolvimentos - BC
Validao - BC
Testes individuais/integrados - BC
Produo - BC
Melhorias - BC
www.softtek.com.br
Click to edit Master title style
30 30 30
30

Navegao
www.softtek.com.br
Click to edit Master title style
31 31 31
31
DICIONRIO DE DADOS
Objetivos
O que dicionrio de dados
Elementos do dicionrio de dados
Como utilizar o dicionrio de dados
Levantamento de informaes no R/3
Integrao
Gerenciamento de Dados
Atribuio
Descrio e Significado
Ativao dos Dados
Banco de Dados
R/3
Dicionrio de Dados
Tabela
DICIONRIO ABAP/4
DEFINIO LGICA DA TABELA
BANCO DE DADOS
DEFINIO FSICA DA TABELA
Campo 1
Campo 2 Campo 3 Campo 4
Tabela
Tabela
Campo 1 Campo 2 Campo 3 Campo 4
Dicionrio ABAP/4
Banco de Dados R/3
Tabela 1 Tabela 2 Tabela n
DB UTILITY
Tabela 1
Campo 1 Campo 2 Campo 3 Campo 4 Campo 5
Tabela 2
Campo 1 Campo 2
Tabela n
Campo 2 Campo 3 Campo 5
Sistema de gerenciamento de banco de dados
relacional

Dados trabalhados via SQL
Elementos do Dicionrio de Dados
Tabelas - armazenam dados
Estruturas - no armazenam dados
Vises - join de tabelas e restrio de campos
Campos
Elementos de dados
Domnios
Ajuda de pesquisa
AMBIENTE DE DESENVOLVIMENTO
Ferramentas
Modelagem
de Dados
Telas
AMBIENTE DE EXECUO DA APLICAO
Interpretador
Controle de
Dilogo
Interfaces Mdulos
Banco de Dados
R/3
Integrao do Dicionrio de Dados
www.softtek.com.br
Click to edit Master title style
38 38 38
38
Tabelas
Elemento de Dados e Domnios
Elemento de Dados
Domnio
Utiliza
Utiliza
Definio Semntica
Definio Tcnica
Tabela
Campo
Banco de
Dados R/3
Generalizando
Domnio
Tabela 1 Tabela 2 Tabela 3 Tabela 4 Tabela 5
Elemento de Dados 1 Elemento de Dados 3 Elemento de Dados 2
Foreign Key
Table T1
Field 1 Field 2 Field 3 Field 4
Primary Key
Table T2 (check table)
Field A Field B Field C Field D
Primary Key
Foreign Key Field
Estruturas
As estruturas possuem os mesmos elementos das tabelas mas
no armazenam dados. S esto preenchidas em run-time.

www.softtek.com.br
Click to edit Master title style
43 43 43
43
Vises
Banco de
Dados R/3
Tabela 1 Tabela 2 Tabela n
View
Vises
Trabalhando com a SE11
www.softtek.com.br
Click to edit Master title style
46 46 46
46
Levantamento de Informaes
F1 - Ajuda (Help)

F9 - Informao tcnica
Funes
Exerccio
1. Criar uma tabela Z no dicionrio de dados, com o nome ZTESTE_001.

Layout :
- DOCUMENTO chave numrico 10
- ITEM chave numrico 05
- TEXTO alfa 40
- MATERIAL numrico 06
- QUANTIDADE numrico 04
- PRECO_UNITARIO numrico 15(02)
- PRECO_TOTAL numrico 15(02)

Os desenvolvimentos devem ser amarrados em uma mesma request. A descrio
da request deve comear por : TREIN ABAP ???? - ...
???? : Iniciais do nome, para identificar o usurio.
Os elementos de dados e seus domnios devem ser criados. Objetos Z.

2. Preencher manualmente a tabela criada, com os registros abaixo, via dilogo
de atualizao (SE11/SM30).

Documento Item Texto Material Qtde Preo
Unit
Preo
Tot
1000000001 00001 Documento teste 001 900001 0010 10,00
1000000001 00002 Documento teste 001 900002 0012 12,00
1000000002 00001 Documento teste 001 900001 0009 100,00
1000000002 00002 Documento teste 001 900003 0020 25,00 500,00
1000000002 00003 Documento teste 001 900003 0009 50,00
Exerccio - continuao
PROGRAMAO
SE38/SE80 - Navegao
Tipos de progamas possveis

Estrutura geral de um programa abap
Criando um novo programa
Declarao de tabelas
Tabelas do dicionrio de dados

TABLES : tabela01, tabela02, .

Tabelas internas

DATA: BEGIN OF t_tabela01 OCCURS 0,
campo1(16) TYPE c,
campo2 LIKE tabela01-campo,
...
END OF t_tabela01.

DATA: BEGIN OF t_tabela02 OCCURS 0.
INCLUDE STRUCTURE tabela02.
DATA: END OF t_tabela02.
Como funciona o Header Line
1001 ABC A90S 23,00
1002 DEF J82J 02,03
2003 GHI KK89 00,01
Header Line
Registros da Tabela
Obs.: os registros so trabalhados no Header e posteriormente
levados tabela.
Declarao de estrutura
Estrutura

DATA: BEGIN OF e_tabela01,
campo1(16) TYPE c,
campo2 LIKE tabela01-campo,
...
END OF e_tabela01.

DATA: BEGIN OF e_tabela02.
INCLUDE STRUCTURE tabela02.
DATA: END OF e_tabela02.
1001 ABC A90S 23,00
Estrutura
Obs.: a estrutura criada apenas em tempo de execuo, nunca
gravada.
Declarao de variveis
Varivieis

- Por referncia a outro campo de tabela j existente :

DATA: variavel01 LIKE tabela01-campo01.

- Pelo tipo que queremos :

DATA: variavel02(04) TYPE i.

- Uma varivel com a estrutura de outra :

DATA: variavel03 LIKE tabela02.
Tipos de dados
Tipos

I -> inteiro (4 bytes c/ sinal)
N -> numrico (s nmeros)
P -> compactado
F -> ponto flutuante
C -> caracter
D -> data (AAAAMMDD)
T -> hora (HHMMSS)
X -> hexadecimal (sequncia de bytes)

Obs.: se no for atribudo tipo a varivel, esta ser definida como
caracter, automticamente.
Tela de seleo
Tela de seleo
SELECTION-SCREEN BEGIN OF BLOCK bloco1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_period FOR sy-datum OBLIGATORY.
SELECTION-SCREEN END OF BLOCK bloco1.

SELECTION-SCREEN BEGIN OF BLOCK bloco2 WITH FRAME TITLE text-002.
SELECT-OPTIONS: s_pernr FOR pa0000-pernr, Crach
...
SELECTION-SCREEN END OF BLOCK bloco2.

SELECTION-SCREEN: BEGIN OF BLOCK bloco3 WITH FRAME TITLE text-014.
SELECT-OPTIONS: s_tipo FOR zthrvrub-tipo NO INTERVALS,
s_awart FOR pa2001-awart NO INTERVALS. "Ausncia
SELECTION-SCREEN: END OF BLOCK bloco3.
Tela de seleo
SELECTION-SCREEN BEGIN OF BLOCK bloco4 WITH FRAME TITLE text-032.
PARAMETERS: p_data LIKE sy-datum OBLIGATORY.
SELECTION-SCREEN END OF BLOCK bloco4.

SELECTION-SCREEN BEGIN OF BLOCK BLOCO5 WITH FRAME TITLE TEXT-033.

SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: P_FAB RADIOBUTTON GROUP RADI.
SELECTION-SCREEN COMMENT 5(30) TEXT-034
FOR FIELD P_FAB.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: P_CD RADIOBUTTON GROUP RADI.
SELECTION-SCREEN COMMENT 5(30) TEXT-035
FOR FIELD P_CD.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK BLOCO5.
SELECTION-SCREEN SKIP 1. O comando SKIP pula o nmero de linhas identificado

SELECTION-SCREEN ULINE. O comando ULINE imprime uma linha contnua
Eventos de um programa Abap
INITIALIZATION: Onde se pode setar variveis e preencher
atributos ao se inicializar o programa.

START-OF-SELECTION: Corpo principal do programa. Onde as
selees de dados so feitas e informaes
trabalhadas.

END-OF-SELECTION: No obrigatrio, mas costuma-se utilizar
este ponto para impresso de relatrios e
finalizao do processo.

TOP-OF-PAGE: Este evento se processa antes do primeiro
dado ser impresso em cada pgina. Pode ser
usado como cabealho, em companhia do
NO STANDARD PAGE HEADING.

END-OF-PAGE: Este evento ocorre quando se ultrapassa o
nmero de linhas da pgina corrente.
Ou quando se passa de uma pgina outra.
IF

-IF ENDIF.
Este comando permite que se desvie o fluxo do programa, dependendo da condio. Para
encerrar usa-se: ENDIF, pode-se ainda ELSEIF e ELSE. O programa s ir executar a condio
correta.

IF <condio> .

ENDIF.

Exemplo: IF VBAP-VBELN IS INITIAL.
MESSAGE E001(ZSSI).
ENDIF.

-IF... ELSE... ENDIF.

IF <condio> .

ELSE.

ENDIF.

Exemplo.: IF VBAP-VBELN is INITIAL.
MESSAGE E001(ZSSI).
ElSE.
MOVE VBAP-VBELN TO W_VBELN.
ENDIF.
Comandos bsicos - IF
-IF ELSEIFELSEIFENDIF.

IF <condio1> .

ELSEIF <condio2> .
...
ELSEIF <condio3> .
...
ENDIF.

Exemplo.: IF VBAP-VBELN is INITIAL.
MESSAGE E001(ZSSI).
ElSEIF not VBAP-VBELN is INITIAL .
MOVE VBAP-VBELN TO W_PERNR.
ELSEIF not VBAP-VBELN is INITIAL AND
W_VBELN is INITIAL.
MOVE VBAP-VBELN TO W_VBELN.
ENDIF.
Comandos bsicos - IF
LOOP

-LOOP ENDLOOP.

LOOP AT <itab>.



ENDLOOP.

LOOP AT <itab> WHERE <condio>.



ENDLOOP.

Comandos bsicos - LOOP
CASE

-CASE ENDCASE.
um controle baseado em ndice de objeto de dados. Este controle deve ser concludo
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.

Exemplo: CASE W_DATA(02).
When 01.
W_DATA = W_DATA + 1.
When 02.
W_DATA = W_DATA + 2.
When others.
Clear W_DATA.
ENDCASE.

Comandos bsicos - CASE
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.

DO < n > TIMES.
...
ENDDO.

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 bsicos - DO
WHILE

-WHILE ENDWHILE.
Repete o processamento que est dentro de WHILE e ENDWHILE, se a expresso verdadeira.
A cada passagem a expresso verificada.
Pode usar CONTINUE , para terminar o passo do WHILE e continuar o passo seguinte.

WHILE expresso.


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 expresso lgica estabelecida no CHECK for falsa, a sub-rotina ser encerrada.
Se a expresso CHECK for aplicada a um LOOP, encerra-se o LOOP.

CHECK SY-SUBRC = 0.
Comandos bsicos WHILE / CHECK
MOVE

-MOVE

MOVE <c1> TO <c2> .

<c4> = <c3> = <c1>

-MOVE utilizando tabela interna

MOVE <itab1> TO <itab2>.

<itab2> = <itab1>

A citao acima tem o mesmo efeito que <itab2> = <itab1>.

-MOVE-CORRESPONDING

Este comando move os campos idnticos de uma estrutura para outra.

MOVE-CORRESPONDING <struct1> TO <struct2>.

Comandos bsicos MOVE
WRITE

-WRITE
comum os campos sarem justificados a esquerda. Os campos numricos so alinhados a
direita.

Exemplos:
WRITE <f>.
WRITE: /TEXT-001, TEXT-002, TEXT-003+2(8).
WRITE: /002 TEXT-004.

Opes:
... 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.
Comandos bsicos WRITE
CLEAR

-CLEAR
Reseta o valor da varivel. Tambm aplica-se a estruturas e tabelas, limpando o header line,
mas no interferindo nos dados no caso de tabelas.
Se a varivel for alfanumrica, volta a ser branco. Se for numrica, retorna a zero.

Exemplos:
CLEAR <var1>.
CLEAR <t_tab1>. limpa o header line da tabela

SKIP

-SKIP n
Realiza o salto de linhas. A varivel 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 pgina
ULINE /35(50). Linha comear na posio 35 e ter comprimento
de 50 bytes
Comandos bsicos CLEAR/SKIP/ULINE
COMENTRIOS

Algumas das formas como podemos documentar um programa ABAP.

* -> um asterisco na frente da linha, j serve para comenta-l toda.

-> a aspas dupla, na mesma linha do cdigo, 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 bsicos Comentrios
FORM

-FORM ENDFORM.
Define uma subrotina dentro do programa ABAP. Pode ser executada a qualquer momento, dentro
do programa.

Exemplos:
FORM f_leitura_bseg.
Instrues.
EDFORM.
Opes:
FORM <nome_form> USING p_variavel_referencia
CHANGING p_variavel_valor
TABLES p_tabela.
Instrues
ENDFORM.

PERFORM

-PERFORM
Executa chamadas de subrotinas do programa ABAP.

Exemplos:
PERFORM f_leitura_bseg.
Opes:
PERFORM <nome_form> USING v_variavel_referencia CHANGING v_variavel_valor
TABLES t_tabela.

Comandos bsicos FORM/PERFORM
CLEAR

-CLEAR
Limpa/Inicializa a header line da tabela interna.

Exemplo:
CLEAR t_tabela01.


REFRESH

-REFRESH
Este comando limpa os dados da tabela interna. No libera a memria carregada.

Exemplo:
REFRESH t_tabela01.


FREE

-FREE
Este comando apaga os dados da tabela interna, liberando a memria onde ela estava
carregada.

Exemplo:
FREE t_tabela01.
Tabela interna Limpeza e Inicializao
READ

-READ
Realiza a leitura de dados de uma tabela interna.

READ TABLE <table01> WITH KEY

READ TABLE <table02> INDEX

Exemplos:
READ TABLE table01 WITH KEY nome = w_nome. Busca por campo especfico

READ TABLE table02 INDEX w_index. Busca por posio 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 condio 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 READ / Leitura
Tabela interna APPEND / Gravando
APPEND

-APPEND
Para incluir novos registros na tabela interna.

APPEND <table01>.

Exemplos:
CLEAR table01. Limpa a header line da tabela
table01-nome = Jose.
table01-cracha = v_cracha.
table01-situacao = Ativo.
APPEND table01. Insere o registro na tabela table01
APPEND I_BKPF
BUKRS GJAHR BELNR BUDAT
5510 1999 72000001555 25.10.1999
5510 1999 72000001554 25.10.1999
5510 1999 72000001553 25.10.1999
5510 1999 72000001552 25.10.1999
MODIFY

-MODIFY
Comando para alterar registro de uma tabela interna.

MODIFY <itab>.

Exemplos:
MODIFY t_tabela01.

Opes:
MODIFY t_tabela02 INDEX sy-index.


DELETE

-DELETE
Comando para deleo de registro de uma tabela interna.

DELETE <itab>.

Exemplos:
DELETE t_tabela01.

Opes:
DELETE t_tabela02 INDEX sy-index.
DELETE t_tabela03 WHERE cracha = 3005.
DELETE t_tabela04 FROM 3 to 5.

Tabela interna MODIFY/DELETE
COLLECT

-COLLECT <itab01>.
Este comando tambm insere registros na tabela interna. A particularidade que, ele analisa
os campos alfanumricos. Estes sendo iguais, ele realiza a soma dos campos numricos.
NAME PRICE
LH 100000
AR 50000
FL 10000000
LH 50000
Soma os campos numricos
150000
Tabela interna COLLECT
SORT

-SORT
Comando utilizado para se sortear a tabela interna.

SORT <itab>.

Exemplos:
SORT t_tabela01.

Opes:
SORT t_tabela02 BY campo2 campo3.
SORT t_tabela03 BY campo4 ASCENDING campo5 DESCENDING.

DESCRIBE

-DESCRIBE
Comando para gerar informaes sobre determinada tabela interna.

DESCRIBE TABLE <itab> LINES

Exemplos:
DESCRIBE TABLE t_tabela01 LINES LINHAS N linhas preenchidas
OCCURS OCORRENCIA. N ocorrncias na def. da tabela

Obs.: As variveis utilizadas para se obter o resultado (LINHAS/OCORRENCIA) devem ser
definidas com tipo inteiro (I).
Tabela interna SORT/DESCRIBE
Tabela DB SAP - SELECT
SELECT

-SELECT
Comando SQL utilizado para leitura das informaes de uma tabela do banco de dados SAP.
Possui diversas variaes.

-Select de todos os campos de uma tabela.

SELECT * FROM <tabelaSAP>.
instrues.
ENDSELECT.

Obs.: O comando SELECT em si, pede um ENDSELECT para fech-lo. Em algumas variaes isto no
se faz necessrio.
Esta variao no um modo eficiente para acesso ao banco. No indicado, mesmo com
incluso da clausula WHERE.

-Select para variveis.

SELECT campo1 campo2 campo3 INTO (var01, var02, var03, )
FROM <tabelaSAP>
WHERE <condio>.

-Select inserindo em uma tabela interna.

SELECT <campos> INTO TABLE <t_tabela01>
FROM <tabelaSAP>
WHERE <condio>.
-Select inserindo dados em determinados campos de uma tabela interna.

SELECT <campos> INTO CORRESPONDING FIELDS OF TABLE <t_tabela01>
FROM <tabelaSAP>
WHERE <condio>.

-Select inserindo dados em uma tabela, usando como base os dados de outra j preenchida.

SELECT <campos> INTO TABLE <t_tabela02>
FROM <tabelaSAP>
FOR ALL ENTRIES IN <t_tabela01>
WHERE <condio>.


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 referncia< tabela interna1>, contm dados
e os mesmo estejam ordenados.


Tabela DB SAP - SELECT
-Select para buscar apenas um registro especfico.

SELECT SINGLE <campos> INTO TABLE <t_tabela01>
FROM <tabelaSAP>
WHERE <condio>.

Obs.: Para o uso do SELECT SINGLE, deve-se utilizar a chave completa da tabela. Se no
possuir as chaves todas, utilizar a opo UP TO 1 ROWS.

SELECT <campos> INTO TABLE <t_tabela01>
FROM <tabelaSAP>
UP TO 1 ROW
WHERE <condio>.
ENDSELECT.

-Select com range de valores.

SELECT <campos> INTO TABLE <t_tabela01>
FROM <tabelaSAP>
WHERE <campo> BETWEEN <valor1> AND <valor2>.

-Select em um intervalo de valores

SELECT <campos> INTO TABLE <t_tabela01>
FROM <tabelaSAP>
WHERE <campo> IN (valor_mnimo,valor_mximo).
Tabela DB SAP - SELECT
INSERT

-INSERT
1.Insere registros na tabela do dicionrio.

INSERT INTO <tabelaSAP> [ FROM ][ VALUES ] <estrutura>.

Exemplos:
TABLES: SPFLI.

DATA: WA LIKE SPFLI.

WA-CARRID = 'LH'.
WA-CITYFROM = 'WASHINGTON'.

INSERT INTO SPFLI VALUES WA.


WA-CARRID = 'UA'.
WA-CITYFROM = 'LONDON'.

INSERT SPFLI FROM WA.

Grava os valores da estrutura WA
na tabela SPFLI.
Mesmo feito do comando
acima.
Tabela DB SAP - INSERT
INSERT

2.Insere registros na tabela do dicionrio, a partir de uma tabela interna.

INSERT INTO <tabelaSAP> FROM TABLE <t_tabela01> [ ACCEPTING DUPLICATE KEYS ].

Exemplos:
TABLES: SPFLI.

DATA: ITAB LIKE SPFLI OCCURS 10 WITH HEADER LINE.

ITAB-CARRID = 'UA'.
ITAB-CONNID = '0011'.
APPEND ITAB.

ITAB-CARRID = 'LH'.
ITAB-CONNID = '1245'.
APPEND ITAB.

ITAB-CARRID = 'AA'.
ITAB-CONNID = '4574'.
APPEND ITAB.

INSERT SPFLI FROM TABLE ITAB.


Tabela DB SAP - INSERT
UPDATE

-UPDATE
1.Modifica registros na tabela do dicionrio. Um registro por vez.

UPDATE <tabelaSAP> [ FROM <estrutura> ].

Exemplos:
TABLES: SPFLI.

DATA: WA LIKE SPFLI.

MOVE 'AA' TO WA-CARRID.
MOVE '0064' TO WA-CONNID.
MOVE 'WASHINGTON' TO WA-CITYFROM.

UPDATE SPFLI FROM WA.

MOVE 'LH' TO SPFLI-CARRID.
MOVE '0017' TO SPFLI-CONNID.
MOVE 'BERLIN' TO SPFLI-CITFROM.

UPDATE SPFLI.

Tabela DB SAP - UPDATE
UPDATE

2.Modifica registros na tabela do dicionrio. Vrios registros por vez.

UPDATE <tabelaSAP> SET <S1> .. <Sn> [ WHERE condio ].

Exemplos:
TABLES: SFLIGHT.
UPDATE SFLIGHT SET PLANETYPE = 'A310'
FLPRICE = FLPRICE - '10000'
WHERE CARRID = 'LH'.

3. Modifica registros na tabela do dicionrio, a partir de uma tabela interna.

UPDATE <tabelaSAP> FROM TABLE <t_tabela01>.

Exemplos:
TABLES: SPFLI.

DATA: ITAB LIKE SPFLI OCCURS 10 WITH HEADER LINE.

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 SPFLI FROM TABLE ITAB.
Tabela DB SAP - UPDATE
MODIFY

-MODIFY
Este comando tambm altera registros na tabela do dicionrio, mas contm uma diferena
importante. Com este comando, se o registro a ser alterado no for encontrado, ele
inserido na tabela do dicionrio.
Segue o mesmo esquema do comando UPDATE.

MODIFY <tabelaSAP> [ FROM <estrutura> ].

MODIFY <tabelaSAP> FROM TABLE <t_tabela01>.

Exemplos:
TABLES: SPFLI.

DATA: WA LIKE SPFLI.

MOVE 'AA' TO WA-CARRID.
MOVE '0064' TO WA-CONNID.
MOVE 'WASHINGTON' TO WA-CITYFROM.

MODIFY SPFLI FROM WA.


TABLES: SPFLI.

DATA ITAB LIKE SPFLI OCCURS 10 WITH HEADER LINE.

ITAB-CARRID = 'UA'. ITAB-CONNID = '0011'.
APPEND ITAB.
ITAB-CARRID = 'LH'. ITAB-CONNID = '1245'.
APPEND ITAB.
ITAB-CARRID = 'AA'. ITAB-CONNID = '4574'.
APPEND ITAB.

MODIFY SPFLI FROM TABLE ITAB.
Tabela DB SAP - MODIFY
DELETE

-DELETE
1.Deleta registros da tabela do dicionrio.

DELETE <tabelaSAP> FROM <estrutura>.

Exemplos:
TABLES: SPFLI.

DATA: WA LIKE SPFLI.

MOVE 'AA' TO WA-CARRID.
MOVE '0064' TO WA-CONNID.

DELETE SPFLI FROM WA.

2.Deleta registros da tabela do dicionrio. Vrios registros por vez.

DELETE FROM <tabelaSAP> WHERE <condio>.

Exemplos:
TABLES: SFLIGHT.

DELETE FROM SFLIGHT WHERE PLANETYPE = 'A310' AND
CARRID = 'LH'.
Sero deletados os registros na estrutura
WA, de acordo com os campos chave.
Tabela DB SAP - DELETE
DELETE

3. Modifica registros na tabela do dicionrio, a partir de uma tabela interna.

DELETE <tabelaSAP> FROM TABLE <t_tabela01>.

Exemplos:
TABLES SPFLI.

DATA ITAB LIKE SPFLI OCCURS 10 WITH HEADER LINE.

ITAB-CARRID = 'UA'.
ITAB-CONNID = '0011'.
APPEND ITAB.

ITAB-CARRID = 'LH'.
ITAB-CONNID = '1245'.
APPEND ITAB.

ITAB-CARRID = 'AA'.
ITAB-CONNID = '4574'.
APPEND ITAB.

DELETE SPFLI FROM TABLE ITAB.
Os registros so deletados baseando-se
nos campos chave.
Tabela DB SAP - DELETE
COMMIT WORK

Efetiva as operaes realizadas nas tabelas para o SAP.
Enquanto o COMMIT no executado, o SAP trabalha em uma rea separada. S carrega as
modificaes para o banco, quando o comando executado.

ROLLBACK WORK

Desfaz as modificaes efetuadas pelo programa, antes de ser executado o COMMIT.
Aps a execuo do COMMIT, o ROLLBACK no mais consegue desfazer as modificaes.

Exemplos:

COMMIT WORK.

<instrues>

DELETE FROM bkpf WHERE

<intrues>

INSERT zteste_001 from zteste_001.

IF sy-subrc <> 0.
ROLLBACK WORK.
continue.
ELSE.
COMMIT WORK.
ENDIF.
Primeira gravao.
Insere registros na tabela.
Se ocorrer erro na insero, desfaz tudo
o que foi feito aps o primeiro COMMIT.
Efetiva operaes realizadas at este
COMMIT.
Deleta registros da tabela.
COMMIT WORK / ROLLBACK WORK
CONCATENATE
Utilizado para concatenar/juntar vrias strings em uma s.

CONCATENATE <var1> <var2> <varN> INTO <varDESTINO> [ SEPARATED BY <carac> ].

CONDENSE
Utilizado para eliminar os espaos em branco de uma string.

CONDENSE <string> [ NO-GAPS ].

TRANSLATE
Utilizado para transformar os caracteres em maisculos ou minsculos. E tambm para
converter uma string a partir de outra.

TRANSLATE <string> TO UPPER CASE.
TRANSLATE <string> TO LOWER CASE.

TRANSLATE <string1> USING <string2>.

DATA: STRING1 (10) VALUE 'AbCdEfGhIj',
STRING2 (20) VALUE 'AxbXCydYEzfZ'.

TRANSLATE STRING1 USING STRING2.

WRITE / STRING1.

A sada ser a seguinte string : xXyYzZGhIj
Trabalhando com cadeia de caracteres
A string utilizada para o TRANSLATE,
STRING2 tem a seguinte instruo :
A x
b X
C y
d Y
E z
f Z

REPLACE
Substitui o contedo de uma string por outra, em uma outra string destino.

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.

A sada na string ser a seguinte : abklmnghij

STRING = T.
REPLACE STR1 WITH STR3 INTO STRING.
WRITE / STRING.
STRING = T.

A sada na string ser a seguinte : abklghij

REPLACE STR1 WITH STR4 INTO STRING.
WRITE / STRING.

A sada na string ser a seguinte : abklmnopgh
Trabalhando com cadeia de caracteres
SEARCH
Permite que se busque uma string em uma cadeia de caracteres ou em uma tabela interna.

SY-SUBRC = 0, string encontrada.
SY-FDPOS = , retorna a posio em que foi encontrada.
SY-SUBRC = 4, string no encontrada.

SEARCH <string> FROM <string_procurada>.

SEARCH <t_tabela01> FOR <string_procurada> [ AND MARK ].

Obs.: No caso de busca em tabela interna, a varivel SY-TABIX retorna a linha em que a
string procurada foi encontrada.

STRLEN
Devolve o tamanha da string referenciada.

v_tamanho = STRLEN( IVAN RODRIGO ).

v_tamanho = STRLEN( TEXT-001 ).
Trabalhando com cadeia de caracteres
RELATRIOS
Formatando listas : Overview
Comandos de sada/Opes de formatao :
WRITE
FORMAT
NEW-PAGE

Eventos :
TOP-OF-PAGE
END-OF-PAGE

Elementos de texto :
TEXT-SYMBOLS
HEADINGS
SELECTION TEXTS

System fields
WRITE

Formato de sada dos tipos de dados pr-definidos :

Tipo Dado Tamanho Sada Positioning
C tamanho do campo esquerda
D 8 esquerda
F 22 direita
I 11 direita
N tamanho do campo esquerda
P 2 * tamanho do campo + 1 direita
T 6 esquerda
X 2 * tamanho do campo esquerda


Revendo as opes do comando WRITE:

... 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: Date, sy-datum.

WRITE: Time, sy-uzeit.

WRITE: 5 `****************.

WRITE: /10 Usurio:, 30 sy-uname.

SKIP 2.

ULINE.

ULINE /5(40).

V_DATUM = SY-DATUM.
V_UZEIT = SY-UZEIT.

WRITE: 5 Datum, 20 V_DATUM DD/MM/YYYY.

WRITE: /10 Time, 25 V_TIME USING EDIT MASK __:__:__.
Comando WRITE
FORMAT

-Trabalhando com cores.











Opes para se modificar as cores da lista, via comando FORMAT.

1. COLOR n [ON] or COLOR OFF
2. INTENSIFIED [ON] or INTENSIFIED OFF
3. INVERSE [ON] or INVERSE OFF
4. HOTSPOT [ON] or HOTSPOT OFF
5. INPUT [ON] or INPUT OFF
6. RESET

FORMAT INTENSIFIED OFF.
FORMAT INTENSIFEID.
FORMAT COLOR COL_KEY.
FORMAT COLOR COL_TOTAL INTENSIFIED OFF.
WRITE: /05 V_TOTAL COLOR COL_POSITIVE.
Comando FORMAT
NEW-PAGE

O comando NEW-PAGE inicia uma nova pgina, durante o processamento da lista.
Ele no imprime pginas em branco. Ele as ignora.
O comando incrementa o contador de pginas do sistema varivel SY-PAGNO.
Para ser executado, a opo NO STANDARD PAGE HEADING deve ser colocada no programa.


END-OF-PAGE

O comando executado sempre a rea definida para impresso na pgina acaba.


LINE-SIZE col
Cria o report com <col> colunas por linha.


LINE-COUNT n(m)
Cria o report com <n> linhas por pgina, das quais (m) linhas sero reservadas para o
processamento do comando END-OF-PAGE.


ALGUNS CAMPOS DO SISTEMA PARA CRIAO DE LISTAS

SY-PAGNO : nmero da pgina corrente.
SY-LINNO : nmero da linha corrente.
SY-COLNO : nmero da coluna em que o cursor est posicionado.
Comando NEW-PAGE / END-OF-PAGE
ALV
ALV Grid
O Alv (Abap List Viewer) Grid uma ferramenta flexvel para
exibio de relatrios ou rvore.

So disponibilizados botes que permitem ao usurio
manipular os dados (classificar, filtrar e somar).

Alm dos botes standards do sistema, possvel criar
novos botes conforme a necessidade do usurio.

Isto pode eliminar certas etapas no processo de
gerenciamento de eventos para controles .
O Abap List Viewer padroniza e simplifica o uso de listas e
relatrios no sistema R/3. O Abap List Viewer fornece
interfaces e formatos de lista padronizados para todas as
listas e relatrios.

Pode-se especificar os campos a serem exibidos no relatrio
e modificar a seqncia em que esses campos so exibidos.
Alm disso, pode-se ajustar a largura das colunas
individuais para atender a requisitos especficos.

ALV Grid
O List Viewer permite :

Usar variantes de exibio standard predefinidas pela SAP .

Ordenar os dados : crescente e decrescente.
Ordenar as linhas de acordo com os valores das
colunas, em seqncia crescente ou decrescente.

Definir um filtro.
Exibir somente os campos desejados.

Formar totais e subtotais.
Em uma lista, possvel calcular totais e
subtotais de uma ou mais colunas selecionadas.
ALV Grid
Exibio de informaes detalhadas.
Pode-se acessar informaes detalhadas de linhas
individuais da lista.

Pesquisa.
possvel pesquisar informaes especficas.

Impresso de listas e pr-visualizao.
Pode-se imprimir as listas e chamar uma pr- exibio
antes de imprimir.
ALV Grid
Exportao de dados.
Pode-se copiar as listas, por exemplo, para uma
planilha ou grav-las como arquivo local.

Deslocar colunas.


O Alv Grid formado basicamente por :
- Uma barra de ferramenta
- Um ttulo
- Uma lista de sada.
ALV Grid
Um programa ALV simples
Programa : Z_ALV_SIMPLE.


Estruturas de um programa ALV
O programa endereado no link Exemplo ALV 01.doc
contm as estruturas necessrias para se desenvolver um
programa mais abrangente e formatado.
Exerccio
1. Relatrio.

Criar um relatrio que dever buscar os documentos contbeis (BSEG) e
seus itens (BKPF), listando-os, ordenados por documento+item+data
documento.

Dever existir uma somatria por documento contbil, de todos os campos de
valor. Incluir entre os documentos uma linha de separao.

O relatrio dever conter um cabealho que identifique o ttulo do relatrio,
a hora e data de execuo, alm do usurio.

Incluir tambm indicador de pginas.

O cabealho dever ter cor diferente das demais linhas do relatrio.

J as linhas de detalhe devem se alterar entre duas cores, de mesma
tonalidade, mas de intensidades diferentes.
Exerccio
1. Dados para seleo das informaes :

BSEG (documentos contbeis)
Exerccio (GJAHR) = 2001
Tipo de documento (BLART) = AB ou SA ou SB
Data do documento (BLDAT) = mes 09 e ano 2001
Status do documento (BSTAT) = branco

Buscar os itens na tabela BKPF, pela chave.

Incluir ao final do relatrio um demonstrativo do total de registros lidos das
tabelas.

Campos a inserir no relatrio : BSEG (BUKRS, BELNR, GJAHR, BLART,
BLDAT, BKTXT, BSTAT) e BSEG (BUZEI, AUGCP, AUGBL, WRBTR,
PSWBT, PSWSL).
Exerccio
2. Transformar o relatrio do item 1, em uma relatrio ALV Grid.

Retirar os valores fixos para seleo dos dados e incluir uma tela de seleo,
com os seguintes campos : Empresa, Documento, Exerccio, Tipo documento
e Data documento.

Validar - ao menos um dos campos da tela de seleo dever estar preenchi-
do.

Incluir no cabealho, o logotipo da Softtek.

Incluir sumarizador pelos campos de valor.


On Line / Module Pool
Introduo
Online so tipos de programas que, como o prprio nome
indica, funcionam online, ou seja, instantaneamente. Por
isso, eles so dotados de uma maior capacidade de
customizao das telas e maior flexibilidade para criarem
uma interface mais amigvel com o usurio.

Eles so especialmente teis na criao de aplicaes que
necessitem de subtelas ou quando necessrio fornecer
informaes aos usurios de outra maneira que no um
relatrio. Na maioria dos casos, os programas standard
funcionam assim.
Estrutura de um Module Pool
Programa
Principal
Screen 1
Screen 2
Screen 3
GUI-01
GUI-02
Mdulos PAI tela 1
Mdulos PBO tela 1
Mdulos PAI tela 2
Mdulos PBO tela 2
Mdulos PAI tela 3
Mdulos PBO tela 3
Screen
Desenho da Tela (Definio dos Campos)
Lista de campos para tratamento de erros
Definio dos mdulos PBO e PAI relacionados com a tela

GUI Status e GUI Title
Definio dos comandos de boto e menus disponveis:
Definio do ttulo de tela
Habilitao dos comandos standards existentes
Criao de novos comandos necessrios

Evento PBO
Evento executado antes da exibio da tela para o usurio:
Definio do GUI Status e GUI Title para a tela correspondente
Seleo inicial de dados e atribuio de valores a serem exibidos na tela

Evento PAI
Evento executado aps um comando do usurio (enter, click de um boto, etc...)
Verificao do cdigo de comando executado (definido no GUI Status)
Cdigo ABAP para execuo da lgica do comando
Estrutura de um Module Pool
Desenvolvendo um Module Pool
SE80
A transao SE80 a mais adequada para se desenvolver um module pool, pois
possibilita acesso dinmico a qualquer elemento do programa, bem como as estru-
turas GUI, includes, modules e telas.
Os programas desenvolvidos pelos clientes no SAP, devem iniciar com SAPMZ.
Por exemplo, SAPMZABAP05.
A tela desenhada no Screen Painter Grfico, que possui ferramentas de fcil
utilizao.
A programao das telas feita em uma rea da prpria tela, destinada a lgica de
programao da mesma.
As sub-rotinas chamadas a partir da lgica de programao das telas, recebem o
nome de mdulo MODULE...
Os mdulos do PBO ficam armazenados em um include do prprio PBO. O mesmo
acontecendo com os mdulos do PAI.


SE80
Lista de objetos
do Module Pool
rea de
programao
No include TOP ficam definidas as variveis
globais, tabelas, estruturas. Bem como
definies de includes e tables-control.
No include O01 ficaro armazenados
os mdulos dos PBOs.
No include I01 ficaro armazenados
os mdulos dos PAIs.
O include F01 no definido aqui, ficaria responsvel por armazenar
os FORMs utilizados nos mdulos, etc
Module Pool Exemplo
Tela Lgica de Processamento
PBO
PAI
Module Pool Mais conceitos
STATUS GUI
Onde pode ser customizada as barras de menu, de botes e teclas de funo.















TITLE GUI
Onde modificado os nomes/ttulo das telas.









Screen Painter Grfico
Elementos disponveis
para a tela
rea para desenho
da tela
Propriedades de
cada objeto
A Subtela uma rea na Tela onde podemos variar os campos
conforme a necessidade, no deixando fixo os campos numa tela e no
havendo necessidade de replicar alguns campos e vrias telas.

Podemos dividir a definio da Subtela em 2 Partes:

Tela de Origem: onde definimos uma rea especfica para chamada
da Subtela.

Subtela: Tela onde sero definidos os campos da Subtela.
Subtela
Na criao da Tela em que ser feita a referncia Subtela,
criamos uma rea especfica para esta Subtela.
Boto para Criar a
rea para Subtela
rea para Subtela
Tela de Origem
Subtela
A Subtela (ou
Subscreen) definida
nas caractersticas da
Tela.

Definies de Subtela
Subtela
Tela de Origem
Na PBO (PROCESS BEFORE OUTPUT) dever existir um comando para a execuo desta
subtela, sendo:
CALL SUBSCREEN sub1 INCLUDING programa dynpronr.
SUB1 Seria o nome da rea definida para a Subtela
PROGRAMA Nome do Programa onde se encontra a Subtela. Normalmente, se refere ao
mesmo programa da Tela Normal
DYNPRONR Nmero da Subtela a ser executada
Quando este comando executado, a PBO desta Subtela executada, com todas as rotinas
definidas nela.
Na PAI (PROCESS AFTER INPUT) dever existir um comando para a execuo desta
subtela, sendo:
CALL SUBSCREEN sub1.
Onde: SUB1 Seria o nome da rea definida para a Subtela (como na PBO)
Quando este comando executado, a PAI desta subtela executada, com todas as rotinas
definidas nela.
A Subtela no tem PF-STATUS definido, utiliza-se as definies da Tela de Origem, de onde
est sendo executada a Subtela.
Subtela
Definio da Table Control
Opo para Criar
Table Control
Table Control
Definio de Campos na Table Control
Os campos devem ser includos dentro da Table Control. Se for utilizado
a opo de busca de campos do Banco de Dados ( ), includo
automaticamente o campo de Entrada de Dados e o cabealho do
Campo.
Table Control
Definio de Campos na Table Control
Pode-se tambm incluir os
campos de Entrada e Sada
de informaes na Table
Control e depois incluir um
campo texto no cabealho do
campo.
Campo de E/S
Campo Texto
Table Control
Atributos da Table Control
Nos Atributos da Table Control existem algumas
informaes que podem ser teis, conforme a
necessidade do desenho da Table Control.
Define se os campos tero
Ttulo
Define se a Table Controle
ter Ttulo
Define se a Table Control ter
Linhas Verticais e Horizontais
separando os Campos
Define se as Linhas e Colunas tero
marcador, e se sero Simples ou
Mltiplas
Table Control
Definies de Cdigo
Para utilizao de uma Table Control necessrio varivel tc1, que deve ter o
mesmo nome da Table Control desenhada na Tela. A informao 9000 se refere
ao cdigo da Tela onde est a Table Control.
CONTROLS: tc1 TYPE TABLEVIEW USING SCREEN 9000.
Na PBO deve exitir o seguinte comando:
LOOP WITH CONTROL tc1.
ENDLOOP.
No PBO, sero feitos n loopings, conforme a quantidade de linhas que teremos
da Table Control na Tela.
No PAI, este Loop faz uma leitura de todas as linhas da Table Control que
estiverem sendo exibidas na tela, tendo os campos contedo ou no.
Dentro deste Looping (tanto na PBO como na PAI) podemos incluir quantos
MODULEs forem necessrios. Lembrando que estes MODULEs sero
executados para todas as linhas da Table Control que estiverem sendo exibidas
na tela, como explicado acima.
Table Control
Definies de Cdigo
Sugere-se que estas informaes da Table Control sejam movimentadas
para uma tabela interna, j que na PBO todos os dados da Tela so
limpos para receberem os dados novamente. Ento, o que
normalmente utiliza-se criar uma Tabela Interna com o mesmo formato
da Table Control e na PAI feito um MODULE onde se grava os dados
da Tela na Tabela Interna. Na PBO, estes dados so movimentados
novamente para a Table Control.

Comandos teis:
CHAIN Verifica quando um campo alterado ou utilizado.
Table Control
Atributos da Table Control
Alguns Atributos da Table Control podem ser alteradas conforme a necessidade
do programa, sendo:
Atributo

Tipo

Tamanho

Contedo

FIXED_COLS

INT

4

Numrico indicando quantas colunas
ficaro fixas

LINES

INT

4

Define quantas Linhas teremos na
Table Control

TOP_LINE

INT

4

Define qual ser a primeira linha a
ser apresentada na Table Control

CURRENT_LIN
E

INT

4

Dentro de um Looping da Table
Control, esta informao diz qual
linha est sendo processado no
momento

H_GRID

CHAR

1

Grade Horizontal que separa campos

V_GRID

CHAR

1

Grade Vertical que separa campos

COLS





(*1)

INVISIBLE

CHAR

1

X significa que o campo est
invisvel
significa que o campo no est
invisvel

Table Control
Atributos da Table Control
(*1) O parmetro COLS uma outra estrutura que contm a definio
de alguns dados por campo da Table Control.
Para alterao destes parmetros, basta alterar o contedo dos campos,
movimentando a informaes para a Table Control-Campo (Ex.: TC1-
TOP_LINE = 5).
Mltiplos Table Control
Para cada Table Control desenhada na Tela, existir um Loop/Endloop
no PAI e PBO;
O Nome das Table Controls devem ser diferentes entre elas;
Table Control
Inibir e Exibir Campos
Para os campos da Tela, com excesso de Table Control, para inibir e exibir
campos utilizado o seguinte comando:

LOOP AT SCREEN.
SCREEN-INVISIBLE = X
ENDLOOP.

Onde X pode ser 0 para exibir e 1 para inibir.

Caso seja necessrio escolher um campo em especfico, basta fazer o filtro
atravs do campo SCREEN-NAME. Tambm podem ser utilizados os campos
SCREEN-GROUP1, SCREEN-GROUP2, SCREEN-GROUP3 e SCREEN-
GROUP4.
Table Control
Inibir e Exibir Campos
Para Table Control, caso haja necessidade de inibir uma coluna da Table Control,
o comando deve ser outro:
DATA: wa TYPE cxtab_column .
LOOP AT tc1-COLS INTO wa .
wa-INVISIBLE = X.
MODIFY tab1-COLS FROM wa .
ENDLOOP.
Onde: TC1 Nome da Table Control
WA Varivel com tipo referenciando TYPE CXTAB_COLUMN
X Se informado 0 o campo no ser inibido, se 1 o campo ser
inibido
Com esse comando, todos os campos sero inibidos pois no h nenhuma
checagem de qual campo dever ser inibido. Para escolher o campo, usar a
varivel WA-SCREEN-NAME que contm o nome do campo. Tambm podem ser
utilizados os campos WA-SCREEN-GROUP1, WA-SCREEN-GROUP2, WA-
SCREEN-GROUP3 e WA-SCREEN-GROUP4.
Table Control
Exerccio
1. Exerccio de Module Pool

Utilizar o exerccio 2 do tpico anterior (ALV). Ser um programa com duas
telas. A primeira se equivaler a tela de seleo dos dados.
Na segunda tela, acima, os campos que foram digitados na primeira travados;
abaixo, criar uma lista (table control), com os itens do documento solicitado.
Para este programa, os campos da primeira tela documento e ano, devero
ser obrigatrios.

Batch-Input

Call Transaction
Objetivos
O que Batch-Input
Como realizar uma carga atravs desta
tcnica
Call Transaction
Direct Input
Transferindo Dados Externos
Dados
Externos
SAP
INTERFACES
BANCO SAP
SAP (Host)
X
Dados
Externos
CONSISTNCIAS
BANCO SAP
Sistema Externo
(Legado)
Sesso de
BATCH INPUT
Programa
Banco de Dados
SAP
X
Nunca gravar na base direto
Arquivo Sequncial
Programa de Batch Input
Arquivo Fonte
Funo Batch Input
SAP R/3
Tabela 1 Tabela 2 Tabela 3
Telas
Arquivo
Sequncial
BANCO
SAP
Tela 1 Tela 2
Transao 1
Tela 1 Tela 2
Transao 2
Log
SAP R/3
Tabela 1 Tabela 2 Tabela 3
Sesso batch Input
Arquivo
Sequncial
Tabela
BDC
Programa de BATCH INPUT
FILA
Estrutura BDCDATA
Dicionrio
ABAP/4 READ DATASET
CALL FUNCTION
INCLUDE STRUCTURE
Seqncia para codificao
ABRIR SESSO DE BATCH INPUT
INSERIR DADOS DA TRANSAO
FECHAR SESSO DE BATCH INPUT
Codificao
OPEN DATASET <nome do arquivo>
For
OUTPUT
INPUT
APPENDING
OUTPUT - Se existir, apaga e cria um novo
INPUT - Abre apenas para leitura (default)
APPENDING - Se existir, adiciona, se no existir, cria.
OPEN DATASET <nome do arquivo>
For
OUTPUT
INPUT
APPENDING
BINARY MODE - No interfere na leitura (default)
TEXT MODE - Interfere na leitura
(preenche com brancos, por ex.)
In
BINARY MODE
TEXT MODE
BINARY MODE
TEXT MODE
ABAP /4
A
A
A
B
B
B
C
C D
A B C A B A B C D
TRANSFER
READ DATASET
ABAP /4
A
A A
B
B
B
C
C D
ABAP /4
A
A
A
B
B
B
C
C D
TRANSFER
READ DATASET
ABAP /4
A
A
A
B
B
B
C
C



A B C A B A B C D

READ DATASET <nome do arquivo> INTO <campo>
TRANSFER <campo> TO <nome do arquivo>
CLOSE DATASET <nome do arquivo>
DELETE DATASET <nome do arquivo>
DEFINIR ESTRUTURAS
ABRIR ARQUIVO
Gravar Ler
Preencher Dados
Transferir Estrutura
Mais
dados ?
Sim
FECHAR ARQUIVO
Ler os Dados
Processar os Dados
Fim do
Arquivo?
Sim
No
No
Funes Para Batch-Input
CALL FUNCTION BDC_OPEN_GROUP
EXPORTING
Client * = <Client> (Sy-Mandt)
Group * = <Nome da Sesso>
Holddate = <Data>
Keep * = Flag de Deleo
User * = <Usurio BDC> (Sy-Uname)
EXCEPTIONS
* - Parmetros Obrigatrios
* - Default = (apagar a sesso)
Programa Tela Incio Nome do Campo Valor do Campo
<Programa>
<Nmero 1>
X
<Campo 01>
<Campo 05> <Valor 05>
<Valor 01>
<Campo 11>
<Campo 02>
<Valor 11>
<Valor 02>
<Programa> <Nmero 7> X
Transao SHDB
Sntese
Anlise
Administrao
Processar
Sesso de Batch Input
Log
Sesses presas
Mostra as pastas
Mostra os dados da pasta
Log / Estatsticas
Seleciona pastas para deleo
Prende Sesso
Libera Sesso
Processa em FOREGROUND
Mostra apenas os erros
Processa em BACKGROUND
Visvel
Exibir Apenas Erro
Background
Mostra Passo a Passo a transao
Mostra apenas a transao quando der erro
No mostra nada
Funo OKCODE
Sai da transao corrente, marca como incorreta
/n
Apaga o dado corrente na transao
/bdel
Sai da transao e marca como incorreta
/bend
Muda de Display Error... para Foreground
/bda
Muda de Foreground para Display Errors...
/bde
Processada Sesso processada corretamente
Incorreto Sesso foi processada mas contm algum erro
To be Processed Sesso criada mas ainda no foi processada
Criando Sesso que est sendo gravada no momento
Processando Sesso que est sendo Processada no momento
Background Sesso que est sendo Processada em Background
REPORT Z_TESTE .

DATA: BEGIN OF BDC_TAB OCCURS 0.
INCLUDE STRUCTURE BDCDATA.
DATA: END OF BDC_TAB.

DATA: BEGIN OF REGISTRO OCCURS 0,
ID LIKE SCUSTOM-ID,
TEL LIKE SCUSTOM-TELEPHONE,
END OF REGISTRO.

Programa Modelo Batch-Input
SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE TEXT-001.

PARAMETERS: ARQUIVO(80) TYPE C
DEFAULT 'H:\TEAMSAP\ABAP\batch.txt LOWER CASE.
SELECTION-SCREEN END OF BLOCK 1.

SELECTION-SCREEN BEGIN OF BLOCK 2 WITH FRAME TITLE TEXT-002.

PARAMETERS: TP_UNIX RADIOBUTTON GROUP TP,
TP_WS RADIOBUTTON GROUP TP DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK 2.

DATA: NOME_ARQ LIKE RLGRAP-FILENAME.

Programa Modelo Batch-Input - Continuao
START-OF-SELECTION.

Nome_arq = arquivo.

IF TP_UNIX = 'X'.
PERFORM ABRE_ARQUIVO_UNIX.
ELSE.
PERFORM ABRE_ARQUIVO_WINDOWS.
ENDIF.

PERFORM OPEN_GROUP.
PERFORM PREPARA_BDC.
PERFORM FECHA_GROUP.

END-OF-SELECTION.
Programa Modelo Batch-Input - Continuao
FORM ABRE_ARQUIVO_UNIX.

OPEN DATASET NOME_ARQ FOR INPUT IN TEXT MODE.

DO.
READ DATASET NOME_ARQ INTO REGISTRO.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
APPEND REGISTRO.
ENDDO.

ENDFORM.
Programa Modelo Batch-Input - Continuao
FORM ABRE_ARQUIVO_WINDOWS.

CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = NOME_ARQ
FILETYPE = 'ASC'
TABLES
DATA_TAB = REGISTRO
EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TABLE_WIDTH = 4
INVALID_TYPE = 5
NO_BATCH = 6
UNKNOWN_ERROR = 7
GUI_REFUSE_FILETRANSFER = 8
OTHERS = 9.
Programa Modelo Batch-Input - Continuao

IF SY-SUBRC NE 0.
WRITE: / 'Erro Abrindo arquivo do Windows ', NOME_ARQ.
EXIT.
ENDIF.

ENDFORM. ABRE_ARQUIVO_WINDOWS
Programa Modelo Batch-Input - Continuao
FORM OPEN_GROUP.

CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = SAP_2'
KEEP = 'X'
USER = SY-UNAME
EXCEPTIONS
CLIENT_INVALID = 1
DESTINATION_INVALID = 2
GROUP_INVALID = 3
GROUP_IS_LOCKED = 4
HOLDDATE_INVALID = 5
INTERNAL_ERROR = 6
QUEUE_ERROR = 7
RUNNING = 8
SYSTEM_LOCK_ERROR = 9
USER_INVALID = 10
OTHERS = 11.
Programa Modelo Batch-Input - Continuao
IF SY-SUBRC NE 0.
WRITE: 'Erro no Open Group'.
EXIT.
ENDIF.

ENDFORM. OPEN_GROUP
Programa Modelo Batch-Input - Continuao
FORM PREPARA_BDC.

REFRESH BDC_TAB.

LOOP AT REGISTRO.

PERFORM PREENCHE_BDC USING:
'X' 'SAPMTFBA' '0100',
' ' 'SCUSTOM-ID' REGISTRO-ID,
' ' 'BDC_OKCODE' '/00',

'X' 'SAPMTFBA' '0200',
' ' 'SCUSTOM-TELEPHONE' REGISTRO-TEL,
' ' 'BDC_OKCODE' '=SAVE'.

PERFORM INSERT.
REFRESH BDC_TAB.
ENDLOOP.

ENDFORM.
Programa Modelo Batch-Input - Continuao
FORM PREENCHE_BDC USING DYNBEGIN NAME VALUE.

IF DYNBEGIN = 'X'.
MOVE: NAME TO BDC_TAB-PROGRAM,
VALUE TO BDC_TAB-DYNPRO,
'X' TO BDC_TAB-DYNBEGIN.
APPEND BDC_TAB.
ELSE.
MOVE: NAME TO BDC_TAB-FNAM,
VALUE TO BDC_TAB-FVAL.
APPEND BDC_TAB.
ENDIF.

CLEAR BDC_TAB.

ENDFORM.
Programa Modelo Batch-Input - Continuao
FORM INSERT.

CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'TFBA'
TABLES
DYNPROTAB = BDC_TAB
EXCEPTIONS
INTERNAL_ERROR = 1
NOT_OPEN = 2
QUEUE_ERROR = 3
TCODE_INVALID = 4
PRINTING_INVALID = 5
POSTING_INVALID = 6
OTHERS = 7.

IF SY-SUBRC NE 0.
WRITE: 'Erro no Insert'.
EXIT.
ENDIF.
ENDFORM.
Programa Modelo Batch-Input - Continuao
FORM FECHA_GROUP.

CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
NOT_OPEN = 1
QUEUE_ERROR = 2
OTHERS = 3.

IF SY-SUBRC NE 0.
WRITE: 'Erro no Open Group'.
EXIT.
ELSE.
WRITE: 'Sesso Criada'.
ENDIF.

ENDFORM.
Programa Modelo Batch-Input - Continuao
Dados
Externos
Programa
ABAP/4
Batch
Input
Direct
Input
Call
Transaction
SAP
Formas de Inserir dados no SAP R/3
Definir Estruturas Antigas
Importar Estruturas SAP
Inicializar as Estruturas do SAP
Ler os dados do Arquivo
Verificar os dados
Converter os dados
Colocar dados na estrutura do SAP
Transferir dados para arquivo sequncial
Etapas para Inserir dados no SAP R/3
Analisar dados
Criar estruturas SAP
Desenvolver programa de Transferncia
Criar Arquivo seqencial
Analisar resultados
Avaliar os Erros
Criar programa de Batch Input
Criar sesso de Batch Input
Etapas para Inserir dados no SAP R/3
Batch-Input X Call Transaction
Call Transaction <Cdigo da Transao>
USING <Tabela BDC>
MODE <Modo de Visualizao>
UPDATE <Modo de Atualizao>
MESSAGES INTO <Tabela de Mensagem>
Modo de Visualizao
A - Visualiza Tudo <default>
E - Visualiza apenas se der erro
N - No Visualiza nada
Modo de Atualizao
S - Modo Sncrono (Espera terminar)
A - Modo Assncrono <default>
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 - Nmero da Mensagem
SY-MSGV1 - Varivel de Mensagem 1
SY-MSGV2 - Varivel de Mensagem 2
SY-MSGV3 - Varivel de Mensagem 3
SY-MSGV4 - Varivel de Mensagem 4
Batch Input
Call Transaction
Cdigo de Retorno
Log de Erro
Processamento
No
No
Sim
Sim
Imediato 2 Fases
Pg. 01
REPORT Z_TESTE .

DATA: BEGIN OF BDC_TAB OCCURS 0.
INCLUDE STRUCTURE BDCDATA.
DATA: END OF BDC_TAB.

DATA: BEGIN OF MSG_TAB OCCURS 0.
INCLUDE STRUCTURE BDCMSGCOLL.
DATA: END OF MSG_TAB.

DATA: BEGIN OF REGISTRO OCCURS 0,
ID LIKE SCUSTOM-ID,
TEL LIKE SCUSTOM-TELEPHONE,
END OF REGISTRO.
Programa Modelo Call Transaction

Pg. 02
SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE TEXT-001.
PARAMETERS: ARQUIVO(80) TYPE C
DEFAULT 'H:\TEAMSAP\ABAP\batch.txt' LOWER CASE.
SELECTION-SCREEN END OF BLOCK 1.

SELECTION-SCREEN BEGIN OF BLOCK 2 WITH FRAME TITLE TEXT-002.

PARAMETERS: TP_UNIX RADIOBUTTON GROUP TP,
TP_WS RADIOBUTTON GROUP TP DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK 2.

SELECTION-SCREEN BEGIN OF BLOCK 3 WITH FRAME TITLE TEXT-003.
PARAMETERS: ALL RADIOBUTTON GROUP MODE DEFAULT 'X',
ERRO RADIOBUTTON GROUP MODE,
NADA RADIOBUTTON GROUP MODE.

SELECTION-SCREEN END OF BLOCK 3.
Programa Modelo Call Transaction Continuao

Pg. 03
DATA: NOME_ARQ LIKE RLGRAP-FILENAME,
MODO(1) TYPE C,
CONT TYPE I VALUE 0,
C_TEXTO(255) TYPE C.

START-OF-SELECTION.

NOME_ARQ = ARQUIVO.

IF ALL = 'X'.
MODO = 'A'.
ELSEIF ERRO = 'X'.
MODO = 'E'.
ELSE.
MODO = 'N'.
ENDIF.
Programa Modelo Call Transaction Continuao

Pg. 04
IF TP_UNIX = 'X'.
PERFORM ABRE_ARQUIVO_UNIX.
ELSE.
PERFORM ABRE_ARQUIVO_WINDOWS.
ENDIF.

PERFORM PREPARA_BDC.
IF CONT > 0.
PERFORM FECHA_BDC.
ENDIF.
Programa Modelo Call Transaction Continuao

Pg. 05
FORM PREPARA_BDC.
REFRESH BDC_TAB.
LOOP AT REGISTRO.
PERFORM PREENCHE_BDC USING:
'X' 'SAPMTFBA' '0100',
' ' 'SCUSTOM-ID' REGISTRO-ID,
' ' 'BDC_OKCODE' '/00',

'X' 'SAPMTFBA' '0200',
' ' 'SCUSTOM-TELEPHONE' REGISTRO-TEL,
' ' 'BDC_OKCODE' '=SAVE'.
WRITE: / REGISTRO-ID,
REGISTRO-TEL.
PERFORM INSERT.
REFRESH BDC_TAB.
ENDLOOP.
ENDFORM.
Programa Modelo Call Transaction Continuao

Pg. 06
FORM PREENCHE_BDC USING DYNBEGIN NAME VALUE.

IF DYNBEGIN = 'X'.
MOVE: NAME TO BDC_TAB-PROGRAM,
VALUE TO BDC_TAB-DYNPRO,
'X' TO BDC_TAB-DYNBEGIN.
APPEND BDC_TAB.
ELSE.
MOVE: NAME TO BDC_TAB-FNAM,
VALUE TO BDC_TAB-FVAL.
APPEND BDC_TAB.
ENDIF.
CLEAR BDC_TAB.
ENDFORM.
Programa Modelo Call Transaction Continuao

Pg. 07
FORM INSERT.
CALL TRANSACTION 'TFBA'
USING BDC_TAB
MODE MODO
UPDATE 'S'
MESSAGES INTO MSG_TAB.
IF SY-SUBRC NE 0.
CONT = CONT + 1.
PERFORM PREPARA_PASTA_ERRO.
ENDIF.
PERFORM MENSAGENS.
ENDFORM.
Programa Modelo Call Transaction Continuao

Pg. 08
FORM ABRE_ARQUIVO_UNIX.

OPEN DATASET NOME_ARQ FOR INPUT IN TEXT MODE.

DO.
READ DATASET NOME_ARQ INTO REGISTRO.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
APPEND REGISTRO.
ENDDO.

ENDFORM.
Programa Modelo Call Transaction Continuao

Pg. 09
FORM ABRE_ARQUIVO_WINDOWS.

CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = NOME_ARQ
FILETYPE = 'ASC'
TABLES
DATA_TAB = REGISTRO
EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TABLE_WIDTH = 4
INVALID_TYPE = 5
NO_BATCH = 6
UNKNOWN_ERROR = 7
GUI_REFUSE_FILETRANSFER = 8
OTHERS = 9.
Programa Modelo Call Transaction Continuao

Pg.10
IF SY-SUBRC NE 0.
WRITE: / 'Erro Abrindo arquivo do Windows ', NOME_ARQ.
EXIT.
ENDIF.

ENDFORM.
Programa Modelo Call Transaction Continuao

Pg.11
FORM MENSAGENS.

LOOP AT MSG_TAB.

SELECT SINGLE TEXT INTO C_TEXTO FROM T100
WHERE SPRSL = 'PT'
AND ARBGB = MSG_TAB-MSGID
AND MSGNR = MSG_TAB-MSGNR.

IF MSG_TAB-MSGV1 NE SPACE.
REPLACE '&1' WITH MSG_TAB-MSGV1 INTO C_TEXTO.
IF SY-SUBRC NE 0.
REPLACE '&' WITH MSG_TAB-MSGV1 INTO C_TEXTO.
ENDIF.
CONDENSE C_TEXTO.
ENDIF.
Programa Modelo Call Transaction Continuao

Pg.12
IF MSG_TAB-MSGV2 NE SPACE.
REPLACE '&2' WITH MSG_TAB-MSGV2 INTO C_TEXTO.
IF SY-SUBRC NE 0.
REPLACE '&' WITH MSG_TAB-MSGV2 INTO C_TEXTO.
ENDIF.
CONDENSE C_TEXTO.
ENDIF.
IF MSG_TAB-MSGV3 NE SPACE.
REPLACE '&3' WITH MSG_TAB-MSGV3 INTO C_TEXTO.
IF SY-SUBRC NE 0.
REPLACE '&' WITH MSG_TAB-MSGV3 INTO C_TEXTO.
ENDIF.
CONDENSE C_TEXTO.
ENDIF.
Programa Modelo Call Transaction Continuao

Pg.13
IF MSG_TAB-MSGV4 NE SPACE.
REPLACE '&4' WITH MSG_TAB-MSGV4 INTO C_TEXTO.
IF SY-SUBRC NE 0.
REPLACE '&' WITH MSG_TAB-MSGV4 INTO C_TEXTO.
ENDIF.
CONDENSE C_TEXTO.
ENDIF.
CONCATENATE MSG_TAB-MSGTYP ' - ' C_TEXTO INTO C_TEXTO.
WRITE: C_TEXTO.

ENDLOOP.
REFRESH MSG_TAB.

ENDFORM.
Programa Modelo Call Transaction Continuao

Pg.14
FORM PREPARA_PASTA_ERRO.

IF CONT = 1.
PERFORM ABRE_BDC.
PERFORM INSERT_BDC.
ELSE.
PERFORM INSERT_BDC.
ENDIF.

ENDFORM.
Programa Modelo Call Transaction Continuao

Pg.15
FORM ABRE_BDC.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = 'ERROS'
KEEP = 'X'
USER = SY-UNAME
EXCEPTIONS
CLIENT_INVALID = 1
DESTINATION_INVALID = 2
GROUP_INVALID = 3
GROUP_IS_LOCKED = 4
HOLDDATE_INVALID = 5
INTERNAL_ERROR = 6
QUEUE_ERROR = 7
RUNNING = 8
SYSTEM_LOCK_ERROR = 9
USER_INVALID = 10
OTHERS = 11.
Programa Modelo Call Transaction Continuao

Pg.15
FORM ABRE_BDC.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = 'ERROS'
KEEP = 'X'
USER = SY-UNAME
EXCEPTIONS
CLIENT_INVALID = 1
DESTINATION_INVALID = 2
GROUP_INVALID = 3
GROUP_IS_LOCKED = 4
HOLDDATE_INVALID = 5
INTERNAL_ERROR = 6
QUEUE_ERROR = 7
RUNNING = 8
SYSTEM_LOCK_ERROR = 9
USER_INVALID = 10
OTHERS = 11.
Programa Modelo Call Transaction Continuao

Pg.16
IF SY-SUBRC NE 0.
WRITE: 'Erro no Open Group'.
EXIT.
ENDIF.

ENDFORM.
Programa Modelo Call Transaction Continuao

Pg.17
FORM INSERT_BDC.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'TFBA'
TABLES
DYNPROTAB = BDC_TAB
EXCEPTIONS
INTERNAL_ERROR = 1
NOT_OPEN = 2
QUEUE_ERROR = 3
TCODE_INVALID = 4
PRINTING_INVALID = 5
POSTING_INVALID = 6
OTHERS = 7.
IF SY-SUBRC NE 0.
WRITE: 'Erro no Insert'.
EXIT.
ENDIF.
ENDFORM.
Programa Modelo Call Transaction Continuao

Pg.18
FORM FECHA_BDC.

CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
NOT_OPEN = 1
QUEUE_ERROR = 2
OTHERS = 3.

IF SY-SUBRC NE 0.
WRITE: 'Erro no Open Group'.
EXIT.
ENDIF.
ENDFORM.
Programa Modelo Call Transaction Continuao
Exerccio
1) Batch-Input

a) Criar um programa que faa o batch input dos dados obrigatrios no
cadastro de fornecedores: Transao FK01.

b) Permitir como parmetro que o usurio informe se o arquivo vem do servidor
ou local.


2) Call Transaction

a) Permitir como parmetro que o usurio informe se deseja executar a pasta
automaticamente. Exibir as Mensagens do Processo, quebrando por
Fornecedor.
SAPScript
O que Sapscript ?
O SAPSCRIPT a ferramenta do SAP para criao de
formulrios mais elaborados. A opo pela utilizao desta ferramenta se
d pela necessidade de alguns recursos grficos que no podem ser
obtidos atravs de cdigo de ABAP comum. Com o SAPSCRIP possvel
criar um formulrio com logotipo, letras formatadas de vrios tamanhos,
criao de grades, cdigo de barras, etc.
Apesar de ser uma ferramenta poderosa na gerao de formulrios, o
SAPscript ainda apresenta uma srie de limitaes, o seu verificador de
erros e debug no possuem as mesmas caractersticas do editor ABAP.
Caso, seja digitado um comando com grafia errada ou sem sentido lgico
dentro de um formulrio, no ser detectado pelo mesmo e poder no
ser executado, passando as vezes despercebido pelo programador.
Para que o SAPSCRIPT funcione necessrio que um trabalho em
conjunto com um programa ABAP que dever conter algumas funes de
chamada e controle do SCRIPT.
Sapscript

Deficincias da Ferramenta

-Debug

-Checar erro de sintaxe

-Client Dependent

-Criar logotipos (.tif objeto no transportvel)
Sapscript
JANELA DE
PGINAS
PGINAS
JANELAS E ELEMENTOS DE
TEXTO
CARACTERES DE
COMANDO
PARGRAFOS
<H> </>
P
Partes de um Formulrio
Sapscript
Sapscript
Sapscript
ESTRUTURA FORMULRIO
Cabealho
Informaes gerais do formulrio, ttulo, a classe de desenvolvimento e os
idiomas.
Pargrafos
So elementos que podem ser criados e apresentam informaes dos textos
de uma determinada janela.
Caracter de Seleo
So informaes semelhantes s do pargrafo, no que diz respeito a
formatao de textos, no entanto podem ser aplicados a trechos de textos e
no necessariamente a linhas inteiras do formulrio.
Pginas
So os elementos responsveis pelo agrupamento das janelas durante
certos momentos do relatrio.
Sapscript
ESTRUTURA FORMULRIO
Elementos de Texto
Corresponde lgica de processamento e comportamento de uma janela
durante a execuo do formulrio.
* Pargrafo Padro
= Linha longa
( Linha Bruta
/ Avano de Linha
/ = Avano de Linha e Linha Longa
/( Avano de Linha e Linha Bruta
/: Linha de Comando
/* Linha de Comentrio
/E Elemento de Texto
Sapscript
ESTRUTURA FORMULRIO
Janelas
Podem ser criadas sem limites e tem por finalidade dividir por espao as
regies de um formulrio para operaes independentes.

MAIN
Somente permitido um tipo de janela MAIN por formulrio, e a nica
janela obrigatria em uma pgina.
VAR
Esse tipo de janela deve ser utilizado quando se pretende trabalhar com
textos que variam.
CONST
Nesse tipo de janela so includo objetos e textos que permanecem os
mesmos durante todo o relatrio, independente do nmero de pginas.
Sapscript
CONDIES
NO EXISTENTES
NO SAPSCRIPT
CN (Contains Not only)
CO (Contains Only)
CA (Contains Any)
NA (Contains Not Any)
CS (Contains String)
NS (Contains No String)
CP (Contains Pattern)
NP (contains No Pattner)
Sapscript
CONDIES
EXISTENTES
NO SAPSCRIPT
= EQ (Igual)
< LT (Menor que)
> GT (Maior que)
<= LE (Menor ou igual a)
>= GE (Maior ou igual a)
<> NE (Diferente)
NOT (No)
AND (E)
OR (Ou)
SIMBOLOS UTILIZADOS

DATE: Data
DAY: Dia
NAME_OF_DAY: Nome do Dia
MONTH: Ms
NAME_OF_MOUNTH: Nome do Ms
YEAR: Ano
TIME: Hora Total
HOURS: Hora Atual
MINUTES: Minuto Atual
SECONDS: Segundo Atual
PAGE: Nmero da Pagina
NEXTPAGE: Nmero da nova pgina
SPACE: Espao
ULINE: Linha Horizontal
VLINE: Linha Vertical
Sapscript
COMANDOS
ADDRESS
BOTTOM
BOX
CASE
DEFINE
HEX
IF
INCLUDE
NEW-PAGE
NEW-WINDOW
PERFORM
POSITION

PRINT-CONTROL
PROTECT
RESET
SET COUNTRY
SET DATE MASK
SET SIGN
SET TIME MASK
SIZE
STYLE
SUMMING
TOP

Sapscript
Estrutura de Chamada e Controle do SAPSCRIPT
CALL FUNCTION OPEN_FORM
CALL FUNCTION START_FORM
CALL FUNCTION WRITE_FORM
CALL FUNCTION END_FORM
CALL FUNCTION CLOSE_FORM
Sapscript
PROGRAMA DE POVOAMENTO DE SAPSCRIPT

Controla impresso formulrio atravs de:

- Seleo e Processamento dos Dados
- Abertura
- Inicializao
- Envio dados para formulrio
- Finalizao
- Fechamento
Sapscript
ABERTURA
A abertura de um formulrio gera automaticamente a inicializao de um
formulrio.

FUNO:
Call function OPEN_FORM

PARMETROS ESSNCIAIS:
DEVICE
FORM
LANGUAGE

Sapscript
- TDCOPIES (Nmero de Cpias)
- TDDEST (Dispositivo de Sada)
- TDPREVIEW (Print Preview)
- TDIMMED (Sada Imediata)

call function 'OPEN_FORM'
exporting
* APPLICATION = 'TX'
* ARCHIVE_INDEX = ' '
* ARCHIVE_PARAMS = ' '
DEVICE = 'PRINTER' ou 'SCREEN'
* DIALOG = 'X' ou '' (Tela de caractersticas de impresso)
FORM = 'Z_SCRIPT' (Nome do Formulrio)
LANGUAGE = 'P' (Idioma do Formulrio)
* OPTIONS = ITCPO (Estrutura com todas as caractersticas)
* importing
* language =
* new_archive_params =
* result =
exceptions
canceled = 1
device = 2
form = 3
options = 4
unclosed = 5
others = 6.
Sapscript OPEN_FORM
INICIALIZAO
Permite a gerao de vrios formulrios diferentes, como se estivesse abrindo
um novo formulrio para cada situao.

FUNO:
Call function START_FORM

PARMETROS ESSNCIAIS:
FORM
LANGUAGE

Sapscript
Este comando no obrigatrio e pode no ser utilizado caso no haja necessidade da quebra e criao de vrios
formulrios para uma s seleo de dados.
A funo muito similar funo OPEN_FORM, e novamente os parmetros mais importantes so o nome (FORM)
e o idioma (LANGUAGE) do formulrio.
Para que se possa utilizar um comando START_FORM obrigatrio que um comando de OPEN_FORM tenha sido
executado. Caso isso no seja feito um erro de sintaxe ir aparecer.

call function 'START_FORM'
exporting
* ARCHIVE_INDEX = ' '
FORM = ' '
LANGUAGE = ' '
* STARTPAGE = ' '
* PROGRAM = ' '
* importing
* language =
exceptions
form = 1
format = 2
unended = 3
unopened = 4
unused = 5
others = 6.
Sapscript START_FORM
ENVIO DADOS AO FORMULRIO
Depois da seleo e processamento dos dados, envia-se os dados ao
formulrio.

FUNO:
Call function WRITE_FORM

PARMETROS ESSNCIAIS:
ELEMENT
WINDOW

Sapscript
Um ponto importante que deve ser observado que no possvel utilizar tabelas internas e variveis do programa
para a impresso dos dados no SAPSRIPT. Portanto, se algum dado que deva ser impresso estiver numa tabela
interna ou varivel, este deve ser copiado para uma estrutura para que possa ser enviado ao SAPSCRIPT.
A impresso dos dados nas janelas na maioria das vezes feita simultaneamente com a seleo dos dados, ou seja, a
medida que os dados so selecionados, so enviados imediatamente para o formulrio.

O comando para impresso dos dados a seguinte funo:

call function 'WRITE_FORM'
exporting
ELEMENT = ' '
* FUNCTION = 'SET'
* TYPE = 'BODY'
WINDOW = 'MAIN'
* importing
* pending_lines =
exceptions
element = 1
function = 2
type = 3
unopened = 4
unstarted = 5
window = 6
others = 7.
Sapscript WRITE_FORM
Dois parmetros so os mais importantes:

Element Determina qual Data Element ser utilizado dentro do Sapscript
Window Janela na qual os dados devem ser impressos.

Neste ponto fica evidente a diferenciao entre os tipos de janela MAIN e demais janelas.
Para as janelas do tipo MAIN, cada comando de escrita (write_form) significa uma nova linha no formulrio e o
valor a ser impresso o valor que o campo armazena no momento do comando de impresso.
Por exemplo, digamos que o campo MARA-MATNR tenha o valor 1234 e que um comando de impresso seja
dado para a janela MAIN que ir imprimir este campo. Logo em seguida uma nova seleo da tabela MARA feita e o
campo MATNR agora vale 5678. Se uma nova impresso na janela MAIN for executada o resultado ser o seguinte:

1234
5678

J as janelas que no forem do tipo MAIN imprimem os dados uma nica vez, no final da impresso do formulrio
ou na quebra de pgina, com os valores armazenados nos campos no momento do encerramento ou no momento da
quebra, e no no momento da escrita (write_form), ou seja, se no exemplo anterior fosse utilizada uma janela no-main,
o resultado final seria somente 5678.
Na realidade, a utilizao de um comando WRITE_FORM numa janela no-main utilizada para a escolha de
qual elemento de texto ser utilizado para a impresso dos dados.
Exemplo: Uma janela HEADER no-main contm dois elementos de texto chamados FRASE1 e FRASE2 da
seguinte forma:
/E FRASE1
&MARA-MATNR& Teste de Frase 1
/E FRASE2
&MARA-MATNR& Teste de Frase 2
Sapscript WRITE_FORM
Se um comando WRITE_FORM for executado para a janela HEADER utilizando o elemento de texto FRASE1,

call function 'WRITE_FORM'
exporting
ELEMENT = 'FRASE1'
* FUNCTION = 'SET'
* TYPE = 'BODY'
WINDOW = 'HEADER

estar sendo indicado ao programa que, ao se encerrar o formulrio, deve ser impresso o elemento de texto
FRASE1 para a janela HEADER (somente um elemento de texto utilizado para cada janela no-main).
No caso do exemplo, se o campo MATNR for igual a 1234 no encerramento do formulrio, seria impressa a
seguinte frase:

Teste de Frase 1

O elemento de texto a ser impresso ser sempre o ltimo a ser selecionado antes do final ou da quebra de
pgina.
Se nenhum for selecionado, ao encerrar o formulrio ou mudar de pgina sero impressos os dados que no
pertenam a nenhum elemento de texto. Portanto no caso de um campo que deva ser impresso sempre em
todas
as pginas, como numero de pgina por exemplo, basta coloc-lo fora de qualquer elemento de texto e no
selecionar nenhum elemento de texto para a janela que, automaticamente, este dado ser impresso em todas as
pginas.
Sapscript WRITE_FORM
FINALIZAO FORMULRIO

FUNO:
Call function END_FORM

FECHAMENTO FORMULRIO

FUNO:
Call function CLOSE_FORM
Sapscript
END FORM - Serve para finalizar um formulrio.

call function 'END_FORM'
importing
RESULT = ' '
exceptions
unopened = 1
others = 2.




CLOSE FORM - Serve para fechar um formulrio.

call function 'CLOSE_FORM'
importing
RESULT = ' '
Tables
* OTFDATA =
exceptions
unopened = 1
others = 2.
Sapscript END_FORM/CLOSE_FORM
INFORMAES TEIS
Transao SE71
Tabela TTXFP
Programa RSTXSCRP (download / upload)
Programa RSTXLDMC (tipo .TIF)
Programa RSTXPDFT4 (download .PDF quando gerar na sp01)

DICAS
* Nunca esquecer de ativar o formulrio no idioma original, caso contrrio
ficar bloqueado as modificaes nos outros idiomas.
* Visualizao x Impresso mesma mquina (impressora / basis SPAD)
* Visualizao distinta em computadores distintos (verso Sapgui)
* No deletar janelas e elementos de textos
Sapscript
Exerccio
1) SAPScript
Nome do formulrio : Z_FORM## Nome do programa : Z_STK##_SCRIPT
Crie um formulrio com o layout :

















Para imprimir o logotipo, use o programa RSTXLDMC que converte imagens.
Os dados devem ser extrados das tabelas : EKPO (Item do pedido).
EKKO (Cabealho do pedido).
LFA1 (Dados Mestre de Fornecedor)
Exits
Definio

Exist so pontos em locais pr-definidos pela SAP, onde o cliente pode
incluir cdigos prprios, por alguma necessidade especfica.


Tipos de exit :

User-Exit

Field-Exit

Menu-Exit


A chamada de uma exit no cdigo Abap, se assemelha a chamada de um
mdulo de funes qualquer. Sintase : call customer-function .
Exits
Exits
User-Exit

A criao de user-exit acontece pela transao CMOD/SMOD.
O primeiro passo saber se existe uma user-exit, que se possa alterar.
Isto pode ser feito, procurando-se no cdigo Abap uma chamada de um
mdulo de funo customiz-vel

call customer-function

ou, atravs da execuo de um programa Abap que varre outros
programas buscando user-exits


As ampliaes SAP so agrupadas em projetos de ampliao sob um nome de projeto. O projeto de ampliao consiste
em pelo menos uma ampliao SAP:
As ampliaes SAP que esto no mesmo projeto de ampliao so sempre ativadas e desativadas em conjunto.
As ampliaes SAP foram criadas pela SAP e, de forma, geral, so constitudas por vrios componentes (por exemplo,
por uma rea de tela e pelos exits de funo para a transferncia de dados).
Destas ampliaes SAP, o cliente seleciona aquelas que pretende processar, reune as mesmas em projetos de
ampliao, processa os componentes e ativa os projetos.
Exits CMOD / User-Exit
Projeto :
Caractersticas Gerais
Ampliaes do projeto.
Exits CMOD / User-Exit
Ampliaes e suas
exit relacionadas.
Mdulo de funo que guarda o
include da exit. Onde
codificada a exit.
Exits CMOD / User-Exit
O inlcude onde fica codificado
as customizaes da exit.
Exits CMOD / User-Exit
Field-Exit

O Field-Exit se diferencia do user-exit, pois no existe uma entrada no meio
do cdigo fonte Abap onde este customizado. Ele existe atrelado a um
campo/elemento de dados, alm de ser necessrio amarra-l a um
programa e uma tela, especficos.

Para se criar um Field-Exit, ou mesmo, saber se o elemento possibilita uma
exit, utilizamos a execuo do programa RSMODPRF.

Onde este, lista todos os Field-Exits j criados e nos d a opo de criao
de outros.
Exits
Exits Field-Exit
Programa para busca/manuteno
de field-exist.
Exits Field-Exit
Field-Exits existentes
e seus status.
Quando se opta pela criao
de novo field-exit, ele solicita
qual o campo que se deseja
customizar.
Exits Field-Exit
Field-exit Criar/Modificar

Requisitos:
a) nome do programa Standard onde se encontra o campo onde se quer colocar codificao
b) nmero da tela
c) nome do elemento de dados do campo

Transao CMOD

1) Rodar o programa RSMODPRF, opo criar.
2) Fornecer nome do elemento de dados
Na tela de Function Builder:
3) Escolher um grupo de funces(customizado) de acordo com o mdulo
4) Gravar o novo mdulo de funo (somente tela Adminstracao) e voltar (tela do passo 2)
5) Flegar linha do elemento de dados
6) No menu: Atribuir prog/tela
7) Fornecer nome do programa e tela standard
8) Flegar linha do elemento de dados
9) No menu: Processar MF
10) Codificar ABAP

Obs.: Se um campo com field-exit codificado por alguma razo aparecer inibido, este field-exit no ser
executado.
Uso de SET/GET: se o campo da tela contiver um field-exit com SET, este SET ser limpo da memria se
em
telas posteriores existir o mesmo elemento de dados com o campo aberto.
Field-Exit no funcionam em campos check-box ou radio-buttom.
SE09 Organizao de transporte (Utilizado para controlar as requests).
SE11 Dicionrio ABAP (Utilizado para criar, alterar e apagar domnios, elemento de dados, campos, tabelas,
estrutura).
SE16 Data browser
SE37 Mdulos de funo ABAP. (Utilizado para criar, alterar e apagar funes (Mdulos de funes).
SE38 Editor de programas ABAP. (Utilizada para criar, alterar e apagar programas ABAP).
SE39 Editor de tela dividida
SE71 Formulrio SAPscript. (Utilizado para criar, alterar e apadar formulrios de SapScript).
SE80 Repository Browser. (Utilizado para criar, alterar e apagar, Programas (On-Line ou Module Pool),
grupos de funo, etc.).
SE91 Atualizao de mensagem
SE92 Mensagens do Log do sistema
SE93 Cdigos de transao (Utilizado para criar, alterar e apagar transaes).
SM04 Visualiza e derruba sesses
SM12 Exibir e eliminar bloqueios (Utilizado para desbloquear programas, transaes, etc.).
SM35 Moritorar pasta de Batch-Input.
SM37 Monitora os jobs colocados para processamento
ST05 Possui vrias funes, a mais utilizada e para realizar o trace SQL.(Mostra todos acessos realizados no BD).
ST22 ABAP anlise dump.
SHDB Registrador transao - batch input. (Utilizado para criar o mapeamento para posteriormente criar os
programas para gerar a pasta de batch input.).
CMOD Gerenciamento de projetos (Exits)
SMOD Definio de ampliaes (Exits)
SMARTFORMS Formulrio SmartForm
Algumas Transaes teis
www.softtek.com.br
Click to edit Master title style
239 239 239
239
F I M

Você também pode gostar