การเรียกใช้ฟังก์ชันระยะไกล (RFC) ใน SAP การกวดวิชา
RFC คืออะไร?
RFC เป็นกลไกที่ช่วยให้แอปพลิเคชันทางธุรกิจสามารถสื่อสารและแลกเปลี่ยนข้อมูล (ในรูปแบบที่กำหนดไว้ล่วงหน้า) กับระบบอื่น รฟค. ย่อมาจาก 'การเรียกใช้ฟังก์ชันระยะไกล'
RFC ประกอบด้วยสองอินเทอร์เฟซ:
- อินเทอร์เฟซการโทรสำหรับโปรแกรม ABAP
- อินเทอร์เฟซการโทรสำหรับ Non-SAP โปรแกรม
ใด โปรแกรมเอแบค สามารถเรียกใช้ฟังก์ชันระยะไกลโดยใช้ ฟังก์ชั่นการโทร…ปลายทาง คำแถลง. NS DESTINATION พารามิเตอร์บอก SAP ระบบที่ฟังก์ชันที่ถูกเรียกใช้ทำงานในระบบอื่นที่ไม่ใช่ผู้เรียก
ไวยากรณ์-
CALL FUNCTION 'remotefunction' DESTINATION dest EXPORTING f1 = IMPORTING f2 = TABLES t1 = EXCEPTIONS
ปลายทางแบบลอจิคัลถูกกำหนดผ่านธุรกรรม SM59 และเก็บไว้ในตาราง RFCDES
ฟังก์ชั่นอินเทอร์เฟซ RFC
- การแปลงข้อมูลพารามิเตอร์ทั้งหมดเป็นตัวแทนที่จำเป็นในระบบรีโมต
- การเรียกรูทีนการสื่อสารที่จำเป็นเพื่อพูดคุยกับระบบระยะไกล
- การจัดการข้อผิดพลาดในการสื่อสาร และแจ้งผู้โทร หากต้องการ (โดยใช้พารามิเตอร์ EXCEPTIONS ของ CALL FUNCTION)
อาร์เอฟซีเป็น SAP โปรโตคอลในการจัดการการสื่อสารระหว่างระบบเพื่อลดความซับซ้อนของการเขียนโปรแกรมที่เกี่ยวข้อง เป็นกระบวนการเรียกโมดูลฟังก์ชันซึ่งอยู่บนเครื่องอื่นจากโปรแกรมผู้เรียก RFC สามารถใช้เพื่อเรียกโปรแกรมอื่นบนเครื่องเดียวกันได้เช่นกัน แต่โดยปกติแล้วจะใช้เมื่อโมดูล/โปรแกรมฟังก์ชัน 'การเรียก' และ 'เรียกว่า' กำลังทำงานบนเครื่องที่แยกจากกัน
In SAP, ระบบ RFC Interface ใช้สำหรับตั้งค่าการเชื่อมต่อ RFC ระหว่างกัน SAP ระบบและระหว่างก SAP และภายนอก (ไม่ใช่-SAP) ระบบ.
รายละเอียดที่ต้องทราบเกี่ยวกับ RFC
- SAP ใช้โปรโตคอล CPIC (Common Programming Interface for Communication) เพื่อถ่ายโอนข้อมูลระหว่างระบบ มันคือ SAP โปรโตคอลเฉพาะ Remote Function Call (RFC) เป็นอินเทอร์เฟซการสื่อสารที่ใช้ CPI-C แต่มีฟังก์ชันมากกว่าและง่ายกว่าสำหรับโปรแกรมเมอร์แอปพลิเคชัน
- ฟังก์ชั่นไลบรารี RFC รองรับ ภาษาโปรแกรมซี และ Visual Basic (บน Windows แพลตฟอร์ม)
- การเชื่อมต่อ RFC สามารถใช้ได้ทั่วทั้งระบบเสมอ ซึ่งหมายความว่าการเชื่อมต่อ RFC ที่คุณกำหนดไว้ในไคลเอนต์ 000 สามารถใช้จากไคลเอนต์ 100 ได้เช่นกัน (โดยไม่มีความแตกต่างใดๆ)
- RFC เป็นโปรโตคอลสำหรับการเรียกรูทีนย่อยพิเศษ (โมดูลฟังก์ชัน) ผ่านเครือข่าย โมดูลฟังก์ชันสามารถเทียบเคียงได้กับฟังก์ชัน C หรือขั้นตอน PASCAL มีอินเทอร์เฟซที่กำหนดไว้ซึ่งสามารถแลกเปลี่ยนข้อมูล ตาราง และรหัสส่งคืนได้ โมดูลฟังก์ชันได้รับการจัดการในระบบ R/3 ในไลบรารีฟังก์ชันของตัวเองที่เรียกว่า Function Builder
- ตัวสร้างฟังก์ชัน (รายการ SE37) ช่วยให้โปรแกรมเมอร์แอปพลิเคชันมีสภาพแวดล้อมที่เป็นประโยชน์สำหรับการเขียนโปรแกรม การจัดทำเอกสาร และ การทดสอบ โมดูลฟังก์ชันที่สามารถเรียกได้ทั้งในเครื่องและจากระยะไกล ระบบ R/3 จะสร้างโค้ดเพิ่มเติม (RFC stub) ที่จำเป็นสำหรับการโทรระยะไกลโดยอัตโนมัติ
- คุณรักษาพารามิเตอร์สำหรับการเชื่อมต่อ RFC โดยใช้ธุรกรรม SM59 ระบบ R/3 ยังมาพร้อมกับ RFC-SDK (ชุดพัฒนาซอฟต์แวร์) ที่ใช้ไลบรารี C ที่ครอบคลุมเพื่ออนุญาตให้โปรแกรมภายนอกเชื่อมต่อกับระบบ R/3
- ข้อแตกต่างเพียงอย่างเดียวระหว่างการเรียกโมดูลฟังก์ชันระยะไกลไปยังเซิร์ฟเวอร์อื่นและการเรียกภายในเครื่องคือพารามิเตอร์พิเศษ (ปลายทาง) ที่ระบุเซิร์ฟเวอร์เป้าหมายที่โปรแกรมจะถูกดำเนินการ
ข้อดีของ RFC
RFC ช่วยลดความพยายามของโปรแกรมเมอร์ โดยปล่อยให้พวกเขาหลีกเลี่ยงการพัฒนาโมดูลและวิธีการใหม่ในระบบระยะไกล มีความสามารถเพียงพอที่จะ:
- แปลงข้อมูลเป็นรูปแบบที่ระบบระยะไกล (เป้าหมาย) เข้าใจได้
- แปลงข้อมูลเป็นรูปแบบที่ระบบระยะไกล (เป้าหมาย) เข้าใจได้
- เรียกรูทีนที่จำเป็นเพื่อเริ่มการสื่อสารกับระบบรีโมต
- จัดการข้อผิดพลาดที่อาจเกิดขึ้นในกระบวนการสื่อสาร
ประเภทของอาร์เอฟซี
Syncมีเกียรติ
ต้องการให้ทั้งระบบ (ไคลเอนต์และเซิร์ฟเวอร์) พร้อมใช้งานในขณะที่มีการสื่อสารหรือถ่ายโอนข้อมูล เป็นประเภทที่พบบ่อยที่สุดและจำเป็นเมื่อต้องการผลลัพธ์ทันทีหลังจากการดำเนินการ sRFC
sRFC เป็นวิธีการสื่อสารระหว่างระบบที่จำเป็นต้องมีการตอบรับ ทรัพยากรของระบบต้นทางรออยู่บนระบบเป้าหมายและตรวจสอบให้แน่ใจว่าทรัพยากรดังกล่าวส่งข้อความ/ข้อมูลด้วย ACKD ข้อมูลมีความสม่ำเสมอและเชื่อถือได้สำหรับการสื่อสาร
ปัญหาคือถ้าระบบเป้าหมายไม่พร้อมใช้งาน ทรัพยากรระบบต้นทางจะรอจนกว่าระบบเป้าหมายจะพร้อมใช้งาน สิ่งนี้อาจนำไปสู่กระบวนการของระบบต้นทางเพื่อเข้าสู่โหมดสลีป/RFC/CPIC ที่ระบบเป้าหมายและด้วยเหตุนี้จึงบล็อกทรัพยากรเหล่านี้
ใช้สำหรับ
- สำหรับการสื่อสารระหว่างระบบ
- สำหรับการสื่อสารระหว่าง SAP เว็บแอปพลิเคชันเซิร์ฟเวอร์ไปยัง SAP GUI
ไม่ตรงกัน
เป็นการสื่อสารระหว่างระบบที่ไม่จำเป็นต้องมีการตอบรับ (คล้ายกับการส่งไปรษณียบัตร) โดยไม่จำเป็นต้องให้ทั้งสองระบบพร้อมใช้งานในขณะดำเนินการ และไม่จำเป็นต้องส่งผลลัพธ์กลับไปยังระบบเรียกทันที .
ทรัพยากรระบบต้นทางไม่รอระบบเป้าหมายเนื่องจากจะส่งข้อความ/ข้อมูลโดยไม่ต้องรอการตอบรับใดๆ การสื่อสารไม่น่าเชื่อถือเนื่องจากข้อมูลอาจสูญหายหากระบบเป้าหมายไม่พร้อมใช้งาน ใช้สำหรับ -
- สำหรับการสื่อสารระหว่างระบบ
- สำหรับการประมวลผลแบบขนาน
การทำธุรกรรม
เป็นรูปแบบพิเศษของ aRFC RFC ของธุรกรรมช่วยให้มั่นใจได้ว่าการจัดการขั้นตอนการประมวลผลจะเหมือนกับธุรกรรมที่แต่เดิมเป็นแบบอัตโนมัติ
Transactional RFC เป็นวิธีการสื่อสารแบบอะซิงโครนัสที่เรียกใช้โมดูลฟังก์ชันที่เรียกในเซิร์ฟเวอร์ RFC เพียงครั้งเดียว แม้ว่าข้อมูลจะถูกส่งหลายครั้งเนื่องจากปัญหาเครือข่ายก็ตาม ระบบระยะไกลไม่จำเป็นต้องพร้อมใช้งานในขณะที่โปรแกรมไคลเอนต์ RFC กำลังเรียกใช้ tRFC ส่วนประกอบ tRFC จะจัดเก็บฟังก์ชัน RFC ที่เรียกพร้อมกับข้อมูลที่เกี่ยวข้องใน SAP ฐานข้อมูลภายใต้ ID ธุรกรรมเฉพาะ (TID) tRFC คล้ายกับ aRFC เนื่องจากไม่รอที่ระบบเป้าหมาย (คล้ายกับตำแหน่งที่ลงทะเบียน) หากระบบไม่พร้อมใช้งาน ระบบจะเขียนข้อมูลลงในตาราง aRFC พร้อม ID ธุรกรรม (SM58) ซึ่งจะถูกเลือกโดยตัวกำหนดตารางเวลา RSARFCSE (ซึ่งทำงานทุก ๆ 60 วินาที) ใช้สำหรับ-
- การขยาย RFC แบบอะซิงโครนัส
- เพื่อการสื่อสารที่ปลอดภัยระหว่างระบบ
เข้าคิว
Queued RFC เป็นส่วนขยายของ tRFC นอกจากนี้ยังช่วยให้แน่ใจว่าแต่ละขั้นตอนได้รับการประมวลผลตามลำดับ เพื่อรับประกันว่า LUW หลายหน่วย (หน่วยงานทางลอจิคัลของงาน/ธุรกรรม) ได้รับการประมวลผลตามลำดับที่ระบุโดยแอปพลิเคชัน tRFC สามารถทำให้เป็นอนุกรมได้โดยใช้คิว (คิวขาเข้าและขาออก) ดังนั้นชื่อที่อยู่ในคิว RFC (qRFC) ใช้สำหรับ-
- ส่วนขยายของ RFC ของธุรกรรม
- สำหรับลำดับการประมวลผลที่กำหนดไว้
- แนะนำให้ใช้ qRFC หากคุณต้องการรับประกันว่าธุรกรรมหลายรายการได้รับการประมวลผลในคำสั่งซื้อที่กำหนดไว้ล่วงหน้า
ประเภทของการเชื่อมต่อ RFC
พิมพ์ฮิต – รายการระบุการเชื่อมต่อระหว่าง ระบบเอแบค- ที่นี่เราต้องระบุชื่อโฮสต์ / ที่อยู่ IP อย่างไรก็ตาม คุณสามารถระบุข้อมูลการเข้าสู่ระบบได้หากต้องการ สิ่งนี้ใช้ได้กับ RFC ทั้งสองประเภท ระหว่างระบบ ABAP และการเรียกภายนอกไปยังระบบ ABAP
ประเภทที่ 1 – รายการระบุระบบ ABAP ที่เชื่อมต่อกับฐานข้อมูลเดียวกันกับระบบปัจจุบัน รายการเหล่านี้ถูกกำหนดไว้ล่วงหน้าและไม่สามารถแก้ไขได้ ชื่อรายการตัวอย่าง: ws0015_K18_24
- ws0015=ชื่อโฮสต์
- K18=ชื่อระบบ (ชื่อฐานข้อมูล)
- 24=ชื่อบริการ TCP
พิมพ์ T – ปลายทางคือการเชื่อมต่อกับโปรแกรมภายนอกที่ใช้ RFC API เพื่อรับ RFC ประเภทการเปิดใช้งานอาจเป็นได้ทั้งเริ่มหรือลงทะเบียน หากเป็น Start คุณต้องระบุชื่อโฮสต์และชื่อพาธของโปรแกรมที่จะสตาร์ท
จะเขียนโค้ด RFC ได้อย่างไร
1) ในแท็บคุณลักษณะโมดูลฟังก์ชัน (รหัสธุรกรรม SE37) ให้ตั้งค่าประเภทการประมวลผลเป็นโมดูลที่เปิดใช้งานระยะไกลเพื่อสร้างโมดูลฟังก์ชันระยะไกล
2) เขียนโค้ดสำหรับโมดูลฟังก์ชัน
3) กำหนดปลายทางของเซิร์ฟเวอร์ RFC ในระบบไคลเอ็นต์ RFC ที่เรียกใช้ฟังก์ชันระยะไกล (ผ่านธุรกรรม SM59)
4) การประกาศพารามิเตอร์: ฟิลด์พารามิเตอร์ทั้งหมดสำหรับโมดูลฟังก์ชันระยะไกลจะต้องถูกกำหนดเป็นฟิลด์อ้างอิง ซึ่งเหมือนกับฟิลด์พจนานุกรม ABAP
5) ข้อยกเว้น: ระบบเพิ่ม COMMUNICATION_FAILURE และ SYSTEM_FAILURE ภายใน คุณสามารถเพิ่มข้อยกเว้นในฟังก์ชันระยะไกลได้เช่นเดียวกับที่คุณทำในฟังก์ชันที่เรียกในเครื่อง
การดีบักการเรียกใช้ฟังก์ชันระยะไกล
- มันเป็น ไม่สามารถแก้ไขจุดบกพร่องได้ การเรียกใช้ฟังก์ชันระยะไกลไปยังระบบอื่น
- อย่างไรก็ตาม เมื่อทดสอบการเรียก ABAP-to-ABAP RFC คุณสามารถใช้ดีบักเกอร์ ABAP เพื่อมอนิเตอร์การทำงานของฟังก์ชัน RFC ในระบบรีโมต
- ด้วยการเรียกรีโมต ดีบักเกอร์ ABAP (รวมถึงอินเตอร์เฟสการดีบัก) จะรันบนระบบโลคัล ค่าข้อมูลและข้อมูลการรันอื่นๆ สำหรับฟังก์ชันรีโมตจะถูกส่งผ่านจากระบบรีโมต