# ABAP στο Maguyva: γράφοι κλάσεων για προσαρμοσμένο κώδικα SAP

Canonical source: https://maguyva.ai/el/languages/abap

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Το Maguyva υποστηρίζει ABAP με AST, σύμβολα και γράφο, ώστε οι πράκτορες AI να χαρτογραφούν κλάσεις, interfaces, επαναορισμούς και εξαιρέσεις σε προσαρμοσμένο κώδικα SAP.

## Στιγμιότυπο υποστήριξης

- Επίπεδο: Υποστήριξη AST και συμβόλων
- Προγραμματισμός
- Επεκτάσεις: .abap
- Πραγματική ανάλυση AST για αναζήτηση με επίγνωση σύνταξης και δομικό πλαίσιο.
- Τα επώνυμα σύμβολα τροφοδοτούν τη σημασιολογική αναζήτηση και τη διασταύρωση αναφορών. Η πλοήγηση στον γράφο είναι διαθέσιμη όταν είναι ενεργοποιημένη η εξαγωγή σχέσεων.
- Αυτή η γλώσσα συνεισφέρει σύμβολα και σχέσεις στην αναζήτηση με επίγνωση του γράφου· οι υποστηριζόμενοι τύποι ακμών διαφέρουν ανάλογα με τις εγγενείς δομές της.
- Διατίθενται τόσο ανάλυση AST όσο και εξαγωγή συμβόλων.

## Ιδανική χρήση

- Ομάδες SAP που κρατούν προσαρμοσμένο ABAP στο Git ως αρχεία πηγαίου κώδικα `.abap` και πρέπει να το κατανοήσουν πριν από μια μετάπτωση ή μια αναθεώρηση clean core.
- Αντικειμενοστραφή περιβάλλοντα ABAP όπου οι ιεραρχίες κλάσεων, τα interfaces και οι επαναορισμοί κρύβουν ποια υλοποίηση εκτελείται στην πράξη.
- Αναλύσεις επιπτώσεων με υποστήριξη πρακτόρων, όπου το ερώτημα είναι: «τι θα χαλάσει αν αλλάξει αυτή η κλάση;»

## Ροές εργασίας πρακτόρων

- Χαρτογράφηση των κλάσεων που κληρονομούν από μια βασική κλάση και των μεθόδων που επαναορίζουν.
- Εύρεση όλων των κλάσεων που υλοποιούν ένα interface πριν αλλάξουν οι υπογραφές των μεθόδων του.
- Εντοπισμός του σημείου όπου εγείρεται μια κλάση εξαίρεσης και του σημείου όπου συλλαμβάνεται.

## Γιατί αξίζει να χαρτογραφήσετε το ABAP πριν το αλλάξετε

Το προσαρμοσμένο ABAP κουβαλά συχνά δεκαετίες επιχειρηματικών κανόνων. Ο κώδικας είναι σε κάποια σημεία αντικειμενοστραφής και σε άλλα διαδικαστικός, και η δομή κληρονομικότητας και interfaces αποφασίζει ποια μέθοδος εκτελείται. Αν διαβάζετε μία κλάση τη φορά, αυτό δεν φαίνεται.

Το Maguyva δίνει πρώτα στον πράκτορα τον γράφο κλάσεων, ώστε ένα σχέδιο αλλαγής να ξεκινά από ό,τι εξαρτάται από μια κλάση και όχι από μια εικασία.

## Τι εξάγει το Maguyva από το ABAP

Το Maguyva αναλύει πηγαίο κώδικα `.abap` με αποκλειστική γραμματική ABAP. Τα σύμβολα περιλαμβάνουν ορισμούς και υλοποιήσεις κλάσεων, interfaces, δηλώσεις και υλοποιήσεις μεθόδων, καθώς και ρουτίνες `FORM`.

Ο γράφος καταγράφει τις σχέσεις που ενδιαφέρουν τους προγραμματιστές ABAP:

- Κληρονομικότητα από `CLASS ... INHERITING FROM`.
- Υλοποίηση interface από `INTERFACES`.
- Επικαλύψεις από `METHODS ... REDEFINITION`.
- Εξαιρέσεις από `RAISE EXCEPTION` και `CATCH`.
- Κλήσεις μεθόδων (`obj->m( )`, `cls=>m( )`, `CALL METHOD`), αναφορές τύπων από `TYPE` και `TYPE REF TO`, καθώς και εξαγωγές μεθόδων του δημόσιου τμήματος που αποδίδονται στην κλάση τους.
- Αναγνώσεις, εγγραφές και ροή ελέγχου (`IF`, `CASE`, `LOOP`, `TRY`) μέσα στα σώματα των μεθόδων.

## Παραδείγματα προτροπών για πράκτορες

- «Ποιες κλάσεις κληρονομούν από την `zcl_order_base` και ποιες μεθόδους της επαναορίζουν;» (`find_symbol`, μετά `dependency_search` incoming)
- «Πού εγείρεται η `zcx_pricing_error` και ποιος τη συλλαμβάνει;» (`dependency_search`)
- «Σύνοψε πώς η ροή δημιουργίας παραδόσεων περνά από την αναφορά στην κλάση αποθήκευσης.» (`get_task_context`)

## Γνωστοί περιορισμοί

- Τα Open SQL (`SELECT ... FROM ... INTO`), `EXEC SQL` και `AUTHORITY-CHECK` δεν αναλύονται από την τρέχουσα γραμματική ABAP, οπότε οι αναγνώσεις πινάκων μέσω SQL δεν είναι ακόμη ακμές του γράφου. Για ονόματα πινάκων χρησιμοποιήστε το `text_pattern_search`.
- Οι προτάσεις `INTERFACES` είναι σχέσεις υλοποίησης, όχι εισαγωγές. Στη δομική αναζήτηση επιλέγονται ως εισαγωγές μόνο οι εντολές `INCLUDE`.
- Το Maguyva ευρετηριάζει ABAP που βρίσκεται σε αποθετήριο Git ως αρχεία `.abap`. Δεν συνδέεται σε σύστημα SAP.

## Επόμενα βήματα

Συνδέστε ένα αποθετήριο με τον [γρήγορο οδηγό εκκίνησης](/el/docs/quickstart) και έπειτα δείτε τον πίνακα υποστήριξης στη [σελίδα συμβατότητας](/el/docs/compatibility). Για άλλα παλαιά περιβάλλοντα, δείτε τον [οδηγό για την COBOL](/el/languages/cobol).

## Λεπτομέρειες μηχανής

- Το ABAP αναλύεται με αποκλειστική γραμματική. Οι κλάσεις, οι διεπαφές, οι δηλώσεις και υλοποιήσεις μεθόδων και οι ρουτίνες `FORM` είναι σύμβολα.
- Ο γράφος καταγράφει κληρονομικότητα μέσω `INHERITING FROM`, υλοποίηση μέσω `INTERFACES`, επικαλύψεις μέσω `REDEFINITION`, τα `RAISE EXCEPTION` και `CATCH`, καθώς και κλήσεις όπως `obj->m( )` και `cls=>m( )`.
- Τα Open SQL, `EXEC SQL` και `AUTHORITY-CHECK` δεν αναλύονται από την τρέχουσα γραμματική, οπότε οι αναγνώσεις πινάκων μέσω SQL δεν είναι ακόμη ακμές του γράφου.

## Χρήσιμα σημεία εισόδου MCP

- `find_symbol`: Χρησιμοποιήστε το με όνομα κλάσης, interface ή μεθόδου όταν χρειάζεστε τον ορισμό και τις αναφορές.
- `dependency_search`: Πριν από μια αλλαγή, χρησιμοποιήστε διάσχιση incoming σε μια βασική κλάση ή ένα interface για να βρείτε υποκλάσεις, υλοποιήσεις και καλούντες.
- `text_pattern_search`: Χρησιμοποιήστε το για ονόματα πινάκων βάσης δεδομένων και εντολές SQL που ο γράφος δεν καλύπτει ακόμη.
