"
Apoiado por

SELECT comparando 2 campos da própria tabela

Esta dica é simples e rápida mas aposto 200$482 em como poucos a sabem.

Como usar campos da própria tabela que está a ser seleccionada para filtrar os resultados da selecção:


DATA: cnt TYPE i.

SELECT COUNT( * )
       FROM kna1
       INTO cnt
       WHERE telf1 = kna1~telfx.

WRITE cnt.

Neste SELECT obtemos todos os clientes cujo fax é igual ao telefone.

Sabias? Já tinhas feito isto?

Obrigado Rui Pina pela dica.

Obrigado a Kendra pela foto.

O Abapinho saúda-vos.

6 comentários a “SELECT comparando 2 campos da própria tabela”

  1. Ricardo Franco Diz:

    Muito bom!

    Com 8 anos de ABAP nunca vi isso e perguntei pra galera e ninguém tinha visto.

    Abraço.

    Eterno aprendiz!

  2. Nuno Godinho Diz:

    Pois e eu também não! Mas já tinha precisado várias vezes e até há pouco tempo não sabia que dava.

  3. Filipe Diz:

    Olá,

    Demais, obrigado pela partilha…

  4. Felipe Diz:

    Bacana! Me poupou algum esforço buscando fluxo de documentos na tabela VBFA!

    Como sempre, uma boa dica!
    Obrigado!

  5. Sérgio Serra Diz:

    Já usei bastantes vezes. É bom explorar as outras funções como o MAX, MIN, AVG, SUM, como está aqui: http://help.sap.com/abapdocu_702/en/abapselect_aggregate.htm

    O MAX é bom para programaticamente calcular o próximo número de um campo, por exemplo, para inserts.

    Alternativamente, se já tivermos uma tabela interna, a melhor forma de obter o count com condições é a seguinte:

    it_tab -> tabela interna
    it_tab2 -> cópia dessa tabela.
    lv_count -> número de registos
    VALOR -> condição do que queremos obter

    it_tab2 = it_tab.
    DELETE it_tab2 WHERE NOT campo = ‘VALOR’.
    lv_count = LINES( it_tab2 ).

  6. Adriano Ferrari Diz:

    Ótima dica.
    Não havia conhecimento deste comando…
    Apenas um comentário com relação ao comentário do Sergio Serra….. Por favor, select MAX para definir id de tabela não…… já vi diversos programas fazendo isso e sempre da pau… principalmente quando muitos usuários utilizam a mesma transação. Usem Objetos de Numeração (transação SNUM)….. apenas tenham atenção na hora de transportar a request, pois os intervalos não são inseridos na request automáticamente, sendo necessária inclusão manual em request customizing.

Deixe um comentário


Acerca do Abapinho
O Abapinho é suportado pelo WordPress
Artigos (RSS) e Comentários (RSS).