Άνοιγμα SQL & Εγγενής SQL στο SAP ABAP

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

Anonim
Ο στόχος αυτού του σεμιναρίου δεν είναι να σας διδάξει έννοιες SQL ή βάσης δεδομένων, αλλά να σας παρουσιάσει την ποικιλία SQL στο ABAP

Στη γλώσσα προγραμματισμού ABAP / 4, χρησιμοποιούνται δύο τύποι SQL.

  1. NATIVE SQL
  2. ΑΝΟΙΓΜΑ SQL.
Το Open SQL σάς επιτρέπει να έχετε πρόσβαση στους πίνακες βάσεων δεδομένων που δηλώνονται στο λεξικό ABAP ανεξάρτητα από την πλατφόρμα βάσης δεδομένων που χρησιμοποιεί το σύστημα R / 3.

Το Native SQL σάς επιτρέπει να χρησιμοποιείτε συγκεκριμένες βάσεις δεδομένων SQL δηλώσεις σε ένα πρόγραμμα ABAP / 4. Αυτό σημαίνει ότι μπορείτε να χρησιμοποιήσετε πίνακες βάσεων δεδομένων που δεν διαχειρίζονται το λεξικό ABAP και επομένως να ενσωματώσετε δεδομένα που δεν αποτελούν μέρος του συστήματος R / 3.

Το Open SQL αποτελείται από ένα σύνολο δηλώσεων ABAP που εκτελούν λειτουργίες στην κεντρική βάση δεδομένων στο σύστημα R / 3. Τα αποτελέσματα των λειτουργιών και τυχόν μηνύματα σφάλματος είναι ανεξάρτητα από το σύστημα βάσης δεδομένων που χρησιμοποιείται. Το Open SQL παρέχει έτσι μια ομοιόμορφη σύνταξη και σημασιολογία για όλα τα συστήματα βάσεων δεδομένων που υποστηρίζονται από τη SAP. Τα προγράμματα ABAP που χρησιμοποιούν μόνο δηλώσεις Open SQL θα λειτουργούν σε οποιοδήποτε σύστημα R / 3, ανεξάρτητα από το σύστημα βάσης δεδομένων που χρησιμοποιείται. Το Open SQL statement μπορεί να λειτουργήσει μόνο με πίνακες βάσεων δεδομένων που έχουν δημιουργηθεί στο λεξικό ABAP.

Βασικές εντολές Open SQL

  • ΕΠΙΛΕΓΩ
  • ΕΙΣΑΓΕΤΕ
  • ΕΚΣΥΓΧΡΟΝΙΖΩ
  • ΤΡΟΠΟΠΟΙΩ
  • ΔΙΑΓΡΑΦΩ
  • ΑΝΟΙΓΜΕΝΟΣ ΚΡΙΣΤΟΣ, «FETCH,» ΚΛΕΙΣΤΟΣ ΚΡΙΣΤΟΣ
Παράδειγμα
ΠΙΝΑΚΕΣ SBOOK.ΔΕΔΟΜΕΝΟΣ ΔΕΔΟΜΕΝΟΣ ΤΥΠΟΣ,ΜΟΥ Αρέσει το SBOOK.ΑΝΟΙΓΜΕΝΟΣ ΔΙΑΓΡΑΜΜΑ Γ ΓΙΑ ΕΠΙΛΟΓΗ * ΑΠΟ SBOOK ΠΟΥ ΕΙΝΑΙ CARRID = 'LH'ΚΑΙ ΣΥΝΕΧΕΙΑ = '0400'ΚΑΙ ΗΜΕΡΟΜΗΝΙΑ = "19950228"ΠΑΡΑΓΓΕΛΙΑ ΜΕ ΠΡΩΤΟΒΟΥΛΙΟ ΚΛΕΙΔΙ.ΚΑΝΩ.FETCH ΕΠΟΜΕΝΟΣ ΔΡΟΜΟΣ C ΣΤΟ WA.ΕΑΝ SY-SUBRC <> 0.ΚΛΕΙΣΤΟΣ ΔΙΣΚΟΣ Γ.ΕΞΟΔΟΣ.ΤΕΛΟΣ ΕΑΝ.ΓΡΑΨΤΕ: / WA-BOOKID, WA-CUSTOMID, WA-CUSTTYPE,WA-SMOKER, WA-LUGGWEIGHT, WA-WUNIT,WA-ΤΙΜΟΛΟΓΙΟ.ENDDO.

Εξαγάγετε τη λίστα επιβατών για την πτήση 0400 της Lufthansa στις 28-02.1995:

Ανοίξτε τους κωδικούς επιστροφής SQL

Όλες οι δηλώσεις Open SQL συμπληρώνουν τα ακόλουθα δύο πεδία συστήματος με κωδικούς επιστροφής.

SY-SUBRC

Μετά από κάθε δήλωση Open SQL, το πεδίο συστήματος SY-SUBRC περιέχει την τιμή 0 εάν η λειτουργία ήταν επιτυχής, μια τιμή διαφορετική από το 0 εάν όχι.

SY-DBCNT

Μετά από μια δήλωση Open SQL, το πεδίο συστήματος SY-DBCNT περιέχει τον αριθμό των γραμμών βάσης που υποβλήθηκαν σε επεξεργασία.

Εγγενής SQL

Όπως ήδη αναφέρθηκε, το Native SQL σάς επιτρέπει να χρησιμοποιείτε συγκεκριμένες βάσεις δεδομένων SQL σε ένα πρόγραμμα ABAP.

Για να χρησιμοποιήσετε τη δήλωση Native SQL, πρέπει να προηγηθεί με τη δήλωση EXEC SQL και να την ακολουθήσετε με τη δήλωση ENDEXEC.

Σύνταξη

EXEC SQL [ΕΚΤΕΛΕΣΗ 
].<Εγγενής δήλωση SQL>ENDEXEC.
Δεν υπάρχει περίοδος μετά τις εγγενείς δηλώσεις SQL. Επιπλέον, χρησιμοποιώντας ανεστραμμένα κόμματα (") ή αστερίσκο (*) στην αρχή μιας γραμμής σε μια εγγενή δήλωση SQL δεν εισάγεται ένα σχόλιο όπως θα συνέβαινε στην κανονική σύνταξη ABAP. Πρέπει να γνωρίζετε εάν τα ονόματα πινάκων και πεδίων είναι πεζά- ευαίσθητη στη βάση δεδομένων που επιλέξατε.

Στις δηλώσεις Native SQL, τα δεδομένα μεταφέρονται μεταξύ του πίνακα βάσης δεδομένων και του προγράμματος ABAP χρησιμοποιώντας μεταβλητές κεντρικού υπολογιστή. Αυτά δηλώνονται στο πρόγραμμα ABAP και προηγούνται στη δήλωση Native SQL από άνω και κάτω τελεία (:). Μπορείτε να χρησιμοποιήσετε στοιχειώδεις δομές ως μεταβλητές κεντρικού υπολογιστή. Κατ 'εξαίρεση, οι δομές σε μια ρήτρα INTO αντιμετωπίζονται σαν όλα τα πεδία τους να απαριθμούνται μεμονωμένα.

Όπως στο Open SQL, μετά τη δήλωση ENDEXEC, το SY-DBCNT περιέχει τον αριθμό των γραμμών που υποβλήθηκαν σε επεξεργασία. Σε όλες σχεδόν τις περιπτώσεις, το SY-SUBRC περιέχει την τιμή 0 μετά τη δήλωση ENDEXEC.

Άνοιγμα SQL - Κανόνες απόδοσης

Για να βελτιώσετε την απόδοση του SQL και με τη σειρά του του προγράμματος ABAP, πρέπει να προσέξετε τους ακόλουθους κανόνες:

Κρατήστε το σύνολο αποτελεσμάτων μικρό

  • Χρησιμοποιώντας τη ρήτρα όπου
  • Εάν απαιτείται μόνο μία εγγραφή από τη βάση δεδομένων, χρησιμοποιήστε SELECT SINGLE όποτε είναι δυνατόν.
Ελαχιστοποιήστε το ποσό των μεταφερόμενων δεδομένων
  • Περιορίστε τον αριθμό των γραμμών
  • Εάν απαιτούνται μόνο ορισμένα πεδία από έναν πίνακα, χρησιμοποιήστε τη δήλωση SELECT INTO…
  • Περιορισμός αριθμού στηλών
  • Χρησιμοποιήστε συγκεντρωτικές συναρτήσεις
Ελαχιστοποιήστε τον αριθμό των μεταφορών δεδομένων
  • Αποφύγετε ένθετους επιλεγμένους βρόχους
  • Μια εναλλακτική επιλογή είναι να χρησιμοποιήσετε τη δήλωση SELECT… FOR ALL ENTRIES. Αυτή η δήλωση μπορεί συχνά να είναι πολύ πιο αποτελεσματική από την εκτέλεση ενός μεγάλου αριθμού SELECT ή SELECT SINGLE δηλώσεων κατά τη διάρκεια ενός LOOP ενός εσωτερικού πίνακα.
  • Χρησιμοποιήστε προβολές λεξικού
  • Χρησιμοποιήστε το Joins στον όρο FROM
  • Χρησιμοποιήστε δευτερεύοντα ερωτήματα στην ενότητα όπου
Ελαχιστοποιήστε τα γενικά έξοδα αναζήτησης
  • Χρησιμοποιήστε τα πεδία ευρετηρίου στην ενότητα όπου
  • Κατά την πρόσβαση σε βάσεις δεδομένων, βεβαιωθείτε πάντα ότι χρησιμοποιείται ο σωστός δείκτης.
Μειώστε τη φόρτωση βάσης δεδομένων
  • Αποθήκευση
  • Λογικές βάσεις δεδομένων
  • Αποφύγετε την επαναλαμβανόμενη πρόσβαση στη βάση δεδομένων
Χρήση εσωτερικών πινάκων για αποθήκευση εγγραφών
  • Για να αποφύγετε την εκτέλεση του ίδιου SELECT πολλές φορές (και επομένως να έχετε διπλές επιλογές), μπορεί να χρησιμοποιηθεί ένας εσωτερικός πίνακας τύπου HASHED για τη βελτίωση της απόδοσης.