abap — συγκεντρωτικός οδηγός — DedSec Project
abap — συγκεντρωτικός οδηγός ABAP Τι προσφέρει η γλώσσα Η ABAP χρησιμοποιείται σε SAP συστήματα και συνδέεται στενά με το data dictionary και τα δικαιώματα της εγκατάστασης. Μικρό…
ABAP
Τι προσφέρει η γλώσσα
Η ABAP χρησιμοποιείται σε SAP συστήματα και συνδέεται στενά με το data dictionary και τα δικαιώματα της εγκατάστασης.
Μικρό παράδειγμα προς μελέτη
REPORT z_example.
DATA count TYPE i VALUE 3.
WRITE: / count.
Σε επιτρεπόμενο SAP sandbox άλλαξε έναν ακέραιο και πρόβλεψε την έξοδο. Έλεγξε τα δικαιώματα πριν από ανάγνωση πίνακα.
Τι να επαληθεύσεις
Κατάγραψε την πραγματική έκδοση εργαλείου, τις απαιτούμενες εξαρτήσεις και την έξοδο σε δοκιμαστικά δεδομένα για τη ABAP. Πρόβλεψε το αποτέλεσμα πριν το ελέγξεις και διατήρησε την αρχική και τη διορθωμένη εκδοχή ώστε να φαίνεται η αιτιώδης διαφορά. Μην αποκαλείς ένα απόσπασμα εκτελεσμένο αν δεν έχεις το κατάλληλο περιβάλλον.
Παγίδα ειδική για το θέμα
Ένας γενικός local interpreter δεν αντικαθιστά το SAP runtime· οι εντολές και οι πίνακες εξαρτώνται από το σύστημα.
Εργαστήριο εξάσκησης: ABAP
Η ABAP εκτελείται συνήθως σε SAP application server, όπου τα αντικείμενα κώδικα, η ενεργοποίηση και τα δικαιώματα ελέγχονται από το σύστημα. Το REPORT δηλώνει εκτελέσιμη αναφορά, αλλά δεν σημαίνει ότι ο κώδικας διάβασε ή τροποποίησε δεδομένα βάσης. Οι δοκιμές επιτρέπονται μόνο σε εκπαιδευτικό ή εξουσιοδοτημένο sandbox.
Άσκηση 1: αποτέλεσμα χωρίς επεξεργασία βάσης
REPORT zlearn.
DATA total TYPE i VALUE 2.
total = total + 3.
WRITE: / total.
Η αναμενόμενη τιμή στην έξοδο της αναφοράς είναι 5. Το TYPE i δηλώνει ακέραιο και το VALUE 2 αρχική τιμή. Η ανάθεση αυξάνει την τιμή, ενώ το WRITE την εμφανίζει χωρίς να αλλάζει εγγραφή στη βάση. Πρόβλεψε την έξοδο όταν το αρχικό VALUE γίνει 0 και -2: αντίστοιχα 3 και 1. Πριν από πραγματική δημιουργία αντικειμένου, έλεγξε τους κανόνες ονοματοδοσίας του συστήματός σου· το πρόθεμα z χρησιμοποιείται συνήθως για αντικείμενα πελάτη.
Άσκηση 2: τρεις διαφορετικές λειτουργίες
Σύγκρινε SELECT, WRITE και UPDATE. Το SELECT διαβάζει από πίνακα με κατάλληλα δικαιώματα· το WRITE εμφανίζει πληροφορίες· το UPDATE τροποποιεί δεδομένα και δεν ανήκει σε αυτό το ασφαλές εργαστήριο. Σχεδίασε θεωρητικά ένα read-only SELECT που επιλέγει μόνο απαραίτητα πεδία και έχει WHERE. Τι διαφορά θα παρατηρούσες ανάμεσα σε άδεια συλλογή αποτελεσμάτων, σε έλλειψη εξουσιοδότησης και σε σφάλμα σύνταξης;
Άσκηση 3: πηγαίος κώδικας, ενεργοποίηση και εκτέλεση
Η αποθήκευση κώδικα δεν ταυτίζεται με την ενεργοποίηση και η ενεργοποίηση δεν εγγυάται δικαίωμα εκτέλεσης. Περιέγραψε σε ποιο στάδιο γίνονται οι έλεγχοι σύνταξης, οι μεταφορές αντικειμένων και οι έλεγχοι δικαιωμάτων. Μια αριθμητική αναφορά δεν απαιτεί επιχειρησιακά δεδομένα, ενώ ένα πρόγραμμα που συνδέεται με SAP tables δεν αναπαράγεται αυτούσιο σε απλό Linux terminal.
Κριτήριο ολοκλήρωσης
Κατάγραψε έκδοση ABAP, training client, αναμενόμενη έξοδο και πραγματική παρατήρηση χωριστά. Αν δεν διαθέτεις SAP, δήλωσε ότι έγινε στατική εξέταση κώδικα. Πρέπει να μπορείς να εξηγήσεις τη διαφορά REPORT, SELECT και UPDATE χωρίς να πειράξεις πραγματική βάση.
ABAP — Διαδρομή ουσιαστικής εξάσκησης
Περιβάλλον
Χρησιμοποίησε επιτρεπόμενο SAP training client με σύγχρονη ABAP. Ένας internal table υπάρχει στη μνήμη του προγράμματος και δεν είναι αυτόματα πίνακας βάσης. Το παράδειγμα χρησιμοποιεί συνθετικούς ακέραιους, χωρίς στοιχεία πελατών ή υπαλλήλων.
Παράδειγμα ABAP report
REPORT ztraining_inttable.
DATA numbers TYPE STANDARD TABLE OF i WITH EMPTY KEY.
APPEND 7 TO numbers.
APPEND 2 TO numbers.
APPEND 5 TO numbers.
SORT numbers ASCENDING.
READ TABLE numbers INTO DATA(smallest) INDEX 1.
IF sy-subrc = 0.
WRITE: / smallest.
ENDIF.
Αναμενόμενη έξοδος: 2. Στον STANDARD TABLE, το INDEX 1 είναι η πρώτη θέση, εδώ μετά από SORT. Η READ TABLE θέτει το sy-subrc, το οποίο πρέπει να ελέγχεται αμέσως. Με EMPTY KEY δεν χρησιμοποιείται ανεπιθύμητο implicit standard key, αλλά το indexed access παραμένει διαθέσιμο.
Δοκιμές με ξεχωριστό σκοπό
- Αφαίρεσε SORT και πρόβλεψε τι επιστρέφει INDEX 1· πλέον μετρά η σειρά εισαγωγής.
- Δοκίμασε INDEX 99 και έλεγξε sy-subrc=4. Μη χρησιμοποιήσεις παλιά τιμή στόχου ως επιτυχημένο αποτέλεσμα.
- Αντικατάστησε τον ακέραιο με structure προϊόντος/ποσότητας. Σύγκρινε STANDARD TABLE scan με SORTED/HASHED TABLE lookup.
- Χρησιμοποίησε unique key και επανέλαβε product ID. Κατέγραψε τη συμπεριφορά αντί να υποθέσεις ότι επιτρέπονται duplicates.
- Σε training database, γράψε SELECT με αναγκαία πεδία, περιορισμένο WHERE και ελέγχους άδειας. Αποφύγε περιττό SELECT μέσα σε επαναληπτικό loop.
Απόδειξη
Κατέγραψε SAP release/ABAP version, δικαιώματα training client, κώδικα, πραγματική έξοδο και αποτέλεσμα αποτυχημένου sy-subrc. Η στατική ανάλυση δεν είναι απόδειξη εκτέλεσης στο SAP. Αναφορά: https://help.sap.com/docs/abap-cloud/abap-keyword/ABAPREAD_TABLE_WHERE.html