การเรียกใช้ฟังก์ชันระยะไกล (RFC) ใน SAP การกวดวิชา

RFC คืออะไร?

RFC เป็นกลไกที่ช่วยให้แอปพลิเคชันทางธุรกิจสามารถสื่อสารและแลกเปลี่ยนข้อมูล (ในรูปแบบที่กำหนดไว้ล่วงหน้า) กับระบบอื่น รฟค. ย่อมาจาก 'การเรียกใช้ฟังก์ชันระยะไกล'

RFC ประกอบด้วยสองอินเทอร์เฟซ:

  1. อินเทอร์เฟซการโทรสำหรับโปรแกรม ABAP
  2. อินเทอร์เฟซการโทรสำหรับ Non-SAP โปรแกรม

ใด โปรแกรมเอแบค สามารถเรียกใช้ฟังก์ชันระยะไกลโดยใช้ ฟังก์ชั่นการโทร…ปลายทาง คำแถลง. NS DESTINATION พารามิเตอร์บอก SAP ระบบที่ฟังก์ชันที่ถูกเรียกใช้ทำงานในระบบอื่นที่ไม่ใช่ผู้เรียก

ไวยากรณ์-

CALL FUNCTION 'remotefunction'

DESTINATION dest

EXPORTING f1 =

IMPORTING f2 =

TABLES t1 =

EXCEPTIONS

ปลายทางแบบลอจิคัลถูกกำหนดผ่านธุรกรรม SM59 และเก็บไว้ในตาราง RFCDES

ฟังก์ชั่นอินเทอร์เฟซ RFC

  • การแปลงข้อมูลพารามิเตอร์ทั้งหมดเป็นตัวแทนที่จำเป็นในระบบรีโมต
  • การเรียกรูทีนการสื่อสารที่จำเป็นเพื่อพูดคุยกับระบบระยะไกล
  • การจัดการข้อผิดพลาดในการสื่อสาร และแจ้งผู้โทร หากต้องการ (โดยใช้พารามิเตอร์ EXCEPTIONS ของ CALL FUNCTION)

หน้าที่ของอินเทอร์เฟซ RFC

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

หน้าที่ของอินเทอร์เฟซ 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

ประเภทของการเชื่อมต่อ RFC

พิมพ์ฮิต – รายการระบุการเชื่อมต่อระหว่าง ระบบเอแบค- ที่นี่เราต้องระบุชื่อโฮสต์ / ที่อยู่ IP อย่างไรก็ตาม คุณสามารถระบุข้อมูลการเข้าสู่ระบบได้หากต้องการ สิ่งนี้ใช้ได้กับ RFC ทั้งสองประเภท ระหว่างระบบ ABAP และการเรียกภายนอกไปยังระบบ ABAP

ประเภทที่ 1 – รายการระบุระบบ ABAP ที่เชื่อมต่อกับฐานข้อมูลเดียวกันกับระบบปัจจุบัน รายการเหล่านี้ถูกกำหนดไว้ล่วงหน้าและไม่สามารถแก้ไขได้ ชื่อรายการตัวอย่าง: ws0015_K18_24

  • ws0015=ชื่อโฮสต์
  • K18=ชื่อระบบ (ชื่อฐานข้อมูล)
  • 24=ชื่อบริการ TCP

พิมพ์ T – ปลายทางคือการเชื่อมต่อกับโปรแกรมภายนอกที่ใช้ RFC API เพื่อรับ RFC ประเภทการเปิดใช้งานอาจเป็นได้ทั้งเริ่มหรือลงทะเบียน หากเป็น Start คุณต้องระบุชื่อโฮสต์และชื่อพาธของโปรแกรมที่จะสตาร์ท

จะเขียนโค้ด RFC ได้อย่างไร

1) ในแท็บคุณลักษณะโมดูลฟังก์ชัน (รหัสธุรกรรม SE37) ให้ตั้งค่าประเภทการประมวลผลเป็นโมดูลที่เปิดใช้งานระยะไกลเพื่อสร้างโมดูลฟังก์ชันระยะไกล

วิธีเขียนโค้ด RFC

2) เขียนโค้ดสำหรับโมดูลฟังก์ชัน

วิธีเขียนโค้ด RFC

3) กำหนดปลายทางของเซิร์ฟเวอร์ RFC ในระบบไคลเอ็นต์ RFC ที่เรียกใช้ฟังก์ชันระยะไกล (ผ่านธุรกรรม SM59)

วิธีเขียนโค้ด RFC

4) การประกาศพารามิเตอร์: ฟิลด์พารามิเตอร์ทั้งหมดสำหรับโมดูลฟังก์ชันระยะไกลจะต้องถูกกำหนดเป็นฟิลด์อ้างอิง ซึ่งเหมือนกับฟิลด์พจนานุกรม ABAP

5) ข้อยกเว้น: ระบบเพิ่ม COMMUNICATION_FAILURE และ SYSTEM_FAILURE ภายใน คุณสามารถเพิ่มข้อยกเว้นในฟังก์ชันระยะไกลได้เช่นเดียวกับที่คุณทำในฟังก์ชันที่เรียกในเครื่อง

การดีบักการเรียกใช้ฟังก์ชันระยะไกล

  • มันเป็น ไม่สามารถแก้ไขจุดบกพร่องได้ การเรียกใช้ฟังก์ชันระยะไกลไปยังระบบอื่น
  • อย่างไรก็ตาม เมื่อทดสอบการเรียก ABAP-to-ABAP RFC คุณสามารถใช้ดีบักเกอร์ ABAP เพื่อมอนิเตอร์การทำงานของฟังก์ชัน RFC ในระบบรีโมต
  • ด้วยการเรียกรีโมต ดีบักเกอร์ ABAP (รวมถึงอินเตอร์เฟสการดีบัก) จะรันบนระบบโลคัล ค่าข้อมูลและข้อมูลการรันอื่นๆ สำหรับฟังก์ชันรีโมตจะถูกส่งผ่านจากระบบรีโมต