ข้ามไปที่เนื้อหา
cd /languages
  • แกนหลักขององค์กร
  • การเขียนโปรแกรม
  • รองรับ AST และสัญลักษณ์

ABAP บน Maguyva: กราฟคลาสสำหรับโค้ด SAP ที่พัฒนาเอง

Maguyva รองรับ ABAP ด้วย AST สัญลักษณ์ และกราฟ เพื่อให้เอเจนต์ AI ทำแผนที่คลาส อินเทอร์เฟซ การนิยามใหม่ และเอกซ์เซปชันในโค้ด SAP ที่พัฒนาเองได้

ทำไมควรทำแผนที่ ABAP ก่อนแก้ไข

ABAP ที่พัฒนาเองมักบรรจุกฎทางธุรกิจที่สะสมมาหลายสิบปี โค้ดบางส่วนเป็นเชิงวัตถุ บางส่วนเป็นเชิงกระบวนการ และโครงสร้างการสืบทอดกับอินเทอร์เฟซเป็นตัวตัดสินว่าเมธอดใดจะทำงาน สิ่งนี้มองไม่เห็นเมื่ออ่านทีละคลาส

Maguyva ให้กราฟคลาสกับเอเจนต์ก่อน เพื่อให้แผนการเปลี่ยนแปลงเริ่มจากสิ่งที่พึ่งพาคลาสนั้น ไม่ใช่จากการเดา

Maguyva ดึงอะไรจาก ABAP ได้บ้าง

Maguyva แยกวิเคราะห์ซอร์ส .abap ด้วยไวยากรณ์เฉพาะของ ABAP สัญลักษณ์ครอบคลุมนิยามและการอิมพลีเมนต์คลาส อินเทอร์เฟซ การประกาศและการอิมพลีเมนต์เมธอด และรูทีน FORM

กราฟบันทึกความสัมพันธ์ที่นักพัฒนา ABAP ให้ความสำคัญ:

  • การสืบทอดจาก CLASS ... INHERITING FROM
  • การอิมพลีเมนต์อินเทอร์เฟซจาก INTERFACES
  • การ override จาก METHODS ... REDEFINITION
  • เอกซ์เซปชันจาก RAISE EXCEPTION และ CATCH
  • การเรียกเมธอด (obj->m( ), cls=>m( ), CALL METHOD) การอ้างอิงชนิดข้อมูลจาก TYPE และ TYPE REF TO และการ export เมธอดในส่วนสาธารณะ ซึ่งระบุว่าเป็นของคลาสนั้น
  • การอ่าน การเขียน และโฟลว์การควบคุม (IF, CASE, LOOP, TRY) ภายในตัวเมธอด

ตัวอย่างพรอมต์สำหรับเอเจนต์

  • “คลาสใดสืบทอดจาก zcl_order_base และนิยามเมธอดใดใหม่บ้าง” (find_symbol แล้วตามด้วย dependency_search ทิศทางขาเข้า)
  • “zcx_pricing_error ถูกโยนที่ใด และใครเป็นผู้ catch” (dependency_search)
  • “สรุปว่าโฟลว์การสร้างการส่งมอบเดินจากรีพอร์ตไปยังคลาสจัดเก็บข้อมูลอย่างไร” (get_task_context)

ข้อจำกัดที่ทราบ

  • ไวยากรณ์ ABAP ปัจจุบันไม่แยกวิเคราะห์ Open SQL (SELECT ... FROM ... INTO), EXEC SQL และ AUTHORITY-CHECK การอ่านตารางผ่าน SQL จึงยังไม่เป็นเส้นเชื่อมในกราฟ ใช้ text_pattern_search สำหรับชื่อตาราง
  • คำสั่ง INTERFACES เป็นความสัมพันธ์การอิมพลีเมนต์ ไม่ใช่การนำเข้า ในการค้นหาเชิงโครงสร้าง มีเพียงคำสั่ง INCLUDE ที่ถูกเลือกเป็นการนำเข้า
  • Maguyva ทำดัชนี ABAP ที่อยู่ในรีโพซิทอรี Git เป็นไฟล์ .abap และไม่เชื่อมต่อกับระบบ SAP

ขั้นตอนถัดไป

เชื่อมต่อรีโพซิทอรีด้วยคู่มือเริ่มต้นใช้งาน แล้วดูตารางการรองรับได้ที่หน้าความเข้ากันได้ สำหรับสภาพแวดล้อมรุ่นเก่าอื่น ๆ ดูคู่มือภาษา COBOL

เหมาะที่สุดสำหรับ

  • > ทีม SAP ที่เก็บ ABAP ที่พัฒนาเองไว้ใน Git เป็นไฟล์ซอร์ส `.abap` และต้องเข้าใจโค้ดก่อนการย้ายระบบหรือการรีวิวแบบ clean core
  • > สภาพแวดล้อม ABAP เชิงวัตถุที่ลำดับชั้นคลาส อินเทอร์เฟซ และการนิยามใหม่ซ่อนไว้ว่าการทำงานใดถูกเรียกจริง
  • > การวิเคราะห์ผลกระทบที่มีเอเจนต์ช่วย ซึ่งคำถามคือ “ถ้าคลาสนี้เปลี่ยน อะไรจะพัง”

เวิร์กโฟลว์ของเอเจนต์

  • > ทำแผนที่คลาสที่สืบทอดจากคลาสฐาน และเมธอดที่คลาสเหล่านั้นนิยามใหม่
  • > หาคลาสทั้งหมดที่อิมพลีเมนต์อินเทอร์เฟซหนึ่ง ก่อนเปลี่ยนซิกเนเจอร์ของเมธอด
  • > ติดตามว่าคลาสเอกซ์เซปชันถูกโยนที่ใดและถูก catch ที่ใด

รายละเอียดเอนจิน

  • > ABAP ถูกแยกวิเคราะห์ด้วยไวยากรณ์เฉพาะ คลาส อินเทอร์เฟซ การประกาศและการอิมพลีเมนต์เมธอด และรูทีน `FORM` ล้วนเป็นสัญลักษณ์
  • > กราฟบันทึกการสืบทอดผ่าน `INHERITING FROM` การอิมพลีเมนต์ผ่าน `INTERFACES` การ override ผ่าน `REDEFINITION` รวมถึง `RAISE EXCEPTION` และ `CATCH` และการเรียกอย่าง `obj->m( )` และ `cls=>m( )`
  • > ไวยากรณ์ปัจจุบันไม่แยกวิเคราะห์ Open SQL, `EXEC SQL` และ `AUTHORITY-CHECK` การอ่านตารางผ่าน SQL จึงยังไม่เป็นเส้นเชื่อมในกราฟ

จุดเริ่มต้น MCP ที่มีประโยชน์

  • find_symbol

    ใช้กับชื่อคลาส อินเทอร์เฟซ หรือเมธอด เมื่อต้องการนิยามและการอ้างอิง

  • dependency_search

    ก่อนการเปลี่ยนแปลง ใช้การท่องกราฟทิศทางขาเข้าบนคลาสฐานหรืออินเทอร์เฟซ เพื่อหาคลาสลูก การอิมพลีเมนต์ และผู้เรียก

  • text_pattern_search

    ใช้กับชื่อตารางฐานข้อมูลและคำสั่ง SQL ที่กราฟยังไม่ครอบคลุม

คู่มือที่เกี่ยวข้อง

ส่วนอื่นของรีโพที่เกี่ยวข้อง

ดูคู่มือทั้งหมด
ต่อยอดของเก่า การเขียนโปรแกรม

การรองรับ COBOL ใน Maguyva: วิเคราะห์ dependency เพื่อการปรับปรุงระบบเก่าให้ทันสมัย

นี่คือจุดที่การรองรับภาษาอย่างกว้างขวางเลิกเป็นแค่ตัวเลขสถิติ และกลายเป็นเครื่องมือปรับปรุงระบบเก่าให้ทันสมัยอย่างแท้จริง

รองรับ AST และสัญลักษณ์ การแยกวิเคราะห์ AST การสกัดสัญลักษณ์ ความสัมพันธ์ในกราฟ

นามสกุลไฟล์

.cbl, .cob, .cpy

เปิดคู่มือ
ความลึกระดับองค์กร การเขียนโปรแกรม

การรองรับ Java ใน Maguyva: โค้ดอินเทลลิเจนซ์สำหรับรีโพซิทอรีระดับองค์กร

มีประโยชน์เมื่อรีโพเต็มไปด้วย Spring service, เฟรมเวิร์กภายใน และโค้ดที่รอดผ่านหลายยุคขององค์กร

รองรับ AST และสัญลักษณ์ การแยกวิเคราะห์ AST การสกัดสัญลักษณ์ ความสัมพันธ์ในกราฟ

นามสกุลไฟล์

.java

เปิดคู่มือ