RFC(원격 함수 호출) SAP ABAP 튜토리얼

⚡ 스마트 요약

원격 함수 호출(RFC)은 SAP ABAP 프로그램이 다른 프로그램에서 실행 중인 함수 모듈을 호출할 수 있도록 하는 통신 메커니즘 SAP 또는 외부 시스템. 그것은 절대적입니다.trac네트워크 배관을 담당하고, 데이터 형식을 변환하며, 오류를 호출자에게 깔끔하게 전달합니다.

  • 📡 핵심 메커니즘: CALL FUNCTION…DESTINATION은 SM59에 정의된 논리적 대상에 대해 함수 모듈을 호출합니다.
  • 🔁 네 가지 변형: Sync시간 기반, 비동기, 트랜잭션 및 큐 기반 RFC는 각각 다른 전달 조건을 보장합니다.tract.
  • 🌐 연결 유형 : SM59는 유형 3(ABAP 간 통신), 유형 I(동일 데이터베이스 기반 프로그램 간 통신) 및 유형 T(외부 프로그램 간 통신)를 지원합니다.
  • 🛠️ 빌드 경로: SE37에서 함수 모듈을 원격 사용 가능으로 설정하고 코드를 작성한 다음 호출자의 SM59에서 대상을 정의하십시오.
  • 🤖 AI 관점: AI 어시스턴트는 자연어 명세에서 ABAP RFC 스텁을 생성하고 SM58 오류를 분석하여 실행 가능한 수정 사항을 도출합니다.

RFC 인터페이스의 기능

RFC란 무엇인가요? SAP?

RFC 용 스탠드 원격 함수 호출RFC는 비즈니스 애플리케이션이 미리 정의된 형식으로 다른 시스템과 통신하고 정보를 교환할 수 있도록 하는 메커니즘입니다. RFC는 가장 일반적인 방법입니다. SAP 시스템은 다른 시스템과 통신하며, 또한 그 시스템들을 연결하는 다리 역할도 합니다. SAP 비시스템SAP 분야의 다양한 어플리케이션에서 사용됩니다.

RFC는 두 가지 인터페이스를 제공합니다.

  1. 호출 인터페이스 ABAP 프로그램.
  2. 비호출자를 위한 호출 인터페이스SAP 프로그램.

모든 ABAP 프로그램은 다음을 사용하여 원격 함수를 호출할 수 있습니다. 통화 기능…목적지 성명서. 그만큼 DESTINATION 매개변수는 SAP 호출된 함수가 호출한 시스템과 다른 시스템에서 실행되는 시스템.

통사론

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

논리적 목적지는 트랜잭션을 통해 정의됩니다. SM59 그리고 표에 저장됩니다 RFCDES.

RFC 인터페이스의 기능

RFC 인터페이스의 기능

RFC 런타임은 모든 호출에서 세 가지를 담당합니다.

  • 모든 매개변수 데이터를 원격 시스템에서 요구하는 형식으로 변환합니다.
  • 원격 시스템과 통신하는 데 필요한 통신 루틴을 호출합니다.
  • 의사소통 오류를 처리하고 발신자에게 알리는 것 EXCEPTIONS 매개 변수 CALL FUNCTION.

RFC 통신 SAP 시스템

RFC는 SAP RFC는 시스템 간 통신을 처리하고 관련 프로그래밍을 간소화하는 프로토콜입니다. 호출 프로그램이 있는 컴퓨터와 다른 컴퓨터에 있는 함수 모듈을 호출하는 과정입니다. RFC는 기술적으로 같은 컴퓨터에 있는 함수 모듈을 호출하는 데 사용할 수 있습니다. 같은 RFC 인터페이스 시스템은 호출 프로그램과 호출되는 프로그램이 서로 다른 컴퓨터에서 실행될 때 주로 사용됩니다. RFC 인터페이스 시스템은 서로 다른 컴퓨터 간의 RFC 연결을 설정하는 데 사용됩니다. SAP 시스템,뿐만 아니라 SAP 그리고 외부(비-SAP) 시스템.

RFC에 대해 반드시 알아야 할 세부 정보

  • SAP 를 사용하여 CPIC CPIC(Common Programming Interface for Communication)는 시스템 간 데이터 전송을 위한 프로토콜입니다. SAPRFC는 CPI-C를 기반으로 구축된 통신 인터페이스이지만, 더 많은 기능을 제공하고 애플리케이션 프로그래머에게 더 친숙한 인터페이스를 갖추고 있습니다.
  • RFC 라이브러리 함수는 다음을 지원합니다. C 프로그래밍 언어 그리고 Visual Basic은 Windows 플랫폼.
  • RFC 연결은 시스템 전체에서 작동합니다. 클라이언트 000에서 정의된 RFC 연결은 아무런 차이 없이 클라이언트 100에서도 사용할 수 있습니다.
  • RFC는 네트워크를 통해 특수 서브루틴(함수 모듈)을 호출하기 위한 프로토콜입니다. 함수 모듈은 C 함수나 파스칼 프로시저와 유사하며, 데이터, 테이블, 반환 코드를 교환할 수 있는 정의된 인터페이스를 제공합니다. 함수 모듈은 내부에서 관리됩니다. SAP 전용 도서관의 시스템, 함수 빌더.
  • 함수 빌더(트랜잭션) SE37)는 애플리케이션 프로그래머에게 코드를 작성하고, 문서화하고, 개발할 수 있는 환경을 제공합니다. 테스트 로컬에서뿐만 아니라 원격에서도 호출할 수 있는 함수 모듈입니다. 시스템은 추가 코드( RFC 스텁원격 통화에 필요합니다.
  • RFC 연결은 트랜잭션을 사용하여 유지됩니다. SM59. SAP 또한 배송합니다 RFC-SDK 광범위한 C 라이브러리를 사용하는 소프트웨어 개발 키트(SDK)로, 외부 프로그램이 연결할 수 있도록 합니다. SAP 시스템.
  • 원격 서버 호출과 로컬 호출의 유일한 차이점은 다음과 같습니다. DESTINATION 이 매개변수는 프로그램이 실행될 대상 서버를 지정합니다.

RFC의 장점

RFC는 원격 측에서 모듈과 메서드를 다시 구현할 필요성을 없애 프로그래밍 노력을 줄여줍니다. RFC 계층은 다음과 같은 부분을 처리합니다.

  • 데이터를 원격(대상) 시스템이 이해할 수 있는 형식으로 변환합니다.
  • 원격 시스템과의 통신을 설정하는 데 필요한 루틴을 호출합니다.
  • 의사소통 과정에서 발생하는 오류를 처리하는 방법.
  • 트랜잭션 또는 큐 방식 변형을 사용할 때 안정적인 트랜잭션 의미 체계를 제공합니다.

RFC 유형

RFC 유형

SAP 네 가지 RFC 변형을 지원합니다. 각 변형은 지연 시간, 안정성 및 순서 보장 간의 절충점을 다르게 제공합니다.

1. Synchronous RFC(sRFC)

Synchronous RFC는 호출 시점에 클라이언트와 서버 모두 사용 가능해야 합니다. 이는 가장 일반적인 유형이며 호출자가 실행 직후 결과를 즉시 필요로 할 때 사용됩니다.

sRFC는 시스템 간 통신 수단으로, 수신 확인 응답(ACK)이 필수적입니다. 송신 시스템의 리소스는 수신 시스템에서 응답을 기다리고, 메시지가 ACK와 함께 도착하도록 보장합니다. 이를 통해 교환되는 데이터는 일관성 있고 신뢰할 수 있습니다.

단점은 대상 시스템을 사용할 수 없는 경우 소스 시스템 리소스가 대상 시스템이 다시 연결될 때까지 기다려야 하므로 대상 시스템에서 소스 시스템 프로세스가 절전/RFC/CPIC 모드로 전환되어 리소스가 차단될 수 있다는 것입니다.

사용:

  • 시스템 간 실시간 통신.
  • 사이의 통신 SAP 웹 애플리케이션 서버 및 SAP GUI.

2. 비동기 RFC(aRFC)

비동기 RFC는 시스템 간 통신에서 확인 응답이 필요하지 않은 방식이며, 이는 드롭 방식과 유사합니다.ping 우편으로 엽서를 보내는 것과 같습니다. 두 시스템 모두 실행 시점에 사용 가능해야 할 필요는 없으며, 결과는 호출 시스템으로 즉시 반환되지 않습니다.

소스 시스템 리소스는 대상 시스템을 기다리지 않고 데이터를 전달한 후 다음 단계로 넘어갑니다. 이러한 특성 덕분에 aRFC는 빠르지만 그 자체로는 신뢰성이 떨어집니다. 대상 시스템을 사용할 수 없는 경우 데이터 손실이 발생할 수 있습니다.

사용:

  • 시스템 간 통신은 한 번 전송하면 자동으로 처리되는 방식입니다.
  • 시스템 간 병렬 처리.

3. 트랜잭션 RFC(tRFC)

트랜잭션 RFC는 비동기 RFC의 특별한 형태입니다. 이는 일반적으로 독립적으로 처리되는 단계들을 트랜잭션처럼 처리하도록 보장합니다.

tRFC는 네트워크 문제로 데이터가 여러 번 전송되더라도 호출된 함수 모듈을 RFC 서버에서 정확히 한 번만 실행합니다. RFC 클라이언트가 호출을 실행하는 시점에 원격 시스템이 사용 가능해야 할 필요는 없습니다. tRFC 컴포넌트는 호출된 함수와 해당 데이터를 저장합니다. SAP 고유한 데이터베이스 거래 ID(TID)대상 시스템을 사용할 수 없는 경우 데이터는 RFC 테이블(트랜잭션에서 확인 가능)에 기록됩니다. SM58) 그리고 나중에 스케줄러 보고서에 의해 포착되었습니다. RSARFCSE60초마다 실행됩니다.

사용:

  • 최대 한 번 전달 기능을 추가하여 비동기 RFC를 확장합니다.
  • 정확한 한 번 실행이 중요한 시스템 간의 안정적인 통신.

4. 큐드 RFC(qRFC)

큐드 RFC는 호출 애플리케이션이 지정한 순서대로 개별 단계가 처리되도록 보장함으로써 tRFC를 확장합니다. 여러 LUW(논리 작업 단위/트랜잭션)가 의도한 순서대로 처리되도록 하기 위해 tRFC는 인바운드 및 아웃바운드 큐를 사용하여 직렬화할 수 있으며, "큐드 RFC"라는 이름은 여기서 유래했습니다.

사용:

  • 엄격한 순서 지정을 통해 트랜잭션 RFC를 확장합니다.
  • 정해진 처리 순서가 필수적인 시나리오.
  • 여러 거래를 미리 정해진 순서대로 처리해야 하는 경우.

RFC 유형 비교

타입 발신자가 기다리고 있나요? 신뢰할 수 있습니까? 주문하셨나요? 가장 좋은
sRFC 가능 가능 해당 없음 (단일 통화) 실시간 조회
aRFC 아니 아니 아니 한 번 실행하면 신경 쓸 필요 없는 병렬 작업
tRFC 아니 예 (정확히 한 번) 아니 안정적인 비동기 업데이트
qRFC 아니 예 (정확히 한 번) 가능 엄격하게 순서가 정해진 업데이트

RFC 연결 유형

RFC 연결 유형

SM59는 여러 연결 유형을 지원합니다. 가장 자주 접하게 될 세 가지 연결 유형은 아래에 요약되어 있습니다.

유형 3 — ABAP 간 전송

유형 3 항목은 연결을 지정합니다. ABAP 시스템호스트 이름 또는 IP 주소는 필수이며, 로그인 정보는 선택적으로 제공할 수 있습니다. 유형 3은 ABAP 시스템 간의 RFC와 ABAP 시스템에 대한 외부 호출 모두에 적용됩니다.

유형 I — 동일 데이터베이스 피어

유형 I 항목은 현재 시스템과 동일한 데이터베이스를 공유하는 ABAP 시스템을 지정합니다. 이러한 항목은 미리 정의되어 있으며 수정할 수 없습니다. 일반적인 항목 이름은 다음과 같습니다. ws0015_K18_24:

  • ws0015 — 호스트 이름
  • K18 — 시스템(데이터베이스) 이름
  • 24 — TCP 서비스 이름

유형 T — 외부 프로그램

T형 대상은 RFC API를 사용하여 RFC를 수신하는 외부 프로그램에 연결됩니다. 활성화 유형은 다음 중 하나일 수 있습니다. 스타트 or 등록'시작'인 경우, 시작할 프로그램의 호스트 이름과 경로를 제공해야 합니다.

방법 Code RFC

RFC를 처음부터 끝까지 제작하는 과정은 총 5단계로 이루어져 있습니다. 처음 3단계는 SE37과 SM59에서 기계적으로 클릭하는 단계이고, 마지막 2단계는 연결을 확보하는 단계입니다.trac맞아요.

1 단계 : 트랜잭션의 함수 모듈 속성 탭에서 SE37처리 유형을 다음과 같이 설정합니다. 원격 지원 모듈 함수 모듈이 RFC를 지원하는지 표시합니다.

SE37 원격 지원 모듈

2 단계 : 소스 코드 편집기에서 함수 모듈의 코드를 작성하세요.

함수 모듈 소스 코드

3 단계 : 원격 함수를 호출하는 RFC 클라이언트 시스템에서 RFC 서버의 목적지를 정의합니다(트랜잭션 내에서 수행). SM59.

SM59 목적지 설정

4단계 — 매개변수 선언: 원격 함수 모듈의 모든 매개변수 필드는 참조 필드로 정의되어야 합니다. 즉, ABAP 사전 필드에 대한 타입 지정이 필요합니다. 원격 사용이 가능한 함수 모듈에서는 값 매개변수를 사용할 수 없습니다.

5단계 — 예외 사항: 시스템이 문제를 제기합니다 통신 오류 시스템 오류 내부적으로는 전송 계층 오류에 대해 처리합니다. 애플리케이션 계층 예외는 로컬 함수에서와 마찬가지로 원격 함수 내부에서도 발생시킬 수 있습니다.

원격 함수 호출 디버깅

  • 그것은 디버깅이 불가능하다 기존 방식대로 ABAP 시스템이 아닌 시스템에 원격 함수를 호출하는 경우, 외부 런타임 환경은 불투명합니다.
  • 하지만 ABAP 간 RFC 호출의 경우, ABAP 디버거를 사용하여 원격 시스템 내부에서 RFC 함수의 실행을 모니터링할 수 있습니다.
  • 원격 호출을 사용하면 ABAP 디버거(UI 포함)가 로컬 시스템에서 실행됩니다. 원격 함수의 데이터 값 및 기타 런타임 정보는 원격 시스템에서 스트리밍 방식으로 전송됩니다.

키 SAP RFC 트랜잭션

일상적으로 사용하는 RFC 툴박스는 모든 ABAP 개발자와 Basis 관리자가 암기해야 할 몇 가지 T-코드로 요약됩니다.

T 코드 목적
SM59 RFC 대상(호스트, 로그온, 유형, 보안)을 유지 관리합니다.
SE37 함수 빌더 — 원격 접속이 가능한 함수 모듈을 생성하거나 편집합니다.
SM58 실패한 트랜잭션 RFC를 모니터링하고 재처리합니다.
SMQ1 / SMQ2 아웃바운드(SMQ1) 및 인바운드(SMQ2) qRFC 큐를 모니터링합니다.
신뢰 HTTPS로 보호되는 RFC 대상에서 사용하는 SSL 인증서를 관리합니다.
ST22 원격 호출 실패로 인해 발생하는 덤프 오류를 검사하십시오.

최고의 실습 SAP RFC

잘 설계된 RFC 계층은 통합을 빠르고, 관찰 가능하며, 쉽게 발전시킬 수 있도록 해줍니다. 다음 습관들은 모든 프로젝트에 적용하는 것이 좋습니다.

  • 단점에 맞는 변형을 선택하세요tract. 동기식 조회에는 sRFC를, 최대 한 번만 실행되는 비동기식 업데이트에는 tRFC를, 순서가 중요한 경우에는 qRFC를 사용하십시오.
  • 대상 시스템당 하나의 대상을 재사용합니다. 호스트 이름을 여러 목적지에 분산시키는 대신 자격 증명 순환을 수행합니다. trac테이블.
  • 자격 증명을 절대 하드코딩하지 마세요. ABAP에서는 가능한 한 신뢰할 수 있는 시스템 연결 또는 보안 로그인 티켓을 사용하십시오.
  • SM58 및 SMQ2를 정기적으로 모니터링하십시오. 고착된 tRFC 항목은 재처리될 때까지 비즈니스 프로세스를 조용히 지연시킵니다.
  • 참조형 매개변수만 전달하세요. 값 매개변수로 인해 원격 지원 기능 모듈이 제대로 작동하지 않습니다.
  • STRUST를 사용하여 TLS 인증서를 관리하세요. HTTPS 목적지의 경우, 만료된 인증서는 원인을 알 수 없는 COMMUNICATION_FAILURE 덤프 오류의 주요 원인입니다.

자주 묻는 질문

RFC는 원격으로 접근 가능한 함수 모듈을 호출하는 저수준 프로토콜입니다. BAPI는 특정 함수 모듈을 호출하는 데 사용되는 프로토콜입니다. SAP- 안정적인 비즈니스 객체 메서드를 노출하는 인증된 함수 모듈 — 모든 BAPI는 RFC를 통해 노출되지만, 모든 RFC 호출이 BAPI에 도달하는 것은 아닙니다.

신뢰할 수 있는 RFC는 대상 시스템이 발신자의 인증을 신뢰하는 SM59 대상입니다. 따라서 통화 시마다 암호가 교환되지 않습니다. 발신자의 사용자 컨텍스트는 전달됩니다. 하드코딩된 자격 증명을 제거하는 대신 설정이 더 엄격해집니다.

SM58은 재처리 대기 중인 실패했거나 보류 중인 트랜잭션 RFC 항목을 표시합니다. 각 행에는 트랜잭션 ID, 호출된 함수 모듈, 대상, 오류 텍스트 및 마지막 재시도 시간이 포함됩니다.

아니요. 기본적으로 RFC 트래픽은 암호화되지 않습니다. SNC(보안 네트워크 통신) 또는 TLS/HTTPS 대상은 트래픽을 암호화하도록 구성해야 합니다. SNC는 실제 운영 환경에서 표준으로 사용되는 메커니즘입니다.

tRFC는 함수 호출이 정확히 한 번만 실행되도록 보장하지만, 호출 순서는 유지하지 않습니다. qRFC는 tRFC를 기반으로 하며, 수신 또는 송신 큐를 통해 호출을 직렬화하는 기능을 추가하여 애플리케이션이 정의한 정확한 순서대로 호출이 실행되도록 합니다.

예. 외부 프로그램은 서버에 등록할 수 있습니다. SAP RFC SDK를 사용하는 게이트웨이(JCo) Java(예: .NET용 NCo 또는 C SDK). SAP 그런 다음 다른 ABAP 함수 모듈과 마찬가지로 Type T 대상을 통해 해당 모듈을 호출합니다.

AI 어시스턴트는 자연어 사양에서 ABAP RFC 스텁을 생성하고, 시나리오에 적합한 대상 유형을 제안하며, SM58 오류 텍스트를 구체적인 수정 목록으로 변환하여 Basis 및 ABAP 팀의 일상적인 통합 작업 속도를 높여줍니다.

예. AI 비서에게 ST22 덤프 또는 SM58 오류를 입력하면 통신 실패/시스템 실패 패턴을 가장 가능성이 높은 근본 원인(인증서 만료, 게이트웨이 다운, 권한 누락 등)과 연관시켜 분석하고, 점검해야 할 관련 T-코드를 제안합니다.

이 게시물을 요약하면 다음과 같습니다.