Μετάβαση στο περιεχόμενο
cd /languages
  • Ο πυρήνας της επιχείρησης
  • Προγραμματισμός
  • Υποστήριξη AST και συμβόλων

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

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

Γιατί αξίζει να χαρτογραφήσετε το 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.

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

Συνδέστε ένα αποθετήριο με τον γρήγορο οδηγό εκκίνησης και έπειτα δείτε τον πίνακα υποστήριξης στη σελίδα συμβατότητας. Για άλλα παλαιά περιβάλλοντα, δείτε τον οδηγό για την COBOL.

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

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

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

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

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

  • > Το 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 που ο γράφος δεν καλύπτει ακόμη.