Τι είναι το BADI; SAP ABAP;

⚡ Έξυπνη Σύνοψη

BADI στο SAP Το ABAP σημαίνει Business Add-In, μια αντικειμενοστρεφής βελτίωση που συνδέει προσαρμοσμένη λογική με τυπικό SAP λειτουργικότητα. Αυτή η σελίδα εξηγεί τι είναι ένα BADI, τα χαρακτηριστικά του, τους κλασικούς και τους νέους τύπους, τη ροή εργασίας SE18 και SE19 και πώς συγκρίνεται με τις εξόδους.

  • 🧩 Βασικός Ορισμός: Ένα πρόσθετο επιχείρησης είναι ένα άγκιστρο βελτίωσης, όπως μια έξοδος πελάτη, που συνδέει προσαρμοσμένες λειτουργίες με τυπικές SAP χωρίς να το τροποποιήσετε.
  • 🧱 Αντικειμενοστρεφής: Ένα BADI ορίζει μια διεπαφή και η βελτίωση βρίσκεται σε μια κλάση που την υλοποιεί και όχι σε μια δεσμευμένη συμπερίληψη.
  • 🔁 Πολλαπλές υλοποιήσεις: Σε αντίθεση με την έξοδο από τον πελάτη, ένα BADI μπορεί να εφαρμοστεί αρκετές φορές, κάτι που ταιριάζει σε λύσεις του κλάδου και σε εκδόσεις ανά χώρα.
  • 🔓 Upgrade Safe: Ένα BADI δεν χρειάζεται SAP Εγγραφή Αλλαγής Λογισμικού και δεν επηρεάζεται από αναβάθμιση έκδοσης.
  • Ορισμός και Υλοποίηση: Ο ορισμός και η διεπαφή δημιουργούνται στο SE18 και η υλοποίηση με την κλάση της δημιουργείται στο SE19.
  • 🆕 Κλασικό και Νέο: Το κλασικό BADI βασίζεται σε βελτιώσεις και ο νέος πυρήνας BADI που εισήχθη στο NetWeaver προσθέτει φίλτρα, εφεδρικές κλάσεις και καλύτερη απόδοση.

Τι είναι το BADI; SAP ABAP

Τι είναι το BADI;

Το BADI σημαίνει Bελαστικότητα Add Ins. Όπως ακριβώς και οι Έξοδοι Πελατών, το BADI βοηθά στην προσάρτηση προσαρμοσμένων βελτιώσεων SAP λειτουργικότητα. Παράδειγμα BADI: Στη συναλλαγή CAT2 – Καταχώριση Φύλλου Χρόνου, το HR επιθυμεί να συμπεριλάβει μια διαδραστική επιβεβαίωση ότι η εν γνώσει της υποβολής εσφαλμένων δεδομένων αποτελεί λόγο απόρριψης. Αυτό μπορεί να επιτευχθεί χρησιμοποιώντας το BADI

Παράδειγμα BADI

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

Χαρακτηριστικά

  • Τα BADI είναι Αντικειμενοστραφή
  • Μπορούν να εφαρμοστούν πολλές φορές
  • Δεν απαιτεί SAP Λογισμικό Αλλαγή Εγγραφής
  • Καμία επίδραση στην έκδοση που αναβαθμίστηκε στη λειτουργία των BADI's

Αυτά τα τέσσερα χαρακτηριστικά εξηγούν γιατί SAP Συνιστά ένα BADI αντί για μια κλασική έξοδο. Επειδή η βελτίωση βρίσκεται σε ξεχωριστή κλάση, επιβιώνει από μια αναβάθμιση ανέπαφη και επειδή ένα BADI μπορεί να οριστεί ως πολλαπλή χρήση, πολλές ομάδες μπορούν να βελτιώσουν το ίδιο σημείο χωρίς να αντικαταστήσουν η μία την άλλη.

Τύποι BADI

SAP προσφέρει δύο γενιές Επιχειρηματικών Πρόσθετων. Το κλασικό BADI είναι η έκδοση που βασίζεται σε βελτιώσεις που περιγράφεται παραπάνω, και το νέο BADI, που παρουσιάστηκε με SAP Το NetWeaver είναι μέρος του Enhancement Framework και είναι ταχύτερο και πιο ευέλικτο.

Κριτήρια Κλασικό BADI Νέο (πυρήνα) BADI
Διατηρείται σε SE18 και SE19 Το Εργαλείο Βελτίωσης μέσα σε ένα σημείο βελτίωσης
Φίλτρα Απλές τιμές φίλτρου Φιλτράρισμα συνδυασμών με λογικές παραστάσεις
Fallback Δεν υπάρχουν διαθέσιμα στοιχεία Μια προεπιλεγμένη κλάση εφεδρικής λειτουργίας εκτελείται όταν δεν υπάρχει ενεργή υλοποίηση
Instantiation CL_EXITHANDLER=>GET_INSTANCE Οι δηλώσεις GET BADI και CALL BADI
💪 Βελτίωση της απόδοσης στην άσκηση Πιο αργά, το αντικείμενο δημιουργούσε κάθε κλήση Ταχύτερο, διαχειριζόμενο από τον πυρήνα

Και οι δύο γενιές εντοπίζονται και υλοποιούνται με παρόμοιο τρόπο, ο οποίος περιγράφεται στη συνέχεια.

Πώς να ορίσετε και να εφαρμόσετε ένα BADI

Αυτό περιλάμβανε τρία βήματα

Βήμα 1) Δημιουργία ορισμού BADI και της διεπαφής του: Συναλλαγή SE18.

Ορίστε και εφαρμόστε ένα BADI

Βήμα 2) Δημιουργήστε την Υλοποίηση BADI: Συναλλαγή SE19

Ορίστε και εφαρμόστε ένα BADI

Βήμα 3) Ορίστε μια κλάση που υλοποιεί τη διεπαφή: Κατά τη δημιουργία της υλοποίησης, δημιουργείται επίσης μια κλάση για την υλοποίηση της διεπαφής της βελτίωσης.

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

* Reference typed with the BADI interface
DATA: lo_badi TYPE REF TO zif_ex_badi_demo.

* Get the active implementation(s)
CALL METHOD cl_exithandler=>get_instance
  CHANGING
    instance = lo_badi.

* Call the interface method that carries the custom logic
CALL METHOD lo_badi->check_data
  EXPORTING
    is_input = ls_input.

💡 Συμβουλές: Ένα νέο BADI πυρήνα καλείται πιο απλά με τις εντολές GET BADI και CALL BADI, οι οποίες επίσης χειρίζονται αυτόματα τις τιμές του φίλτρου. Χρησιμοποιήστε το SE18 για να ελέγξετε εάν το σημείο βελτίωσης είναι ένα κλασικό ή ένα νέο BADI πριν γράψετε την κλήση.

⚠️ Προειδοποίηση: Η συναλλαγή SE18 περιέχει τον ορισμό και τη διεπαφή, ενώ η SE19 περιέχει την υλοποίηση. Η δημιουργία της υλοποίησης στο SE18 ή του ορισμού στο SE19 είναι ένα συνηθισμένο λάθος που αφήνει το BADI ανενεργό.

BADI vs Έξοδος Πελάτη vs Έξοδος Χρήστη

Και οι τρεις τεχνικές βελτιώνουν το πρότυπο SAP, αλλά διαφέρουν ως προς την τεχνολογία και την ευελιξία. Ο παρακάτω πίνακας τοποθετεί το BADI δίπλα στα δύο παλαιότερα τεχνικές εξόδου.

Κριτήρια Έξοδος χρήστη Έξοδος Πελάτη BADI
Τεχνολογία Υπορουτίνα (FORM) Μονάδα λειτουργίας, οθόνη ή μενού Αντικειμενοστρεφής διεπαφή και κλάση
Scope Μόνο μονάδα SD Όλες οι ενότητες Όλες οι ενότητες
Αριθμός υλοποιήσεων Ένας Ένας Πολλαπλή, όταν ορίζεται ως πολλαπλή χρήση
Διατηρείται με Άμεση επεξεργασία του συμπεριλαμβανόμενου στοιχείου SMOD και CMOD SE18 και SE19
Upgrade Ελεγμένο με το SPAU Ναι Ναι

Ο πρακτικός κανόνας είναι να χρησιμοποιείται ένα BADI όποτε υπάρχει, επειδή είναι αντικειμενοστρεφές, ασφαλές για αναβάθμιση και μπορεί να υλοποιηθεί περισσότερες από μία φορές.

Συχνές Ερωτήσεις

Το SE18 είναι το BADI Builder όπου δημιουργείται ο ορισμός και η διεπαφή του. Το SE19 είναι το Implementation Builder όπου μια κλάση υλοποίησης συνδέεται με αυτόν τον ορισμό. Το ένα ορίζει το hook, το άλλο το συμπληρώνει.

Ένα BADI πολλαπλών χρήσεων επιτρέπει περισσότερες από μία ενεργές υλοποιήσεις ταυτόχρονα και όλες εκτελούνται όταν καλείται η μέθοδος. Ένα BADI μίας χρήσης επιτρέπει μόνο μία ενεργή υλοποίηση.

Ορίστε ένα σημείο διακοπής στο CL_EXITHANDLER=>GET_INSTANCE, εκτελέστε τη συναλλαγή και διαβάστε το όνομα BADI από την παράμετρο EXIT_NAME. Για νέα BADI, αναζητήστε τα σημεία βελτίωσης του προγράμματος στο Σύστημα Πληροφοριών Αποθετηρίου.

Ναι. Οι βοηθοί τεχνητής νοημοσύνης στα εργαλεία ανάπτυξης ABAP συντάσσουν την κλάση υλοποίησης, το σώμα της μεθόδου και τη λογική του φίλτρου από μια περιγραφή της απαίτησης. Ένας προγραμματιστής εξακολουθεί να ενεργοποιεί την υλοποίηση στο SE19 και να τη δοκιμάζει.

Οι σύμβουλοι Τεχνητής Νοημοσύνης εξετάζουν το τυπικό πρόγραμμα και αναφέρουν ποιες επιλογές βελτίωσης υπάρχουν και στη συνέχεια προτείνουν το νέο BADI σε ένα σημείο βελτίωσης για νέα εργασία, διατηρώντας παράλληλα...ping το κλασικό BADI όπου προσφέρεται μόνο αυτή η επιλογή.

Συνοψίστε αυτήν την ανάρτηση με: