SAP Hướng dẫn BAPI – Cách tạo BAPI trong ABAP
⚡ Tóm tắt thông minh
BAPI trong SAP ABAP là một phương thức chuẩn hóa, hỗ trợ RFC của đối tượng nghiệp vụ, cho phép các ứng dụng bên ngoài truy cập vào các quy trình và dữ liệu của R/3. Trang này giải thích về các BAPI chuẩn hóa, cách tạo một BAPI trong SWO1, kiểm thử, phát hành và cách gọi BAPI từ ABAP.

BAPI là gì?
Giao diện lập trình ứng dụng doanh nghiệp (BAPI) là các giao diện (phương thức) lập trình được tiêu chuẩn hóa cho phép các ứng dụng bên ngoài truy cập vào các quy trình và dữ liệu kinh doanh trong Hệ thống R/3.
Thi cung cấp các phương pháp ổn định và tiêu chuẩn hóa để đạt được sự tích hợp liền mạch giữa Hệ thống R/3 và các ứng dụng bên ngoài, hệ thống cũ và tiện ích bổ sung.
BAPI được xác định trong BOR(Kho đối tượng kinh doanh) như các phương pháp SAP Các loại đối tượng nghiệp vụ thực hiện các chức năng nghiệp vụ cụ thể. Chúng được triển khai như sau: Chức năng hỗ trợ RFC các mô-đun và được tạo trong Trình tạo chức năng của Bàn làm việc ABAP.
Một số BAPI và phương pháp cung cấp các chức năng cơ bản và có thể được sử dụng cho hầu hết các mục đích SAP Đối tượng kinh doanh. Chúng được gọi là BAPI ĐƯỢC TIÊU CHUẨN.
Danh sách BAPI được tiêu chuẩn hóa:
- BAPI để đọc dữ liệu – GetList() , GetDetail() , GetStatus() , ExistenceCheck()
- BAPI để tạo hoặc thay đổi dữ liệu- Create() ,Change(),Delete() và Undelete() ,
- BAPI để xử lý hàng loạt -ChangeMultiple(), CreateMultiple(), DeleteMultiple().
Ưu điểm của BAPI
BAPI được ưa chuộng hơn các kỹ thuật dựa trên màn hình vì nó là một giao diện được ghi chép và phát hành. SAP Duy trì tính ổn định qua các phiên bản. Điều này mang lại một số lợi ích thiết thực.
- Giao diện ổn định: Chữ ký của một BAPI đã được phát hành không thay đổi khi nâng cấp, do đó chương trình gọi vẫn hoạt động bình thường.
- Tái sử dụng logic nghiệp vụ: BAPI thực hiện các bước xác thực tương tự như giao dịch, do đó dữ liệu được thêm vào thông qua nó luôn nhất quán.
- Kích hoạt từ xa: Vì BAPI là một mô-đun chức năng hỗ trợ RFC, nên nó có thể được gọi từ một mô-đun khác. SAP hệ thống, một Java hoặc chương trình .NET, hoặc dịch vụ web.
- Không phụ thuộc vào màn hình: Khác với việc ghi dữ liệu nhập hàng loạt, BAPI không bị lỗi khi bố cục màn hình thay đổi.
Sau khi đã hiểu rõ khái niệm và lợi ích của nó, phần tiếp theo sẽ hướng dẫn xây dựng BAPI từng bước một.
Cách tạo BAPI
Bước 1) Đi tới giao dịch swo1 (Công cụ->Khung nghiệp vụ -> Phát triển BAPI ->Trình tạo đối tượng nghiệp vụ). Chọn đối tượng nghiệp vụ, theo yêu cầu chức năng mà BAPI đang được tạo.
Bước 2) Mở đối tượng kinh doanh ở chế độ thay đổi. Sau đó chọn Tiện ích -> Phương thức API -> Thêm phương thức. Sau đó nhập tên mô-đun chức năng và chọn Tiếp tục.
Bước 3) Trong hộp thoại tiếp theo, cần phải chỉ định những thông tin sau:
- Phương pháp: Đề xuất một tên thích hợp cho phương pháp,
- Văn bản: Nhập mô tả cho BAPI,
- Các nút radio: Hộp thoại, Synchronous, độc lập với phiên bản. BAPI thường được triển khai đồng bộ.
Bước 4) Để tạo phương pháp, hãy chọn Có trong hộp thoại tiếp theo.
Bước 5) Sau khi chương trình được tạo và thực thi, hãy kiểm tra chương trình theo phương thức vừa tạo. Như vậy, BAPI được tạo.
Kiểm tra BAPI
Bạn có thể kiểm tra BAPI bằng cách Kiểm tra phương thức riêng lẻ của Đối tượng Kinh doanh trong Trình tạo Đối tượng Kinh doanh. (hoặc người ta có thể sử dụng giao dịch 'SWUD' để kiểm tra phương thức).
Phát hành và đóng băng BAPI
- Để giải phóng BAPI, trước tiên hãy giải phóng mô-đun chức năng (sử dụng giao dịch se37).
- Đặt trạng thái của phương thức thành 'đã phát hành' trong Trình tạo đối tượng nghiệp vụ (sử dụng giao dịch SWo1 – Chỉnh sửa-> thay đổi trạng thái-> đã phát hành. )
Bạn cũng có thể sử dụng BAPI Explorer (Mã giao dịch BAPI) để xem 360′ trên BAPI
Cách gọi BAPI trong ABAP
Một BAPI được gọi giống như bất kỳ module hàm nào được kích hoạt RFC. Quy tắc quan trọng là BAPI không bao giờ tự phát ra lệnh COMMIT WORK, vì vậy người gọi phải xác nhận thay đổi bằng BAPI_TRANSACTION_COMMIT hoặc hủy bỏ nó bằng BAPI_TRANSACTION_ROLLBACK. Ví dụ dưới đây tạo một đơn đặt hàng bán hàng bằng BAPI chuẩn.
DATA: ls_header TYPE bapisdhd1, lt_items TYPE STANDARD TABLE OF bapisditm, lt_return TYPE STANDARD TABLE OF bapiret2, lv_order TYPE vbeln. * Fill the header and item structures, then call the BAPI CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2' EXPORTING order_header_in = ls_header IMPORTING salesdocument = lv_order TABLES order_items_in = lt_items return = lt_return. * A BAPI does not commit on its own - decide based on the return table READ TABLE lt_return WITH KEY type = 'E' TRANSPORTING NO FIELDS. IF sy-subrc = 0. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. ENDIF.
⚠️ Cảnh báo: Luôn kiểm tra bảng RETURN để tìm thông báo loại E hoặc A trước khi thực hiện lệnh commit. Việc gọi BAPI_TRANSACTION_COMMIT sau khi xảy ra lỗi sẽ lưu một chứng từ chưa hoàn chỉnh, đây là một trong những lỗi BAPI phổ biến nhất.
BAPI so với BDC so với RFC
Một BAPI, một BDCvà một RFC đơn giản đều chuyển dữ liệu vào SAPNhưng chúng khác nhau về độ ổn định và khả năng tái sử dụng. Bảng dưới đây so sánh chúng.
| Tiêu chí | BAPI | BDC | RFC (tùy chỉnh) |
|---|---|---|---|
| Giao thức | Phương thức Released của một đối tượng nghiệp vụ | Trình tự hiển thị màn hình của một giao dịch | Bất kỳ mô-đun chức năng tùy chỉnh nào |
| Độ ổn định khi nâng cấp | Đảm bảo cho các BAPI đã phát hành. | Sẽ bị lỗi nếu màn hình thay đổi | Tùy thuộc vào nhà phát triển. |
| Đã bật từ xa | Có | Không | Có |
| Xác thực kinh doanh | Đầy đủ, giống như giao dịch | Đầy đủ, hiển thị các màn hình thực tế | Chỉ những gì nhà phát triển lập trình mới làm được. |
| Tốt nhất cho | Tích hợp và giao diện ổn định | Tải dữ liệu khi không có BAPI nào tồn tại. | Dịch vụ kết nối điểm-đến-điểm tùy chỉnh |
Nguyên tắc chung là sử dụng BAPI đã được phát hành bất cứ khi nào có sẵn, chuyển sang sử dụng BDC khi không có, và chỉ dành các RFC tùy chỉnh cho các dịch vụ đặc thù.





