Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Nouveau Candidat au Club
    suppression d'une ligne de table et changer le champ Clé après la suppression
    Bonjour Je suis débutant en abap ,j'ai un problème j'ai une table Empl et je l'ai remplis elle possède comme champs: Num_empl que j’incrémente automatiquement et les champ Nom,prénom ,adresse
    Maintenant mon problème quand je veux supprimer une ligne de cette table je veux modifier le champ num_emp après la suppression de la ligne.
    par exemple si j'ai 05 employés dans la table et je supprime
    le 03 ème employé je veux remettre le Num_empl qui est égale a 4 avant la suppression à 3 et celui du 5 à 4.
    j'ai un bouton Delete voici Le code: ah j'ai oublié de mentionner que j’utilise la table de contrôle (TC200)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    MODULE delete_0200 INPUT.
    
     IF SY-UCOMM = 'FCT_DELETE'.
       READ TABLE Int_ZEMPL INTO Wa_ZEMPL INDEX TC200-CURRENT_LINE.
               if X EQ 'X'.
                     DELETE FROM ZEMPL WHERE NUM_EMPL = Wa_ZEMPL-NUM_EMPL.
           
              ENDIF.
    
       ENDIF.
    ENDMODULE.
    Merci de votre aide

  2. #2
    Membre éprouvé
    Bonjour,

    En toute logique, il suffit de boucler sur la table à partir de l'indice de table supprimer et de décrémenter la valeur du champ.
    En gros, ça donnerait un truc comme ça à peu près.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    module delete_0200 input.
       if SY-UCOMM = 'FCT_DELETE'.
           read table Int_ZEMPL into Wa_ZEMPL index TC200-CURRENT_LINE.  "L'utilisation de structure est déconseillé, privilégier les field-symbols ou les références
               if X eq 'X'.
                     delete from ZEMPL where NUM_EMPL = Wa_ZEMPL-NUM_EMPL.
    
                     loop at Int_ZEMPL from TC200-CURRENT_LINE reference into data(go_empl).
                     
                         go_empl->Num_empl -= 1.
    
                     endloop.
           
              endif.
    
       endif.
    endmodule.
    Boaf...signature <= ça suffira ça ??

  3. #3
    Nouveau Candidat au Club
    Bonjour Celdron
    je suis désolé pour le retard car j’étais malade.
    Merci beaucoup pour ton aide mais je vais essayer Ton conseille pour Field Symbole malgré que je n'ai pas de connaissance mais je vais voir les tutos
    Merci.