0.3 - select e fluxo do programa
TRANSCRIPT
8/18/2019 0.3 - Select e Fluxo Do Programa
http://slidepdf.com/reader/full/03-select-e-fluxo-do-programa 1/24
TreinamentoSQLFluxo do programa
8/18/2019 0.3 - Select e Fluxo Do Programa
http://slidepdf.com/reader/full/03-select-e-fluxo-do-programa 2/24
SQL e Fluxo do Programa – Introdução – SQL
– Sentença SELECT básica
– Exemplo de instrução SP SQL
– Cláusula !"E#E
– S$%S&'#C
– I(T) C)##ESP)(*I(+ FIEL*S
8/18/2019 0.3 - Select e Fluxo Do Programa
http://slidepdf.com/reader/full/03-select-e-fluxo-do-programa 3/24
SQL e Fluxo do Programa – Introdução – Fluxo do Programa
– instrução IF
– Express,es L-gicas
– )peradores #elacionais
– )peradores L-gicos
– #ecomendaç,es sobre operadores l-gicos
– )peradores de comparação de Strings
– instrução CSE
– instrução *)
– .Loops/ anin0ados
8/18/2019 0.3 - Select e Fluxo Do Programa
http://slidepdf.com/reader/full/03-select-e-fluxo-do-programa 4/24
SQL e Fluxo do Programa – instrução )( C"(+E )F
– instrução C"EC1
– instrução E2IT
– instrução C)(TI(&E
8/18/2019 0.3 - Select e Fluxo Do Programa
http://slidepdf.com/reader/full/03-select-e-fluxo-do-programa 5/24
Introdução % SQL
O SQL (Structured Query Language) doABAP (SAP SQL ou Open SQL) é umsubconunto do SQL padr!o utili"ado
dentro do SAP para recuperar os dadosdo Banco de #ados$Sua utili"a%!o é a mesma
independentemente do Banco de #ados
utili"ado pelo SAP pois as instru%&esSAP SQL s!o interpretadasautomaticamente para o
Banco sendo usado$
8/18/2019 0.3 - Select e Fluxo Do Programa
http://slidepdf.com/reader/full/03-select-e-fluxo-do-programa 6/24
Sentença SELECT básica
'ma tabela ue ai ter seu conte*do utili"ado no programa ABAP
dee ser declarada com a senten%a+
TABL,S -nome da tabela.$
TABL,S/ além de declarar a tabela/ também sere para criar uma01or2area3 do taman4o exato de um registro$
'ma 01or2area3 é uma 5rea de mem6ria utili"ada por tabelas eestruturas para arma"enagem tempor5ria de dados$A instru%!o S,L,7T automaticamente
coloca o registro corrente da tabela na 01or2area3$'m S,L,7T dee ser terminado com ,8#S,L,7T$
SELECT <campos> FROM <tabela>.
<instruções...>
ENDSELECT.
8/18/2019 0.3 - Select e Fluxo Do Programa
http://slidepdf.com/reader/full/03-select-e-fluxo-do-programa 7/24
Exemplo de instrução SP SQL
A instru%!o acima seleciona a 7ia$ Aérea e a #escri%!o da tabela
S7A99 e imprime esses campos$: recomend5el selecionar apenas os campos ue ser!o
utili"ados ao inés de usar Select ;$Quando se seleciona campos espec<=icos (=ield list) dee>se
explicitar ual 5rea de mem6ria tais camposser!o arma"enados atraés da cl5usula ?8TO$
T!LES " SCRR.
SELECT CRR#D
CRRNME
FROM SCRR
#NTO $SCRR%CRR#D& SCRR%CRRNME'.
(R#TE " ) SCRR%CRR#D& SCRR%CRRNME.
ENDSELECT.
8/18/2019 0.3 - Select e Fluxo Do Programa
http://slidepdf.com/reader/full/03-select-e-fluxo-do-programa 8/24
Cláusula !"E#E
A cl5usula @,9, é utili"ada no SAP SQL para restringir osregistros ue ser!o processados dentro de um S,L,7T$
A =orma de uma cl5usula @,9, é+@,9, -campo. -operador. -alorcampo.$
7l5usulas @,9, podem ter mais de um parCmetro/basta usar os operadores A8#/ O9 e 8OT$
SELECT CRR#D
CRRNME
FROM SCRR
#NTO $SCRR%CRR#D&
SCRR%CRRNME'
(*ERE CRR#D + ,L*-.
(R#TE " ) SCRR%CRR#D& SCRR%CRRNME.
ENDSELECT.
8/18/2019 0.3 - Select e Fluxo Do Programa
http://slidepdf.com/reader/full/03-select-e-fluxo-do-programa 9/24
S$%S&'#C
SD>S'B97 é uma ari5el de sistema ue recebe o c6digo deretorno uando algo é executado dentro do SAP$
?sso também ale para instru%&es SQL/ por esse motiorecomenda>se =a"er a leitura do SD>S'B97 ap6s as instru%&esSQL para determinar se algum registro =oi lido$
Obs$+ O alor de retorno ue indica sucesso no SD>S'B97 éE ("ero)/ ualuer outro alor signi=ica algum erro
ou condi%!o de parada$Para o S,L,7T/ o alor indica ue nen4umregistro =ora encontrado$
8/18/2019 0.3 - Select e Fluxo Do Programa
http://slidepdf.com/reader/full/03-select-e-fluxo-do-programa 10/24
I(T) C)##ESP)(*I(+ FIEL*S
A cl5usula ?8TO 7O99,SPO8#?8G F?,L#S =a" com ue oscampos selecionados seam inseridos na 5rea de trabal4o
(1or2area) em campos ue ten4am exatamente o mesmo nome$?sso é muito *til para economi"ar trabal4o de digita%!o e n!oimplica em perda de per=ormance$
SELECT CRR#D
CRRNME
FROM SCRR
#NTO CORRESOND#N/ F#ELDS OF SCRR
(*ERE CRR#D + ,L*-.
(R#TE " ) SFL#/*T%CRR#D& SFL#/*T%CONN#D.
ENDSELECT.
8/18/2019 0.3 - Select e Fluxo Do Programa
http://slidepdf.com/reader/full/03-select-e-fluxo-do-programa 11/24
Introdução – Fluxo do Programa
O =luxo do programa trata da ordem deexecu%!o do c6digo e isso enoledecis&es/ la%os e seus operadores$
O ABAP tem todos os controles de =luxonecess5rios para o desenoledor/ seapara tomada de decis!o ou para
execu%!o de loop$
,sta apresenta%!o tratar5 dos controlesde =luxo de programa mais b5sicos$
8/18/2019 0.3 - Select e Fluxo Do Programa
http://slidepdf.com/reader/full/03-select-e-fluxo-do-programa 12/24
instrução IF
A instru%!o ?F é a mais b5sica dentro do ABAP/ basicamente elasere para determinar o ue ser5 executado para uma dada
condi%!o$ Todo ?F dee terminar com ,8#?F$,LS, sere para executar um c6digo caso as condi%&es
do ?F n!o =orem atendidas$,LS,?F é ao mesmo tempo um ,LS, e um ?F e
sere para anin4ar um noo ?F sem a necessidadede inserir o ,8#?F$
? -H IJ
,ntrada
da?dade (?)
0Kenor de
?dade3
0Kaioridade7iil3
? .H I
0KaioridadeLegal3
S
8
S
8
#F # <+ 01.
(R#TE ,Menor 2e #2a2e-.
ELSE#F # >+ 30.
(R#TE ,Maiori2a2e Ci4il-.
ELSE.
(R#TE ,Maiori2a2e Le5al-.
END#F.
8/18/2019 0.3 - Select e Fluxo Do Programa
http://slidepdf.com/reader/full/03-select-e-fluxo-do-programa 13/24
Express,es L-gicas
,xpress&es L6gicas s!o as condi%&es testadas pelo ?F ue usam+
OP,9A#O9,S 9,LA7?O8A?S M compara%&es$
OP,9A#O9,S LNG?7OS M liga%!o entre as express&es$
OP,9A#O9,S #, 7OKPA9AO #, ST9?8GS M operadoresespeciais usados em campos tipo 7 e String$
8/18/2019 0.3 - Select e Fluxo Do Programa
http://slidepdf.com/reader/full/03-select-e-fluxo-do-programa 14/24
)peradores #elacionais
7ompara%!o Sintaxe?gual a H/ ,Q
#i=erente de - ./ .-/ 8,
Kaior ue ./ GT
Kaior ou igual a . H/ H ./ G,
Kenor ue -/ LT
Kenor ou igual a -H/ H-/ L,
,xistem também os operadores ?8/ B,T@,,8 e ?S ?8?T?AL+?8 identi=ica se o alor pertence a uma tabela de sele%!o$
B,T@,,8 identi=ica se o alor est5 entre um m<nimo e um m5ximo$
?S ?8?T?AL sere para comparar uma ari5el com o alor inicial$
8/18/2019 0.3 - Select e Fluxo Do Programa
http://slidepdf.com/reader/full/03-select-e-fluxo-do-programa 15/24
)peradores L-gicos
A 4ieraruia dos operadores l6gicos é 8OT/ A8# e O9$
Parnteses podem ser usados para agrupar express&es epara mudar a 4ieraruia de aalia%!o$
8OT A8# O9
8/18/2019 0.3 - Select e Fluxo Do Programa
http://slidepdf.com/reader/full/03-select-e-fluxo-do-programa 16/24
#ecomendaç,es sobre
operadores l-gicos
A recomenda%!o primordial é deixar as express&es
o mais simples poss<el/ a partir dessa recomenda%!o temos+
3 'sar l6gica positia/ ou sea eitar o 8OT uando poss<el$
3 ,itar também a combina%!o de express&es com A8#/ O9 e 8OTse poss<el$
8/18/2019 0.3 - Select e Fluxo Do Programa
http://slidepdf.com/reader/full/03-select-e-fluxo-do-programa 17/24
)peradores de comparação de Strings
Operadores de compara%!o de Strings s6 podem ser utili"adosem compara%&es de Strings e partes de Strings$
0;3 indica um conunto de uaisuer caracteres/ 0R3 indicacaracteres *nicos$ 'se 03 para o ABAP entender
os caracteres 0;3 e 0R3 literalmente$
7ompara%!o Sintaxe7ontém somente
7ontém ualuer
7ontém string
7ontém padr!o7ontém n!o apenas
8!o contém ualuer
8!o contém string
8!o contém padr!o
7O
7A
7S
7P78
8A
8S
8P
8/18/2019 0.3 - Select e Fluxo Do Programa
http://slidepdf.com/reader/full/03-select-e-fluxo-do-programa 18/24
instrução CSE
A instru%!o 7AS, é utili"ada para distinguir op%&es mutuamenteexclusias$ O 7AS, lida com a possibilidade de uma ari5elassumir um de 5rios alores con4ecidos$
@,8 OT,9S processa instru%&es uando nen4umdos alores das cl5usulas @,8 =oi contemplado$
DT (6C#DDE$37' T8E C.
<...>
CSE (6C#DDE.
(*EN ,S9O :LO-.
(R#TE ,ESCOL*E: S9O :LO-.
(*EN ,R#O DE ;NE#RO-.
(R#TE ,ESCOL*E: R#O DE ;NE#RO-.
(*EN OT*ERS.
(R#TE ,ESCOL*E: O:TR C#DDE-.
ENDCSE.
8/18/2019 0.3 - Select e Fluxo Do Programa
http://slidepdf.com/reader/full/03-select-e-fluxo-do-programa 19/24
instrução *)
A instru%!o #O é um 0loop3 (la%o) ue executa um bloco de c6digoincondicionalmente$
O =ormato #O -n. T?K,S é necess5rio para eitarue o 0loop3 sea in=inito$Alternatiamente o #O pode ser interrompido
pelas instru%&es ,?T/ STOP ou 9,U,7T$A ari5el de sistema SD>?8#, indica o passo atual do 0loop3$
DO.
(R#TE ,LOO #NF#N#TO-.
ENDDO.
DT (6LOO T8E # L:E =.
DO (6LOO T#MES.
(R#TE ") ,SSO-& S8%#NDE.
ENDDO.
8/18/2019 0.3 - Select e Fluxo Do Programa
http://slidepdf.com/reader/full/03-select-e-fluxo-do-programa 20/24
.Loops/ anin0ados
C?D#/O"
DO 3 T#MES.
(R#TE ") S8%#NDE.
DO @ T#MES.
(R#TE " ) , ,& S8%#NDE.
ENDDO.
ENDDO.
A sa<da seria+
I
I
V
I
V
8/18/2019 0.3 - Select e Fluxo Do Programa
http://slidepdf.com/reader/full/03-select-e-fluxo-do-programa 21/24
instrução )( C"(+E )F
O8 7A8G, OF é usado dentro de um 0loop3 para determinar seum determinado alor =oi modi=icado em rela%!o ao passo
anterior dentro do mesmo 0loop3$
8a primeira passagem o retorno é sempre T9',$: poss<el usar o conector O9 para O8 7A8G, OF$
,8#O8 indica o =inal da instru%!o$
SELECT A FROM SFL#/*T.
ON C*N/E OF SFL#/*T%CONN#D.
<...>
ENDON.
ENDSELECT.
8/18/2019 0.3 - Select e Fluxo Do Programa
http://slidepdf.com/reader/full/03-select-e-fluxo-do-programa 22/24
instrução C"EC1
O 7,7W testa uma express!o l6gica$Basicamente ele é um ?F sem ,8#?F/ ou sea/ caso a express!o sea
FALS, o c6digo abaixo do 7,7W n!o ser5 executado$
,xistem trs situa%&es poss<eis com o 7,7Wcaso a express!o retorne FALS,+I M #entro de um 0loop3 M o 0loop3 é interrompido$
M Fora de um 0loop3 e dentro de uma sub>rotina M a sub>rotina é terminada$V M Fora de um 0loop3 e de uma sub>rotina M o programa é terminado$
DO 07 T#MES.
C*ECB S8%#NDE + =.
(R#TE ") S8%#NDE.
ENDDO.
Se SD>?8#, H o0loop3 é interrompido$
8/18/2019 0.3 - Select e Fluxo Do Programa
http://slidepdf.com/reader/full/03-select-e-fluxo-do-programa 23/24
instrução E2IT
A instru%!o ,?T termina um 0loop3/ subrotina ou programa$
#F S8%S:!RC <> 7.
E#T.
END#F.
8/18/2019 0.3 - Select e Fluxo Do Programa
http://slidepdf.com/reader/full/03-select-e-fluxo-do-programa 24/24
instrução C)(TI(&E
A instru%!o 7O8T?8', é sempre usada dentro de um 0loop3/ essa instru%!oretorna o controle para o topo da instru%!o de 0loop3 incondicionalmente
Se o 0loop3 estier no*ltimo passo ele é terminado$
DO 07 T#MES.
#F S8%#NDE >+ =.
CONT#N:E.
END#F.
(R#TE ") S8%#NDE.
ENDDO.