ความแตกต่างระหว่าง User Exit และ Customer Exit ใน SAP

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

ทางออกของผู้ใช้และทางออกของลูกค้าใน SAP ABAP คือส่วนเสริมที่เพิ่มฟังก์ชันการทำงานแบบกำหนดเองให้กับโปรแกรมมาตรฐานโดยไม่ต้องแก้ไขโปรแกรม SAP หน้านี้อธิบายเกี่ยวกับประเภทของ Customer Exit, ตัวอย่างการใช้งาน, ธุรกรรม SMOD และ CMOD, User Exit และความแตกต่างระหว่างสองเทคนิคนี้

  • 🪝 คำจำกัดความหลัก: ทางออกของลูกค้าคือตะขอที่วางไว้โดย SAP ภายในโปรแกรม หน้าจอ หรือเมนูมาตรฐาน ที่ลูกค้าสามารถเพิ่มตรรกะที่กำหนดเองได้
  • 🧩 ทางออกสามประเภท: ฟังก์ชันโมดูลใช้สำหรับเพิ่มโค้ด ฟังก์ชันหน้าจอใช้สำหรับเพิ่มฟิลด์ผ่านหน้าจอย่อย และฟังก์ชันเมนูใช้สำหรับเพิ่มรายการลงในเมนูแบบดรอปดาวน์
  • 🔍 การหาทางออก: ธุรกรรม SMOD จะแสดงรายการทางออกที่มีอยู่ และ SE81 จะเรียกดูทางออกเหล่านั้นตามพื้นที่การใช้งาน
  • 🛠️ การดำเนินการ: มีการสร้างโปรเจ็กต์ใน CMOD กำหนด Exit ให้กับโปรเจ็กต์ เขียนโค้ด และเปิดใช้งานโปรเจ็กต์
  • 📦 ทางออกสำหรับผู้ใช้: User Exit มีจุดประสงค์เดียวกัน แต่มีอยู่เฉพาะในโมดูล SD เท่านั้น โดย MV45AFZZ เป็นตัวอย่างที่รู้จักกันดีที่สุด
  • 🇧🇷 การเลือกเทคนิค: User exit คือซับรูทีนของ SD, Customer exit คือการทำงานข้ามโมดูลและปลอดภัยต่อการอัปเกรด และ BAdI คือตัวพัฒนาเชิงวัตถุที่มาแทนที่ทั้งสองอย่าง

ทางออกของผู้ใช้และทางออกของลูกค้าใน SAP

Customer Exits คืออะไร?

ลูกค้าออกคือ “ตะขอ” ให้บริการโดย SAP ภายในโปรแกรม หน้าจอ และเมนูมาตรฐานมากมายที่ลูกค้าสามารถทำได้ "แขวน" ฟังก์ชันการทำงานแบบกำหนดเองเพื่อตอบสนองความต้องการทางธุรกิจ เราจะมาพูดถึงเรื่องนี้กันอีกสักครู่…

ข้อดีที่สำคัญคือมาตรฐาน SAP วัตถุจะไม่ถูกแก้ไขเลย โค้ดที่กำหนดเองจะอยู่ในส่วนที่สงวนไว้หรือหน้าจอย่อยที่ SAP เรียกใช้ฟังก์ชันในเวลาที่เหมาะสม เพื่อให้การปรับปรุงยังคงอยู่แม้หลังจากการอัปเกรดระบบ แทนที่จะถูกเขียนทับ ด้วยเหตุนี้ ฟังก์ชัน Exit จึงจัดอยู่ในกลุ่มของฟังก์ชันประเภทต่างๆ SAP เทคนิคการปรับปรุงประสิทธิภาพร่วมกับส่วนเสริมทางธุรกิจรุ่นใหม่

ประเภทของลูกค้าที่ออก

ทางออกของลูกค้ามีสามประเภทหลัก:

  1. ออกจากโมดูลฟังก์ชัน
  2. ออกจากหน้าจอ
  3. เมนูออก

ออกจากโมดูลฟังก์ชัน: ช่วยให้ลูกค้าสามารถเพิ่มโค้ดผ่านโมดูลฟังก์ชันในตำแหน่งที่กำหนดในไฟล์ได้ SAP โปรแกรมประยุกต์

Syntax: CALL CUSTOMER-FUNCTION '004'

หน้าจอออก: ช่วยให้ลูกค้าสามารถเพิ่มฟิลด์ลงในหน้าจอได้ SAP โครงการ ผ่านหน้าจอย่อย หน้าจอย่อยถูกเรียกภายในโฟลว์ลอจิกของหน้าจอมาตรฐาน

Format: CALL CUSTOMER-SUBSCREEN CUSTSCR2

เมนูออก: ระบบนี้ช่วยให้ลูกค้าสามารถเพิ่มรายการลงในเมนูแบบดรอปดาวน์ได้ในรูปแบบมาตรฐาน SAP โปรแกรม รายการเหล่านี้อาจใช้เพื่อเรียกโปรแกรมเสริมหรือหน้าจอที่กำหนดเอง

Format: +CUS ( additional item in GUI status )

ตัวอย่างการออกของลูกค้า

ตัวอย่างการออกจากหน้าจอ:

ในการทำธุรกรรม CAT2 – การลงรายการเวลา ฝ่ายทรัพยากรบุคคลต้องการรวมการรับทราบแบบโต้ตอบว่าการส่งข้อมูลที่ไม่ถูกต้องโดยตั้งใจถือเป็นเหตุให้เลิกจ้าง

ตัวอย่างการออกของลูกค้า

ตัวอย่างการออกจากเมนู:

ในธุรกรรม SE38 – ABAP Editor ทีมพัฒนาต้องการรวมลิงก์เมนูไปยังธุรกรรม SE80 – Object Navigator เพื่อความสะดวกในการใช้งาน

ก่อน

ตัวอย่างการออกของลูกค้า

หลัง

ตัวอย่างการออกของลูกค้า

ตัวอย่างการออกจากโมดูลฟังก์ชัน:

บริษัทต้องการให้รายละเอียดธนาคารของผู้ขายในการสร้างผู้ขายเป็นกิจกรรมที่จำเป็น ดังนั้นจึงต้องแสดงข้อความแสดงข้อผิดพลาดว่า 'กรุณาป้อนรายละเอียดธนาคาร'

ก่อน

ตัวอย่างการออกของลูกค้า

หลัง

ตัวอย่างการออกของลูกค้า

การค้นหาทางออกของลูกค้า

ในการทำธุรกรรม สโมด และดูรายละเอียด-

การค้นหาทางออกของลูกค้า

หรือในการทำธุรกรรม SE81 คุณสามารถใช้พื้นที่การใช้งานที่เหมาะสมได้

การค้นหาทางออกของลูกค้า

สร้างทางออกของลูกค้า

หากต้องการสร้างทางออกของลูกค้า คุณต้องสร้างโปรเจ็กต์ในธุรกรรมก่อน ซีเอ็มโอดี

สร้างทางออกของลูกค้า

Later คุณกำหนดทางออกของลูกค้าให้กับโครงการของคุณ

ขั้นตอนทั้งหมดตั้งแต่การหาทางออกจนถึงการกดรหัสใช้เวลาสั้น และจะประกอบด้วยขั้นตอนหกขั้นตอนเหมือนเดิมเสมอ

  1. ค้นหาส่วนเสริม: ค้นหาชื่อส่วนเสริมใน SMOD ตัวอย่างเช่น คอมโพเนนต์ EXIT_SAPMF02K_001 สำหรับข้อมูลหลักของผู้ขาย
  2. สร้างโปรเจ็กต์: ใน CMOD ให้ป้อนชื่อโปรเจ็กต์ที่ขึ้นต้นด้วย Z หรือ Y แล้วเลือก สร้าง
  3. กำหนดการปรับปรุง: ในหน้าจอการกำหนดส่วนเสริม ให้เพิ่มชื่อส่วนเสริมที่มีทางออก (extension) อยู่ด้วย
  4. เขียนโค้ด: เปิดฟังก์ชันโมดูล exit แล้ววางโค้ดไว้ภายในส่วน include ที่สงวนไว้ ซึ่งขึ้นต้นด้วย ZX
  5. จัดการส่วนต่างๆ ของหน้าจอและเมนู: สำหรับการออกจากหน้าจอ ให้สร้างซับสกรีน CUSTSCR และสำหรับการออกจากเมนู ให้กรอกรหัสฟังก์ชัน +CUS ในสถานะ GUI
  6. เปิดใช้งานโปรเจ็กต์: เปิดใช้งานโปรเจ็กต์ใน CMOD เพื่อให้มีการเรียกใช้เมธอด exit ในระหว่างการทำงาน หากไม่เปิดใช้งาน โค้ดจะไม่ถูกใช้งาน

💡 เคล็ดลับ: การรวมฟังก์ชันโมดูลออกเริ่มต้นด้วย ZX ดังนั้นจึงถูกส่งไปพร้อมกับโปรเจกต์ ห้ามวางตรรกะที่กำหนดเองไว้โดยตรงใน SAP โมดูลฟังก์ชัน เพราะนั่นจะเป็นการแก้ไข ไม่ใช่การปรับปรุง

User Exit คืออะไร?

User Exit มีจุดประสงค์เดียวกันกับ Customer Exit แต่จะมีให้เฉพาะสำหรับ SD โมดูล. ทางออกถูกนำมาใช้เป็นการเรียกไปยังโมดูลฟังก์ชัน รหัสนี้เขียนโดยนักพัฒนา

ทราบดีว่า User Exit ใน SD คือ MV45AFZZ

  • USEREXIT_FIELD_MODIFICATION – เพื่อแก้ไขคุณลักษณะของหน้าจอ
  • USEREXIT_SAVE_DOCUMENT – ดำเนินการเมื่อผู้ใช้กดบันทึก
  • USEREXIT_SAVE_DOCUMENT_PREPARE
  • USEREXIT_MOVE_FIELD_TO_VBAK – เมื่อการเปลี่ยนแปลงส่วนหัวของผู้ใช้ถูกย้ายไปยังพื้นที่ทำงานของส่วนหัว
  • USEREXIT_MOVE_FIELD_TO_VBAP – เมื่อรายการผู้ใช้เปลี่ยนแปลงถูกย้ายไปที่ SAP พื้นที่ทำงานรายการ

User Exit ในทางเทคนิคแล้วคือซับรูทีน (FORM) ที่อยู่ภายใน User Exit หนึ่ง SAP รวมถึงการแก้ไขโดยตรงและต้องใช้รหัสการเข้าถึง นี่คือความแตกต่างหลักในทางปฏิบัติจากทางออกของลูกค้า ซึ่งสรุปไว้ในหัวข้อถัดไป

User Exit กับ Customer Exit

ทั้งสองเทคนิคนี้เป็นการเพิ่มพฤติกรรมที่กำหนดเองให้กับฟังก์ชันมาตรฐาน SAPแต่มีความแตกต่างกันในด้านขอบเขต เทคโนโลยี และความปลอดภัยในการอัปเกรด ตารางด้านล่างนี้เปรียบเทียบทั้งสองระบบ

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

ทางออกสำหรับลูกค้าเป็นทางเลือกที่ปลอดภัยกว่าและใช้งานได้ทั่วไปมากกว่า สำหรับการปรับปรุงแก้ไขที่ทางออกทั้งสองเข้าไม่ถึง... SAP ต่อมาได้มีการเพิ่มส่วนเสริมทางธุรกิจ (Business Add-In) เข้ามา

Customer Exits เทียบกับ BAdI

A ส่วนเสริมทางธุรกิจ (BAdI) BAdI เป็นรูปแบบการเขียนโปรแกรมเชิงวัตถุที่มาแทนที่ Customer Exit แทนที่จะใช้ include ที่สงวนไว้ BAdI จะกำหนดอินเทอร์เฟซ และตรรกะที่กำหนดเองจะอยู่ในคลาสที่ใช้งานอินเทอร์เฟซนั้น ซึ่งมีข้อดีสองประการที่ Customer Exit ไม่มี

  • การใช้งานหลายรูปแบบ: BAdI ที่ใช้งานได้หลายครั้งอนุญาตให้มีการใช้งานอิสระหลายแบบสำหรับการปรับปรุงเดียวกัน ในขณะที่ Customer Exit อนุญาตให้มีการใช้งานเพียงครั้งเดียวเท่านั้น
  • การวางแนววัตถุ: BAdI ทำงานร่วมกับเมธอดและคลาส ดังนั้นจึงเหมาะสมกับการพัฒนา ABAP Objects สมัยใหม่ และง่ายต่อการกรองตามประเทศหรือสถานการณ์ทางธุรกิจ

หลักการปฏิบัติง่ายๆ คือ: ใช้ customer exit หรือ user exit ที่มีอยู่แล้วเมื่อจุดปรับปรุงนั้นมีอยู่แล้ว และใช้ BAdI เมื่อต้องการจุดปรับปรุงใหม่ที่สามารถนำกลับมาใช้ซ้ำได้

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

SMOD แสดงผล SAP การปรับปรุงและส่วนประกอบต่างๆ ภายในนั้น CMOD จะจัดกลุ่มการปรับปรุงตั้งแต่หนึ่งรายการขึ้นไปเข้าไว้ในโปรเจกต์ของลูกค้า กำหนดรหัส และเปิดใช้งาน SMOD ใช้สำหรับการดู ส่วน CMOD ใช้สำหรับการนำไปใช้งาน

ไม่ Customer Exit เป็นการเพิ่มประสิทธิภาพ ไม่ใช่การแก้ไข ดังนั้นจึงไม่จำเป็นต้องใช้รหัสการเข้าถึง ส่วน User Exit นั้นสามารถแก้ไขได้โดยตรงในไฟล์ .com/user ... SAP รวมถึงและดังนั้นจึงต้องใช้รหัสการเข้าถึงเพื่อแก้ไข

เรียกใช้งานธุรกรรม เปิด System แล้วเปิด Status เพื่ออ่านชื่อโปรแกรม จากนั้นค้นหาการปรับปรุงของโปรแกรมนั้นใน SMOD หรือ SE81 วิธีลัดที่นิยมใช้คือการค้นหาในตาราง MODSAP สำหรับกลุ่มฟังก์ชันของโปรแกรม

ผู้ช่วย AI ในเครื่องมือพัฒนา ABAP จะอ่านชื่อโปรแกรมและแนะนำส่วนเสริม ทางออก หรือ BAdI ที่เกี่ยวข้อง พร้อมทั้งอธิบายว่าแต่ละอย่างเปลี่ยนแปลงอะไรบ้าง นักพัฒนายังคงยืนยันตัวเลือกและเขียนตรรกะภายใน include ที่สงวนไว้

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

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