ERP · 고도화 · 웹전환

SAP ERP 웹전환
5모듈 통합 게이트웨이

SAP GUI 100% 의존 환경에서 React 기반 웹 게이트웨이로 전환했습니다. 회계·인사·재고·구매·영업 5개 모듈을 RFC로 연동하고 협력사 47개사에 셀프서비스를 개방한 12개월 프로젝트.

클라이언트
H* Corp
국내 중견 제조
규모
800명+
전자부품
기간
12개월
2023.03–2024.02
역할
ABAP + React
시스템 통합
기존 문제

SAP GUI 의존도 100% — 사내 PC가 아니면 업무 불가, 외부 협력사는 시스템 접근 자체가 불가능해 모든 발주·입고를 메일·전화로 처리. 모바일 미지원으로 출장 시 결재 적체가 일상이었습니다.

수치 출처 및 익명화 안내 Anonymized
본 사례의 정량 KPI 는 고객사(H* Corp, 국내 중견 제조) 내부 운영 데이터 기반이며, NDA 에 따라 구체 매출액·BAPI 명세·협력사 식별 정보 등은 비공개·익명 처리되어 있습니다. 비교 수치는 GO-LIVE 직전 3개월과 직후 6개월 비교가 원칙이며, 응답시간·캐시 적중률 등 시스템 지표는 Spring Boot Actuator + Redis 통계, 사용 패턴은 게이트웨이 액세스 로그를 기반으로 산정했습니다.
02 · APPROACH

왜 이 솔루션이었나

SAP 표준을 깨지 않으면서 외부 협업을 가능하게 만드는 게이트웨이 패턴.

SAP 표준 유지 + 웹 게이트웨이

SAP 표준 트랜잭션을 그대로 유지하고 외부에는 Spring Boot 게이트웨이만 노출. 표준 업그레이드 영향도 최소화.

RFC 호출 캐싱

SAP RFC는 호출당 평균 400-800ms. 자주 조회되는 마스터 데이터는 Redis로 5분 TTL 캐싱해 응답시간을 1/4로.

Windows SSO (SAML)

사내는 AD 기반 SSO로 무중단 인증, 외부 협력사는 별도 IDP로 분리해 보안 경계를 명확히.

5모듈 단계 롤아웃

한꺼번에 5개를 띄우지 않고 구매 → 재고 → 영업 → 회계 → 인사 순서. 각 단계마다 2개월 안정화.

03 · ARCHITECTURE

시스템 구조

사내 직원 AD SSO 협력사 47개 External IDP 모바일 (필드) 결재 · 조회 React Web 5 Modules RBAC · i18n Spring Boot Gateway · JCo Redis cache SAP ECC 6 ABAP · RFC FI · HR · MM SD · CO 표준 트랜잭션 유지 SAML / SSO AD · External IDP MS-SQL (Audit) 로그 · 권한 · 캐시
React Web

5개 모듈 라우팅 + RBAC 권한 매트릭스 + 한/영 i18n. SAP UI 패턴을 차용하되 모바일 우선으로 재설계.

Spring Boot Gateway

SAP JCo로 RFC 호출, 자주 쓰는 마스터는 Redis 캐싱. 트랜잭션 경계는 BAPI 단위로 명확히 끊음.

SAP ECC 6

표준 트랜잭션 유지. 커스텀 BAPI 14개 신규, Z 테이블 최소화로 업그레이드 영향도를 줄임.

SAML/Audit

사내 AD + 외부 IDP 이중 트러스트. 모든 RFC 호출은 MS-SQL Audit 테이블에 로깅 (SOX 대응).

04 · STACK

기술 상세

Frontend
React 18 · TypeScript · Redux Toolkit · React Query · Material-UI
SAP GUI에서 넘어온 사용자가 적응할 수 있는 정보 밀도와 키보드 친화성을 유지.
Gateway
Java 17 · Spring Boot 3 · SAP JCo 3.1 · Redis
JCo는 SAP 공식 RFC 라이브러리. Spring Boot의 트랜잭션 관리로 BAPI Commit/Rollback 제어.
SAP
SAP ECC 6 EHP8 · ABAP · BAPI · RFC · IDoc
커스텀 BAPI 14개로 외부 진입점 통제. Z 객체 최소화로 표준 업그레이드 호환성 유지.
Database
MS-SQL Server 2019 (Audit · Cache 메타) · Redis 7
SAP는 그대로 두고 게이트웨이만 별도 DB. 권한·로그·캐시 메타데이터 관리.
Auth
SAML 2.0 · Windows AD · External IDP (협력사 전용)
사내·외부 트러스트 분리. 협력사는 권한이 발주·입고·정산 3개 메뉴로 제한.
Infra
On-Premise (사내) · Nginx · Docker · Jenkins
SAP 망분리 요건에 따라 온프레미스 유지. Nginx Reverse Proxy로 외부 접근 통제.
05 · RESULTS

성과 (2024.02 GO-LIVE 기준) Aggregated

롤아웃 후 6개월 운영 평균 (2024.03-08). 식별 정보는 익명 처리되었으며 모든 수치는 비율 또는 시스템 지표값입니다.

5
통합 모듈
0 → 5개
FI · HR · MM · SD · CO 모듈 단계 롤아웃 · 프로젝트 일정 기록 기반
47
협력사 셀프서비스
0개사 → 47개사
External IDP 등록 협력사 수 · 2024.08 기준 · 게이트웨이 사용자 마스터
38%
모바일 작업 비중
0% → 38%
User-Agent 기준 모바일 세션 / 전체 세션 · 2024.08 1개월 · Nginx 액세스 로그
-62%
SAP GUI 로그인 시간
월 평균 감소
SAP GUI 세션 시간 합계 · GO-LIVE 직전 3개월 vs 직후 6개월 비교 · ST03N 추출
14
신규 BAPI
외부 진입점
커스텀 BAPI 함수 그룹 인벤토리 · SE37 기준 · 2024.02 GO-LIVE 시점
99.5%
시스템 가용률
6개월 평균
게이트웨이 정상 응답 시간 / 측정 총 시간 · 2024.03-08 · 모니터링 헬스체크 기반
320ms
캐시 적중 평균 응답
RFC 직접 호출 대비 약 1/3
Redis 캐시 적중 요청 P50 응답시간 · 2024.08 30일 · Spring Boot Actuator 메트릭
PARTNER
SAP 파트너 인증
프로젝트 종료 후 확보
SAP PartnerEdge 등록 상태 · 프로젝트 외부 사실
06 · LESSONS

회고

잘된 점

RFC 호출 캐싱과 권한 매핑 레이어를 게이트웨이 안에서 분리한 설계가 응답속도를 안정화시켰습니다. 마스터 데이터 조회는 Redis 5분 TTL로 평균 320ms, 트랜잭션 호출은 캐시 우회로 안전성을 유지. 이중 트러스트(AD + External IDP) 덕분에 협력사 온보딩이 평균 1일 이내로 단축되었습니다.

어려웠던 점

ABAP과 Spring Boot 간 트랜잭션 경계 — 특히 CommitWork 처리. 초기에는 BAPI 호출 후 자동 커밋을 가정했다가 잠금 누수가 발생했고, 명시적 BAPI_TRANSACTION_COMMIT을 별도 단계로 분리하면서 라운드트립이 한 번 더 늘었습니다. 최종적으로는 BAPI 묶음을 ABAP 함수 모듈로 한 번 더 래핑해 해결.

다시 한다면

처음부터 SAP Gateway / OData 서비스를 노출해서 풀어냈을 것입니다. JCo + 커스텀 BAPI 14개를 만드느라 4개월이 소요됐는데, OData를 썼다면 메타데이터 기반으로 React Query와 자연스럽게 연결됐을 것이고 상태관리 코드량도 30~40% 줄었을 것으로 추정합니다.

SAP 고도화가
필요하신가요?

ECC/S4HANA 환경에서 웹·모바일·외부 협업 확장을 함께 설계합니다.