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.

  • 🧩 Định nghĩa cốt lõi: Business Add-In là một công cụ mở rộng, tương tự như một điểm thoát cho khách hàng, giúp gắn chức năng tùy chỉnh vào các chức năng tiêu chuẩn. SAP mà không sửa đổi nó.
  • 🧱 Lập trình hướng đối tượng: BADI định nghĩa một giao diện, và phần mở rộng nằm trong một lớp thực thi giao diện đó, chứ không phải trong một phần bao gồm dành riêng.
  • 🔁 Nhiều triển khai: Không giống như lối thoát khách hàng, BADI có thể được triển khai nhiều lần, phù hợp với các giải pháp trong ngành và các phiên bản quốc gia.
  • 4 Upgrade an toàn: Một BADI không cần SAP Đăng ký thay đổi phần mềm và không bị ảnh hưởng bởi việc nâng cấp phiên bản.
  • 🛠️ Định nghĩa và triển khai: Phần định nghĩa và giao diện được tạo trong SE18, còn phần triển khai với lớp của nó được tạo trong SE19.
  • 🆕 Cổ điển và Hiện đại: BADI cổ điển dựa trên các cải tiến, trong khi BADI nhân mới được giới thiệu trong NetWeaver bổ sung thêm các bộ lọc, các lớp dự phòng và hiệu suất tốt hơn.

BADI là gì? SAP ABAP

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

Ví dụ về 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.

Xác định và triển khai BADI

Bước 2) Tạo triển khai BADI: Giao dịch SE19

Xác định và triển khai BADI

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

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.

Câu Hỏi Thường Gặp

SE18 là Trình tạo BADI, nơi định nghĩa và giao diện của nó được tạo ra. SE19 là Trình tạo triển khai, nơi một lớp triển khai được gắn vào định nghĩa đó. Một cái định nghĩa hook, cái kia điền thông tin vào hook.

BADI đa dụng cho phép nhiều triển khai hoạt động cùng một lúc, và tất cả chúng đều chạy khi phương thức được gọi. BADI đơn dụng chỉ cho phép một triển khai hoạt động.

Đặt điểm dừng tại CL_EXITHANDLER=>GET_INSTANCE, chạy giao dịch và đọc tên BADI từ tham số EXIT_NAME. Đối với các BADI mới, hãy tìm kiếm các vị trí mở rộng của chương trình trong Hệ thống Thông tin Kho lưu trữ.

Đúng vậy. Các trợ lý AI trong công cụ phát triển ABAP sẽ soạn thảo lớp triển khai, phần thân phương thức và logic lọc dựa trên mô tả yêu cầu. Nhà phát triển vẫn kích hoạt việc triển khai trong SE19 và kiểm tra nó.

Các chuyên gia tư vấn AI sẽ xem xét chương trình tiêu chuẩn và báo cáo các tùy chọn nâng cấp hiện có, sau đó đề xuất BADI mới trong một vị trí nâng cấp để thực hiện công việc mới, giữ nguyên...ping BADI cổ điển, nơi chỉ có tùy chọn đó được cung cấp.

Tóm tắt bài viết này với: