SAP บทช่วยสอน BAPI – วิธีการสร้าง BAPI ใน ABAP

⚡ สรุปอย่างชาญฉลาด

BAPI ใน SAP ABAP เป็นวิธีการสร้างอ็อบเจ็กต์ทางธุรกิจที่เป็นมาตรฐานและรองรับ RFC ซึ่งช่วยให้แอปพลิเคชันภายนอกสามารถเข้าถึงกระบวนการและข้อมูลในระบบ R/3 ได้ หน้านี้อธิบายเกี่ยวกับ BAPI ที่เป็นมาตรฐาน วิธีการสร้าง BAPI ใน SWO1 การทดสอบ การเผยแพร่ และวิธีการเรียกใช้ BAPI จาก ABAP

  • 🔌 คำจำกัดความหลัก: อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชันทางธุรกิจ (Business Application Programming Interface หรือ BAP) เป็นวิธีการที่เสถียรซึ่งช่วยให้ระบบภายนอกสามารถเข้าถึงแอปพลิเคชันได้อย่างเป็นมาตรฐาน SAP กระบวนการทางธุรกิจและข้อมูล
  • 🗃️ คลังเก็บวัตถุทางธุรกิจ: BAPI ถูกกำหนดไว้ใน BOR ในรูปแบบของเมธอดของประเภทวัตถุทางธุรกิจ และถูกนำไปใช้ในรูปแบบของโมดูลฟังก์ชันที่เปิดใช้งาน RFC
  • 📚 BAPI มาตรฐาน: เมธอด GetList, GetDetail, Create, Change, Delete และ Multiple เป็นรูปแบบที่สามารถนำกลับมาใช้ซ้ำได้สำหรับการอ่าน เขียน และประมวลผลข้อมูลจำนวนมาก
  • 🛠️ การสร้าง: BAPI ถูกสร้างขึ้นในธุรกรรม SWO1 โดยการเพิ่มเมธอด API ที่ชี้ไปยังโมดูลฟังก์ชันที่เปิดใช้งาน RFC
  • ทดสอบและเผยแพร่: วิธีการนี้จะได้รับการทดสอบใน Business Object Builder หรือ SWUD จากนั้นจึงเผยแพร่โดยการเผยแพร่โมดูลฟังก์ชันและตั้งค่าสถานะของวิธีการ
  • 📞 การเรียกใช้ BAPI: โปรแกรม ABAP จะเรียกใช้ฟังก์ชันโมดูล จากนั้นจึงทำการยืนยันธุรกรรมด้วย BAPI_TRANSACTION_COMMIT เนื่องจาก BAPI จะไม่ทำการยืนยันธุรกรรมโดยอัตโนมัติ

วิธีการสร้าง BAPI ใน SAP ABAP

BAPI คืออะไร?

Business Application Programming Interface (BAPI) เป็นอินเทอร์เฟซการเขียนโปรแกรมมาตรฐาน (วิธีการ) ที่ช่วยให้แอปพลิเคชันภายนอกสามารถเข้าถึงกระบวนการทางธุรกิจและข้อมูลในระบบ R/3

พวกเขา จัดให้มีวิธีการที่มั่นคงและเป็นมาตรฐาน เพื่อให้เกิดการบูรณาการอย่างราบรื่นระหว่างระบบ R/3 และแอปพลิเคชันภายนอก ระบบเดิม และส่วนเสริม

BAPIs ถูกกำหนดไว้ใน BOR (ที่เก็บออบเจ็กต์ทางธุรกิจ) เป็นวิธีการของ SAP ประเภทของวัตถุทางธุรกิจที่ทำหน้าที่เฉพาะด้านธุรกิจ โดยจะถูกนำไปใช้ในรูปแบบต่างๆ ดังนี้ ฟังก์ชันที่เปิดใช้งาน RFC โมดูลต่างๆ และถูกสร้างขึ้นใน Function Builder ของ ABAP Workbench

BAPI และวิธีการบางอย่างมีฟังก์ชันพื้นฐานและสามารถใช้ได้ส่วนใหญ่ SAP วัตถุทางธุรกิจ สิ่งเหล่านี้เรียกว่า BAPI's มาตรฐาน

รายชื่อ BAPI ที่ได้มาตรฐาน:

  • BAPI สำหรับการอ่านข้อมูล – GetList() , GetDetail() , GetStatus() , ExistenceCheck()
  • BAPI สำหรับการสร้างหรือการเปลี่ยนแปลงข้อมูล - สร้าง() ,เปลี่ยน(),ลบ() และยกเลิกการลบ() ,
  • BAPI สำหรับการประมวลผลจำนวนมาก -ChangeMultiple(), CreateMultiple(), DeleteMultiple()

ข้อดีของ BAPI

BAPI เป็นที่นิยมมากกว่าเทคนิคที่ใช้หน้าจอ เนื่องจากเป็นอินเทอร์เฟซที่มีเอกสารประกอบและเผยแพร่แล้ว SAP รักษาเสถียรภาพได้ดีในทุกเวอร์ชัน ซึ่งนำมาซึ่งประโยชน์ในทางปฏิบัติหลายประการ

  • อินเทอร์เฟซที่เสถียร: ลายเซ็นของ BAPI ที่เผยแพร่แล้วจะไม่เปลี่ยนแปลงเมื่อมีการอัปเกรด ดังนั้นโปรแกรมที่เรียกใช้งานจึงยังคงทำงานได้ต่อไป
  • การนำตรรกะทางธุรกิจกลับมาใช้ใหม่: BAPI จะทำการตรวจสอบความถูกต้องเช่นเดียวกับการทำธุรกรรม ดังนั้นข้อมูลที่เพิ่มเข้ามาผ่าน BAPI จึงมีความสอดคล้องกัน
  • เปิดใช้งานการควบคุมระยะไกล: เนื่องจาก BAPI เป็นโมดูลฟังก์ชันที่รองรับ RFC จึงสามารถเรียกใช้จากโมดูลอื่นได้ SAP ระบบก Java หรือโปรแกรม .NET หรือบริการเว็บ
  • ไม่ขึ้นอยู่กับหน้าจอ: ต่างจากการบันทึกข้อมูลแบบกลุ่ม (batch input recording) BAPI จะไม่หยุดทำงานเมื่อรูปแบบหน้าจอเปลี่ยนแปลง

เมื่อเข้าใจแนวคิดและประโยชน์ของมันอย่างชัดเจนแล้ว ในส่วนถัดไปจะเป็นการสร้าง BAPI ทีละขั้นตอน

วิธีสร้าง BAPI

ขั้นตอน 1) ไปที่ธุรกรรม swo1 (เครื่องมือ->กรอบงานธุรกิจ -> การพัฒนา BAPI ->ตัวสร้างออบเจ็กต์ธุรกิจ) เลือกออบเจ็กต์ธุรกิจ ตามความต้องการการทำงานที่ BAPI กำลังถูกสร้างขึ้น

สร้าง BAPI ใน ABAP

ขั้นตอน 2) เปิดวัตถุธุรกิจในโหมดการเปลี่ยนแปลง จากนั้นเลือก Utilities -> API Methods -> Add method จากนั้นป้อนชื่อของโมดูลฟังก์ชันและเลือก Continue

สร้าง BAPI ใน ABAP

ขั้นตอน 3) ในกล่องโต้ตอบถัดไปจำเป็นต้องระบุข้อมูลดังต่อไปนี้:

  • วิธีการ : เสนอชื่อที่เหมาะสมสำหรับวิธีการ
  • ข้อความ : ป้อนคำอธิบายสำหรับ BAPI
  • ปุ่มตัวเลือก : กล่องโต้ตอบ, Synchronous, อิสระจากอินสแตนซ์ โดยทั่วไป BAPI จะถูกนำไปใช้อย่างซิงโครนัส

สร้าง BAPI ใน ABAP

ขั้นตอน 4) ในการสร้างวิธีการ ให้เลือกใช่ในกล่องโต้ตอบถัดไป

สร้าง BAPI ใน ABAP

ขั้นตอน 5) หลังจากที่โปรแกรมถูกสร้างขึ้นและดำเนินการแล้ว ให้ตรวจสอบโปรแกรมในวิธีที่เพิ่งสร้างขึ้น ดังนั้น BAPI จะถูกสร้างขึ้น

สร้าง BAPI ใน ABAP

การทดสอบ BAPI

คุณสามารถทดสอบ BAPI ได้โดย การทดสอบ วิธีการเฉพาะของ Business Object ใน Business Object Builder (หรือสามารถใช้ธุรกรรม 'SWUD' เพื่อทดสอบวิธีการได้)

การปล่อยและแช่แข็ง BAPI

  • หากต้องการปลด BAPI ให้ปล่อยโมดูลฟังก์ชันก่อน (โดยใช้ทรานแซคชัน se37)
  • ตั้งค่าสถานะของวิธีการเป็น 'เผยแพร่แล้ว' ใน Business Object Builder (โดยใช้ธุรกรรม SWo1 – แก้ไข-> เปลี่ยนสถานะ-> นำออกใช้)

คุณยังสามารถใช้ BAPI Explorer (รหัสธุรกรรม BAPI) สำหรับมุมมอง 360′ บน BAPI

วิธีการเรียกใช้ BAPI ใน ABAP

BAPI ถูกเรียกใช้งานเหมือนกับฟังก์ชันโมดูลที่เปิดใช้งาน RFC ทั่วไป กฎสำคัญคือ BAPI จะไม่ทำการ COMMIT WORK ด้วยตัวเอง ดังนั้นผู้เรียกใช้งานจะต้องยืนยันการเปลี่ยนแปลงด้วย BAPI_TRANSACTION_COMMIT หรือยกเลิกด้วย BAPI_TRANSACTION_ROLLBACK ตัวอย่างด้านล่างสร้างใบสั่งขายโดยใช้ BAPI มาตรฐาน

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.

⚠️คำเตือน: ตรวจสอบตาราง RETURN เสมอเพื่อหาข้อความประเภท E หรือ A ก่อนทำการยืนยันธุรกรรม การเรียกใช้ BAPI_TRANSACTION_COMMIT หลังจากเกิดข้อผิดพลาดจะบันทึกเอกสารที่ไม่สมบูรณ์ ซึ่งเป็นหนึ่งในข้อผิดพลาด BAPI ที่พบบ่อยที่สุด

BAPI เทียบกับ BDC เทียบกับ RFC

BAPI, a BDCและ RFC ทั่วไปทั้งหมดจะย้ายข้อมูลเข้าไป SAPแต่มีความแตกต่างกันในด้านความเสถียรและการนำกลับมาใช้ใหม่ ตารางด้านล่างนี้เปรียบเทียบทั้งสองแบบ

หลักเกณฑ์ บาปิ BDC อาร์เอฟซี (แบบกำหนดเอง)
อินเตอร์เฟซ เมธอดที่ปล่อยออกมาของวัตถุทางธุรกิจ ลำดับหน้าจอของการทำธุรกรรม โมดูลฟังก์ชันแบบกำหนดเองใดๆ
ความเสถียรในการอัปเกรด รับประกันสำหรับ BAPI ที่เผยแพร่แล้ว เกิดปัญหาหากหน้าจอมีการเปลี่ยนแปลง ขึ้นอยู่กับผู้พัฒนา
เปิดใช้งานการควบคุมระยะไกล มี (ใบกำกับภาษีเต็มรูปแบบ) ไม่ มี (ใบกำกับภาษีเต็มรูปแบบ)
การตรวจสอบธุรกิจ ครบถ้วน เหมือนกับการทำธุรกรรม เต็มรูปแบบ แสดงหน้าจอจริง เฉพาะสิ่งที่นักพัฒนาเขียนโค้ดเท่านั้น
เหมาะสำหรับ การผสานรวมและอินเทอร์เฟซที่เสถียร โหลดข้อมูลในกรณีที่ไม่มี BAPI อยู่ บริการแบบจุดต่อจุดที่กำหนดเอง

หลักการโดยทั่วไปคือ ให้ใช้ BAPI ที่เผยแพร่แล้วทุกครั้งที่มีอยู่ ให้ใช้ BDC แทนหากไม่มี และสงวน RFC แบบกำหนดเองไว้สำหรับบริการเฉพาะทางเท่านั้น

คำถามที่พบบ่อย

BAPI จะทำการอัปเดต แต่ปล่อยให้ผู้เรียกใช้เป็นผู้ดำเนินการ COMMIT WORK ดังนั้นจึงสามารถรวม BAPI หลายตัวเข้าเป็นหน่วยงานเชิงตรรกะเดียวได้ จากนั้น BAPI_TRANSACTION_COMMIT จะบันทึกข้อมูลเหล่านั้นพร้อมกันping ข้อมูลมีความสอดคล้องกัน

ตาราง RETURN ชนิด BAPIRET2 บรรจุข้อความของการเรียกใช้ฟังก์ชัน แถวที่มีประเภท S หมายถึงสำเร็จ E หมายถึงข้อผิดพลาด W หมายถึงคำเตือน และ A หมายถึงยกเลิก ผู้เรียกใช้จะอ่านข้อมูลในตารางนี้เพื่อตัดสินใจว่าจะยืนยันการเรียกใช้ฟังก์ชันหรือไม่

ธุรกรรม BAPI จะเปิด BAPI Explorer ซึ่งแสดงรายการวัตถุทางธุรกิจและเมธอดทั้งหมด พร้อมเอกสารประกอบและเครื่องมือทดสอบ นอกจากนี้ SE37 ยังแสดง BAPI ด้วย เนื่องจากแต่ละ BAPI เป็นโมดูลฟังก์ชันที่เปิดใช้งาน RFC

ใช่แล้ว ผู้ช่วย AI ในเครื่องมือพัฒนา ABAP จะแนะนำ BAPI มาตรฐานสำหรับอ็อบเจ็กต์ทางธุรกิจ และร่างแผนผังพารามิเตอร์pingและเพิ่มการยืนยันการเปลี่ยนแปลงและการจัดการข้อผิดพลาด นักพัฒนาตรวจสอบความถูกต้องของข้อมูลและทดสอบการเรียกใช้งาน

ใช่แล้ว บริการ OData และการผสานรวม AI จำนวนมากเรียกใช้ BAPI อยู่เบื้องหลัง เนื่องจาก BAPI มีตรรกะทางธุรกิจอยู่แล้ว เลเยอร์ใหม่ๆ จะเพิ่มการเข้าถึง REST และภาษาธรรมชาติลงบนอินเทอร์เฟซ BAPI ที่เสถียรอยู่แล้ว

สรุปโพสต์นี้ด้วย: