Open SQL est un sous-langage de l'ABAP permettant d'intéragir avec la base de données. Il reprend la syntaxe SQL classique mais comprend quelques particularités :
SELECT ... FOR ALL ENTRIES
(Rappel : toujours vérifier que la table sur laquelle on boucle n'est pas vide sous peine de ramasser en jointure toutes les entrées de la table requêtée…)MODIFY
doit être employée au sein d'une boucle sur la table interne correspondante à moins de spécifier explicitement l'index :* J'utilise le table header ici, mais ça marche pareil avec une work area explicite TABLES dbtab. LOOP AT dbtab. dbtab-k2 = val2. MODIFY dbtab. ENDLOOP. * Ou bien : READ TABLE dbtab into wa WITH KEY k1 = val1. wa-k2 = val2. MODIFY dbtab FROM wa INDEX sy-tabix. " Eh ouais, le READ TABLE set le sy-tabix :)
SELECT
INSERT
: Dump en cas de doublon.UPDATE
: MODIFY
: Insert les lignes nouvelles, update les lignes existantes (d'après les clés).