Ανοίξτε το SQL & Native SQL στο SAP ABAP

Ο στόχος αυτού του σεμιναρίου δεν είναι να σας διδάξει SQL ή βάση δεδομένων concepts αλλά για να σας παρουσιάσουμε την ποικιλομορφία 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 που αποδίδουν operaστην κεντρική βάση δεδομένων στο σύστημα R/3. Τα αποτελέσματα του operations και τυχόν μηνύματα σφάλματος είναι ανεξάρτητα από το σύστημα βάσης δεδομένων που χρησιμοποιείται. Η Open SQL παρέχει έτσι μια ενιαία σύνταξη και σημασιολογία για όλα τα συστήματα βάσης δεδομένων που υποστηρίζονται από το SAP. Τα προγράμματα ABAP που χρησιμοποιούν μόνο εντολές Open SQL θα λειτουργούν σε οποιοδήποτε σύστημα R/3, ανεξάρτητα από το σύστημα βάσης δεδομένων που χρησιμοποιείται. Οι ανοιχτές δηλώσεις SQL μπορούν να λειτουργήσουν μόνο με πίνακες βάσης δεδομένων που έχουν δημιουργηθεί στο λεξικό ABAP.

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

  • SELECT
  • ΕΝΘΕΤΟ
  • ΕΚΣΥΓΧΡΟΝΊΖΩ
  • ΤΡΟΠΟΠΟΙΩ
  • ΔΙΑΓΡΑΦΗ
  • ΑΝΟΙΓΜΑ ΔΡΟΜΕΑ, ΑΝΑΓΚΗ, ΚΛΕΙΣΙΜΟ ΔΕΡΜΟΤΗΡΑ

Παράδειγμα

TABLES SBOOK.

DATA C TYPE CURSOR,

WA LIKE SBOOK.

OPEN CURSOR C FOR SELECT * FROM SBOOK WHERE CARRID = 'LH '

AND CONNID = '0400'

AND FLDATE = '19950228'

ORDER BY PRIMARY KEY.

DO.

FETCH NEXT CURSOR C INTO WA.

IF SY-SUBRC <> 0.

CLOSE CURSOR C.

EXIT.

ENDIF.

WRITE: / WA-BOOKID, WA-CUSTOMID, WA-CUSTTYPE,

WA-SMOKER, WA-LUGGWEIGHT, WA-WUNIT,

WA-INVOICE.

ENDDO.

Καταχωρίστε τη λίστα επιβατών για την πτήση 0400 της Lufthansa στις 28-02.1995:

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

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

SY-SUBRC

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

SY-DBCNT

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

Εγγενής SQL

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

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

Σύνταξη

EXEC SQL [PERFORMING <form>].

  <Native SQL statement>

ENDEXEC.

Δεν υπάρχει περίοδος μετά τις εγγενείς δηλώσεις SQL. Επιπλέον, η χρήση ανεστραμμένων κομμάτων (“) ή αστερίσκου (*) στην αρχή μιας γραμμής σε μια εγγενή πρόταση SQL δεν εισάγει ένα σχόλιο όπως θα συνέβαινε στην κανονική σύνταξη ABAP. Πρέπει να γνωρίζετε εάν τα ονόματα πινάκων και πεδίων κάνουν διάκριση πεζών-κεφαλαίων στην επιλογή σας βάσεις δεδομένων.

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

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

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

Για να βελτιωθεί η απόδοση της SQL και στη συνέχεια του προγράμματος ABAP, θα πρέπει να φροντίσει κανείς για το following κανόνες-

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

  • Χρησιμοποιώντας την ρήτρα όπου
  • Εάν απαιτείται μόνο μία εγγραφή από τη βάση δεδομένων, χρησιμοποιήστε SELECT SINGLE όποτε είναι δυνατόν.

Ελαχιστοποιήστε το ποσό των δεδομένων που μεταφέρονται

  • Περιορίστε τον αριθμό των γραμμών
  • Εάν απαιτούνται μόνο ορισμένα πεδία από έναν πίνακα, χρησιμοποιήστε το SELECT ΣΕ… δήλωση
  • Περιορισμός του αριθμού στηλών
  • Χρησιμοποιήστε αθροιστικές συναρτήσεις

Ελαχιστοποιήστε τον αριθμό των μεταφορών δεδομένων

  • Αποφύγετε τους ένθετους βρόχους επιλογής
  • Μια εναλλακτική επιλογή είναι να χρησιμοποιήσετε την πρόταση SELECT .. FOR ALL ENTRIES. Αυτή η πρόταση μπορεί συχνά να είναι πολύ πιο αποτελεσματική από την εκτέλεση ενός μεγάλου αριθμού εντολών SELECT ή SELECT SINGLE κατά τη διάρκεια ενός LOOP ενός εσωτερικού πίνακα.
  • Χρησιμοποιήστε προβολές λεξικού
  • Χρησιμοποιήστε το Joins στον όρο FROM
  • Χρησιμοποιήστε δευτερεύοντα ερωτήματα στον όρο όπου

Ελαχιστοποιήστε τα έξοδα αναζήτησης

  • Χρησιμοποιήστε πεδία ευρετηρίου στον όρο όπου
  • Κατά την πρόσβαση σε βάσεις δεδομένων, βεβαιωθείτε πάντα ότι χρησιμοποιείται το σωστό ευρετήριο.

Μειώστε το φορτίο της βάσης δεδομένων

  • BufferING
  • Λογικές βάσεις δεδομένων
  • Αποφύγετε την επαναλαμβανόμενη πρόσβαση στη βάση δεδομένων

Χρήση εσωτερικών πινάκων για Buffer Εγγραφές

  • Για να αποφευχθεί η πολλαπλή εκτέλεση του ίδιου SELECT (και επομένως να υπάρχουν διπλότυπες επιλογές), μπορεί να χρησιμοποιηθεί ένας εσωτερικός πίνακας τύπου HASHED για τη βελτίωση της απόδοσης.