BADI คืออะไรใน SAP เอบัพ?

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

บาดีใน SAP ABAP ย่อมาจาก Business Add-In ซึ่งเป็นส่วนเสริมเชิงวัตถุที่เชื่อมต่อตรรกะที่กำหนดเองเข้ากับมาตรฐาน SAP ฟังก์ชันการทำงาน หน้านี้อธิบายว่า BADI คืออะไร คุณสมบัติ ประเภทคลาสสิกและประเภทใหม่ เวิร์กโฟลว์ SE18 และ SE19 และวิธีการเปรียบเทียบกับ Exit

  • 🧩 คำจำกัดความหลัก: Business Add-In คือส่วนเสริมที่ช่วยเพิ่มประสิทธิภาพการทำงาน เช่นเดียวกับ Customer Exit ที่ช่วยเพิ่มฟังก์ชันการทำงานแบบกำหนดเองให้กับระบบมาตรฐาน SAP โดยไม่แก้ไขอะไรเลย
  • 🧱 การเขียนโปรแกรมเชิงวัตถุ: BADI กำหนดอินเทอร์เฟซ และส่วนเสริมจะอยู่ในคลาสที่ใช้งานอินเทอร์เฟซนั้น แทนที่จะอยู่ในส่วน include ที่สงวนไว้
  • 🔁 การใช้งานหลายรูปแบบ: แตกต่างจาก Customer Exit ตรงที่ BADI สามารถนำไปใช้งานได้หลายครั้ง ซึ่งเหมาะกับโซลูชันเฉพาะอุตสาหกรรมและเวอร์ชันเฉพาะประเทศ
  • 🔓 Upgrade ปลอดภัย: BADI ไม่ต้องการอะไรเลย SAP การลงทะเบียนการเปลี่ยนแปลงซอฟต์แวร์จะไม่ได้รับผลกระทบจากการอัปเกรดเวอร์ชัน
  • 🛠️ คำจำกัดความและการนำไปใช้: คำจำกัดความและอินเทอร์เฟซถูกสร้างขึ้นใน SE18 และการใช้งานพร้อมคลาสถูกสร้างขึ้นใน SE19
  • 🆕 คลาสสิกและใหม่: BADI แบบดั้งเดิมนั้นเน้นการปรับปรุงประสิทธิภาพ ในขณะที่ BADI แบบใหม่ที่เพิ่มเข้ามาใน NetWeaver นั้นเพิ่มตัวกรอง คลาสสำรอง และประสิทธิภาพที่ดีขึ้น

BADI คืออะไรใน SAP ABAP

BADI คืออะไร?

BADI ย่อมาจาก Business Add Iเช่นเดียวกับ Customer Exits, BADI ช่วยเชื่อมต่อการปรับปรุงแบบกำหนดเองเข้ากับระบบ SAP ฟังก์ชั่น ตัวอย่างของ BADI: ในการทำธุรกรรม CAT2 – การลงรายการเวลา ฝ่ายทรัพยากรบุคคลต้องการรวมการรับทราบแบบโต้ตอบว่าการส่งข้อมูลที่ไม่ถูกต้องโดยเจตนาถือเป็นเหตุให้เลิกจ้าง ซึ่งสามารถทำได้โดยใช้ BADI

ตัวอย่างของ BADI

ความแตกต่างจาก Exit แบบคลาสสิกนั้นอยู่ที่ด้านเทคนิค BADI สร้างขึ้นจาก ABAP Objects ดังนั้นโปรแกรมมาตรฐานจะเรียกใช้เมธอดของอินเทอร์เฟซ และโค้ดที่กำหนดเองจะอยู่ในคลาสที่ใช้งานเมธอดนั้น นี่คือเหตุผลที่ BADI มักถูกอธิบายว่าเป็น Exit เวอร์ชันเชิงวัตถุที่มาแทนที่ Exit แบบคลาสสิก ลูกค้าทางออก.

คุณสมบัติ

  • BADI เป็น Object Oriented
  • สามารถนำไปใช้ได้หลายครั้ง
  • ไม่จำเป็นต้องใช้ SAP ซอฟต์แวร์ เปลี่ยนแปลงการลงทะเบียน
  • ไม่มีผลต่อการเปิดตัวอัพเกรดการทำงานของ BADI

คุณลักษณะทั้งสี่ประการนี้อธิบายว่าทำไม SAP แนะนำให้ใช้ BADI แทนการใช้ทางออกแบบดั้งเดิม เนื่องจากส่วนปรับปรุงนี้อยู่ในคลาสแยกต่างหาก จึงยังคงใช้งานได้โดยไม่เปลี่ยนแปลงแม้จะมีการอัปเกรด และเนื่องจาก BADI สามารถกำหนดให้ใช้งานได้หลายครั้ง ทีมหลายทีมจึงสามารถปรับปรุงจุดเดียวกันได้โดยไม่เขียนทับกัน

ประเภทของ BADI

SAP นำเสนอ Business Add-Ins สองรุ่น รุ่นคลาสสิก BADI คือเวอร์ชันที่ใช้การปรับปรุงตามที่อธิบายไว้ข้างต้น และรุ่น BADI ใหม่ ซึ่งเปิดตัวพร้อมกับ SAP NetWeaver เป็นส่วนหนึ่งของ Enhancement Framework และมีความเร็วและความยืดหยุ่นมากกว่า

หลักเกณฑ์ บาดีสุดคลาสสิก BADI ใหม่ (เคอร์เนล)
บำรุงรักษาใน SE18 และ SE19 ตัวสร้างการปรับปรุงภายในจุดปรับปรุง
ไส้กรอง ค่าตัวกรองแบบง่าย กรองชุดค่าผสมด้วยนิพจน์ตรรกะ
รั้งท้าย ไม่มีบริการ คลาสสำรองเริ่มต้นจะทำงานเมื่อไม่มีการใช้งานใด ๆ ที่ใช้งานอยู่
การสร้างอินสแตนซ์ 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 เทียบกับ Customer Exit เทียบกับ User Exit

เทคนิคทั้งสามอย่างนี้ช่วยยกระดับมาตรฐาน SAPแต่ทั้งสองรุ่นแตกต่างกันในด้านเทคโนโลยีและความยืดหยุ่น ตารางด้านล่างแสดงตำแหน่งของ BADI เทียบกับสองรุ่นเก่ากว่า เทคนิคการออกจากระบบ.

หลักเกณฑ์ ทางออกผู้ใช้ ทางออกลูกค้า บาดี
เทคโนโลยี ซับรูทีน (ฟอร์ม) โมดูลฟังก์ชัน หน้าจอ หรือเมนู อินเทอร์เฟซและคลาสเชิงวัตถุ
ขอบเขต โมดูล SD เท่านั้น โมดูลทั้งหมด โมดูลทั้งหมด
จำนวนการนำไปใช้ หนึ่ง หนึ่ง หลายอย่าง เมื่อนิยามว่าเป็นการใช้งานหลายครั้ง
บำรุงรักษาด้วย แก้ไขโดยตรงของไฟล์ที่รวมอยู่ SMOD และ CMOD SE18 และ SE19
Upgrade ปลอดภัย ตรวจสอบกับ SPAU แล้ว มี (ใบกำกับภาษีเต็มรูปแบบ) มี (ใบกำกับภาษีเต็มรูปแบบ)

หลักปฏิบัติคือการใช้ BADI ทุกครั้งที่มีอยู่ เพราะเป็นการเขียนโปรแกรมเชิงวัตถุ ปลอดภัยต่อการอัปเกรด และสามารถนำไปใช้งานได้มากกว่าหนึ่งครั้ง

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

SE18 คือตัวสร้าง BADI ซึ่งใช้ในการสร้างคำจำกัดความและอินเทอร์เฟซ ส่วน SE19 คือตัวสร้างการใช้งาน ซึ่งใช้ในการสร้างคลาสที่นำไปใช้งานกับคำจำกัดความนั้น ตัวหนึ่งใช้กำหนด hook อีกตัวหนึ่งใช้เติมข้อมูลลงใน hook นั้น

BADI ที่ใช้งานได้หลายครั้งจะอนุญาตให้มีการใช้งานพร้อมกันได้มากกว่าหนึ่งรายการ และทุกรายการจะทำงานเมื่อมีการเรียกใช้เมธอด ในขณะที่ BADI ที่ใช้งานได้ครั้งเดียวจะอนุญาตให้มีการใช้งานพร้อมกันได้เพียงรายการเดียวเท่านั้น

ตั้งเบรกพอยต์ที่ CL_EXITHANDLER=>GET_INSTANCE รันธุรกรรม และอ่านชื่อ BADI จากพารามิเตอร์ EXIT_NAME สำหรับ BADI ใหม่ ให้ค้นหาจุดปรับปรุงของโปรแกรมในระบบข้อมูลคลังเก็บข้อมูล

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

ที่ปรึกษา AI จะตรวจสอบโปรแกรมมาตรฐานและรายงานตัวเลือกการปรับปรุงที่มีอยู่ จากนั้นจะแนะนำ BADI ใหม่ภายในจุดปรับปรุงเพื่อการทำงานใหม่ต่อไปping BADI แบบคลาสสิกที่เสนอตัวเลือกนั้นเพียงตัวเลือกเดียว

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