BADI là gì? SAP ABAP?
⚡ Tóm tắt thông minh
BADI trong SAP ABAP là viết tắt của Business Add-In, một công cụ mở rộng hướng đối tượng cho phép tích hợp logic tùy chỉnh vào các chức năng tiêu chuẩn. SAP Trang này giải thích BADI là gì, các tính năng của nó, các loại cổ điển và mới, quy trình làm việc SE18 và SE19, và cách so sánh nó với các exit.
BADI là gì?
BADI là viết tắt của Bsự thân thiện Add ITương tự như Customer Exits, BADI giúp kết nối các phần mở rộng tùy chỉnh với SAP chức năng. Ví dụ về BADI: Trong giao dịch CAT2 – Nhập bảng chấm công, HR muốn bao gồm một xác nhận tương tác rằng việc cố ý gửi dữ liệu không chính xác là lý do để sa thải. Điều này có thể đạt được bằng cách sử dụng BADI
Sự khác biệt so với một exit cổ điển nằm ở khía cạnh kỹ thuật. BADI được xây dựng trên ABAP Objects, do đó chương trình chuẩn gọi một phương thức giao diện, và mã tùy chỉnh nằm trong một lớp triển khai phương thức đó. Đây là lý do tại sao BADI thường được mô tả là sự kế thừa hướng đối tượng của một exit cổ điển. khách hàng rời đi.
Tính năng
- BADI là hướng đối tượng
- Chúng có thể được thực hiện nhiều lần
- Nó không yêu cầu SAP Phần mềm Đăng ký thay đổi
- Không ảnh hưởng đến việc phát hành được nâng cấp đối với hoạt động của BADI
Bốn đặc điểm này giải thích tại sao SAP Nên sử dụng BADI thay vì exit truyền thống. Vì phần mở rộng nằm trong một lớp riêng biệt, nó sẽ không bị ảnh hưởng khi nâng cấp, và vì BADI có thể được định nghĩa là sử dụng nhiều lần, nên nhiều nhóm có thể mở rộng cùng một điểm mà không ghi đè lên nhau.
Các loại BADI
SAP Cung cấp hai thế hệ Business Add-Ins (BADI). BADI cổ điển là phiên bản dựa trên cải tiến được mô tả ở trên, và BADI mới, được giới thiệu cùng với... SAP NetWeaver là một phần của Khung nâng cao (Enhancement Framework) và có tốc độ cũng như tính linh hoạt cao hơn.
| Tiêu chí | BADI cổ điển | BADI mới (Kernel) |
|---|---|---|
| Được duy trì trong | SE18 và SE19 | Công cụ xây dựng nâng cấp bên trong khu vực nâng cấp |
| Bộ Lọc | Giá trị bộ lọc đơn giản | Lọc các tổ hợp bằng biểu thức logic |
| Dự phòng | Không có | Một lớp dự phòng mặc định sẽ được chạy khi không có lớp triển khai nào đang hoạt động. |
| Thuyết minh | CL_EXITHANDLER=>GET_INSTANCE | Các câu lệnh GET BADI và CALL BADI |
| HIỆU QUẢ | Chậm hơn, đối tượng được tạo ra trong mỗi lần gọi. | Nhanh hơn, được quản lý bởi nhân hệ điều hành. |
Cả hai thế hệ đều được tìm ra và triển khai theo cách tương tự, như mô tả tiếp theo.
Cách định nghĩa và triển khai BADI
Điều này bao gồm ba bước
Bước 1) Tạo định nghĩa BADI và giao diện của nó: Giao dịch SE18.
Bước 2) Tạo triển khai BADI: Giao dịch SE19
Bước 3) Định nghĩa một lớp triển khai giao diện: Trong quá trình tạo triển khai, một lớp để triển khai giao diện của phần mở rộng cũng được tạo ra.
Trong mã nguồn, chương trình chuẩn sẽ được thực thi thông qua trình xử lý thoát. Mô hình cổ điển khởi tạo tham chiếu BADI và sau đó gọi phương thức giao diện.
* 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.
💡 Mẹo: Một BADI nhân mới được gọi đơn giản hơn bằng GET BADI và CALL BADI, cả hai đều tự động xử lý các giá trị bộ lọc. Sử dụng SE18 để kiểm tra xem điểm mở rộng là BADI cổ điển hay BADI mới trước khi viết lệnh gọi.
⚠️ Cảnh báo: Giao dịch SE18 chứa định nghĩa và giao diện, trong khi SE19 chứa phần triển khai. Việc tạo phần triển khai trong SE18 hoặc định nghĩa trong SE19 là một lỗi thường gặp dẫn đến việc BADI không hoạt động.
BADI so với Lối thoát khách hàng so với Lối thoát người dùng
Cả ba kỹ thuật đều nâng cao tiêu chuẩn. SAPTuy nhiên, chúng khác nhau về công nghệ và tính linh hoạt. Bảng dưới đây so sánh BADI với hai công nghệ cũ hơn. kỹ thuật thoát hiểm.
| Tiêu chí | Lối thoát người dùng | Lối ra của khách hàng | BADI |
|---|---|---|---|
| Công nghệ | Chương trình con (FORM) | Mô-đun chức năng, màn hình hoặc menu | Giao diện và lớp hướng đối tượng |
| Phạm vi | Chỉ có mô-đun SD | Tất cả các mô-đun | Tất cả các mô-đun |
| Số lần triển khai | Một | Một | Nhiều, khi được định nghĩa là sử dụng nhiều lần |
| Được bảo trì bằng | Chỉnh sửa trực tiếp phần bao gồm | SMOD và CMOD | SE18 và SE19 |
| Upgrade an toàn | Đã kiểm tra với SPAU | Có | Có |
Nguyên tắc thực tiễn là sử dụng BADI bất cứ khi nào có thể, bởi vì nó hướng đối tượng, an toàn khi nâng cấp và có thể được triển khai nhiều lần.




