a) D'abord je trie la table interne.
b) Ensuite je supprime les doublons, bon a savoir on conserve la premier ligne et donc je supprime toutes les lignes suivantes qui lui ressemble suivant la clé ou suivant les champs à comparer.
c) exemple :
Data :
gt_e1edl20_selected TYPE TABLE OF ty_idoc_lifex_e1edl20, gt_idoc_lifex_e1edl24 TYPE TABLE OF ty_idoc_lifex_e1edl24 WITH KEY docnum.
* je trie, sur la premier zone :
SORT gt_e1edl20_selected BY docnum.
* je supprime les doublons DELETE ADJACENT DUPLICATES FROM gt_e1edl20_selected.
* je trie sur deux zones la première et la dernière SORT gt_e1edl24_selected BY docnum sdata.
* je supprime en spécifiant sur quelles zones je veux comparer... DELETE ADJACENT DUPLICATES FROM gt_e1edl24_selected COMPARING docnum sdata.
a) supprimer l'enregistrement de la table interne que je lie :
DELETE nom_de_la_table INDEX num_index
c) exemple : astuce pour être certain d'être sur le bon index je sauvegarde l'index (lv_tabix) dans le cas ou je ferais d'autre traitement qui pourrait changer mon index...
LOOP AT t_table. DATA(lv_tabix) = sy-tabix. MOVE-CORRESPONDING t_table TO ls_document. READ TABLE lt_last_error INTO DATA(ls_last_error) WITH KEY docnum = ls_document-docnum BINARY SEARCH. IF ls_last_error-countr <> ls_document-countr. DELETE t_table INDEX lv_tabix. ENDIF. ENDLOOP.
a) supprimer l'enregistrement d'une table interne par une clé :
DELETE TABLE nom_de_la_table WITH TABLE KEY la_clé
c) exemple :
LOOP AT gt_idoc_lifex_e1edl20 ASSIGNING FIELD-SYMBOL(<fs_20>). IF <fs_20>-sdata-lifex IS INITIAL. DELETE TABLE gt_idoc_lifex_e1edl24 WITH TABLE KEY docnum = <fs_20>-docnum. DELETE TABLE gt_idoc_lifex_e1edl20 WITH TABLE KEY docnum = <fs_20>-docnum. ENDIF. ENDLOOP.
Pas si compliquez que cela...
Steeven