Quelle est la différence entre la table interne et une zone de travail et comment fonctionnent-elles?
La table interne est une structure de mémoire temporaire à deux dimensions similaire à la table de base de données. Nous pouvons stocker plusieurs enregistrements dans la table interne et également en utilisant des pointeurs d’enregistrement, nous pouvons effectuer des activités telles que la lecture, l’ajout, la suppression, la modification, etc.
Alors que work area est une variable déclarée avec le type d’une table interne ou d’une table de base de données. Il ne peut stocker qu’un seul enregistrement à la fois. C’est comme une déclaration de structure en C. Vous pouvezreférer des colonnes individuelles dans la zone de travail avec les noms.
Si vous déclarez une table interne avec la clause « AVEC LIGNE D’EN-TÊTE », la table interne elle-même agit comme une zone de travail. Par exemple, votre ITAB est une zone de travail et ITAB est la table interne.
Si vous connaissez ORACLE PLSQL, la zone de travail est similaire à %ROW_TYPE et interne est similaire au TYPE de TABLE.
Plus d’informations sur l’utilisation de la table interne avec et sans ligne de tête:
Lorsque vous créez un objet table interne, vous pouvez égalementdéclarer une ligne d’en-tête portant le même nom. Vous pouvez utiliser la ligne d’en-tête asa zone de travail lorsque vous traitez la table interne. Les instructions ABAP que vous utilisez avec les tables internes ont des formulaires courts que vous pouvez utiliser si votre table interne a une ligne d’en-tête. Ces instructions supposent automatiquementla ligne d’en-tête comme zone de travail implicite. Le tableau suivant montre les états que vous devez utiliser pour les tables internes sans ligne d’en-tête et les instructions équivalentes que vous pouvez utiliser pour les tables internes avec une ligne d’en-tête:
Opérations sans ligne d’en-tête
Opérations avec ligne d’en-tête
Opérations pour tous les types de table
INSÉRER < wa > DANS LA TABLE < itab >.
INSÉRER LE TABLEAU ITAB.
COLLECTE < wa > DANS < itab >.
RECUEILLIR < itab >.
TABLEAU DE LECTURE < itab >… EN < wa >.
TABLEAU DE LECTURE < itab >…
MODIFIER LA TABLE < itab > DE < wa >…
MODIFIER LA TABLE < itab >…
MODIFIER < itab > DE < wa >…OÙ …
MODIFIER < itab >… OÙ …
SUPPRIMER LA TABLE < itab > DE < wa >.
SUPPRIMER LA TABLE < itab >.
BOUCLE À ITAB DANS < wa >…
BOUCLE À ITAB…
Opérations pour les tables d’index
AJOUTENT < wa > À < itab >.
AJOUTER < itab >.
INSÉRER < wa > DANS < itab >…
INSÉRER < itab >…
MODIFIER < itab > DE < wa >…
MODIFIER < itab >…
L’utilisation de la ligne d’en-tête comme zone de travail signifie que vous pouvez utiliser des instructions plus courtes; cependant, ils ne sont pas nécessairement plus faciles à comprendre, car vous ne pouvez pas reconnaître immédiatement l’origine et la cible de la mission.De plus, le fait que la table et sa ligne d’en-tête portent le même nom peut provoquer une confusion dans les opérations avec des tables internes entières. Pour éviter toute confusion, vous devez utiliser des tables internes avec des zones de travail nommées différemment.
L’exemple suivant montre deux programmes avec la même fonction. L’un utilise une ligne d’en-tête, l’autre non.
Avec ligne d’en-tête:
TYPES: DÉBUT DE LIGNE,
COL1 TYPE I,
COL2 TYPE I,
FIN DE LIGNE.
DONNÉES ITAB TYPE TABLE HACHÉE DE LIGNE AVEC CLÉ UNIQUE
COL1
AVEC LIGNE D’EN-TÊTE.
FAITES 4 FOIS.
ITAB-COL1 = SY-INDEX.
ITAB-COL2 = SY-INDEX**2.
INSÉRER LE TABLEAU ITAB.
ENDDO.
ITAB-COL1 =2.
LIRE LA TABLE ITAB À PARTIR D’ITAB.
ITAB-COL2 = 100.
MODIFIER LA TABLE ITAB.
ITAB-COL1 =4.
SUPPRIMER LA TABLE ITAB.
BOUCLE À ITAB.
ÉCRIVEZ: /ITAB-COL1, ITAB-COL2.
BOUCLE D’EXTRÉMITÉ.
Sans ligne d’en-tête:
TYPES: DÉBUT DE LIGNE,
COL1 TYPE I,
COL2 TYPE I,
FIN DE LIGNE.
DONNÉES: TABLE HACHÉE DE TYPE ITAB DE LA LIGNE AVEC LA CLÉ UNIQUE COL1, WA COMME LA LIGNE D’ITAB.
FAITES 4 FOIS.
WA-COL1 = SY-INDEX.
WA-COL2 = SY-INDEX**2.
INSÉRER WA DANS LE TABLEAU ITAB.
ENDDO.
WA-COL1=2.
LIRE LA TABLE ITAB DE WA À WA.
WA-COL2 = 100.
MODIFIER LA TABLE ITAB À PARTIR DE WA.
WA-COL1=4.
SUPPRIMER LA TABLE ITAB DE WA.
BOUCLE À ITAB DANS WA.
ÉCRIVEZ: /WA-COL1, WA-COL2.
BOUCLE D’EXTRÉMITÉ.
La liste, dans les deux cas, apparaît comme suit:
1 1
2 100
3 9
Les instructions du programme qui n’utilisent pas de ligne de tête sont plus faciles à comprendre. Comme mesure supplémentaire, vous pouvez avoir une zone de travail supplémentaire juste pour spécifier la clé de la table interne, mais à laquelle aucune autre valeur de la table n’est affectée.
Lire aussi
Exemple d’un Programme de ListBox
Liste de livres ABAP
Certification ABAP/4, Programmation, Smartforms, Sapscripts et Livres de Programmation Orientée Objet
Formulaires Intelligents
SAP Smartforms
Menu ABAP:
ABAP Example Hintsand Tips
Return to Index:-
SAP ABAP/4 Programming,Basis Administration, Configuration Hints and Tips