Upload
vanessa-dias
View
273
Download
3
Embed Size (px)
Citation preview
7/25/2019 Apostila ABAP Advanced
1/177
SAP ABAP
Advanced
7/25/2019 Apostila ABAP Advanced
2/177
7/25/2019 Apostila ABAP Advanced
3/177
TRAINNING EDUCATION SERVICES
ABAP ACADEMY
Mdulo ABAP Advanced 40 horas
www.trainning.com.br
1
Curso Avanado de ABAPLinguagem ABAP & Ferramentas
2
7/25/2019 Apostila ABAP Advanced
4/177
Tpicos
Classe de Desenvolvimento - 4 Requests - 5 Dicionrio de Dados - 111 Criao de Tabela - 152 ABAP Editor - 193 ABAP Report - 198 Construo de Programa - 221
Tela de Seleo - 227 Mdulo Pool - 277 Bacth Input - 316 Call Transactions - 347
3
Classe de Desenvolvimento
As classes de desenvolvimento so importantes
para o transporte entre sistemas de produo edesenvolvimento.
Todos os objetos pertencentes aodesenvolvimento so combinados em uma classede desenvolvimento, o qual atribudo em umarequest.
Todos os objetos associados classe dedesenvolvimento $TMP so locais e no sotransportados
4
7/25/2019 Apostila ABAP Advanced
5/177
Change Request - Tipos
Geralmente o sistema SAP definido em trsambientes: Desenvolvimento, Qualidade eProduo.
Para transportar os objetos de um repositrio de umambiente para outro, utilizado as Change Requests
H seis tipos de Change Requests: Customizing
Workbench Transporte de cpias Relocao objetos s/mudana de pacote Relocao objetos c/mudana de pacote Relocao de um pacote completo
5
Change Requests - Tipos
Customizing So reservadas para transportar contedo de tabelas
do tipo customizing. Essas tabelas contminformaes de configurao dos mdulosfuncionais (FI, MM, SD etc.) ou configuraes dosistema.
Workbench
So utilizadas para transportar objetos dorepositrio tais como programas, objetos dodicionrio de dados tais como tabelas e vises
6
7/25/2019 Apostila ABAP Advanced
6/177
Change Requests - Tipos
Transporte de cpias Esse tipo de request pode ser utilizada para
transportar objetos a um sistema SAP especfico. Os objetos so transportados com as verses que
possuem no sistema atual. Os objetos do sistema de origem no so alterados.
7
Change Requests - Tipos
Relocao objetos sem mudana de pacotes Esse tipo de request pode ser utilizada para o
desenvolvimento de objetos em outro sistema SAPem uma base temporria.
Esse tipo de request oferece as mesmasfuncionalidades do tipo de request de trasnporte decpias, ou seja, possvel mover os objetos de um
sistema para o outro. Ex.: O desenvolvimento pode ser realizado em um
ambiente separado, o qual no ir interferir noprocesso de desenvolvimento.
8
7/25/2019 Apostila ABAP Advanced
7/177
Change Requests - Tipos
Relocao objetos com mudana de pacotes Esse tipo de request pode ser utilizada para o
desenvolvimento de objetos em outro sistema SAPem uma base permanente.
Permite a alterao a localidade original dos objetospara o sistema de destino e alterar os pacotes dos
objetos ao mesmo tempo. O pacote alterado automaticamente. Quando um
pacote selecionado, os objetos adquirem o direitode transporte imediatamente aps a importao nosistema de destino da request.
9
Change Requests - Tipos
Relocao de um pacote completo Esse tipo de request utilizada quando o pacote
completo de um ambiente de desenvolvimento para ser modificado permanentemente.
Permite alterar a camada de transporte do pacoteautomaticamente.
Para isso s especificar o pacote e a camada de
transporte onde o pacote dever ser atribudo. A listade objetos da request configuradaautomaticamente e contm todos os objetos dopacote.
10
7/25/2019 Apostila ABAP Advanced
8/177
Change Requests
As change requests possuem uma ou maistarefas
As tarefas podem ser atribudas a diferentesusurios
As tarefas contm os objetos que sero
transportados entre os sistemasAs transaes de change requests so: SE01,SE09 e SE10
11
Change Requests - CriaoAs requests podem ser criadas atravs das
transaes SE01, SE09 ou SE10.
1
2
3
12
7/25/2019 Apostila ABAP Advanced
9/177
Change Requests - CriaoAs requests podem ser criadas no momento da
criao de um objeto
1
2
13
Change Requests
Request
Proprietrio
Descrio
Tarefas
Objeto
AmbienteProjeto
14
7/25/2019 Apostila ABAP Advanced
10/177
Debug
15
Debug O debug uma ferramenta que permite a
execuo do programa linha a linha, permitindoassim visualizar os dados conforme o programa executado.
H dois modos de ativar o debug: Atravs do comando /H, no campo de comando.
16
7/25/2019 Apostila ABAP Advanced
11/177
Debug Atravs dos botes Definir/Eliminar ponto de parada
externo e Definir/Eliminar ponto de parada de sesso. necessrio entrar no cdigo do programa, inserir o ponto de parada
na linha desejada e executar o programa.
17
Debug - Funcionalidades1. Ponteiro2. Caixa de Variveis3. Boto para alterar o valor
da varivel
4. Exibir instruo atual5. Etapa Individual (F5)6. Executar rotina *(F6)7. Retornar da Rotina (F7)8.Avanar at o cursor (F8)
1
2
3
45
6 7 8
18
7/25/2019 Apostila ABAP Advanced
12/177
ABAP Tipos de Dados & Declaraes
19
Tpicos
Tipos de Dados Declarao dos tipos de dados
Variveis Constantes Tipos de dados elementares Estruturas
Tabelas internas Campos de sistema
20
7/25/2019 Apostila ABAP Advanced
13/177
Tipos de DadosA tabela abaixo mostra os tipos ABAP pr-
definidos:Tipo Tamanho Tamanho padro Descriob 1 Byte Inteiro de 1 byte (interno)
c 1 a 65,535 caracteres 1 caracteres Campo texto
cursor Igual ao i Igual ao i Cursor de banco de dados
d 8 caracteres Campo data
f 8 bytes Nmero de ponto flutuante
i 4 bytes Inteiro de 4 bytes
n 1 a 65,535 characters 1 caracteres Texto numrico
p 1 a 16 bytes 8 bytes Nmero packed
string Varivel String de textos 2 bytes Inteiro de 2 bytes (internal)
t 6 caracteres Campo de tempo
x 1 a 65,535 bytes 1 byte Campo de byte
xstring Varivel String de byte
21
Tipos de DadosA tabela abaixo apresenta os valores permitidos
e os valores iniciaisTipo Valores Valor Inicial
b De 0 a 255 0c Qualquer caractere alfanumrico " " para cada posio
d 8 caracteres alfanumricos definidos pelo usurio; Somente valores noformato AAAAMMDD, os quais so permitidos como entrada de data deacordo com as regras de calendrio: AAAA(ano): 0001 a 9999, MM(ms): 01 a12, DD(dia): 01 a 31
"00000000"
f Os pontos de nmero flutuante so apresentados internamente com 16 casasdecimais de acordo com o padro IEEE-754 (dupla preciso). Os valorespermitidos so -1,7976931348623157EE+308 a -2,2250738585072014EE-308para a rea negativa, o valor zero, e +2,2250738585072014EE-308 a+1,7976931348623157EE+308 para a rea positiva. A validade de ambas asreas so estendidas na direo do zero atravs de nmeros "denormalized"
depois do IEEE-754.
0
i -2.147.483.648 to +2.147.483.647 0
n Qualquer caractere alfanumrico, entretanto, os valores vlidos so somenteos dgitos de 0 a 9.
"0" para cada posio
22
7/25/2019 Apostila ABAP Advanced
14/177
Tipos de Dados - ContinuaoTipo Valores Valor Inicial
p O tamanho vlido para os nmeros "packed" est entre 1 e 16 bytes; duascasas decimais so embaladas em um byte, onde o ltimo byte contm
somente uma posio e o sinal de positivo e negativo. Depois doseparador de decimal, at 14 casas decimais so permitidas. Dependendodo tamanho do campo len e do nmero de casas decimais dec, aplica-seas seguintes reas de valores: (-10^(2len -1) +1) / (10^(+dec)) a (+10^(2len-1) -1) /(10^(+dec)) em passos de 10^(-dec). Valores dentro desseintervalo so arredondados.
0
string igual ao tipo c string vazia de tamanho 0s -32.768 to +32.767 0t 6 caracteres alfanumricos definidos pelo usurio; o nico valor vlido so
os nmeros que so interpretados como especificao de tempo nas 24horas do formato do relgio HHMMSS. A SAP recomenda a utilizarexclusivamente 00 a 23 para HH(horas) e 00 a 59 para MM (minutos) e 00
a 59 para SS (segundos).
"000000"
x Caracteres hexadecimais 0-9, A-F hexadecimal 0xstring Igual ao tipo x string vazia de tamanho 0
23
Declarao de tipos de dados
O comando DATA utilizado para declarar as
variveis, estruturas e tabelas internas. O comando CONSTANTS declara as constantes
do programa O comando TYPES permite criar tipos de dados
elementares, tipos de referncia e tipos detabela, o qual ser utilizado como referncia
para variveis, estruturas e tabelas O comando TABLE cria uma work-area databela definida
24
7/25/2019 Apostila ABAP Advanced
15/177
VariveisA declarao das variveis se d atravs da
sintaxe:DATA { {var [ ( l en) ] TYPE abap_t ype [ DECI MALS dec] }
| {var TYPE abap_t ype [ LENGTH l en] [ DECI MALS dec] } }[ VALUE val | {I S I NI TI AL}][ READ- ONLY] .
Exempl o:DATA v_char 1( 10) TYPE c. Ti po char com10 posi esDATA v_i nt 1 TYPE i . Ti po i nt ei r o
DATA v_dec1 TYPE p DECI MALS 2. Ti po compact ado com 2 casas deci mai sDATA v_char 2( 2) TYPE c VALUE ST . Ti po char com 2 posi es e val orpadro ST
25
Tipos de dados elementares
O comando TYPES define um tipo de dado
independente ou um tipo de dados estruturado. Qualquer tipo de dados independente definido
com a adio TYPE e um tipo de dados ou com aadio LIKE e o objeto de dados.
possvel criar tipo de dados elementares, tipos dereferncia, tipos estruturados e tipos de tabelas.
Para o tipo de dados estruturado, utiliza-se o blocode comandos BEGIN OF e END OF
junto com o comando TYPES.26
7/25/2019 Apostila ABAP Advanced
16/177
Contruo de tipos de dados Tipo de dados elementares
TYPES: t ext 1 TYPE c LENGHT 10,
t ext 2 TYPE c LENGHT 15.
DATA: v_msg TYPE t ext 1, Var i velv_coment TYPE t ext 2. Var i vel
Tipos estruturadosTYPES: BEGI N OF t y_mar a,
mat nr TYPE mar a- mat nr ,mt ar t TYPE mar a- mt ar t ,zei nr TYPE mar a- zei nr ,
END OF t y_mar a.
DATA: wa_mar a TYPE t y_mar a. Wor k- ar ea
27
Tipos de dados elementares
Tipo de tabelasTYPES spf l i _sor t TYPE SORTED TABLE OF spf l i
WI TH UNI QUE KEY car r i d conni d.
DATA: t i _spf l i TYPE spf l i _sor t . Cr i ao de t abel ai nt er na
28
7/25/2019 Apostila ABAP Advanced
17/177
Constantes
O comando CONSTANTS cria um objeto do tipoconstante, ou seja, um objeto que no pode ter ovalor alterado.
Exemplo:CONSTANTS: c_mt ar t TYPE mar a- mt ar t VALUE FERT .
CONSTANTS: BEGI N OF sap_ag,zi p_code TYPE n LENGTH 5 VALUE ' 69189' ,ci t y TYPE st r i ng VALUE `Wal l dor f `,count r y TYPE st r i ng VALUE `Ger many`,
END OF sap_ag.
29
Estrutura
A estrutura pode ser criada de trs formas: Referncia a uma tabela transparente Referncia a uma estrutura do dicionrio de dados Referenciado a um tipo de dados local
A estrutura criada atravs do comando DATA
30
7/25/2019 Apostila ABAP Advanced
18/177
Estrutura Criao de estrutura
Declarado com o tipo de uma tabelatransparente ou estrutura do dicionrio dedados
Exemplo1: Criao da estrutura (work-area) wa_mara com os componentes da tabelatransparente MARA.
DATA wa_mar a LI KE mara. OuDATA wa_mara TYPE mara.
Exemplo2: Criao da estrutura (work-area) wa_return com os componentes da estrutura dodicionrios de dados BAPIRET2.
DATA wa_r et ur n LI KE BAPI RET2. OuDATA wa_r et ur n TYPE BAPI RET2.
31
Estrutura Criao de estrutura
Declarado com o tipo de dados localTYPES: BEGI N OF t y_mar a,
mat nr TYPE mar a- matnr ,mt ar t TYPE mar a- mt ar t ,zei nr TYPE mara-zei nr ,
END OF t y_mar a
Exempl o: Cr i ao da est r ut ura WA_MARA com r ef ernci a ao t i po de dadosTY_MARA.
DATA: wa_mara TYPE t y_mara.
32
7/25/2019 Apostila ABAP Advanced
19/177
Estrutura Criao de estrutura
Declarao com o comando DATAExempl o: Cr i ao da est r utura WA_MARA com os component es MATNR, MTART
e ZEI NR da t abel a t r ansparent e MARA.
DATA: BEGI N OF wa_mar a,mat nr TYPE mar a- matnr ,mt ar t TYPE mar a- mt ar t ,zei nr LI KE mara- zei nr ,
END OF wa_mar a
33
Tabela Interna
A tabela interna fornece um meio de armazenardados de uma estrutura fixa e armazen-la emmemria.
Os dados so armazenados linha por linha namemria e cada linha tem a mesma estrutura.
No ABAP, as tabelas internas substituem asfuncionalidades de arrays.
O tipo de dados de uma tabela interna definido
pelo tipo de linha, chave e tipo de tabela interna.
34
7/25/2019 Apostila ABAP Advanced
20/177
Tabela Interna Tipo de Linha
O tipo de linha de uma tabela interna pode ser de
qualquer tipo, sendo que normalmente umaestrutura. Cada componente da estrutura uma coluna na
tabela interna. O tipo de linha pode ser elementar ou outra
tabela interna.
35
Tabela Interna Chave
A chave identifica a coluna da tabela H dois tipos de chaves:
Chave standard Chave definido pelo usurio
A chave a ser especifica pode ser UNIQUE ouNON-UNIQUE
Tabelas internas com chaves nicas, no podemter registros duplicados com a mesma chave. A
univocidade ir depender do mtodo de acesso tabela.
36
7/25/2019 Apostila ABAP Advanced
21/177
Tabela Interna Tipo de Tabela
O tipo de tabela define como o ABAP ir acessar
os registros individuais da tabela. Existem trs tipos de tabelas internas: Standard table Sorted table Hashed table
37
Tabela Interna Standard table
A standard table possui um ndice linear interno. O sistema pode acessar os registros pelo ndice da
tabela ou pela chave. O tempo de resposta de acesso atravs da chave proporcional ao nmero de entradas na tabela
A chave da tabela standard no nica e nopode ser especificada uma chave nica
Os registros so inseridos rapidamente pois no
necessrio verificar a existncia do registro
38
7/25/2019 Apostila ABAP Advanced
22/177
Tabela Interna Sorted table
Os registros da sorted table so sempre inseridosde forma ordenada.
Possuem ndice interno. O acesso aos registros podem ser efetuados pelo
ndice ou pela chave. O tempo de resposta pela chave logariticamente
proporcional ao nmero de entradas na tabela,devido procura binria.
As chaves a serem utilizadas podem ser nicas ouno nicas e devem ser especificadas nadeclarao da tabela interna.
39
Tabela Interna Hashed table
As hashed tables no possuem ndice linear. Os registros da tabela s podem ser acessados
atravs de chaves. O tempo de resposta de acesso tabela independeda quantidade de registros e constante, pois osistema utiliza um algortmo hash.
A chave de acesso deve ser nico.Ao definir a tabela deve ser especificado o
parmetro UNIQUE.
40
7/25/2019 Apostila ABAP Advanced
23/177
Tabela interna Header Line
Header line uma work-area utilizada quando atabela interna processada.
A work-area est vinculada tabela interna e declarada com o parmetro WITH HEADERLINE.
Exemplo:DATA: t i _mara TYPE mara OCCURS 0 WI TH HEADER LI NE.
READ TABLE t i _mara WI TH KEY mat nr = SCE002 .
MATNR MTART ZEINRSCE002 VERP 234545
8D08 FERT 122212
SCE001 FERT 534213
SCE002 VERP 234545
7D5F HALB 112221
41
Criao de tabelas internas
Standard tableDATA: BEGI N OF t i _mar a OCCURS 0,
mat nr TYPE mar a- mat nr ,mt ar t TYPE mara- mt art ,zei nr TYPE mar a- zei nr ,
END OF t i _mar a.
DATA: t i _mara TYPE t y_mara OCCURS 0 WI TH HEADER LI NE.
DATA: t i _mar a TYPE TABLE OF t y_mar a.
DATA: t i _mara TYPE mar a OCCURS 0 WI TH HEADER LI NE.
42
7/25/2019 Apostila ABAP Advanced
24/177
Criao de tabelas internas
Sorted tableTYPES: BEGI N OF t y_mar a OCCURS 0,
mat nr TYPE mar a- mat nr ,mt ar t TYPE mara- mt art ,zei nr TYPE mar a- zei nr ,
END OF t y_mar a.
DATA: t i _mar a TYPE SORTED TABLE OF t y_mar a WI TH NON- UNI QUE KEY
mat nr .
43
Criao de tabelas internas
Hashed tableTYPES: BEGI N OF t y_mar a OCCURS 0,
mat nr TYPE mar a- mat nr ,mt ar t TYPE mara- mt art ,zei nr TYPE mar a- zei nr ,
END OF t y_mar a.
DATA: t i _mara TYPE HASHED TABLE OF t y_mara WI TH UNI QUE KEYmat nr .
44
7/25/2019 Apostila ABAP Advanced
25/177
Campos de sistema -SYST
Os campos de sistema ABAP esto sempredisponveis nos programas ABAP.
O sistema em tempo de execuo preenche oscampos de acordo com o contexto.
Podem ser utilizados nos programas para obter o
status do sistema. Os campos de sistema so variveis, mas devemser tratados como constantes, pois ao alteraralgum valor, o fluxo do sistema pode ser alterado
45
Campos de sistema - SYST
Os campos de sistema esto definidos naestrutura do dicionrio de dados SYST e nosprogramas esto disponveis na estrutura SY.
Exemplos de campos de sistema: SY-MANDT Retorna o mandante do logon SY-SUBRC Cdigo de retorno dos comandos
ABAP SY-TABIX ndice da linha (tabela interna) SY-BATCH Executa o programa em background
46
7/25/2019 Apostila ABAP Advanced
26/177
Campos de sistema - SYST
Os campos de sistema esto definidos na estrutura dodicionrio de dados SYST e nos programas esto disponveisna estrutura SY.
Exemplos: SY-MANDT Retorna o mandante do logon SY-SUBRC Cdigo de retorno dos comandos ABAP SY-TABIX ndice da linha (tabela interna) SY-BATCH Executa o programa em background SY-TCODE Cdigo da transao atual SY-UNAME Nome do usurio SY-DATUM Data atual do sistema SY-UZEIT Hora atual do sistema SY-UCOMM Cdigo de funo que acionou o PAI
47
Campos de sistema - SYSTCampo Descrio
INDEX Contador de loopsPAGNO Pgina da lista atualTABIX ndice de tabelas internasTFILL Nmero de linhas de tabelas internasDBCNT Entradas de tabela de banco de dados processadasFDPOS Ocorrncia em cadeia de bytes ou caracteresCOLNO Coluna atual na lista
LINCT Comprimento das pginas da listaLINNO Linha atual na listaLINSZ Largura da linha da listaPAGCT Campo do sistema obsoletoMACOL N de colunas na margem esquerda de uma lista de impressoMAROW N de colunas na margem superior de uma lista de impressoTLENG Comprimento das linhas de uma tabela internaLILLI Linha da lista selecionadaSUBRC Cdigo de retorno de instrues ABAPCUCOL Posio do cursor horizontal em PAICUROW Posio do cursor vertical no PAILSIND ndice da lista de ramificaoLISTI ndice da lista exibidaSTEPL ndice da linha step loop atualSROWS Telas, nmero de linhasSCOLS Telas, nmero de colunasLOOPC Linhas visveis de um step loopTZONE Data e hora, diferena de horas para hora de referncia UTC
Campo DescrioDAYST Flag de horrio de veroFDAYW Calendrio de fbrica-dia da semanaLANGU Cdigo de idioma do ambiente de texto atualMODNO ndice do modo externoBATCH Programa corre em backgroundBINPT O programa corre em batch inputCALLD Programa ABAP, modo de chamada do programa ABAP
DYNNR N da tela atualDYNGR Grupo de telas da tela atualWTITL Marcao para cabealho da pgina standardCPAGE N da pgina atual de uma listaDBNAM Banco de dados lgico de um programa executvelMANDT Identificao do mandante do usurio atualPEXPI Perodo de reteno spool (parmetro de impresso)PRINI Campo do sistema internoPRIMM Sada imediata (parmetro de impresso)PRREL Eliminar aps sada (parmetro de impresso)PRBIG Falso-rosto da seleo (parmetro de impresso)PRNEW Nova ordem spool (parmetro de impresso)PDEST Dispositivo de sada (parmetro de impresso)PLIST Nome da ordem spool (parmetro de impresso)PRDSN Nome do spool fileCALLR Local de incio de impresso da listaRTITL Ttulo do progr.a imprimir (parmetro de impresso)PRREC Destinatrio (parmetro de impresso)PRTXT Texto para falso-rosto (parmetro de impresso)PRABT Departamento no falso-rosto (parmetro de impresso)
48
7/25/2019 Apostila ABAP Advanced
27/177
Campos de sistema - SYSTCampo Descrio
PAART Preparao para impresso (parmetro de impresso)PRCOP Nmero de expresses (parmetro de impresso)DBSYS Sistema de banco de dados centralSYSID Nome do sistema SAP
OPSYS Sistema operacional do servidor de aplicaoPFKEY Status GUI atualSAPRL Release do sistema da SAPTCODE Cdigo de transao atualUCOMM Cdigo de funo que acionou o PAISPONO N spool na sada de listagemDATUM Data atual do servidor de aplicaoSLSET Variante utilizadaUZEIT Hora atual do servidor de aplicaoUNAME Nome do usurioLSTAT Campo do sistema obsoletoABCDE Alfabeto latinoTITLE Contedo da linha de ttulo
ENTRY Campo do sistema internoLISEL Contedo de uma linha da lista selecionadaULINE Trao horizontalCPROG Programa de chamadaLDBPG Programa de banco de dados de um banco de dados lgicoTVAR0 Varivel txt.p/caractere preenchimento em ttulos da listaTVAR1 Varivel txt.p/caractere preenchimento em ttulos da listaTVAR2 Varivel txt.p/caractere preenchimento em ttulos da listaTVAR3 Varivel txt.p/caractere preenchimento em ttulos da lista
Campo Descrio
TVAR4 Varivel txt.p/caractere preenchimento em ttulos da lista
TVAR5 Varivel txt.p/caractere preenchimento em ttulos da lista
TVAR6 Varivel txt.p/caractere preenchimento em ttulos da lista
TVAR7 Varivel txt.p/caractere preenchimento em ttulos da lista
TVAR8 Varivel txt.p/caractere preenchimento em ttulos da lista
TVAR9 Varivel txt.p/caractere preenchimento em ttulos da lista
MSGID Classe de mensagem
MSGTY Tipo de mensagem
MSGNO N mensagem
MSGV1 Varivel mensagens
MSGV2 Varivel mensagens
MSGV3 Varivel mensagens
MSGV4 Varivel mensagens
VLINE Trao vertical
STACO Primeira coluna de listas exibida
STARO Linha superior exibida
DATAR Marcao para entrada em um campo de tela
HOST Nome do servidor de aplicao atual
DATLO Data local do usurio atual
TIMLO Hora local do usurio atual
ZONLO Fuso horrio do usurio atual
49
Linguagem ABAP
50
7/25/2019 Apostila ABAP Advanced
28/177
Operadores Lgicos
Operadores simplesI gual EQ =Di f er ent e NE >Mai or ou i gual a GE >=Menor que LTMenor ou i gual a LEI nt er val o de val or es BETWEEN val 1 AND val 2
i ni ci al I S I NI CI ALNOT val 1 {oper ador }
51
Operadores Lgicos
Operadores para stringCONTAI NS ONLY st r1 CO st r2CONTAI NS NOT ONLY st r 1 CN st r 2CONTAI NS ANY st r 1 CA st r 2CONTAI NS NOT ANY st r 1 NA st r 2CONTAI NS STRI NG st r 1 CS st r 2CONTAI NS NO STRI NG st r 1 NS st r 2COVERS PATTERN st r 1 CP st r 2NOT PATTERN st r 1 NP st r 2
52
7/25/2019 Apostila ABAP Advanced
29/177
Instrues de Controle
Condio IF-ELSE-ENDIFI F condi o.
BLOCO 1ELSE. ELSEI F condi o.
BLOCO 2ENDI F.
Condio CASECASE var i vel .
WHEN val or 1.BLOCO 1
WHEN val or 2.BLOCO 2
WHEN OTHERS.BLOCO n
ENDCASE.
53
Instrues de Controle LoopsDO n TI MES.
BLOCOENDDO.
DO.I F condi o.
EXI T.ENDI F.BLOCO.
ENDDO.
WHI LE condi o.BLOCO.
ENDWHI LE.
CHECK condi o.
CONTI NUE.
54
7/25/2019 Apostila ABAP Advanced
30/177
Open SQL
55
Acesso ao Banco de Dados
O R/3 independente do sistema de banco dedados apesar das diferenas de sintaxes dosvrios banco de dados.
Cada work-process no servidor de aplicao temuma interface de banco de dados.
A interface do banco de dados converte todas as
requisies do banco de dados do R/3 para oscomandos SQL do banco de dados.
56
7/25/2019 Apostila ABAP Advanced
31/177
Acesso ao Banco de Dados
H dois mtodos de acesso ao banco de dadosatravs dos programas ABAP: Open SQL
As declaraes Open SQL so subconjuntos dopadro SQL que totalmente integrado ao ABAP.Eles permitem acessar os dados independentemente
do sistema de banco de dados que o R/3 estejautilizando. Eles permitem ler os dados (Select) ealterar os dados (INSERT, UPDATE, DELETE)
SQL Nativo
57
Acesso ao Banco de Dados
SQL Nativo O SQL Nativo vagamente integrado ao ABAP e
permite o acesso a todas as funes contidos nainterface de programao do respectivo sistema de
base de dados. Ao contrrio do Open SQL, no SQL Nativo, as
declaraes no so verificadas e convertidas. Elasso enviadas diretamente para o sistema de banco dedados.
58
7/25/2019 Apostila ABAP Advanced
32/177
Open SQL O Open SQL tem os seguintes comandos:
Comando FunoSELECT Seleciona os dados das tabelas do banco de dados
INSERT Adiciona registros em uma tabela do banco de dadosUPDATE Altera o contedo de um registro da tabela do banco de dados
MODIFYInsere um novo registro ou altera o contedo de um registroexistente
DELETE Exclui registros da tabela do banco de dados
OPEN CURSOR,FETCH,
CLOSE CURSOR
L os registros de uma tabela do banco de dados utilizando o cursor
59
Open SQL
Cdigo de Retorno Todos os comandos do Open SQL retornam os
valores para os seguintes campos de sistema: SY-SUBRC
Aps cada comando SQL, o campo de sistema SY-SUBRC recebe o valor 0 se a operao foi realizada comsucesso, caso contrrio, o valor retornado ser diferentede 0.
SY-DBCNT Aps a execuo do comando SQL, o campo do sistema
SY-DBCNT contm o nmero dos registrosprocessados.
60
7/25/2019 Apostila ABAP Advanced
33/177
Open SQL - SELECT
O SELECT o comando utilizado para ler osregistros das tabelas do banco de dados.
A sintaxe do comando SELECT :
SELECT INTO
FROM [ WHERE ][GROUP BY ][ HAVING ][ ORDER BY ]
61
Open SQL - SELECT
SELECT A clusula select define a estrutura dos dados a
serem lidos, ou seja, um ou vrios registros, oscampos e se registros idnticos sero aceitos ouno.
Exemplo:SELECT SI NGLE mat nr mt ar t aur t FROM . . .SELECT DI STI NCT mat nr mt art FROM . . .
62
7/25/2019 Apostila ABAP Advanced
34/177
Open SQL - SELECT
Os dados tambm podem ser agregados por umacoluna da tabela, atravs das seguintes expresses: MAX: retorna o valor mximo da coluna MIN: retorna o valor mnimo da coluna AVG: retorna o valor mdio da coluna COUNT: conta os valores ou linhas:
COUNT ( DISTINCT ): retorna o nmero dediferentes valores das colunas
COUNT(*): retorna o nmero total de registros daseleo
Exemplo:SELECT MAX( AUART ) FROM. . .
63
Open SQL - SELECT
INTO A clusula INTO define a rea de destino nos
quais o resultado do select transferido. Os valores podem ser transferidos para variveis,
work-areas e tabelas internas, desde que asvariveis de destino sejam compatveis ouconvertidos com os dados selecionados.
64
7/25/2019 Apostila ABAP Advanced
35/177
Open SQL - SELECTInserir em variveisDATA: v_mat nr TYPE mar a- mat nr ,
v_auar t TYPE mar a- auart ,
v_menge TYPE mara- menge.
SELECT matnr auart menge FROM maraI NTO ( v_mara, v_auart , v_menge) . . .
Inserir em work-areaDATA: BEGI N OF wa_mar a,
v_mat nr TYPE mar a- mat nr ,v_auart TYPE mara-auart ,v_menge TYPE mara- menge.
END OF wa_mar a.
SELECT matnr auart menge FROM maraI NTO wa_mar a
Inserir em work-area baseado em tabela
DATA: wa_mar a TYPE mar a.
SELECT matnr auart menge FROM maraI NTO CORRESPONDI NG FI ELDS OF wa_mar a
Inserir em tabela internaDATA: BEGI N OF wa_mar a OCCURS 0,
v_mat nr TYPE mar a- mat nr ,v_auart TYPE mara- auart ,v_menge TYPE mara- menge.
END OF wa_mar a.
SELECT matnr auart menge FROM mara
I NTO TABLE t i _mar a
Inserir em tabela interna baseado em tabela
DATA: wa_mar a TYPE mar a OCCURS 0.
SELECT matnr auart menge FROM maraI NTO CORRESPONDI NG FI ELDS OF TABLE t i _mar a
65
OPEN SQL - SELECT
FROM A clusula FROM especifica a tabela em que os
dados especificados na clusula select sero lidos. As vises de banco de dados tambm pode ser
utilizadas na clusula FROM Podem ser especificados uma tabelas ou mais de
uma tabela, com o uso das clusulas INNER JOIN
ou OUTER JOIN. Select de uma tabelaSELECT matnr auart menge FROM mara ...
66
7/25/2019 Apostila ABAP Advanced
36/177
Open SQL - SELECT
Select em mais de uma tabelaSELECT . . .. . .FROM [ I NNER] J OI N [ AS ] ON
Exemplo:
SELECT m~mat nr t ~makt xFROM mara as m I NNER J OI N makt as tON m~mat nr = t ~mat nr
I NTO wa_mat _descWHERE m~mat nr = 08D8
AND t ~spr as = SY- LANGU.
67
Open SQL - SELECT
Restringir o nmero de registros Para restringir o nmero absoluto de registros
includos na seleo, use a clusula abaixo:
SELECT . . . FROM UP TO ROWS
Onde um valor inteiro positivo e o sistema l
o mximo de registros.
68
7/25/2019 Apostila ABAP Advanced
37/177
Open SQL - SELECTWHERE
A clusula WHERE restringe o nmero de registrosselecionados especificando as condies que devemser atingidas.
SELECT . . .FROM . . .I NTO . . .WHERE campo1 = 8076 AND
campo2 I N ( RTY , ERP , MMP ) OR Li st a de val or escampo3 BETWEEN 001 AND 100 AND I nter val os de val or escampo 4 LI KE ( ABC%) AND St r i ng de compar aocampo 5 I S NULL
69
Open SQL Select
WHERE - Condio tabular
A clusula where tem uma variante especial que permite derivaras condies das linhas e colunas de uma tabela interna:SELECT . . . FOR ALL ENTRI ES I N WHERE
Ao especificar um campo da tabela interna como um operandoem uma condio, todas as linhas da tabela interna so lidas. Acomparao ento executada para cada linha da tabela interna.Para cada registro, o sistema seleciona os registros do banco dedados que satisfaam a seleo.
As linha duplicadas so automaticamente eliminadas doresultado.
Se a tabela interna estiver vazia, todas as entradas da tabela dobanco de dados so lida.
70
7/25/2019 Apostila ABAP Advanced
38/177
Open SQL - Insert
O comando INSERT adiciona registro(s) natabela interna
Os registros podem ser adicionadosindividualmente ou coletivamente
Inserindo um nico registro:I NSERT I NTO VALUES OU
I NSERT FROM .
O contedo da work-area so adicionados tabelado banco de dados . A work-area deve ter amesma estrutura da tabela do banco de dados.
71
Open SQL - Insert
Inserindo vrios registros:I NSERT FROM TABLE [ ACCEPTI NG DUPLI CATE KEYS]
O contedo da tabela interna adicionadona tabela do banco de dados em umanica operao. A tabela interna deve ser do mesmotipo da tabela do banco de dados.
Se a tabela possuir campos chaves duplicados, umerro de execuo apresentado. Se o parmetro
ACCEPTING DUPLICATE KEYS for utilizado, no apresentado o erro de execuo, mas o campo desistema SY-SUBRC receber o valor 4.
72
7/25/2019 Apostila ABAP Advanced
39/177
Open SQL - Insert
ExemploInsere um registro individual na tabela SPFLI:
TABLES SPFLI .DATA WA TYPE SPFLI .WA- CARRI D = ' LH' .WA- CI TYFROM = ' WASHI NGTON' .. . .I NSERT I NTO SPFLI VALUES WA.
WA- CARRI D = ' UA' .WA- CI TYFROM = ' LONDON' .. . .I NSERT SPFLI FROM WA.
73
Open SQL - Insert
Exemplo
Insere vrios registros na tabela SPFLI:
DATA: I TAB TYPE HASHED TABLE OF SPFLIWI TH UNI QUE KEY CARRI D CONNI D,WA LI KE LI NE OF I TAB.WA- CARRI D = ' UA' . WA- CONNI D = ' 0011' . WA- CI TYFROM = . . .I NSERT WA I NTO TABLE I TAB.WA- CARRI D = ' LH' . WA- CONNI D = ' 1245' . WA- CI TYFROM = . . .I NSERT WA I NTO TABLE I TAB.WA- CARRI D = ' AA' . WA- CONNI D = ' 4574' . WA- CI TYFROM = . . .I NSERT WA I NTO TABLE I TAB.. . .I NSERT SPFLI FROM TABLE I TAB ACCEPTI NG DUPLI CATE KEYS.
74
7/25/2019 Apostila ABAP Advanced
40/177
Open SQL Update
O comando UPDATE utilizado para alterar ocontedo da tabela do banco de dados Modificando registros individuais
Para modificar os registros individualmente de umatabela do banco de dados atravs de uma work-area,utilize o seguinte comando:
UPDATE FROM
Se a tabela do banco de dados conter um registro coma mesma chave, o registro atualizado. Caso contrrio,o registro no alterado e o SY-SUBRC recebe o valor4.
75
Open SQL Update
Modificando vrios registros Para modificar vrios registros de uma tabela do
banco de dados, o comando :UPDATE FROM TABLE
Se o sistema no puder modificar um registrodevido a no existncia de um registro com chave
especificada, o processo no finalizado, mas oprocessamento continua no prximo registro.
76
7/25/2019 Apostila ABAP Advanced
41/177
Open Sql - Update
Modificando os registros coluna por coluna Para modificar determinada colunas na tabela do
banco de dados, utilize o comando:UPDATE SET . . . WHERE .
A condio WHERE determina as linhas que seroalteradas. Se a clusula WHERE no for especificada,
todos os registros so atualizados. A expresso o parmetro que determina as colunas que seroatualizadas:
= , sendo que pode ser um objeto dedados ou uma coluna da tabela do banco de dados.
77
Open SQL - Update
Exemplo de UpdateAtualiza o contedo da coluna PLANETYPE com A310 e diminui o valor dacoluna PRICE por 100 para cada entrada na tabela SFLIGHT onde CARRIDseja LH e CONNID 0402.UPDATE SFLI GHT SET PLANETYPE = ' A310'
PRI CE = PRI CE - ' 100. 00'WHERE CARRI D = ' LH' AND CONNI D = ' 0402' .
Os campos CARRID e CONNID so os campos chaves da tabela SPLFI. Todosos registros que tiverem como chave os valores AA e 0064, seroatualizados.
DATA WA TYPE SPFLI .
MOVE ' AA' TO WA- CARRI D.MOVE ' 0064' TO WA- CONNI D.MOVE ' WASHI NGTON' TO WA- CI TYFROM.. . .UPDATE SPFLI FROM WA.
78
7/25/2019 Apostila ABAP Advanced
42/177
Open SQL - Delete
O comando DELETE utilizado para excluir osregistros da tabela do banco de dados.
Para excluir as linhas utilizando condiesutilize a seguinte sintaxe:
DELETE FROM WHERE
Todas as linhas que atenderem a condio sero
removidas. Se uma tabela interna vazia for especificada na
clusula where, todos os registros da tabela dobanco de dados sero removidos.
79
Open SQL - Delete
Ao invs de utilizar a clusula WHERE, possvel selecionar os registros para exclusoutilizando o contedo de uma work-area.
DELETE FROM .
Isto exclui o registro com a mesma chave primriada work-area.
80
7/25/2019 Apostila ABAP Advanced
43/177
Open SQL - Delete
Tambm possvel excluir vrias linhascoletivamente utilizando uma tabela interna.
DELETE FROM TABLE
Esta sintaxe exclui todos os registros da tabela dobanco de dados que possuem as mesmas chavesprimrias da tabela interna.
Se o sistema no puder excluir um registro, pois achave especificada no existe, a operao no cancelada, mas o processo continua a partir doprximo registro.
81
Open SQL - Delete
Exemplo de DeleteTodas os registros da tabela SFLIGHT so excludos onde PLANETYPE tenha ovalor A310 e CARRID tenha o valor LH.
DELETE FROM SFLI GHT WHERE PLANETYPE = ' A310' AND CARRI D = ' LH' .
Os campos CARRID e CONNID so campos chave da tabela SPFLI. Os registroscom as chaves primrias AA e 0064 so excludas.TABLES SPFLI .
DATA: BEGI N OF WA,CARRI D TYPE SPFLI - CARRI D,CONNI D TYPE SPFLI - CONNI D,
END OF WA.
MOVE ' AA' TO WA- CARRI D.MOVE ' 0064' TO WA- CONNI D.DELETE SPFLI FROM WA.
82
7/25/2019 Apostila ABAP Advanced
44/177
Open SQL - DeleteUma tabela interna hashed definida com a estrutura das chaves primrias databela SPFLI. Depois do preenchimento da tabela interna, os registros databela do banco de dados sero excludos de acordo com os valores das chaves
internas da tabela interna.DATA: BEGI N OF WA,CARRI D TYPE SPFLI - CARRI D,CONNI D TYPE SPFLI - CONNI D,END OF WA,I TAB LI KE HASHED TABLE OF WAWI TH UNI QUE KEY CARRI D CONNI D.
WA- CARRI D = ' UA' . WA- CONNI D = ' 0011' .I NSERT WA I NTO TABLE I TAB.WA- CARRI D = ' LH' . WA- CONNI D = ' 1245' .
I NSERT WA I NTO TABLE I TAB.WA- CARRI D = ' AA' . WA- CONNI D = ' 4574' .I NSERT WA I NTO TABLE I TAB.. . .DELETE SPFLI FROM TABLE I TAB.
83
Open SQL Consideraes
Os comandos INSERT, UPDATE e DELETE
trabalham com work-area e tabela interna. As work-areas e tabelas internas devem ter a mesma
estrutura da tabela do banco de dados que sermanipulada.
Se a operao foi realizada com sucesso, o valor docampo de sistema SY-SUBRC ser 0, caso contrrio
ser 4. O campo de sistema SY-DBCNT ir conter o nmero
de registros afetados durante a operao.84
7/25/2019 Apostila ABAP Advanced
45/177
Operaes em Tabela Interna
85
Tabela Interna
A tabela interna utilizada para armazenar umou mais registros em memria e pode seracessado e manipulado de forma similar a umatabela de banco de dados.
Os dados da tabela interna podem ser inseridos,removidos, modificados, ordenados,comparados e lidos.
O comando SELECT no pode ser utilizado paraobter os registros de tabela interna.
86
7/25/2019 Apostila ABAP Advanced
46/177
Tabela Interna - Inicializar
Como qualquer objeto de dados, a tabela internapode ser inicializada atravs dos comandos: CLEAR
Este comando restaura a tabela interna ao estado ao qualestava imediatamente aps a declarao. Isto significaque a tabela no contm linhas. Entretanto a memriautilizada pela tabela interna continua alocada.
Se a tabela interna possuir cabealho, a tabela ecabealho possuem o mesmo nome e para apagar ocontedo da tabela, necessrio utilizar as chaves ([])aps o nome da tabela interna, caso contrrio, somente ocontedo cabealho ser apagado.
87
Tabela Interna - Inicializar
O comando REFRESH realiza o mesmo
procedimento do comando CLEAR[], ou seja,reinicializa a tabela interna e mantm a memriautilizada pela tabela interna alocada.
O comando FREE reinicializa a tabela interna elibera a memria alocada.
88
7/25/2019 Apostila ABAP Advanced
47/177
Tabela Interna - Inicializar
Exemplo:
DATA: BEGI N OF LI NE,COL1,COL2,
END OF LI NE.
DATA I TAB LI KE LI NE OCCURS 0 WI TH HEADER LI NE.
CLEAR I TAB. Li mpa o cabeal ho da t abel a i nt er naCLEAR I TAB[ ] . Li mpa o cont edo da tabel a i nt er naREFRESH I TAB. Li mpa o cont edo da t abel a i nt er naFREE I TAB. Li mpa o cont edo da t abel a i nt er na
89
Tabela Interna - Comparao
As tabelas internas podem ser comparadas.. . . . . .
O operador a ser utilizado pode ser os operadoresABAP (EQ, =, NE, , >=, LE, ,LT,
7/25/2019 Apostila ABAP Advanced
48/177
Tabela Interna - Comparao
Se o componente for outra tabela interna, elesso comparados recursivamente.
Se a tabela interna estiver sendo comparadadiferente da equalidade, a comparao finalizada quando o primeiro par decomponentes forem diferentes e retorna oresultado correspondente.
91
Tabela Interna - Comparao Exemplo
DATA: BEGI N OF LI NE,COL1 TYPE I ,COL2 TYPE I ,
END OF LI NE.
DATA: I TAB LI KE TABLE OF LI NE,J TAB LI KE TABLE OF LI NE.
DO 3 TI MES.LI NE- COL1 = SY- I NDEX.LI NE- COL2 = SY- I NDEX ** 2.APPEND LI NE TO I TAB.
ENDDO.
MOVE I TAB TO J TAB.
LI NE- COL1 = 10. LI NE- COL2 = 20.APPEND LI NE TO I TAB.
I F I TAB GT J TAB.WRI TE / ' I TAB GT J TAB' .
ENDI F.
APPEND LI NE TO J TAB.
I F I TAB EQ J TAB.
WRI TE / ' I TAB EQ J TAB' .
ENDI F.
LI NE- COL1 = 30. LI NE- COL2 = 80.
APPEND LI NE TO I TAB.
I F J TAB LE I TAB.
WRI TE / ' J TAB LE I TAB' .
ENDI F.
LI NE- COL1 = 50. LI NE- COL2 = 60.
APPEND LI NE TO J TAB.
I F I TAB NE J TAB.
WRI TE / ' I TAB NE J TAB' .
ENDI F.
I F I TAB LT J TAB.
WRI TE / ' I TAB LT J TAB' .
ENDI F.
92
7/25/2019 Apostila ABAP Advanced
49/177
Tabela Interna - Ordenao
As tabelas standard ou hashed podem serordenadas.
O comando para ordernao :SORT [ ASCENDI NG| DESCENDI NG] [ AS TEXT] .
O comando ordena a tabela interna em ordemascedente pela sua chave.
A direo da ordem pode ser especificada atravs dasopes ASCENDING e DESCENDING, sendo que aprimeira opo a padro.
Quanto maior a tabela, maior ser o tempo paraorden-la.
93
Tabela Interna - Ordenao
A tabela interna pode ser ordenada pelo
componente desejado atravs do comando abaixo:
SORT [ ASCENDI NG| DESCENDI NG] [ AS TEXT]BY [ ASCENDI NG| DESCENDI NG] [ AS TEXT]
. . . [ ASCENDI NG| DESCENDI NG] [ AS TEXT] .
A tabela interna ordenada pelos componentes ... , ao invs da chave da tabela. Onmero de campos a serem ordenados estlimitado a 250.
94
7/25/2019 Apostila ABAP Advanced
50/177
Tabela Interna - Ordenao
Ordenao Alfabtica Bem como as opes ASCENDING e
DESCENDING, tambm pode ser especificado queos campos a serem ordenados devem serordenados alfabeticamente, o qual afeta o mtodode ordenao em strings.
95
Tabela Interna Determinar Atributos
Para determinar os atributos de uma tabela interna
em tempo de execuo que no estava disponvelestaticamente, utilize o comando:
DESCRI BE TABLE [ LI NES ] [ OCCURS ] [ KI ND ] .
O uso do parmetro LINES retorna o nmero delinhas preenchidas na varivel .
O uso do parmetro OCCURS, retorna o tamanhoinicial da tabela interna para a varivel . O uso do parmetro KIND, retorna o tipo de tabela
interna para a varivel , onde96
7/25/2019 Apostila ABAP Advanced
51/177
Tabela Interna Determinar Atributos
O uso do parmetro KIND, retorna o tipo detabela interna para a varivel , onde: T = Tabela standard S = Tabela sorted H = Tabela hashed
97
Tabela Interna Determinar AtributosExemplo:
DATA: BEGI N OF LI NE,COL1 TYPE I ,
COL2 TYPE I ,END OF LI NE.
DATA I TAB LI KE HASHED TABLE OF LI NEWI TH UNI QUE KEY COL1 I NI TI AL SI ZE 10.
DATA: LI N TYPE I ,I NI TYPE I ,KND TYPE C.
DESCRI BE TABLE I TAB LI NES LI N OCCURS I NI KI ND KND.WRI TE: / LI N, I NI , KND.
Sada0 10 H
98
7/25/2019 Apostila ABAP Advanced
52/177
Tabela Interna Determinar AtributosExemplo:
DO 1000 TI MES.LI NE- COL1 = SY- I NDEX.LI NE- COL2 = SY- I NDEX ** 2.I NSERT LI NE I NTO TABLE I TAB.
ENDDO.
DESCRI BE TABLE I TAB LI NES LI N OCCURS I NI KI NDKND.
WRI TE: / LI N, I NI , KND.
Sada1000 10 H
99
Tabela Interna Inserir linha individual
Para inserir uma linha na tabela interna, asintaxe :
I NSERT TO .
pode ser uma work-area ou a expressoINITIAL LINE.
A work area deve ser compatvel com a tabela
interna e a expresso INITIAL LINE insere umregistro em branco na tabela interna.
100
7/25/2019 Apostila ABAP Advanced
53/177
Tabela Interna Inserir linha individual
Regras Em uma tabela interna standard, a linha inserida
no final da tabela interna Em uma tabela sorted, a linha inserida de acordo
com a chave da tabela. Se a chave no nica, oregistro duplicado inserido acima da entrada
existente com a mesma chave. Em uma tabela hashed, a linha inserida de
acordo com a chave da tabela.
101
Tabela Interna Inserir vrias linhas
Para inserir vrias linhas na tabela interna, a
sintaxe :I NSERT LI NES OF [ FROM ] [ TO ] I NTO TABLE .
e so tabelas com tipos de linhascompatveis. O sistema insere as linhas da tabela um por um na tabela usando asmesmas regras da insero individual.
Se uma tabela com ndice (standard esorted), pode ser especificado a primeira e a ltimalinha da tabela que dever ser inserida em e.
102
7/25/2019 Apostila ABAP Advanced
54/177
Tabela Interna Inserir LinhasDATA: BEGI N OF LI NE,
LAND( 3) TYPE C,
NAME( 10) TYPE C,AGE TYPE I ,WEI GHT TYPE P DECI MALS 2,
END OF LI NE.
DATA I TAB LI KE SORTED TABLE OF LI NEWI TH NON- UNI QUE KEY LAND NAME
AGE WEI GHT.
LI NE- LAND = ' G' . LI NE- NAME = ' Hans' .LI NE- AGE = 20. LI NE- WEI GHT = ' 80. 00' .I NSERT LI NE I NTO TABLE I TAB.
LI NE- LAND = ' USA' . LI NE- NAME = ' Nancy' .LI NE- AGE = 35. LI NE- WEI GHT = ' 45. 00' .I NSERT LI NE I NTO TABLE I TAB.
LI NE- LAND = ' USA' . LI NE- NAME = ' Howar d' .LI NE- AGE = 40. LI NE- WEI GHT = ' 95. 00' .I NSERT LI NE I NTO TABLE I TAB.
LI NE- LAND = ' GB' . LI NE- NAME = ' J enny' .
LI NE- AGE = 18. LI NE- WEI GHT = ' 50. 00' .
I NSERT LI NE I NTO TABLE I TAB.
LI NE- LAND = ' F' . LI NE- NAME = ' Mi chel e' .
LI NE- AGE = 30. LI NE- WEI GHT = ' 60. 00' .
I NSERT LI NE I NTO TABLE I TAB.
LI NE- LAND = ' G' . LI NE- NAME = ' Kar l ' .
LI NE- AGE = 60. LI NE- WEI GHT = ' 75. 00' .
I NSERT LI NE I NTO TABLE I TAB.
LOOP AT I TAB I NTO LI NE.
WRI TE: / LI NE- LAND, LI NE- NAME, LI NE- AGE, LI NE-
WEI GHT.ENDLOOP.
Exemplo: Preencher a tabela interna com seis entradas
103
Tabela Interna Inserir LinhasResultado
104
7/25/2019 Apostila ABAP Advanced
55/177
Tabela Interna Inserir Linhas
DATA: BEGIN OF LINE,COL1 TYPE I,COL2 TYPE I,
END OF LINE.
DATA: ITAB LIKE STANDARD TABLE OF LINE,JTAB LIKE SORTED TABLE OF LINE
WITH NON-UNIQUE KEY COL1 COL2.
DO 3 TIMES.LINE-COL1 = SY-INDEX. LINE-COL2 = SY-INDEX ** 2.APPEND LINE TO ITAB.LINE-COL1 = SY-INDEX. LINE-COL2 = SY-INDEX ** 3.APPEND LINE TO JTAB.ENDDO.
INSERT LINES OF ITAB INTO TABLE JTAB.
LOOP AT JTAB INTO LINE.WRITE: / SY-TABIX, LINE-COL1, LINE-COL2.ENDLOOP.
Exemplo: Duas tabelas internas so criadas com os mesmoscomponentes, mas com tipo de tabelas diferente. Cada um preenchido com trs linhas.
105
Tabela Interna Inserir LinhasResultado
106
7/25/2019 Apostila ABAP Advanced
56/177
Tabela Interna Inserir linhassumarizadas
O comando abaixo permite inserir linhassomadas na tabela interna:COLLECT I NTO .
Todos os campos que no fazem parte da chave databela deve ser do tipo numrico (F, I ou P).
O comando COLLECT deve ser utilizado para criartabelas sumarizadas.
107
Tabela Interna Inserir linhassumarizadas
Quando uma linha inserida, o sistema verifica se
h uma entrada na tabela que combine com achave. Se no houver uma entrada correspondentena tabela, o comando COLLECT tem o mesmoefeito do comando INSERT. Se uma entrada existirna tabela, o comando COLLECT no cria uma novalinha, mas adiciona o contedo dos campos
numricos da work-area no contedo dos camposnumricos da linha existente.
108
7/25/2019 Apostila ABAP Advanced
57/177
Tabela Interna Inserir linhassumarizadas
DATA: BEGIN OF LINE,
COL1(3) TYPE C,
COL2(2) TYPE N,
COL3 TYPE I,
END OF LINE.
DATA ITAB LIKE SORTED TABLE OF LINE
WITH NON-UNIQUE KEY COL1 COL2.
LINE-COL1 = 'abc'. LINE-COL2 = '12.LINE-COL3 = 3.
COLLECT LINE INTO ITAB.
WRITE / SY-TABIX.
Exemplo: Os dois primeiros comandos COLLECT trabalham como ocomando INSERT. No terceiro comando COLLECT, a primeira linha
da ITAB modificada.LINE-COL1 = 'def'. LINE-COL2 = '34'.LINE-COL3 = 5.COLLECT LINE INTO ITAB.WRITE / SY-TABIX.
LINE-COL1 = 'abc'. LINE-COL2 = '12'.
LINE-COL3 = 7.
COLLECT LINE INTO ITAB.
WRITE / SY-TABIX.
LOOP AT ITAB INTO LINE.
WRITE: / LINE-COL1, LINE-COL2, LINE-COL3.
ENDLOOP.
109
Tabela Interna Inserir linhassumarizadas
110
7/25/2019 Apostila ABAP Advanced
58/177
Curso Avanado de ABAPDicionrio de Dados
111
Objetivo
O dicionrio de dados permite a descriocentralizada de todos os dados utilizados nosistema sem redundncia.
Informaes novas ou modificadas sofornecidas automaticamente para todos oscomponentes do sistema, garantindo assim, aintegridade, consistncia e segurana dos dados.
112
7/25/2019 Apostila ABAP Advanced
59/177
Caractersticas do Dicionrio de Dados
Gerncia centralizada das definies de dadosutilizados no sistema
Suporte as definies dos tipo de dados deusurios (elemento de dados, estruturas etabelas)
Definio de estrutura de objetos de banco dedados (tabelas, ndices e viso), os quais socriados automaticamente no banco de dados
113
Caractersticas do Dicionrio de Dados
Os principais tipos de objetos do dicionrio dedados so: Tabelas Vises Tipos (elemento de dados, estruturas e categoria
de tabelas) Domnios Ajuda de Pesquisa Objetos de Bloqueio
114
7/25/2019 Apostila ABAP Advanced
60/177
Transao SE11
115
TABELAS
116
7/25/2019 Apostila ABAP Advanced
61/177
Tabelas
As tabelas podem ser definidasindependentemente do banco de dados nodicionrio de dados.
Quando a tabela ativada, uma definio fsicada tabela criada no banco de dados de acordocom a tabela criada no dicionrio de dados.
As definies das tabelas so convertidas dodicionrio de dados para a definio de umdeterminado banco de dados.
117
Ativao de tabelas
TAB1 TAB2 TAB3 TAB4 TAB...
Banco de Dados
Dicionrio de Dados
Oracle, MSSQL, DB2, etc
118
7/25/2019 Apostila ABAP Advanced
62/177
Tipos de tabelas Existem trs tipos de tabelas no dicionrio de dados. So elas:
Tabelas Transparentes Para cada tabela transparente no dicionrio de dados h uma tabela
correspondente no banco de dados com o mesmo nome, campos edefinies.
Tabelas Pool Para cada tabela no banco de dados, h vrias tabelas no dicionrio de
dados. O R/3 utiliza o pool de tabelas uma grande quantidade (dezenas amilhares) de pequenas tabelas (de 10 a 100 registros cada). As tabelaspool reduzem a quantidade de recursos necessrios do banco de dadosquando vrias tabelas pequenas necessitam ser acessadas ao mesmotempo.
Tabelas Cluster As tabelas cluster so similares as tabelas pool. Eles so utilizados para
armazenar poucas tabelas (de 2 a 10) mas com grande quantidade dedados. A vantagem de utilizar tabelas cluster no caso de acessar dados demltiplas tabelas simultaneamente, reduzindo o nmero de acesso aobanco de dados aumentando a performance.
119
Classe de Entrega
A classe de entrega controla o transporte dedados da tabela, no caso de instalao, mudanade release, cpia de mandante, e no caso detransporte entre sistemas de cliente. A classe deentrega tambm considerada na Atualizaoampliada de tabelas.
120
7/25/2019 Apostila ABAP Advanced
63/177
Classe de Entrega Existem as seguintes classes de entrega: A
Tabela de aplicao (dados mestre e de movimento) C
Tabela de cliente, os dados so atualizados exclusivamente pelo cliente. L
Tabela para arquivar dados temporrios. G
Tabela de cliente, a SAP pode inserir registros novos, mas no pode sobregravar ou eliminaraqueles que j existem. necessrio que o conjunto de nomes de cliente seja definido natabela TRESC (utilizar o report RDDKOR54).
E Tabela de sistema com conjuntos de nomes prprios para entradas de cliente. necessrio
que o conjunto de nomes de cliente seja definido na tabela TRESC (utilizar o reportRDDKOR54).
S
Tabela de sistema, as modificaes de dados tm o status de modificaes de programa. W Tabela de sistema (por exemplo, tabela do ambiente de desenvolvimento), cujos dados so
transportados por objetos de transporte prprios (por exemplo, R3TR PROG, R3TR TABL,etc).
121
Definio de tabelas
A definio de tabelas possuem os seguintescomponentes: Campos da tabela Chave Externa Configuraes Tcnicas ndice
122
7/25/2019 Apostila ABAP Advanced
64/177
Campos da Tabelarea de definio dos campos da tabela
123
Campos da Tabela - Referncia Se houver algum campo do tipo moeda ou
quantidade, necessrio informar a tabela e ocampo de referncia.
A tabela de referncia deve conter um campo noformato de chave de moeda (tipo de dado CUKY)ou unidade de medida (UNIT)
Um campo s atribudo ao campo de refernciaem tempo de execuo. Ex. Se um campo contm
um valor monetrio, a moeda determinada deacordo com o campo de referncia.
124
7/25/2019 Apostila ABAP Advanced
65/177
Campo da tabela - Referncia
125
Chave Externa
O relacionamento de tabelas no dicionrio dedados realizado atravs de chave externa
Verificao de valores para campos de entradaAssociar vrias tabelas numa viso ou objetos debloqueio
126
7/25/2019 Apostila ABAP Advanced
66/177
Chave Externa
127
Configuraes Tcnicas
Define como a tabela ser manuseada quandofor criada no banco de dados, tais como o tipo debuffer da tabela e criar log de alterao deregistros da tabela
Os parmetros da configurao tcnica so: Categoria de dados Categoria de tamanho Buffer Log
128
7/25/2019 Apostila ABAP Advanced
67/177
Categoria de Dados
A categoria de dados define o tablespace ou Dbspace do bancode dados quando ele criado. As categorias de dados so:
APPL0 (dados mestre) So dados raramente atualizados como dados de um cliente
(nome, telefone, endereo) APPL1 (dados transacionais)
So dados freqentemente atualizados. Um exemplo so osmateriais de um depsito, os quais so alterados a cada nova
ordem de compra APPL2 (dados organizacionais) So dados que so definidos quando o sistema instalado e
raramente modificado. Um exemplo a tabela com o cdigo dospases.
USR1 e USR2 So categorias para uso do cliente para testes de desenvolvimento.
129
Categoria de tamanho
O parmetro categoria de tamanho define oespao necessrio esperado para a tabela nobanco de dados.
As categorias de tamanho variam de 0 a 4. Para cada categoria, atribudo um tamanho
fixo de memria no banco de dados, o qual
depende do tipo do banco de dados utilizado
130
7/25/2019 Apostila ABAP Advanced
68/177
Categoria de tamanho Configuraes Tcnicas
TAB_A 1
TAB_B 2TAB_C 3
Categoria de Tamanho
TAB_A
TAB_B
TAB_C
ExtensoInicial
PrimeiraExtenso
SegundaExtenso
131
Buffer
O tipo de buferizao define quais os registrossero armazenados no buffer do servidor deaplicao quando o registro acessado.
Somente os campos chaves podem serbuferizados.
Os tipos de buferizao so:
Armazenar em buffer registros individuais Armazenar em buffer reas genricas Armazenamento em buffer completo
132
7/25/2019 Apostila ABAP Advanced
69/177
Buffer Registros Individuais
Com o armazenamento em buffer de registrosindividuais, somente os registros atualmentelidos so carregados no buffer.
Esse tipo de buffer necessita de menos espao dearmazenamento
Os custos administrativos so maiores, pois maisacesso ao banco de dados so necessrios
133
Buffer Registros Individuais
Exemplo: Se o tipo de armazenamento em buffer for
individual, somente o registro lido carregado nobuffer.
SELECT SI NGLEFROM MARDWHERE MATNR = 208014400
AND WERKS = M400AND LGORT = MD40 .
Tabela transparente MARD
MATNR WERKS LGORT
208014180 M400 MD40
208014180 M400 MD42
208014400 M400 MD40
208014400 M400 MD42
280806160 M400 MD40
280806160 M400 MD42
280808120 M400 MD40
Contedo do Buffer
208014400 M400 MD40
134
7/25/2019 Apostila ABAP Advanced
70/177
Buffer reas Genricas
Com a bufferizao de reas genricas, todos osregistros onde o critrio de seleo seja genrico,so carregados no buffer.
necessrio informar o nmero de camposchave para a rea genrica.
necessrio que o nmero entrado esteja entre 1e o nmero de campos chave -1. Por exemplo,para uma tabela com 6 campos chave, s soadmitidos valores entre 1 e 5.
135
Buffer reas Genricas
No exemplo abaixo, o registro marcado lido pelo
programa. Se a tabela possuir buffer genrico, todos osregistros lidos com a chave genrica (MATNR e WERKS)so gravados no buffer.
Contedo do Buffer
280806160 M400 MD40
280806160 M400 MD42
280806160 M400 MD43
SELECT *FROM MARDWHERE MATNR = 280806150
AND WERKS = M400 .
Tabela transparente MARD
MATNR WERKS LGORT
208014180 M400 MD40
208014180 M400 MD42
208014400 M400 MD40
208014400 M400 MD42
280806160 M400 MD40
280806160 M400 MD42
280806160 M400 MD43
136
7/25/2019 Apostila ABAP Advanced
71/177
Buffer Completo
Com a buferizao completa, todos os registrosda tabela so carregados no buffer a partir doprimeiro acesso tabela.
As tabelas que devem ser buferizadas so astabelas com poucos dados, lidos frequentementee raramente atualizados.
137
Buffer Completo
No exemplo abaixo, o registro marcado lido pelo
programa. Se a tabela possuir buffer completo, todos osregistros so gravados no buffer.
SELECT *FROM MARDWHERE MATNR = 208014400
AND WERKS = M400AND LGORT = MD40 .
Tabela transparente MARD
MATNR WERKS LGORT
208014180 M400 MD40
208014180 M400 MD42
208014400 M400 MD40
208014400 M400 MD42
280806160 M400 MD40
280806160 M400 MD42
280806160 M400 MD43
Contedo do Buffer
208014180 M400 MD40
208014180 M400 MD42
208014400 M400 MD40
208014400 M400 MD42
280806160 M400 MD40
280806160 M400 MD42
280806160 M400 MD43
138
7/25/2019 Apostila ABAP Advanced
72/177
Log
O uso do flag de Log utilizado quando h anecessidade de saber quais registros foramalterados.
Se o log estiver ativo, cada alterao nos dados databela (com os comandos UPDATE e DELETE) pelousurio ou pelo programa registrado na tabela delog DBTABPRT.
O log deve ser usado com cuidado pois podeimpactar a performance do sistema e se houveracesso de vrios usurios simultaneamente podecausar a situao de Lock.
139
ndice
O ndice utilizado para aumentar a eficinciana busca do registro em determinada tabela.
O ndice pode ser considerado um cpiareduzida de uma tabela contendo determinadoscampos. Essa cpia sempre ordenada.
O ndice contm um ponteiro ao registro
correspondente da tabela selecionada,permitindo que os campos no contidos nondice sejam lidos.
140
7/25/2019 Apostila ABAP Advanced
73/177
ndice
Existem dois tipos de ndice: ndice Primrio
O ndice primrio possui os campos chaves da tabela e o ponteiropara os campos no-chave da tabela. criado automaticamente.
ndice Secundrio O ndice secundrio necessrio se a tabela acessada
freqentemente de um modo que no aproveita os campos chavesda tabela
Podem ser criados mais de um ndice secundrio, mas deve-se
levar em considerao a performance, pois a cada registroinserido na tabela, o sistema tem que armazenar os dados dondice.
O sistema identifica automaticamente qual ndice serutilizado se houver mais de um ndice.
141
ndice
ndice Primriondice Primrio para SCOUNTERMANDT CARRID COUNTNUM P
100 AA 00000001 7
100 BA 00000001 9
100 BA 00000002 12
100 BA 00000003 5
100 BA 00000004 2
100 LH 00000001 10
100 LH 00000002 4
100 LH 00000003 8
100 LH 00000004 11
100 LH 00000005 1
100 LH 00000006 13
100 LH 00000007 6
100 LH 00000008 14
100 UA 00000001 3
Tabela SCOUNTER
MANDT CARRID COUNTNUM AIRPORT
100 LH 00000005 ACA
100 BA 00000004 ACE
100 UA 00000001 BER
100 LH 00000002 LCY
100 BA 00000003 LHR
100 LH 00000007 BER
100 AA 00000001 DEN
100 LH 00000003 FRA
100 BA 00000001 LCY
100 LH 00000001 LGW
100 LH 00000004 LHR
100 BA 00000002 MUC
100 LH 00000006 RTM
100 LH 00000008 HAM
Campos chaves
142
7/25/2019 Apostila ABAP Advanced
74/177
ndice ndice Secundrio
ndice Secundrio
AIRPORT P
ACA 1
ACE 2
BER 3
BER 6
DEN 7
FRA 8
HAM 14
LCY 4
LCY 9
LGW 10
LHR 5LHR 11
MUC 12
RTM 13
Tabela SCOUNTER
MANDT CARRID COUNTNUM AIRPORT
100 LH 00000005 ACA
100 BA 00000004 ACE
100 UA 00000001 BER
100 LH 00000002 LCY
100 BA 00000003 LHR
100 LH 00000007 BER
100 AA 00000001 DEN
100 LH 00000003 FRA
100 BA 00000001 LCY
100 LH 00000001 LGW
100 LH 00000004 LHR100 BA 00000002 MUC
100 LH 00000006 RTM
100 LH 00000008 HAM
SELECT *FROM SCOUNTERWHERE AI RPORT = LCY .
BinarySearch
143
Categoria de Ampliao
A seleo de uma categoria de ampliao
necessria, uma vez que nas ampliaes detabelas e de estruturas em programas semverificao unicode ativa, principalmente nasverificaes de tipo e em conjunto comestruturas profundas, podem ocorrer erros desintaxe e em tempo de execuo.
Em funo da definio de estrutura, os botesde rdio permitidos da caixa de dilogo estoprontos para entrada
144
7/25/2019 Apostila ABAP Advanced
75/177
Categoria de Ampliao (ECC 6.0)
As opes de categoria de ampliao so: no amplivel
A estrutura no pode ser ampliada. amplivel e em forma de caractere
Todas os componentes de estrutura e as respectivas ampliaestm de ser em forma de caractere (C, N, D ou T).
amplivel e em forma de caractere ou numrica A estrutura e a respectiva ampliao no pode conter
categorias de dados profundas (tabelas, referncias, cadeias). amplivel conforme pretendido
A estrutura e a respectiva ampliao pode conter componentes,cuja categoria de dados facultativa.
no classificada Esta categoria pode ser selecionada, por exemplo, para um
status de transio, mas no ao criar estruturas.145
DOMNIOS E ELEMENTO DE DADOS
146
7/25/2019 Apostila ABAP Advanced
76/177
Domnio
O domnio um objeto que contm asinformaes tcnicas de um campo, como o tipode dados e o tamanho do campo.
No domnio tambm definido o intervalo devalores, os quais podem ser valores individuaisou um conjunto de valores ou uma tabela deverificao.
No domnio definido as rotinas de converso.
147
Domnio Tipos de dados Tipos de Dados do Dicionrio
TIPO DESCRIO
ACCP Perodo contbil AAAAMM
CHAR Cadeias de caracteres com no mximo 255 caracteresCLNT MandanteCUKY Cdigo da moeda, referido por campos CURRCURR Campo de moeda (divisa), arquivado como DECDATS Campo de data (AAAMMDD), arquivado como carac(8)DEC Campo de clculo ou montante com vrgula e sinal pos./neg.FLTP Nmero em ponto flutuante com preciso de 8 bytesINT1 1 byte n inteiro 0 a 255INT2 2 byte n inteiro 32767 a 32767INT4 4-byte n inteiro -2177483647 a 2177483647LANG Cdigo de idioma sempre 1 caracterLCHR Seq. longa de caracteres maior que 255 e necessita campo INT2LRAW Seq. longa de bytes, necessita campo INT2NUMC Campo de caracteres s com dgitos mximo de 255 dgitos
PREC Preciso de um campo QUANQUAN Campo quantidade, aponta p/campo de unidades de formato UNITRAW Seqncia de bytes no interpretadaTIMS Campo de hora (hhmmss), arquivado como caract.(6)VARC Seq. longa caracteres, no suportada a partir da verso 3.0UNIT Cdigo de unidades para campos QUAN
148
7/25/2019 Apostila ABAP Advanced
77/177
Elemento de Dados
O elemento de dados um objeto que contm aspossveis descries utilizadas na telas dosprogramas e ajudas de pesquisa.
No elemento de dados, especificado o domnioa ser utilizado.
O elemento de dados atribudo aos campos dastabelas, estruturas e programas ABAP.
149
Domnio & Elemento de Dados
O domnio s pode ser utilizado pelo elementode dados e ambos se completam.
Um domnio pode ser utilizado por vrioselemento de dados, mas o elemento de dados spode ter um domnio.
O campo de uma tabela herda as caractersticas
do elemento de dados, tais como a descrio eajuda de pesquisa e o tipo de dado e tamanho dodomnio atribudo ao elemento de dados.
150
7/25/2019 Apostila ABAP Advanced
78/177
Campo & Elemento de Dados &Domnio
TABELA 1 TABELA 2 TABELA 3
Elemento de Dados 1 Elemento de Dados 2
Domnio
O tipo de dados e o tamanho so sempre consistente
151
Criao de Tabela
152
7/25/2019 Apostila ABAP Advanced
79/177
Antes de criar a tabela, necessrio criar osdomnios que sero atribudos aos elementos de
dados os quais sero atribudos aos campos databela.
153
Criao do Domnio SE11
1. Marcar o boto de rdio Domnio2. Inserir o nome do domnio (sempre comea com a letra Z)
3. Clicar no boto Criar
2
3
1
154
7/25/2019 Apostila ABAP Advanced
80/177
Criao do Domnio - Definio4. Inserir a descrio do domnio5. Informar o tipo de dados6. Informar a quantidade de posies7. Ativar o domnio
4
5
6
7
155
Criao do Elemento de Dados SE118. Marcar o boto de rdio Categoria dados9. Inserir o nome do elemento de dados (sempre comea com a letra Z)10. Clicar no boto Criar11. Selecionar a opo Elemento de Dados
9
10
8
11
156
7/25/2019 Apostila ABAP Advanced
81/177
Criao do Elemento de Dados Ctg.dds
12. Inserir a descrio13. Inserir o nome do domnio criado14. Clicar na aba Denomin.campo para inserir os textos do campo
13
14
12
157
Criao do Elemento de Dados Denomim.campo
15. Inserir a descrio16. Ativar o elemento de dados
15
16
158
7/25/2019 Apostila ABAP Advanced
82/177
Criao da Tabela SE11
17. Marcar o boto de rdio Tab. Banco dados18. Inserir o nome da tabela (sempre comea com a letra Z)19. Clicar no boto Criar
18
19
17
159
Criao da Tabela Entrega e atualizao20. Inserir a descrio da tabela21. Definir a classe de entrega22. Definir a regra de atualizao da tabela23. Clicar na aba Campos
20
21
22
23
160
7/25/2019 Apostila ABAP Advanced
83/177
Criao da Tabela Campos24. Definir o nome do campo (nomenclatura livre)25. Definir se o campo chave e se o campo NOT NULL26. Inserir o nome do elemento de dados27. Definir a chave externa (opcional)28. Clicar no boto Configuraes tcnicas (obrigatrio)
24
25
26
27
28
161
Criao da Tabela Opes tcnicas29. Definir a categoria de dados30. Definir a categoria de tamanho31. Ativar o buffer se necessrio32. Definir o tipo de armazenamento em buffer caso o buffer tenha sido ativado33. Voltar para a tela anterior
29
31
32
30
33
162
7/25/2019 Apostila ABAP Advanced
84/177
Criao da Tabela ndice34. Clicar no boto ndices... para abrir a janela de ndice35. Clicar no boto Criar e selecionar a opo desejada para abrir a janela de identificao do
ndice36. Inserir o cdigo de identificao do ndice
34
35
36
163
Criao da Tabela ndice37) Inserir a descrio do ndice38) Indicar os parmetros do ndice39) Indicar os campos da tabela que faro parte do ndice40) Salvar o ndice
37
38
39
40
164
7/25/2019 Apostila ABAP Advanced
85/177
Criao da Tabela Categoria de Ampliao
41) No menu Suplementos, selecionar a opo Categoria de ampliao...42) Selecionar a categoria de ampliao pretendida43) Clicar em Aceitar
41
42
43
165
Visualizar dados da tabela
Os dados includos em uma tabela podem servisualizados atravs das transaes SE16 ouSE16N, sendo esta ltima a verso mais nova nasverses ECC5 e ECC6.
SE16 SE16N
166
7/25/2019 Apostila ABAP Advanced
86/177
Viso
Os dados de uma viso so derivadas de uma oumais tabelas, mas no so armazenadas fisicamente. Uma viso pode ser utilizado por um programa
ABAP para a seleo de dados. O primeiro passo definir as tabelas bases No segundo passo, essas tabelas devem ser
associadas atravs de condies Join
O terceiro passo definir os campos das tabelas baseque devero estar presentes na viso O quarto passo definir as condies de seleo que
restringem os registros a serem apresentados naviso
167
Viso
Existem quatro tipos de viso: Viso de banco de dados Viso de projeo Viso de atualizao Viso de ajuda
168
7/25/2019 Apostila ABAP Advanced
87/177
Viso de banco de dados
Geralmente, os dados esto distribudos entre vriastabelas. Uma viso fornece um meio de obter estesdados distribudos.
A operao de join realizada no banco de dados,minimizando o nmero de acesso ao banco dedados.
Se a viso possuir somente uma tabela, o sistemapermite a insero de registro, caso contrriosomente a leitura das tabelas
O acesso aos dados de uma viso geralmente maisrpido do que acesso individual as tabelas
169
Viso de banco de dados
F1 F2 F3 F5 F8
F1 F2 F3 F5 F8
F1 F2 F3 F4 F5 F6 F7 F8
Tabela 1 Tabela 2 Tabela 3
Definio da visono dicionrio de dados
Ao ativar a viso criada no banco de dados
Definio da viso nobanco de dados
Interface do banco de dados
Programa ABAP
170
7/25/2019 Apostila ABAP Advanced
88/177
Viso de projeo
Viso de projeo utilizado para ocultarcampos de uma tabela.
A viso de projeo contm apenas uma tabelabase. No possvel definir condies deseleo.
No h um objeto correspondente no banco dedados para a viso de projeo. possvel acessar tabelas clusters e pool com aviso de projeo
171
Viso de atualizao
A viso de atualizao fornece um meio fcil de
atualizar objetos de aplicaes complexas. Todas as tabelas de uma viso de atualizao devemestar associadas com chaves estrangeiras, pois ascondies de join na viso de manuteno soderivadas das chaves estrangeiras.
No possvel entrar as condies de join como aviso de banco de dados.
O mecanismos de manuteno fornecido atravsda transao SE54, para criar o programa demanuteno e a transao SM30 para executar oprograma de atualizao.
172
7/25/2019 Apostila ABAP Advanced
89/177
7/25/2019 Apostila ABAP Advanced
90/177
Criao - Viso de banco de dados1. Marcar o boto de rdio Viso2. Inserir o nome da viso (sempre comea com a letra Z)3. Clicar no boto Criar4. Selecionar a opo Viso de banco de dados
2
3
14
175
Criao - Viso de DB tabelas/condies join5. Inserir a descrio da viso6. Definir as tabelas bases7. Definir as condies de Join8. Clicar na aba Cpos.viso
5
7
6
8
176
7/25/2019 Apostila ABAP Advanced
91/177
Criao - Viso de DB Campos Viso
9. Especificar os campos da viso
9
177
Criao - Viso de DB condio de seleo
10. Definir a condio de seleo11. Ativar a viso
11
10
178
7/25/2019 Apostila ABAP Advanced
92/177
Estruturas
As estruturas so utilizadas para definir osdados da interface dos module pools e telas epara definir os tipo de parametros dos mdulosde funo.
As estruturas possuem componentes que podemreferenciar a um tipo elementar (via elemento de
dados ou diretamente especificando o tipo dedados e tamanho), outra estrutura ou umacategoria de tabela.
As estruras podem possuir vrios nveis.
179
Ajudas de Pesquisa
A ajuda de pesquisa (F4) uma funo standarddo SAP.
Ele permite apresentar ao usurio uma lista depossveis entradas para um determinado campo.
til quando um campo requer a entrada de umvalor formal.
180
7/25/2019 Apostila ABAP Advanced
93/177
Ajuda de Pesquisa - Processo
1. O usurio clica no boto de match-coderelacionado ao campo para obter uma lista depossveis valores para o campo
2. O sistema apresenta opes de pesquisa para osvalores
3. O usurio especifica o critrio de seleo e inicia apesquisa
4. O sistema determina os valores que satisfaam asrestries e apresenta o resultado em uma lista5. O usurio seleciona o valor atravs de duplo
clique.6. O valor selecionado transferido para o campo
181
Ajuda de Pesquisa Elementar
182
7/25/2019 Apostila ABAP Advanced
94/177
Ajuda de Pesquisa Coletiva
183
Objeto de bloqueio
O R/3 sincroniza simultaneamente o acesso de
vrios usurios aos mesmos registros atravs demecanismos de bloqueio.
Os bloqueios so ativados e desativados atravs demdulos de funo.
Os mdulos de funo de bloqueio so criadosautomaticamente pelo dicionrio de dados.
O objeto de bloqueio pode ter uma ou mais tabelas. O nome do objeto de bloqueio deve comear com a
letra E.184
7/25/2019 Apostila ABAP Advanced
95/177
Objeto de bloqueio - EstruturaAs tabelas nas quais os registros devem ser
bloqueados atravs de objetos de bloqueio sodefinidos com as respectivas chaves.
CH1 D1
CH2 CH3
D3CH4 CH5 CH6
Tabela 1
Tabela 2
Tabela 2
Chave estrangeira
Chave estrangeira
185
Objeto de bloqueio - Parmetros Os parmetros de bloqueio de uma tabela consiste
nas chaves da mesma. Os parmetros de bloqueio so utilizados como
parmetros de entrada nos mdulos de funo debloqueio para ativar ou desativar o bloqueio.
Tabela 1
CH1 D1
1 ...
2 ...
3 ...
Tabela 2
CH2 CH3 D2
1 1 ...
2 1 ...
2 2 ...
3 1 ...
3 3 ...
Tabela 3
CH4 CH5 CH6 D3 D4
1 1 A ... ...
2 1 A ... ...
2 1 B ... ...
2 1 C ... ...
2 3 A ... ...
2 3 B ... ...
3 1 A ... ...
Chamada do mdulo de funo de bloqueio com as chavesCH1 = 2 e CH3 = 1
Os registros em vermelho esto bloqueados
186
7/25/2019 Apostila ABAP Advanced
96/177
Objeto de bloqueio - Modo O modo de bloqueio controla como os usurios iro acessar os
dados simultaneamente. Pode ser atribudo separadamente para cada tabela do objeto de
bloqueio O acesso por mais de um usurio pode ser efetuado pelos seguintes
modos: Bloqueio de escrita (Exclusive Lock)
Os dados bloqueados s podem ser lidos ou processados por um nicousurio. Tanto a solicitao de outra proteo contra gravao como asolicitao de um bloqueio de leitura so rejeitadas.
Bloqueio de leitura (Shared Lock) Vrios usurios podem acessar simultaneamente os mesmos dados para
leitura. Contudo, assim que um usurio processar os dados, um segundo
usurio j no pode acessar estes dados. As solicitaes de novosbloqueios de leitura so aceitas, mesmo se forem provenientes de outrosusurios. Uma proteo contra gravao rejeitada.
Bloqueio de escrita ampliado (Exclusive but not cumulative) Enquanto as protees contra gravao podem ser solicitadas vrias vezes
e canceladas sucessivamente pela mesma transao, uma proteo contragravao ampliada s pode ser solicitada uma vez pela mesma transao.Qualquer outra solicitao de um bloqueio rejeitada.
187
Objeto de bloqueio Mdulo deFuno
Quando o objeto de bloqueio ativado, doismdulos de funo so criados. ENQUEUE_ DEQUEUE_
188
7/25/2019 Apostila ABAP Advanced
97/177
Objeto de bloqueio Mdulo deFuno - Parmetros
Campos do objetos de bloqueio So os campos chaves definidos no dicionrio de
dados Passar o valor X para o campo que deseja
bloquear Se no for passado o valor X, ser feito um
bloqueio genrico
189
Transaes
SE11 Dicionrio de Dados SE16/SE16N Exibio dos dados de tabelas SE14 Utilitrio de banco de dados SM30 Atualizao de viso de tabelas SE93 Atualizao de transao
190
7/25/2019 Apostila ABAP Advanced
98/177
Exercciosa) Criar as seguintes tabelas no SAP
Campo Elemento de Dados Domnio
NUMDOC J_1BDOCNUM
NFNUM PRPRIO NUM 6
LIFNR LIFNR
CGC_CPF PRPRIO PRPRIO
Campo Elemento de Dados Domnio
NUMDOC J_1BDOCNUM
ITNUM J_1BITMNUM
MATNR MATNR
MENGE J_1BNETQTY
MEINS PRPRIO CUKY 3
VALOR J_1BNETPRI
MOEDA PRPRIO PRPRIO
Notas Fiscais de Entrada de Material paraAgrupamento com o nome: (Z##NFKGR)
Itens das Notas Fiscais com o nome:(Z##NFPGR):
191
Exercciosb) Criar os relacionamentos entre as duas tabelas
do exerccio anterior e as tabelas SAPc) Criar uma viso para listar os fornecedores e os
respectivos materiais comercializados pelosmesmos.
A viso deve conter os seguintes campos: LIFNR (Nmero do fornecedor) NAME1 (Nome do fornecedor) MATNR (Cdigo do material)
MAKTX (Descrio do material pelo idioma delogon)
192
7/25/2019 Apostila ABAP Advanced
99/177
Curso Avanado de ABAPAbap Report
193
Tpicos
ABAP EditorABAP Report
194
7/25/2019 Apostila ABAP Advanced
100/177
ABAP Editor
O ABAP Editor a ferramenta para a criao deprogramas ABAP A transao do ABAP Editor SE38 No ABAP Editor possvel:
Criar/Modifica/Visualizar o programa Copiar e renomear o programa Excluir o programa do sistema
Ativar o programa Alterar as caractersticas do programa Documentar o programa Criar/Modificar/Visualizar os elementos de texto do
programa
195
ABAP Editor Tela inicial1. Verificar a sintaxe do cdigo2. Ativar o programa3. Executar o programa4. Pesquisar onde o programa
utilizado
5. Excluir o programa dosistema
6. Copiar o programa7. Renomear o programa8. Depurar o programa9. Depurar o programa com
variante10.Gerenciar variante do
programa
1 2 3 4 5 6 7 8 9 10
196
7/25/2019 Apostila ABAP Advanced
101/177
ABAP Editor Editor1. Exibir/Modificar cdigo2. Ativar/Desativar programa3. Carregar outro programa
4. Pesquisar onde o programa utilizado
5. Excluir o programa dosistema
6. Copiar o programa7. Renomear o programa8. Depurar o programa9. Depurar o programa com
variante
10.Gerenciar variante doprograma
1 3 4 5 6 7 8 9 102 11 12
197
ABAP Report
198
7/25/2019 Apostila ABAP Advanced
102/177
Caractersticas
As principais caracterticas de um ABAP Reportso: um programa executvel Possui tela de seleo, a qual definida atravs de
comandos ABAP
199
ABAP Report - ManutenoA manuteno de programas ABAP Report
efetuado atravs da transao SE38
As opes de manuteno so: Texto fonte Variantes Caractersticas Documentao Elemento de Texto
200
7/25/2019 Apostila ABAP Advanced
103/177
ABAP Report Texto Fonte Como o prprio nome j diz, texto fonte onde
feito a criao/manuteno dos programasABAP
201
ABAP Report VariantesVariante um grupo de valores de critrio de
seleo.
Em vez de entrar os mesmos critrios de seleocada vez que iniciar o programa de obteno dedados, o usurio pode entrar e gravar em umavariante os valores que sempre utiliza comocritrios de seleo
possvel criar e especificar uma variante para o
programa de obteno de dados em cada visode anlise.
202
7/25/2019 Apostila ABAP Advanced
104/177
ABAP Report Caractersticas Nas caractersticas do programa so definidos:
Ttulo Tipo de programa Status Aplicao Grupo de autorizaes Pacote Banco de dados lgico Verso tela seleo Bloqueio do editor Verificao unicode ativas Aritmtica em ponto fixo Incio com variante
203
ABAP Report Caractersticas
204
7/25/2019 Apostila ABAP Advanced
105/177
ABAP Report Caractersticas Ttulo
Descrio breve da funcionalidade do programa
Tipo de programa Neste campo necessrio informar o modo de
execuo do programa. As opes so: 1. Programa executvel: Declarar o programa como
Executvel, ou seja, que podem ser executados sem anecessidade de se criar transaes para ele.
F. Grupo de funes: Declarar o programa comomdulo de funo. Utilizado pelo SAP na criao demdulo de funo
I. Include: Declarar o programa como Include. Uminclude um programa independente que possui duasfuncionalidades:
Pode ser utilizado em diversos programas; Facilita a manuteno dos programas.
205
ABAP Report Caractersticas J: Pool de Interface: As interfaces so administradas
pelo gerador de classes; a categoria de programa Jno pode ser modificada nos atributos.
K: Pool de classes: Contm classes. As classes soadministradas pelo gerador de classes; a categoria deprograma J no pode ser modificada nos atributos.
M: Pool de mdulos: Declarar o programa comoModule Pool, significa que, este programa necessitada criao de transaes ou menus para serexecutado. Exemplo: Programas Dilogo.
S: Pool de sub-rotinas: contm partes de programa(FORM) que so executveis atravs das instruesPERFORM externas.
206
7/25/2019 Apostila ABAP Advanced
106/177
ABAP Report Caractersticas Status
Descreve o status do programa. Exemplo: TPrograma de testes
Aplicao Campo para alocao de programa em uma
determinada rea de negcio. Exemplo: Se oprograma for para Financial Account, escolhe-seF.
Grupo de Autorizaes Autorizao para os usurios executarem o
programa: S_DEVELOP e para manter oprograma S_PROGRAM.
207
ABAP Report Caractersticas Pacote
Os pacotes so importantes para transportesentre os sistemas de produo e
desenvolvimento. So combinados todos os objetos pertencentes
ao desenvolvimento em uma classe dedesenvolvimento em uma change request
Todos os programas associados a classe dedesenvolvimento $TMP so locais e no sotransportados.
A classe de desenvolvimento escolhida nacriao do programa
208
7/25/2019 Apostila ABAP Advanced
107/177
ABAP Report Caractersticas Banco de dados lgico
Somente para programas executveis (Tipo 1). Estecampo determina o Banco de Dados Lgico que serutilizado por este programa.
Verso tela seleo Verso de tela de seleo do programa de banco de
dados Bloqueio do Editor
Quando marcado, permite somente o proprietrioatualizar, apagar, renomear o programa.
Somente o proprietrio poder modificar edesbloquear o programa
209
ABAP Report Caractersticas Verificao de unicode ativas
Realiza a verificao de unicode Aritmtica em ponto fixo
Se marcar este campo, o sistema arredonda oscampos numricos (tipo P) de acordo com onmero de casas decimais especificados noprograma, ou preenche-as com zeros, neste casoo sinal decimal o ponto (.).
Incio via variante
Somente para programas executveis. Informaque o programa s pode ser executado com umaVariant.
210
7/25/2019 Apostila ABAP Advanced
108/177
Report - Criao1. Inserir o nome do programa2. Selecionar Texto Fonte
3. Clicar no boto Criar
1
2
3
211
Report - Criao1. Inserir uma descrio breve do programa2. Determinar o tipo de programa3. Clicar no boto Gravar
1
2
3
212
7/25/2019 Apostila ABAP Advanced
109/177
Report - Criao4. Inserir o pacote5. Clicar no boto Salvar
6. Inserir o nmero da change request7. Clicar no boto Confirmar
4
56
7
213
Report Editor ABAP
214
7/25/2019 Apostila ABAP Advanced
110/177
Editor ABAP1. Exibir/Modificar (CTRL+F1)2. Ativar/Desativar o programa
(SHIFT+F8)3. Verificar o cdigo (CTRL+F2)4. Ativar o programa (CTRL+F3)5. Executar o programa (F8)6. Lista de Utilizao (CTRL+SHIFT+F3)
7. Definir/Eliminar ponto de paradade sesso
8. Definir/Eliminar ponto de paradaexterno
9. Modelo10. Pretty Printer11. Exportar o cdigo12. Importar o cdigo
1 2 3 4 5 6 7 8 9 10
12
11
215
Editor ABAP - Funcionalidades
Exibir/Modificar (CTRL+F1) Alterna o editor para o modo de visualizao e
edio do cdigoAtivar/Desativar o programa (SHIFT+F8)
Altera o status do programa para ativo ou inativoAtivar o programa (CTRL+F3)
Ativa o programa tornado-o possvel para aexecuo do usurio. Na ativao, o cdigo verificado a procura de erros
216
7/25/2019 Apostila ABAP Advanced
111/177
Editor ABAP - FuncionalidadesVerificar o cdigo (CTRL+F2)
Verifica se o cdigo possui erro de sintaxe
217
Editor ABAP - Funcionalidades
Executar o programa (F8) Executa o programa, desde que o mesmo seja do tipo 1
- Programa Executvel e o programa esteja ativo. Lista de Utilizao (CTRL+SHIFT+F3)
Retorna uma lista informando quais os programas,transaes, classes e ampliaes utilizam o programapesquisado.
Definir/Eliminar ponto de parada de sesso Insere um ponto de parada para que o programa sejainterrompido em modo de depurao para a soluo de
problemas. O ponto de parada utilizado em todas assesses do logon atual.
218
7/25/2019 Apostila ABAP Advanced
112/177
Editor ABAP - Funcionalidades
Definir/Eliminar ponto de parada externo Insere um ponto de parada vlido para todos os usurios, do
servidor e sistema atual. Os pontos de parada externos so teis para debugar programas
BSP ou WebDynpro. Nesse caso, o logon no realizado atravsdo SAP GUI, mas sim do browser, por exemplo. Entretanto, ospontos de parada devem ser devem ser ativados antes de logar.
O uso do ponto de parada externo vlido pelo perodo de 2
horas. Modelo O boto modelo uma ferramenta para inserir determinados
comandos como modelo, a modo de facilitar a codificao pelodesenvolvedor.
219
Editor ABAP - Funcionalidades
Pretty Printer O boto Pretty Printer utilizado para uniformizar o
layout do programa, tal como endentao ecapitulao.
Importar/Exportar cdigo Importa/Exporta o cdigo fonte de/para um
arquivo texto.
220
7/25/2019 Apostila ABAP Advanced
113/177
7/25/2019 Apostila ABAP Advanced
114/177
Comando REPORT
LINE-SIZE largura Esta opo define a largura da linha da listagem com
a quantidade de caracteres definido em largura. A largura mxima de 1023 caracteres. Quando a opo LINE-SIZE no especificada, a
largura da listagem se ajustar automaticamente ao
tamanho da janela.
223
Comando REPORT
LINE-COU