Εσωτερικός πίνακας SAP ABAP: Δημιουργία, ανάγνωση, συμπλήρωση, αντιγραφή & Διαγράφω

Πίνακας περιεχομένων:

Anonim

Τι είναι ένας εσωτερικός πίνακας;

Ο ΕΣΩΤΕΡΙΚΟΣ ΠΙΝΑΚΑΣ χρησιμοποιείται για τη λήψη δεδομένων από μια σταθερή δομή για δυναμική χρήση στο ABAP. Κάθε γραμμή στον εσωτερικό πίνακα έχει την ίδια δομή πεδίου. Η κύρια χρήση για εσωτερικούς πίνακες είναι για την αποθήκευση και τη μορφοποίηση δεδομένων από έναν πίνακα βάσεων δεδομένων μέσα σε ένα πρόγραμμα.

Σε αυτό το σεμινάριο θα μάθετε:

  • Τι είναι ένας εσωτερικός πίνακας;
  • Τι είναι ο χώρος εργασίας;
  • Διαφορά μεταξύ εσωτερικού τραπεζιού και χώρου εργασίας;
  • Τύποι εσωτερικών πινάκων
  • Δημιουργία εσωτερικών πινάκων
  • Συμπληρώνοντας εσωτερικούς πίνακες
  • Αντιγραφή εσωτερικών πινάκων
  • Εσωτερική ανάγνωση
  • Διαγραφή εσωτερικών πινάκων

Τι είναι ο χώρος εργασίας;

Οι περιοχές εργασίας είναι μεμονωμένες σειρές δεδομένων. Θα πρέπει να έχουν την ίδια μορφή με οποιονδήποτε από τους εσωτερικούς πίνακες. Χρησιμοποιείται για την επεξεργασία των δεδομένων σε έναν εσωτερικό πίνακα μία γραμμή κάθε φορά.

Διαφορά μεταξύ εσωτερικού τραπεζιού και χώρου εργασίας;

Μια εικόνα λέει χίλιες λέξεις :-)

Τύποι εσωτερικών πινάκων

Υπάρχουν δύο τύποι εσωτερικών πινάκων.

  1. Εσωτερικοί πίνακες με γραμμή HEADER
  2. Εσωτερικοί πίνακες χωρίς γραμμή HEADER.

Εσωτερικοί πίνακες με γραμμή κεφαλίδας

  • Εδώ το σύστημα δημιουργεί αυτόματα την περιοχή εργασίας.
  • Η περιοχή εργασίας έχει τον ίδιο τύπο δεδομένων με τον εσωτερικό πίνακα.
  • Αυτή η περιοχή εργασίας ονομάζεται γραμμή HEADER.
  • Είναι εδώ που έχουν πραγματοποιηθεί όλες οι αλλαγές ή οποιαδήποτε ενέργεια στο περιεχόμενο του πίνακα. Ως αποτέλεσμα αυτού, οι εγγραφές μπορούν να εισαχθούν απευθείας στον πίνακα ή να προσπελαστούν απευθείας από τον εσωτερικό πίνακα.

Εσωτερικοί πίνακες χωρίς γραμμή κεφαλίδας :

  • Εδώ δεν υπάρχει περιοχή εργασίας που να σχετίζεται με τον πίνακα.
  • Η περιοχή εργασίας πρέπει να προσδιορίζεται ρητά όταν πρέπει να έχουμε πρόσβαση σε αυτούς τους πίνακες.
  • Ως εκ τούτου, δεν είναι δυνατή η απευθείας πρόσβαση σε αυτούς τους πίνακες.

Δημιουργία εσωτερικών πινάκων

Υπάρχουν πολλοί τρόποι για να δημιουργήσετε έναν εσωτερικό πίνακα. Ας τα δούμε ένα προς ένα -
1. Χρησιμοποιώντας το Type Statement
Ας δημιουργήσουμε τώρα ένα εσωτερικό πίνακα itab χρησιμοποιώντας τη δήλωση TYPE.
Η σύνταξη είναι -

Τύποι: αρχή της γραμμής,στήλη 1 τύπος Ι,στήλη2 τύπου I,τέλος της γραμμής.

Παράδειγμα:

ΤΥΠΟΙ: αρχή της γραμμής,empno τύπου I,empname (20) τύπος γ,τέλος της γραμμής.

Η δήλωση TYPES δημιουργεί μια γραμμή δομής όπως ορίζεται.
Για να δημιουργήσετε πραγματικά έναν εσωτερικό πίνακα, χρησιμοποιήστε την ακόλουθη εντολή-

Εμφανίζεται η γραμμή τύπου itab δεδομένων 10.

Ένας εσωτερικός πίνακας itab δημιουργείται με τη δομή της γραμμής. Εκτός από τη δήλωση της δομής ενός εσωτερικού πίνακα, η ρήτρα OCCURS καθορίζει επίσης πόσες καταχωρήσεις πίνακα διατηρούνται στην κύρια αποθήκευση (σε αυτήν την περίπτωση 10). Οι επιπλέον εγγραφές γράφονται στην περιοχή τηλεειδοποίησης και μπορούν να επηρεάσουν την απόδοση
2. Αναφερόμενοι σε έναν άλλο πίνακα
Μπορείτε να δημιουργήσετε έναν εσωτερικό πίνακα αναφερόμενοι σε έναν υπάρχοντα πίνακα. Ο υπάρχων πίνακας θα μπορούσε να είναι ένας τυπικός πίνακας SAP, ένας πίνακας Z ή ένας άλλος εσωτερικός πίνακας.
Σύνταξη-

Δεδομένα   [με γραμμή κεφαλίδας].

Παράδειγμα-

DATA itab TYPE line OCCURS 10 με κεφαλίδα.

Εδώ δημιουργείται ένας εσωτερικός πίνακας itab της γραμμής τύπου με μια γραμμή κεφαλίδας. Σημειώστε ότι η "γραμμή κεφαλίδας" είναι προαιρετική
3. Αναφερόμενος στην υπάρχουσα
σύνταξη

Τα δεδομένα  LIKE  εμφανίζονται n [με γραμμή κεφαλίδας].

Παράδειγμα-

ΣΤΟΙΧΕΙΑ ΔΕΔΟΜΕΝΑ ΑΠΟΣΤΟΛΗ 10

Εδώ δημιουργείται ένας πίνακας itab με δομή ίδια με αυτή του sline
4. Με τη δημιουργία μιας νέας δομής
Ας δημιουργήσουμε τώρα έναν εσωτερικό πίνακα με δική μας δομή. Εδώ ο πίνακας δημιουργείται με μια γραμμή κεφαλίδας, από προεπιλογή .
Σύνταξη -

Δεδομένα: Η έναρξη του  εμφανίζεται ,<δήλωση συστατικών>,…,Τέλος .

Παράδειγμα -

Δεδομένα: Η έναρξη του itab εμφανίζεται 10,στήλη 1 τύπος Ι,στήλη2 (4) τύπος Γ,στήλη3 όπως mara-ernam,Τέλος του itab.

Δημιουργείται εσωτερικός πίνακας itab

Συμπληρώνοντας εσωτερικούς πίνακες

Τώρα που δημιουργήσαμε με επιτυχία μερικούς εσωτερικούς πίνακες, ας δούμε πώς θα τους συμπληρώσουμε με κάποιους δίσκους. Υπάρχουν διάφορες διαθέσιμες μέθοδοι για τη συμπλήρωση των πινάκων 1. Προσάρτηση δεδομένων γραμμή προς γραμμή Η πρώτη διαθέσιμη μέθοδος είναι η χρήση της δήλωσης ΠΑΡΑΡΤΗΜΑ.
Χρησιμοποιώντας τη δήλωση ΠΡΟΣΘΗΚΗ μπορούμε είτε να προσθέσουμε μία γραμμή από μια άλλη περιοχή εργασίας στον εσωτερικό πίνακα είτε να προσθέσουμε μία αρχική γραμμή στον εσωτερικό πίνακα…
Σύνταξη -
ΠΡΟΣΑΡΤΗΜΑ [ TO / INITIAL LINE TO] .
Εδώ η περιοχή εργασίας ή η αρχική γραμμή προσαρτάται στον εσωτερικό πίνακα .
Η μεταβλητή συστήματος SY-TABIX περιέχει το ευρετήριο της προσαρτημένης γραμμής.
Παράδειγμα:
Δεδομένα: Η έναρξη του itab εμφανίζεται 10,col1 τύπου C,col2 τύπου Ι,τέλος του itab.Προσάρτηση αρχικής γραμμής στο itab.

Αποτελέσματα: '' ''
Οι αρχικές γραμμές προσθέτουν μια γραμμή που έχει αρχικοποιηθεί με τη σωστή τιμή για τον τύπο της στον πίνακα. Εδώ, το col1 είναι ένας χαρακτήρας και το col2 είναι ένας ακέραιος. Στη συνέχεια, ΠΡΟΣΘΗΚΗ αρχική γραμμή, προσθέτει μια γραμμή που έχει αρχικοποιηθεί σε σχέση με τον τύπο δεδομένων των στηλών, δηλαδή χώρο για col1 και 0 για col2. 2. Χρησιμοποιώντας τη δήλωσηCOLLECT, το COLLECT είναι μια άλλη μορφή δήλωσης που χρησιμοποιείται για τη συμπλήρωση των εσωτερικών πινάκων. Γενικά το COLLECT χρησιμοποιείται κατά την εισαγωγή γραμμών σε έναν εσωτερικό πίνακα με μοναδικό τυπικό κλειδί.
Σύνταξη-
ΣΥΛΛΟΓΗ [ INTO] .

Σε περίπτωση πινάκων με γραμμή κεφαλίδας, παραλείπεται η επιλογή INTO. Ας υποθέσουμε ότι υπάρχει ήδη μια καταχώριση που έχει ένα κλειδί ίδιο με αυτό που προσπαθείτε να προσαρτήσετε, τότε δεν προστίθεται νέα γραμμή στον πίνακα, αλλά προστίθενται τα αριθμητικά πεδία και των δύο καταχωρίσεων και υπάρχει μόνο μία καταχώριση που αντιστοιχεί στο κλειδί . Η τιμή του SY-TABIX αλλάζει στη σειρά της αρχικής καταχώρησης. Το Else COLLECT ενεργεί παρόμοιο με το APPEND και το SY-TABIX περιέχει το ευρετήριο της επεξεργασμένης γραμμής. 3 . Χρήση της δήλωσης INSERT Η δήλωσηINSERT προσθέτει μια γραμμή / περιοχή εργασίας στον εσωτερικό πίνακα. Μπορείτε να καθορίσετε τη θέση στην οποία θα προστεθεί η νέα γραμμή χρησιμοποιώντας τον όρο INDEX με τη δήλωση INSERT.
Σύνταξη
ΕΙΣΑΓΩΓΗ [ INTO / INITIAL LINE INTO]  [index ].
Εδώ, η περιοχή εργασίας ή INITIAL LINE εισάγεται στον εσωτερικό πίνακα στο ευρετήριο .

Αντιγραφή εσωτερικών πινάκων

Τα περιεχόμενα ενός εσωτερικού πίνακα μπορούν να αντιγραφούν σε άλλο χρησιμοποιώντας τη δήλωση APPEND LINES ή INSERT LINES. Ένας πιο απλούστερος τρόπος είναι να χρησιμοποιήσετε πολλές από τις ακόλουθες σύνταξη.
MOVE  Προς .Ή = .

Αυτά αντιγράφουν τα περιεχόμενα του ITAB1 στο ITAB2. Σε περίπτωση εσωτερικών πινάκων με γραμμή κεφαλίδας πρέπει να χρησιμοποιήσουμε το [] inorder για να ξεχωρίσουμε από την περιοχή εργασίας. Έτσι, για να αντιγράψετε περιεχόμενο εσωτερικών πινάκων με γραμμή κεφαλίδας γίνεται η σύνταξη,
itab1 [] = itab2 [].

Διαβάστε εσωτερικούς πίνακες

Τώρα είμαστε εξοικειωμένοι με τη δημιουργία εσωτερικών πινάκων και τη συμπλήρωσή τους με δεδομένα. Θα δούμε τώρα πώς πραγματικά χρησιμοποιούμε τα δεδομένα ή ανακτούμε τα δεδομένα από τους εσωτερικούς πίνακες. 1. Χρήση του Loop -EndloopΈνας από τους τρόπους πρόσβασης ή ανάγνωσης του εσωτερικού πίνακα είναι η χρήση του LOOP-ENDLOOP.
Σύνταξη
ΒΟΗΘΗΣΤΕ ΣΤΟ  [INTO ]… ENDLOOP.

Εδώ όταν λέτε LOOP AT ITABLE, τότε ο εσωτερικός πίνακας ITABLE διαβάζεται ανά γραμμή. Μπορείτε να αποκτήσετε πρόσβαση στις τιμές των στηλών για αυτήν τη γραμμή κατά τη διάρκεια οποιουδήποτε τμήματος της δομής LOOP-ENDLOOP. Η τιμή του SY-SUBRC έχει οριστεί σε 0 , ακόμη και αν διαβάζεται μόνο μία εγγραφή. 2. Χρήση του READΗ άλλη μέθοδος ανάγνωσης του εσωτερικού πίνακα είναι χρησιμοποιώντας τη δήλωση READ.
Σύνταξη-
ΔΙΑΒΑΣΤΕ ΠΙΝΑΚΑΣ  [INTO ] INDEX .

Αυτή η δήλωση διαβάζει την τρέχουσα γραμμή ή γραμμή όπως καθορίζεται από το ευρετήριο . Η τιμή του SY-TABIX είναι ο δείκτης της γραμμής που διαβάζεται. Εάν βρεθεί μια καταχώριση με το καθορισμένο ευρετήριο, τότε το SY-SUBRC έχει οριστεί σε 0. Εάν το καθορισμένο ευρετήριο είναι μικρότερο από 0, τότε παρουσιάζεται σφάλμα χρόνου εκτέλεσης. Εάν το καθορισμένο ευρετήριο υπερβαίνει το μέγεθος του πίνακα τότε το SY-SUBRC έχει οριστεί σε 4.

Διαγραφή εσωτερικών πινάκων

Υπάρχουν πολλοί τρόποι για τη διαγραφή γραμμών από έναν εσωτερικό πίνακα. 1. Διαγραφή γραμμών σε βρόχο.
Αυτός είναι ο απλούστερος τρόπος για τη διαγραφή γραμμών.
Sytax
ΔΙΑΓΡΑΦΗ .

Αυτή η δήλωση λειτουργεί μόνο εντός βρόχου. Διαγράφει την τρέχουσα γραμμή. Μπορείτε να διαγράψετε τις γραμμές σε έναν βρόχο υπό όρους προσθέτοντας τον όρο WHERE. 2. Διαγραφή γραμμών χρησιμοποιώντας το ευρετήριο.
Αυτό χρησιμοποιείται για τη διαγραφή μιας γραμμής από τον εσωτερικό πίνακα σε οποιοδήποτε ευρετήριο γνώσεων.
Σύνταξη
ΔΙΑΓΡΑΦΗ  INDEX .
Η γραμμή με το ευρετήριο διαγράφεται. Ο δείκτης της ακόλουθης γραμμής μειώνεται κατά 1.