✅ SAP RFC란? 개념부터 실무 활용까지 완벽 정리
SAP 시스템은 기업의 핵심 데이터를 다루기 때문에, 다른 시스템과 통신하거나 SAP 내부 모듈 간 연동이 필요할 때 안정적이고 표준화된 방식의 호출 방식이 필요합니다.
이때 사용하는 대표적인 기술이 RFC(Remote Function Call) 입니다.
1. RFC란 무엇인가?
| 구분 | 설명 |
| 정식 명칭 | Remote Function Call |
| 역할 | SAP 시스템 간 또는 SAP ↔ 비SAP 사이에 함수(기능)를 원격 호출 |
| 핵심 개념 | 네트워크를 통해 Function Module을 호출하는 SAP의 표준 통신 인터페이스 |
| 예시 | 외부 시스템에서 SAP의 재고 정보 조회, 주문 정보 생성 등 |
즉, RFC는 "SAP 함수(기능)를 원격에서 실행시키는 기술" 이라고 이해하면 쉽습니다.
2. RFC의 주요 유형
| 유형 | 설명 | 사용 상황 |
| sRFC (Synchronous) | 호출 후 결과를 기다리는 동기 방식 | 즉시 응답이 필요한 케이스 |
| tRFC (Transactional) | 트랜잭션 단위로 저장 후 전송, 실패 시 재전송 가능 | 안정성이 필요한 대량/중요 전송 |
| qRFC (Queued) | Queue를 통한 순차 처리 보장 | 순서 보장이 필수인 재고/주문 처리 |
| bgRFC (Background) | 차세대 RFC, 성능 향상 / 비동기 처리 강화 | HANA / 대량성 업무에서 최신 트렌드 |
sRFC
- 가장 기본적인 RFC 변형(Variant)
- EXPORTING, IMPORTING, CHANGING 추가 구문을 사용하면, 딥 구조(Deep Structure)나 문자열(String)과 같이 깊은 문자 타입을 가진 테이블도 전달할 수 있습니다.
- 트랜잭션 RFC를 사용할 때 호출된 함수 모듈은 호출된 시스템에서 정확히 한번 실행(Exactly Once)
- 트랜잭션 SM58을 사용하여 로그를 확인할 수 있음.
- 호출 프로그램이 Commit Work. 구문에 도달하면 원격 호출이 요청된 시스템으로 전달함.
- tRFC의 확장형으로 큐(Queue)를 사용하여 직렬
- qRFC는 아웃바운드 큐(호출 애플리케이션에서의 직렬화)와 인바운드 큐(호출 애플리케이션에서의 직렬화)로 구성될 수 있습니다.
- 백그라운드 RFC(bgRFC)는 기존 tRFC 및 qRFC를 대체하는 표준으로 제공됩니다.
- SAP NetWeaver 2004(SAP Basis 7.0)에서 사용할 수 있습니다.
- bgRFC는 새 버전의 tRFC 및 qRFC를 지칭하는 상위 용어입니다.
- 기존 tRFC/qRFC와 bgRFC를 동시에 실행할 수 있습니다.
3. RFC 동작 구조
외부 시스템 → RFC Destination → SAP RFC Function Module 호출 → 결과 리턴
SAP 내부 모듈 간 통신일 때도 동일 구조
RFC 호출 대상은 반드시 Remote-Enabled Function Module 이어야 하고
SE37에서 속성을 Remote-Enabled Module 로 설정해야 합니다.
4. RFC 설정 절차 (SM59)
| 1 | Transaction Code: SM59 실행 |
| 2 | RFC Destination(Type3 / HTTP / TCP/IP 등) 생성 |
| 3 | 접속정보 (Hostname, SysNo, Client 등) 입력 |
| 4 | 접속 테스트 버튼으로 검증 |
5. 실무에서 자주 쓰는 RFC 예제 및 RFC 구현
✅ 주요 포인트
- DESTINATION = SM59 RFC Destination 명
- 외부 시스템에서 SAP 데이터를 가져올 때 이 방식 사용
- Function Module 은 SAP 쪽에서 제공/개발
- 실제 운영 중이라면, SE37 조회를 하여 구현 소스 확인 및 참고
0. RFC Destination 생성 (SM59) 예시
| T-code | SM59 |
| Connection Type | 3 (ABAP Connection) 또는 TCP/IP |
| RFC Destination | 예: RFC_DEST |
| Target Host | SAP Application Server |
| System Number | 00 / 01 등 시스템 번호 |
| Client | 100 |
| Logon | User/Password 지정 |
1. RFC Function Module 생성하기 (SE37 Create) - ABAP
경로: SE37 → Create → 아래와 같이 정의
▷ Function Module 헤더 설정
| Function Module | Z_RFC_GET_MATERIAL_INFO |
| Short Text | Get Material Basic Info |
| Processing Type | Remote-Enabled Module ✅ |
▷ IMPORT/EXPORT 파라미터 설정
| Parameter | Type | Description |
| IV_MATNR | IMPORTING | MATNR - 자재코드 |
| EV_MAKTX | EXPORTING | MAKTX - 자재내역 |
▷ ABAP 소스 코드 예시
FUNCTION Z_RFC_GET_MATERIAL_INFO.
*"----------------------------------------------------------------------
*"*" Local Interface:
*" IMPORTING
*" VALUE(IV_MATNR) TYPE MATNR
*" EXPORTING
*" VALUE(EV_MAKTX) TYPE MAKTX
*"----------------------------------------------------------------------
DATA: lv_matnr TYPE MATNR,
lv_maktx TYPE MAKTX.
SELECT SINGLE maktx
INTO lv_maktx
FROM makt
WHERE matnr = iv_matnr
AND spras = sy-langu.
IF sy-subrc = 0.
ev_maktx = lv_maktx.
ELSE.
ev_maktx = 'NO DATA FOUND'.
ENDIF.
ENDFUNCTION.
SAP 시스템(또는 같은 시스템)에서 해당 RFC를 호출하는 예제
REPORT zcall_rfc.
DATA: lv_matnr TYPE matnr VALUE 'MAT12345',
lv_maktx TYPE maktx.
CALL FUNCTION 'Z_RFC_GET_MATERIAL_INFO'
DESTINATION 'RFC_DEST' " SM59에 설정한 Destination
EXPORTING
iv_matnr = lv_matnr
IMPORTING
ev_maktx = lv_maktx
EXCEPTIONS
communication_failure = 1
system_failure = 2
OTHERS = 3.
IF sy-subrc = 0.
WRITE: / 'Material: ', lv_matnr.
WRITE: / 'Description:', lv_maktx.
ELSE.
WRITE: / 'RFC Call Failed: ', sy-subrc.
ENDIF.
* JCO 를 통한 RFC 연결 및 호출
https://kora1492.tistory.com/141
[SAP-JCO] JCo 예제 및 연결 정리
[SAP-JCO] JCO( SAP Java Connector ) 예제 및 연결 정리 JCO 란? SAP는 SAP JCo ( SAP Java Connector ) 를 제공하여, SAP NetWeaver Appliacation Sever 에서 ABAP 와 JAVA 간의 양방향 통신을 지원합니다. (RFC , 원격함수호출)을
kora1492.tistory.com
6. 운영에서 자주 보는 RFC 오류 유형
| 오류 | 원인 | 해결 방법 |
| RFC_NO_AUTHORITY | 권한 부족 | PFCG 권한 롤 점검 |
| COMMUNICATION_FAILURE | 네트워크 문제 | 방화벽/포트 확인 |
| SYSTEM_FAILURE | RFC 함수 내 ABAP 오류 | ST22 덤프 분석 |
| TIME_OUT | 응답 지연 | Timeout 설정 조정 |
7. 최근 RFC 트렌드
| bgRFC 확산 | 기존 tRFC 성능 개선 + 병렬/백그라운드 처리 강화 |
| SAP BTP / OData / API 연계 | Cloud에서 RFC보다 OData(Open API) 활용 증가 |
| RFC + PI/PO/IS | 대규모 엔터프라이즈 아키텍처에서는 미들웨어 연계 |
| RFC → API 전환 사례 증가 | RFC는 폐기 아님, 레거시 + 핵심통신 역할 유지 |
8. RFC와 API 비교 (현업에서 자주 질문)
| 항목 | RFC | OData / API |
| 위치 | SAP 내부 통신 중심 | SAP 밖(Open Integration) 중심 |
| 응용 시스템 | SAP to SAP 강점 | SAP ↔ Cloud/3rd Party |
| 실시간 | 매우 강함 | 강함 |
| 성능 | 트랜잭션 처리 최적화 | REST 기반 확장성 |
| 차세대 전략 | 유지 (Core) | 확대 (Edge/Service) |
'ERP(SAP)' 카테고리의 다른 글
| [SAP] MM-IM S/4HANA Simplification List 정리 (0) | 2025.10.24 |
|---|---|
| [SAP] CDHDR / CDPOS를 주요 테이블 변경 사항 찾기 (0) | 2025.10.23 |
| [SAP] IMG ( Implementation Guide) 세팅, MM 모듈 위주 정리 (0) | 2025.10.21 |
| SAP에서 Data Overflow(데이터 오버플로우) 덤프가 발생하는 주요 원인 (0) | 2025.10.20 |
| [SAP] SAP Integration Suite란? (개념, 구조 및 과금 체계) (0) | 2025.10.17 |