Cuộc gọi chức năng từ xa (RFC) trong SAP Hướng dẫn ABAP

⚡ Tóm tắt thông minh

Gọi hàm từ xa (RFC) là SAP Cơ chế giao tiếp cho phép một chương trình ABAP gọi một mô-đun chức năng đang chạy trên một chương trình khác. SAP hoặc hệ thống bên ngoài. Nó hấp thụtracNó đảm nhiệm việc quản lý mạng, chuyển đổi định dạng dữ liệu và thông báo lỗi lại cho người gọi một cách rõ ràng.

  • 📡 Cơ chế cốt lõi: Lệnh CALL FUNCTION…DESTINATION gọi một module hàm trên đích đến logic được định nghĩa trong SM59.
  • 🔁 Bốn biến thể: SyncCác loại RFC đồng bộ, bất đồng bộ, giao dịch và xếp hàng đều đảm bảo một điều kiện phân phối khác nhau.tract.
  • 🌐 Các loại kết nối: SM59 hỗ trợ Loại 3 (ABAP-to-ABAP), Loại I (các chương trình ngang hàng trong cùng cơ sở dữ liệu) và Loại T (các chương trình bên ngoài).
  • 🛠️ Đường dẫn xây dựng: Đặt module chức năng thành Chế độ điều khiển từ xa trong SE37, lập trình nó và xác định đích đến trong SM59 trên thiết bị gọi.
  • 🤖 Góc nhìn AI: Các trợ lý AI tạo ra các đoạn mã ABAP RFC từ các đặc tả ngôn ngữ tự nhiên và phân tích lỗi SM58 thành các giải pháp khả thi.

Chức năng của giao diện RFC

RFC là gì? SAP?

RFC là viết tắt của Gọi hàm từ xaĐây là cơ chế cho phép các ứng dụng kinh doanh giao tiếp và trao đổi thông tin — theo các định dạng đã được xác định trước — với các hệ thống khác. RFC là cách phổ biến nhất để thực hiện điều này. SAP Hệ thống này giao tiếp với hệ thống khác, và nó cũng là cầu nối kết nối các hệ thống đó. SAP hệ thống sang không phải hệ thốngSAP các ứng dụng.

RFC cung cấp hai giao diện:

  1. Giao diện gọi cho Các chương trình ABAP.
  2. Giao diện gọi điện cho các đối tượng không phải là...SAP chương trình.

Bất kỳ chương trình ABAP nào cũng có thể gọi một hàm từ xa bằng cách sử dụng CHỨC NĂNG GỌI…ĐỊA CHỈ tuyên bố. Các DESTINATION tham số cho biết SAP Hệ thống mà hàm được gọi chạy trên một hệ thống khác với hệ thống gọi hàm.

cú pháp

CALL FUNCTION 'remotefunction'
  DESTINATION dest
  EXPORTING  f1 = ...
  IMPORTING  f2 = ...
  TABLES     t1 = ...
  EXCEPTIONS ...

Các đích đến hợp lý được xác định thông qua giao dịch. SM59 và được lưu trữ trong bảng RFCDES.

Chức năng của giao diện RFC

Chức năng của giao diện RFC

Môi trường thực thi RFC chịu trách nhiệm cho ba việc trong mỗi lần gọi:

  • Chuyển đổi tất cả dữ liệu tham số sang định dạng mà hệ thống từ xa mong đợi.
  • Gọi các thủ tục liên lạc cần thiết để nói chuyện với hệ thống từ xa.
  • Xử lý các lỗi giao tiếp và thông báo chúng cho người gọi thông qua... EXCEPTIONS tham số của CALL FUNCTION.

Giao tiếp RFC giữa SAP hệ thống

RFC là SAP Giao thức này xử lý việc giao tiếp giữa các hệ thống và đơn giản hóa việc lập trình liên quan. Nó là quá trình gọi một mô-đun hàm nằm trên một máy khác với chương trình gọi. Về mặt kỹ thuật, RFC có thể được sử dụng để gọi một mô-đun hàm trên... tương tự máy, nhưng chúng thường được sử dụng khi chương trình gọi và chương trình được gọi chạy trên các máy riêng biệt. Hệ thống giao diện RFC được sử dụng để thiết lập các kết nối RFC giữa các máy khác nhau. SAP hệ thống, cũng như giữa SAP và bên ngoài (không-SAP) hệ thống.

Những điều cần biết về RFC

  • SAP sử dụng CPIC CPIC là giao thức (Giao diện lập trình chung cho truyền thông) để truyền dữ liệu giữa các hệ thống. CPIC là SAP- Cụ thể hơn. RFC là một giao diện truyền thông được xây dựng trên nền tảng CPI-C, nhưng có nhiều chức năng hơn và giao diện thân thiện hơn cho các lập trình viên ứng dụng.
  • Các chức năng thư viện RFC hỗ trợ Ngôn ngữ lập trình C và Visual Basic trên Windows nền tảng.
  • Các kết nối RFC hoạt động trên toàn bộ hệ thống. Một kết nối RFC được định nghĩa trong máy khách 000 cũng có thể được sử dụng từ máy khách 100 mà không có bất kỳ sự khác biệt nào.
  • RFC là giao thức để gọi các chương trình con chuyên dụng (các module chức năng) qua mạng. Các module chức năng tương tự như các hàm trong C hoặc các thủ tục trong Pascal: chúng cung cấp một giao diện được xác định thông qua đó dữ liệu, bảng và mã trả về được trao đổi. Các module chức năng được quản lý bên trong... SAP hệ thống trong một thư viện chuyên dụng, Trình tạo hàm.
  • Trình tạo chức năng (giao dịch) SE37) cung cấp cho các lập trình viên ứng dụng một môi trường để viết, lập tài liệu và thử nghiệm các mô-đun chức năng có thể được gọi cục bộ cũng như từ xa. Hệ thống tự động tạo ra mã bổ sung (mã này) Bản nháp RFC(cần thiết cho các cuộc gọi từ xa)
  • Các kết nối RFC được duy trì bằng giao dịch. SM59. SAP cũng vận chuyển một RFC-SDK (Bộ công cụ phát triển phần mềm) sử dụng thư viện C mở rộng để các chương trình bên ngoài có thể kết nối với... SAP hệ thống.
  • Sự khác biệt duy nhất giữa cuộc gọi từ xa đến máy chủ khác và cuộc gọi cục bộ là... DESTINATION Tham số này chỉ định máy chủ đích mà chương trình nên thực thi.

Ưu điểm của RFC

RFC giúp giảm thiểu nỗ lực lập trình bằng cách loại bỏ nhu cầu phải lập trình lại các mô-đun và phương thức ở phía đầu cuối. Lớp RFC đảm nhiệm các công việc sau:

  • Chuyển đổi dữ liệu sang định dạng mà hệ thống từ xa (mục tiêu) có thể hiểu được.
  • Gọi các chương trình con cần thiết để thiết lập liên lạc với hệ thống từ xa.
  • Xử lý các lỗi phát sinh trong quá trình giao tiếp.
  • Cung cấp ngữ nghĩa giao dịch đáng tin cậy khi sử dụng các biến thể giao dịch hoặc xếp hàng.

Các loại RFC

Các loại RFC

SAP Hỗ trợ bốn biến thể RFC. Mỗi biến thể mang lại sự đánh đổi khác nhau giữa độ trễ, độ tin cậy và đảm bảo thứ tự.

1. SyncRFC đồng bộ (sRFC)

SyncGiao thức RFC đồng bộ yêu cầu cả máy khách và máy chủ phải khả dụng tại thời điểm gọi hàm. Đây là loại giao thức phổ biến nhất và được sử dụng bất cứ khi nào người gọi cần kết quả ngay lập tức sau khi thực thi.

sRFC là một phương thức giao tiếp giữa các hệ thống mà trong đó việc xác nhận được mong đợi. Các tài nguyên của hệ thống nguồn sẽ chờ hệ thống đích và đảm bảo rằng thông điệp được gửi đến kèm theo phản hồi xác nhận (ACK). Dữ liệu được trao đổi là nhất quán và đáng tin cậy.

Nhược điểm là nếu hệ thống đích không khả dụng, các tài nguyên của hệ thống nguồn sẽ phải chờ cho đến khi nó hoạt động trở lại, điều này có thể đẩy các tiến trình của hệ thống nguồn vào chế độ Ngủ/RFC/CPIC trên hệ thống đích và chặn các tài nguyên.

Được dùng cho:

  • Giao tiếp thời gian thực giữa các hệ thống.
  • Giao tiếp giữa SAP Máy chủ ứng dụng web và SAP GUI.

2. RFC bất đồng bộ (aRFC)

RFC bất đồng bộ là hình thức giao tiếp giữa các hệ thống mà không cần xác nhận — tương tự như việc bỏ qua (drop).ping một tấm bưu thiếp được gửi qua đường bưu điện. Cả hai hệ thống không nhất thiết phải có mặt tại thời điểm thực thi, và kết quả không được trả về ngay lập tức cho hệ thống gọi.

Tài nguyên hệ thống nguồn không chờ hệ thống đích; nó truyền dữ liệu và tiếp tục di chuyển. Điều này làm cho aRFC nhanh nhưng không đáng tin cậy nếu chỉ dựa vào nó — dữ liệu có thể bị mất nếu hệ thống đích không khả dụng.

Được dùng cho:

  • Giao tiếp tự động giữa các hệ thống.
  • Xử lý song song trên nhiều hệ thống.

3. RFC giao dịch (tRFC)

Giao thức RFC giao dịch là một dạng đặc biệt của RFC bất đồng bộ. Nó đảm bảo việc xử lý các bước theo kiểu giao dịch, vốn dĩ sẽ diễn ra độc lập.

tRFC thực thi mô-đun hàm được gọi trên máy chủ RFC chính xác một lần, ngay cả khi dữ liệu được gửi nhiều lần do sự cố mạng. Hệ thống từ xa không cần phải khả dụng tại thời điểm máy khách RFC thực hiện cuộc gọi. Thành phần tRFC lưu trữ hàm được gọi và dữ liệu của nó trong... SAP cơ sở dữ liệu dưới một tên duy nhất Mã giao dịch (TID)Nếu hệ thống đích không khả dụng, dữ liệu sẽ được ghi vào các bảng RFC (hiển thị trong giao dịch). SM58) và sau đó được báo cáo lập lịch tiếp nhận. RSARFCSE, chương trình này chạy mỗi 60 giây.

Được dùng cho:

  • Mở rộng RFC bất đồng bộ với khả năng truyền tải tối đa một lần.
  • Khả năng giao tiếp đáng tin cậy giữa các hệ thống, nơi việc thực thi chính xác một lần là điều quan trọng.

4. RFC xếp hàng (qRFC)

Giao thức Queued RFC mở rộng tRFC bằng cách đảm bảo các bước riêng lẻ được xử lý theo trình tự do ứng dụng gọi chỉ định. Để đảm bảo nhiều LUW (Logical Units of Work / giao dịch) được xử lý theo đúng thứ tự dự định, tRFC có thể được tuần tự hóa bằng cách sử dụng hàng đợi đầu vào và đầu ra — đó là nguồn gốc của tên gọi “queued RFC”.

Được dùng cho:

  • Mở rộng RFC giao dịch với thứ tự nghiêm ngặt.
  • Các trường hợp mà trình tự xử lý được xác định là bắt buộc.
  • Các trường hợp cần xử lý nhiều giao dịch theo một trình tự đã được xác định trước.

So sánh các loại RFC

Kiểu Người gọi đang chờ? Đáng tin cậy? Đã đặt hàng? tốt nhất cho
sRFC Không áp dụng (cuộc gọi đơn) Tra cứu thời gian thực
aRFC Không Không Không Làm việc song song, không cần can thiệp nhiều.
tRFC Không Có (chính xác một lần) Không Cập nhật không đồng bộ đáng tin cậy
qRFC Không Có (chính xác một lần) Cập nhật theo thứ tự nghiêm ngặt

Các loại kết nối RFC

Các loại kết nối RFC

SM59 hỗ trợ nhiều loại kết nối. Ba loại phổ biến nhất được tóm tắt dưới đây.

Loại 3 — Chuyển đổi ABAP sang ABAP

Các mục loại 3 chỉ định mối liên hệ giữa hệ thống ABAPTên máy chủ hoặc địa chỉ IP là bắt buộc; thông tin đăng nhập có thể được cung cấp tùy chọn. Loại 3 áp dụng cho cả các yêu cầu RFC giữa các hệ thống ABAP và các cuộc gọi bên ngoài vào hệ thống ABAP.

Loại I — Máy tính ngang hàng cùng cơ sở dữ liệu

Các mục loại I chỉ định các hệ thống ABAP dùng chung cơ sở dữ liệu với hệ thống hiện tại. Các mục này được định nghĩa trước và không thể sửa đổi. Tên mục điển hình có dạng như sau: ws0015_K18_24:

  • ws0015 — tên máy chủ
  • K18 — Tên hệ thống (cơ sở dữ liệu)
  • 24 — Tên dịch vụ TCP

Loại T — Chương trình bên ngoài

Các đích đến loại T kết nối với các chương trình bên ngoài sử dụng API RFC để nhận RFC. Loại kích hoạt có thể là một trong hai loại sau: Bắt đầu or Đăng KýNếu chọn "Khởi động", cần cung cấp tên máy chủ và đường dẫn của chương trình cần khởi chạy.

Làm thế nào để Code một RFC

Quá trình lắp ráp hoàn chỉnh một RFC gồm năm bước. Ba bước đầu tiên là thao tác nhấp chuột cơ học vào SE37 và SM59; hai bước cuối cùng liên quan đến việc thiết lập kết nối.tracĐúng vậy.

Bước 1: Trong tab thuộc tính mô-đun chức năng của giao dịch SE37, đặt loại xử lý thành Mô-đun điều khiển từ xa Đánh dấu mô-đun chức năng là có khả năng hỗ trợ RFC.

Mô-đun điều khiển từ xa SE37

Bước 2: Viết mã cho mô-đun hàm trong trình soạn thảo mã nguồn.

Mã nguồn của mô-đun chức năng

Bước 3: Xác định đích đến của máy chủ RFC trong hệ thống máy khách RFC gọi hàm từ xa — việc này được thực hiện trong giao dịch. SM59.

Thiết lập đích SM59

Bước 4 — Khai báo tham số: Tất cả các trường tham số cho một module chức năng từ xa phải được định nghĩa là các trường tham chiếu — nghĩa là, được định kiểu dựa trên các trường của Từ điển ABAP. Các tham số giá trị không được phép đối với các module chức năng hỗ trợ từ xa.

Bước 5 — Ngoại lệ: Hệ thống nâng cao LỖI GIAO TIẾPLỖI HỆ THỐNG Về mặt nội bộ, các lỗi ở cấp độ vận chuyển. Các ngoại lệ ở cấp độ ứng dụng có thể được đưa ra bên trong một hàm từ xa giống hệt như trong một hàm cục bộ.

Gỡ lỗi các cuộc gọi chức năng từ xa

  • Đó là không thể gỡ lỗi Gọi hàm từ xa vào một hệ thống không phải ABAP theo cách cổ điển — môi trường thực thi bên ngoài không rõ ràng.
  • Tuy nhiên, đối với các cuộc gọi RFC giữa các chương trình ABAP với nhau, trình gỡ lỗi ABAP có thể được sử dụng để giám sát quá trình thực thi hàm RFC bên trong hệ thống từ xa.
  • Với các cuộc gọi từ xa, trình gỡ lỗi ABAP (bao gồm cả giao diện người dùng) chạy trên hệ thống cục bộ. Các giá trị dữ liệu và thông tin thời gian chạy khác cho hàm từ xa được truyền về từ hệ thống từ xa.

Key SAP Giao dịch RFC

Bộ công cụ RFC hàng ngày gói gọn trong một vài mã T mà mọi lập trình viên ABAP và quản trị viên Basis đều nên biết một cách phản xạ.

Mã T Mục đích
SM59 Duy trì các thông tin đích RFC — máy chủ, đăng nhập, loại, bảo mật.
SE37 Trình tạo hàm — tạo hoặc chỉnh sửa các mô-đun hàm hỗ trợ truy cập từ xa.
SM58 Giám sát các yêu cầu RFC giao dịch bị lỗi và xử lý lại chúng.
SMQ1 / SMQ2 Giám sát các hàng đợi qRFC gửi đi (SMQ1) và nhận vào (SMQ2).
STRUST Duy trì chứng chỉ SSL được sử dụng bởi các đích đến RFC được bảo vệ bằng HTTPS.
ST22 Kiểm tra các lỗi ngắn do các cuộc gọi từ xa không thành công gây ra.

Các phương pháp hay nhất cho SAP RFC

Một lớp RFC được thiết kế tốt giúp cho việc tích hợp diễn ra nhanh chóng, dễ quan sát và dễ dàng phát triển. Những thói quen sau đây rất đáng để áp dụng vào mọi dự án.

  • Chọn biến thể phù hợp cho nhược điểmtract. Sử dụng sRFC cho các tra cứu đồng bộ, tRFC cho các cập nhật không đồng bộ tối đa một lần và qRFC khi thứ tự thực hiện quan trọng.
  • Sử dụng lại một đích đến cho mỗi hệ thống mục tiêu. Thay vì phân tán tên máy chủ trên nhiều đích đến, điều này giúp việc xoay vòng thông tin xác thực dễ dàng hơn. tracbảng.
  • Không bao giờ mã hóa cứng thông tin đăng nhập. Trong ABAP, hãy sử dụng các kết nối hệ thống đáng tin cậy hoặc vé đăng nhập bảo mật nếu có thể.
  • Theo dõi SM58 và SMQ2 thường xuyên. Các mục tRFC bị kẹt sẽ âm thầm trì hoãn các quy trình nghiệp vụ cho đến khi chúng được xử lý lại.
  • Chỉ truyền các tham số kiểu tham chiếu. Các tham số giá trị làm hỏng các mô-đun chức năng được kích hoạt từ xa.
  • Sử dụng STRUST để quản lý chứng chỉ TLS. Đối với các đích đến HTTPS, chứng chỉ hết hạn là nguyên nhân hàng đầu gây ra lỗi COMMUNICATION_FAILURE khó hiểu.

Câu Hỏi Thường Gặp

RFC là giao thức cấp thấp gọi bất kỳ mô-đun chức năng nào được kích hoạt từ xa. BAPI là một giao thức cụ thể, SAP- Mô-đun chức năng được chứng nhận, cung cấp phương thức đối tượng nghiệp vụ ổn định — mọi BAPI đều được cung cấp thông qua RFC, nhưng không phải mọi cuộc gọi RFC đều đến được BAPI.

RFC tin cậy là một đích đến SM59 mà hệ thống đích tin tưởng vào xác thực của người gọi, do đó không cần trao đổi mật khẩu trong mỗi cuộc gọi. Ngữ cảnh người dùng của người gọi được truyền tải. Điều này loại bỏ việc mã hóa cứng thông tin xác thực nhưng đổi lại yêu cầu thiết lập nghiêm ngặt hơn.

SM58 hiển thị các mục RFC giao dịch bị lỗi hoặc đang chờ xử lý. Mỗi hàng chứa ID giao dịch, mô-đun chức năng được gọi, đích đến, văn bản lỗi và thời gian thử lại lần cuối.

Không. Theo mặc định, lưu lượng RFC không được mã hóa. Các đích đến SNC (Secure Network Communications) hoặc TLS/HTTPS phải được cấu hình để mã hóa lưu lượng. SNC là cơ chế tiêu chuẩn cho môi trường sản xuất.

tRFC đảm bảo rằng một lệnh gọi được thực thi chính xác một lần nhưng không giữ nguyên thứ tự giữa các lệnh gọi. qRFC được xây dựng dựa trên tRFC và bổ sung thêm việc tuần tự hóa các lệnh gọi thông qua hàng đợi đến hoặc đi, do đó các lệnh gọi chạy theo đúng trình tự mà ứng dụng đã định nghĩa.

Vâng. Các chương trình bên ngoài có thể đăng ký vào một... SAP cổng sử dụng RFC SDK (JCo cho Java(NCo cho .NET hoặc C SDK). SAP Sau đó, chúng được gọi thông qua đích đến kiểu T, giống như bất kỳ module hàm ABAP nào khác.

Các trợ lý AI tạo ra các đoạn mã ABAP RFC từ các đặc tả bằng ngôn ngữ tự nhiên, đề xuất kiểu đích phù hợp cho một kịch bản và dịch văn bản lỗi SM58 thành danh sách sửa lỗi cụ thể — giúp tăng tốc công việc tích hợp hàng ngày cho các nhóm Basis và ABAP.

Đúng vậy. Cung cấp cho trợ lý AI thông tin về lỗi ST22 hoặc SM58, nó sẽ đối chiếu các mẫu COMMUNICATION_FAILURE / SYSTEM_FAILURE với các nguyên nhân gốc có khả năng nhất — chứng chỉ hết hạn, cổng kết nối bị lỗi, thiếu ủy quyền — và đề xuất mã giao dịch (T-code) liên quan để kiểm tra.

Tóm tắt bài viết này với: