OPERADORES LÓGICOS E RELACIONAIS UDERSON LUIS Sumario: Este artigo descreve a manipulação dos dados de operadores lógicos relacionais, descrevendo a utilização destes operadores. Sobre o Autor: Uderson Luis Fermino, formado em Ciências da Computação pela Faculdade de Pesquisa e Ensino IPEP, atua no mercado a 2 anos como desenvolvedor Java nas plataformas: (J2SE, J2EE e J2ME), com participação em grandes projetos envolvendo estas tecnologias. É consultor ABAP com experiências em HIERARQUICK), REPORT, IDOC, ALV ALE, (GRID, ONLINE, LIST, BLOCK, SAPSCRIPT, OO, TREE, SMARTFORM, NETWEAVER (JCO, BSP, WebDynpro). Email: [email protected] “tudo posso naquele que me fortalece” (Filipenses 4:13). Página 1 OPERADORES LÓGICOS E RELACIONAIS UDERSON LUIS Operadores Condicionais Lógicos e Relacionais Operador condicional e relacional, como o próprio nome é indutivo, servem para resolução de operações lógicas, está podem ser IF, IFELSE, WHERE . Estes operadores servem para realizar verificações de expressões regulares e lógicas. Será neste post será descritos os operadores condicionai disponíveis no ABAP. CA – Contains ANY – Contém Qualquer Este operador condicional realiza verificações múltiplas em condições lógicas, muitas das vezes é necessário verificar se uma condição contém múltiplos valores, como por exemplo, verificar se a literal “ABAP NO ULTIMO” contém literais Numéricos “0123456789”, este operador condicional não usa expressão regular, pois ele procura as condições independente da ordem. Exemplo 1 IF ‘ABAP NO ULTIMO’ CA “0123456789”. WRITE ‘ESTA LITERAL CONTÉM LITERAIS NUMERICOS’. ELSE. WRITE ‘ESTA LITERAL NÃO CONTÉM LITERAIS NUMERICOS’. ENDIF. Neste exemplo é verificado se a literal ‘ABAP NO ULTIMO’ literais numéricos, veja a tabela de exemplo: EXP<1> ‘ABAP NO ULTIMO’ ‘ABAP NO ULT3IMO’ ‘ABAP N8O ULTIMO’ CA CA CA EXP<2> RESULTADO “0123456789”. “0123456789”. “0123456789”. FALSE TRUE TRUE contém NA – Not Any - Não Contém Este operador condicional é o inverso do operador CA, pois ele nega tudo o que o CA aprova, por exemplo, enquanto o CA aprova que ‘ABAP NO ULT3IMO’ CA “0123456789”, onde existe um literal numérico especificado em “EXP<2>” na “EXP<1>” o NA reprova pois é como se traduzisse para: ‘ABAP NO ULT3IMO’ não contém “0123456789” o retorno será false, pois a literal contém literais numéricos. “tudo posso naquele que me fortalece” (Filipenses 4:13). Página 2 OPERADORES LÓGICOS E RELACIONAIS UDERSON LUIS Uma alternativa é utilizar o CA com o comando NOT. IF NOT exp<1> CA exp<2>, aqui negamos tudo que o operador CA faz, é negado ficando: FALSE = TRUE TRUE = FALSE EXP<1> ‘ABAP NO ULTIMO’ N A N A N A ‘ABAP NO ULT3IMO’ ‘ABAP N8O ULTIMO’ EXP<1> RESULTADO “012345678 9”. “012345678 9”. “012345678 9”. TRUE FALSE FALSE CO – Contains Only – Contém Somente Este operador Condicional realiza verificações de uma expressão, verificando se a expressão contém apenas/somente a expressão verificada. Como por exemplo, verificar se a expressão EXP<1> que contém a literal “ABAP NO ULTIMO” contém a penas as literais “ABAP NO ULTIMO” Exemplo 1 IF ‘ABAP NO ULTIMO’ CA ‘ABAP NO ULTIMO’ ’. WRITE ‘ESTA LITERAL CONTÉM LITERAIS’. ELSE. WRITE ‘ESTA LITERAL NÃO CONTÉM LITERAIS’. ENDIF. Neste exemplo é verificado se a literal ‘ABAP NO ULTIMO’ contém somente os literais ‘ABAP NO ULTIMO’, veja a tabela de exemplo: EXP<1> ‘ABAP NO ULTIMO’ ‘ABAP NO ULTIMO’ ‘ABAP NO ULTIMO’ CA CA CA EXP<2> RESULTADO ‘ABAP NO ULTIMO’ ABAP ULTIMO TRUE FALSE FALSE “tudo posso naquele que me fortalece” (Filipenses 4:13). Página 3 OPERADORES LÓGICOS E RELACIONAIS UDERSON LUIS CN – Contains Not - Não Contém Este operador condicional é o inverso do operador CO, pois ele nega tudo o que o CA aprova, por exemplo, enquanto o CO aprova que ‘ABAP NO ULTIMO’ CO ‘ABAP NO ULTIMO’, onde existe somente o literal especificado em “EXP<2>” na “EXP<1>” o CN: ‘ABAP NO ULTIMO’ não contém somente ‘ABAP NO ULTIMO’ , o retorno será true. Uma alternativa é utilizar o CO com o comando NOT. IF NOT exp<1> CO exp<2>, aqui negamos tudo que o operador CO aprova, é negado ficando: FALSE = TRUE TRUE = FALSE EXP<1> EXP<1> RESULTADO ‘ABAP NO ULTIMO’ ‘ABAP NO ULTIMO’ ‘ABAP N8O ULTIMO’ “0123456789”. “0123456789”. “0123456789”. TRUE FALSE FALSE CN CN CS – Contains String – Contém String Este operador como o próprio nome diz, serve para verificar se uma expressão contém uma determinada string, lembrando que uma string pode ser parte ou toda a literal verificada. Por exemplo a literal “ABAP NO ULTIMO” contém a string “ABAP”, “NO”, “ULTIMO”, “U, “UL”, “TIM”, “TIMO”, porém não contém está literais por exemplo: “ABAPE”, “NO A” “ULTEMO”. Exemplo: IF ‘ABAP NO ULTIMO’ CS ‘ABAP’. WRITE ‘ESTA LITERAL CONTÉM ‘ABAP’’. ELSE. WRITE ‘ESTA LITERAL NÃO CONTÉM ABAP’. ENDIF. “tudo posso naquele que me fortalece” (Filipenses 4:13). Página 4 OPERADORES LÓGICOS E RELACIONAIS UDERSON LUIS A ordem que a string está não importa, o importante é se existe ou não a string na literal. NS – Not String – Não contém String Conforme o operador condicional NA, é o operador NS, onde é negado tudo que for verdadeiro em CS e aprovado tudo que for negado em CS. CP – Contains No Pattner Este operador condicional é um operador que usa expressão regulares para resolver as condições lógicas, é muito interessante, pois é possível montar uma expressão lógica para resolver problemas complexos. Este operador se entrada mais para construção de compiladores, analisadores sintáticos e regulares. Como funciona: * + = = 0 (zero) ou mais caractere 1 (um) ou mais caractere Exemplo: listar um diretório e verificar se o arquivo termina com “txt”, para isso basta usarmos a expressão regular “*.txt” significando que pode existir zero ou mais caractere mais dever terminar com “.txt”, não importando o que esta antes. Exemplo: DATA: VALOR TYPE C LENGTH 255 VALUE 'caracter.txt'. IF VALOR CP '*.txt'. WRITE: 'ESTE arquivo é valido'. ENDIF. Verificar se uma literal começa com “abap” e termina com “sap” usamos a expressão regular “abap*sap” o significado desta expressão regular é: Deve iniciar com a, que será procedido por b, que será procedido por a, que será procedido por p, que será procedido de qualquer coisa, que será procedido por s, que será procedido por a, que será procedido por p. Exemplo: “tudo posso naquele que me fortalece” (Filipenses 4:13). Página 5 OPERADORES LÓGICOS E RELACIONAIS UDERSON LUIS DATA: VALOR TYPE C LENGTH 255 VALUE 'Programação abap Sap'. IF VALOR CP 'abap*sap'. WRITE: 'ESTE arquivo é valido'. ENDIF. Este operador é limitado ele não aceita todas as expressões regulares que o abap aceita, mais da para realizar muitas condições complexas. Vejamos outro exemplo DATA: TEXTO TYPE STRING VALUE 'ABAP É UMA LINGUAGEM FACIL E AINDA TEM EXPRESSÃO REGULAR DIFICIL'. IF TEXTO CP 'ABAP*LINGUAGEM+*'. WRITE: 'Este texto contém as palavras REGULAR'. ENDIF. IF TEXTO CP “ABAP*LINGUAGEM+*” Aqui é feito a seguinte verificação: Dentro da variável Texto que contém “ABAP É UMA LINGUAGEM FACIL E AINDA TEM EXPRESSÃO REGULAR DIFICIL” se a variável inicial com as literais seqüências “A”, “B”, “A”, “P” após estás seqüência pode ter ou não (* zero ou mais) seqüências literais de qualquer coisa alfanumérico, e deve-se sucedido das seqüências literais “L” “I” “N” “G” “U” “A” “G” E” “M” tendo esta seqüência uma ou mais vezes podendo ter ou não seqüências literais (alfanuméricos) após está seqüência. Exemplos validos: ABAPLINGUAGEM ABAP DASDASDA LINGUAGEM ABAP DASDASDA LINGUAGEM LINGUAGEM ABAP DASDASDA LINGUAGEM LINGUAGEM TERTTSDFSDFS Básicos “tudo posso naquele que me fortalece” (Filipenses 4:13). Página 6 OPERADORES LÓGICOS E RELACIONAIS UDERSON LUIS EQ - Equal Como o próprio nome diz, serve para verificar se existe igualdade entre a expressão, e é equivalente ao operador “=”. Exemplo; ‘A’ EQ ‘B’ = false ‘A’ EQ ‘A’ = true Este operador é idêntico com o operador “=” Exemplo Abap: DATA: VALOR TYPE C LENGTH 255 VALUE '10/12/2000'. IF VALOR EQ '10/12/2000'. WRITE: 'Data valida'. ENDIF. NE – Not Equals - Não é igual Este operador com o próprio nome diz, serve para verificar se uma sentença é diferente, ao contrario de EQ que verifica se é igual, e é equivalente ao operador “<>”. Exemplo: ‘A’ NE ‘B‘ ‘A’ NE ‘A’ = = True False Exemplo ABAP. DATA: VALOR TYPE I VALUE '10'. IF VALOR NE 11. WRITE: 'Valor é diferente'. ENDIF. LT – Lower Than - Menor “tudo posso naquele que me fortalece” (Filipenses 4:13). Página 7 OPERADORES LÓGICOS E RELACIONAIS UDERSON LUIS Este operador serve para verificar se a expressão EXP<1> é menor do que a EXP<2>, e é equivalente ao operador “<” Exemplo: 10 11 LT LT 11 = True 10 = False Exemplo ABAP DATA: VALOR TYPE I VALUE '10'. IF VALOR LT 11. WRITE: 'Valor é menor'. ENDIF. GT – Greater Than – Maior Este operador serve para verificar se a expressão EXP<1> é maior do que a EXP<2>, e é equivalente ao operador “>” Exemplo: 11 10 GT GT 10 = True 11 = False Exemplo ABAP DATA: VALOR TYPE I VALUE '11'. IF VALOR GT 10. WRITE: 'Valor é maior'. ENDIF. LE – Lower Equal – Menor igual “tudo posso naquele que me fortalece” (Filipenses 4:13). Página 8 OPERADORES LÓGICOS E RELACIONAIS UDERSON LUIS Este operador serve para verificar se a expressão EXP<1> é menor ou igual ae a EXP<2>, e é equivalente ao operador “<=” Exemplo: 11 10 GT GT 10 = True 11 = False Exemplo ABAP DATA: VALOR TYPE I VALUE '11'. IF VALOR GT 10. WRITE: 'Valor é maior'. ENDIF. GE – Greater Equal – Maior igual Este operador serve para verificar se a expressão EXP<1> é maior ou igual a EXP<2>, e é equivalente ao operador “>=” Exemplo: 11 10 GT GT 10 = True 11 = False Exemplo ABAP DATA: VALOR TYPE I VALUE '11'. IF VALOR GT 10. “tudo posso naquele que me fortalece” (Filipenses 4:13). Página 9