Tipos de Select em ABAP - 1º

Ola, como vão ?

Iremos iniciar hoje mais uma serie de post, desta vez com alguns tipos de select e suas funções e particularidades.

Os que veremos hoje são os seguintes: SELECT, SELECT SINGLE e SELECT/END SELECT.

Vamos as particularidades de cada um e exemplos :

SELECT : Utilizado quando é necessário que sejam retornados todos os registros encontrados, todos os registros de campos em específico ou mesmo todos os registros referente a parâmetros informados na clausula Where. 

Sintaxe : SELECT "*(all)/campos
                      FROM "tabela" INTO TABLE "tabela_interna".
                                                INTO CORRESPONDING FIELDS OF TABLE "tabela_interna".

Exemplo :


  - 1º Exemplo fizemos o select ALL de todos os registros da tabela SPFLI e colocamos dentro da tabela interna IT_SPFLI.


  - 2º Exemplo fizemos o select dos campos CARRID e CONNID da tabela SPFLI e colocamos os registros encontrados nos campos em questão dentro da tabela interna nos campos correspondentes.
Obs; Se for colocado apenas INTO TABLE ira ser preenchido os primeiros campos da internal table, ou seja incorretamente MANDT = CARRID e CARRID = CONNID.


SELECT SINGLE : Utilizado quando é necessário que seja retornado apenas um registro encontrado, um registros de campos em específico ou mesmo um registros referente a parâmetros informados na clausula Where. 

Sintaxe : SELECT SINGLE "*(all)/campos
                      FROM "tabela" INTO "work_area".
                                                INTO CORRESPONDING FIELDS OF "work_area".

Exemplo :


  - 1º Exemplo Exemplo fizemos o select ALL de um único registro da tabela SPFLI e colocamos dentro da work area WA_SPFLI.


  - 2º Exemplo fizemos o select dos campos CARRID e CONNID da tabela SPFLI e colocamos o registro encontrado nos campos em questão dentro da work area nos campos correspondentes.
Obs; Como acima, se for colocado apenas INTO ira ser preenchido os primeiros campos da work area, ou seja incorretamente MANDT = CARRID e CARRID = CONNID.


SELECT/ENDSELECT : Utilizado quando é necessário o retorno de registros para dentro de uma work area, porem como sabemos a work area conta apenas com uma unica linha, então o mesmo conta com um LOOP dentro de sua estrutura, por isso do ENDSELECT que sera nosso ENDLOOP.
Obs; Deve ser usado sempre com SY-SUBRC.

Sintaxe : SELECT "*(all)/campos
                      FROM "tabela" INTO "work_area".
               ENDSELECT.

Exemplo :


  - 1º Exemplo fizemos o select na tabela ZCADCOL para dentro da work area WA_ZCAD, porem a mesma não contem registros, então retornara apenas uma mensagem de erro descrito 'Nenhum registro encontrado', caso não tivessemos utilizado SY-SUBRC o programa nem mesmo iria iniciar.

  - 2º Exemplo Fizemos o select na tabela SPFLI para dentro da work area WA_SPFLI, como sabemos a mesma contem registros, porem como a work area conta com uma unica linha, caso fossemos utilizar o comando write apos o SELECT ou mesmo o SELECT SINGLE, conseguiríamos printar apenas um registro, como o ENDSELECT é utilizado como um ENDLOOP colocamos o write dentro de sua estrutura para que fosse melhor visto o funcionamento do mesmo, onde o write foi feito varias vezes com os campos CARRID e CONNID.


Por este post é só....

Espero que tenham conseguido acompanhar e entender cada passo que foi passado acima.

Continuaremos esta serie de posts sobre tipos de select

Qualquer duvida, sugestão ou mesmo dicas de outras maneiras de se fazer, por favor deixem no campo de comentários abaixo.

Até a proxima !!!

Comentários

Postagens mais visitadas deste blog

Strings e seus comandos - REPLACE

Strings e seus comandos - FIND