"
Supported by

INSERT dbtab ACCEPTING DUPLICATE KEYS

When you try to insert a record with a key which already exists in the table the program dumps. This, in some cases, is not desirable because, even if you don’t care, it forces you to check if the keys already exist before trying to insert then.

But ABAP has a solution for these situations:



INSERT dbtab FROM TABLE itab [ACCEPTING DUPLICATE KEYS].

Don’t worry because this will not violate the first law of thermodynamics: the duplicate records are not inserted. The only difference is that the program will not dump.

Greetings from Abapinho.

3 comentários a “INSERT dbtab ACCEPTING DUPLICATE KEYS”

  1. Felipe Diz:

    Geralmente, pra não receber o dump tenho o costume de usar MODIFY, assim se o registro não existe, o sistema inclui.

    Ou, melhor ainda, tratar a exceção CX_SY_OPEN_SQL_DB…

    Não conhecia o ACCEPTING DUPLICATE KEYS. Esse nome é meio estranho pois na verdade ele não aceita chaves duplicadas, como vc mesmo disse, é impossível.. ele só não vai gerar dump. Bacana.. mais uma opção!

    Valeu!

  2. Nuno Godinho Diz:

    Com o MODIFY corres o risco de alterar registos já existentes. Desta forma se já existirem não são alterados. Apenas os inexistentes são adicionados. Penso ser a única diferença. Será útil para casos muito específicos mas é bom saber que existe.

  3. M.Alves Diz:

    O problema de tratar a exceção CX_SY_OPEN_SQL_DB é que o comando insert é interrompido no ponto que a chave duplicada ocorrer (ou seja, a exceção ocorrer), ignorando os registros restantes. E, também, não é possível determinar o número de registros inseridos via SY-DBCNT.

    Utilizando a extensão ACCEPTING DUPLICATE KEYS, todos os registros com chave não duplicada serão inseridos e o número de registros inseridos é atribuído à SY-DBCNT.

    Eu utilizo essa extensão já faz um bom tempo, permitindo informar ao usuário se todos os registros foram inseridos (sy-subrc = 0) ou se somente um determinado número de registros (sy-dbcnt) foram incluídos (sy-subrc = 4).

    Portanto, na minha opinião, essa extensão é mais versátil do que tratar a exceção.

Deixe um comentário


About Abapinho
Abapinho runs on WordPress
Articles (RSS) e Comments (RSS).