지난 1편에서는 “추출 → 저장 → 표현” 3단계로 SCM 자동화 대시보드의 큰 그림을 그렸습니다. 이번 2편은 그중 가장 사고가 잦은 첫 단계, ‘추출’ 만 깊게 파봅니다.
결론부터 말하면, 추출은 화려하지 않지만 여기서 한 번 삐끗하면 뒤의 모든 숫자가 거짓말이 됩니다. 그래서 저는 이 단계에 가장 많은 안전장치를 넣었어요. 코드를 직접 타이핑하지 않고 AI에게 설계를 맡긴 비개발 실무자의 시선에서, 무엇을 조심해야 했는지 풀어봅니다.
이 글에서 알 수 있는 것:
✅ 왜 ‘추출’이 파이프라인에서 가장 위험한 단계인지
✅ SAP에서 무엇을, 어떻게 꺼내는지 (5종 데이터)
✅ 실시간의 유혹을 버리고 ‘일 배치’로 타협한 이유
✅ 추출이 실패해도 어제 숫자를 지키는 안전장치
왜 ‘추출’이 가장 위험한 단계인가

대시보드는 결국 남이 만든 원본 데이터를 빌려다 쓰는 일입니다. 우리가 직접 입력하는 게 아니라, SAP라는 거대한 시스템에서 매일 한 덩어리씩 떠오는 거죠.
문제는 이 ‘떠오는 일’이 생각보다 약하다는 겁니다.
- SAP 화면이 점검 중이면 그날 추출은 빈손
- 컬럼 순서가 살짝 바뀌면 엉뚱한 값이 엉뚱한 칸에 들어감
- 한 번이라도 절반만 받아오면, 대시보드는 “매출이 반토막 났다"고 임원에게 보고
표현(차트)이 예쁜 건 나중 문제입니다. 추출이 흔들리면 그 위에 쌓은 모든 숫자가 거짓이 되니까요. 그래서 SCM 자동화에서 가장 먼저 단단하게 만들어야 하는 게 바로 이 단계입니다.
💡 핵심: 대시보드의 신뢰도는 차트가 아니라 ‘추출의 안정성’에서 나옵니다.
SAP에서 무엇을, 어떻게 꺼내는가

이 대시보드는 SAP에서 성격이 다른 5종 데이터를 끌어옵니다. 비개발자도 알아둘 만한 분류는 이렇습니다.
| 데이터 | 무엇인가 | 쓰임새 |
|---|---|---|
| 재고 | 지금 창고에 얼마나 있나 | 예상재고·결품 판단 |
| 발주잔량 | 주문했는데 아직 안 온 양 | 입고 일정 예측 |
| 수요 | 주 단위 필요 수량 | 결품 경보의 토대 |
| 매입이력 | 지금까지 산 기록 | 매입 분석·KPI |
| 자재마스터 | 자재의 이름표·담당·분류 | 모든 데이터의 기준표 |
특히 수요 데이터는 누적 수백만 건 규모라, 사람이 엑셀로 만지는 건 애초에 불가능합니다. 추출 스크립트가 SAP에서 이걸 자동으로 받아 정해진 형식(CSV)으로 떨궈주면, 다음 단계(DB 적재)가 받아갑니다.
“어떻게 꺼내느냐"는 두 갈래입니다. 사람처럼 화면을 클릭해주는 RPA와, 시스템이 직접 데이터를 내주는 통로(API). 저는 이 중 RPA, 구체적으로는 PAD(Power Automate Desktop, 마이크로소프트의 무료 자동화 도구) 로 SAP 리포트 다운로드를 자동화했습니다.
PAD를 고른 이유는 단순합니다. SAP 리포트는 조회 조건(기간·플랜트·자재 범위 같은 옵션값)을 매번 똑같이 넣어야 하는데, 사람이 손으로 하면 어제와 오늘이 미묘하게 달라집니다. PAD에 옵션값을 한 번 박아두면, 늘 같은 조건으로 같은 형식의 리포트가 떨어집니다. 이 “항상 동일한 값으로 받는다"는 일관성이야말로 안정적인 데이터 확보의 진짜 핵심이에요. 추출 조건이 매일 흔들리면 뒤의 모든 분석이 사상누각이 되니까요.
사실 같은 일을 파이썬 코드로도 구현할 수 있습니다. 더 가볍고 빠르죠. 다만 PAD는 한쪽에서 단점을, 다른 쪽에서 장점을 줍니다.
- 단점: 프로그램 실행이 다소 무겁습니다(파이썬 스크립트보다 굼뜸).
- 장점 1: 변수값(조회 옵션) 지정이 화면에서 직관적입니다. 코드를 몰라도 클릭으로 조건을 바꿉니다.
- 장점 2: 특정 시간에 예약 실행하거나, 필요할 때 수시로 한 번씩 돌리기도 편합니다.
그래서 코딩이 익숙하지 않은 실무자라면 PAD로 시작해 손에 익힌 뒤, 무거움이 거슬릴 때 파이썬으로 옮겨가는 길을 추천합니다. 어느 쪽이든 목표는 같아요 — “사람 손을 떼고, 늘 같은 조건으로 받는 것.”
조금 더 구체적으로, 제가 실제로 만든 플로우 하나는 “각 담당자별 소요(수요) 리포트를 받아 MRP 관리파일을 만드는” 작업입니다. 단계를 익명화해서 옮기면 이런 흐름이에요.
- 오늘 날짜를 가져와
yyyyMMdd형식으로 변환 → 날짜별 폴더와 파일명을 자동 생성 - SAP에 접속해 목표 리포트(트랜잭션) 실행
- 조회 조건(담당자 코드 등)을 “변수"로 입력 — 바로 이 변수만 바꿔 담당자별로 같은 절차를 반복합니다
- 실행 → 결과를
[담당코드][리포트명][날짜].xlsx형식으로 지정 폴더에 저장 - 저장된 엑셀을 열어 데이터 영역(수천 행)을 읽어 다음 단계(관리파일 작성)로 전달
포인트는 두 가지입니다. 첫째, 담당자 코드 같은 값은 PAD에서 민감 변수(Sensitive) 로 가려 안전하게 관리합니다. 둘째, 파일명과 폴더에 날짜를 자동으로 붙여 언제 받은 데이터인지 늘 추적할 수 있게 했습니다. “변수만 바꾸면 똑같은 절차가 그대로 반복된다” — 손으로 받을 때와 결정적으로 다른 지점이 바로 여기예요. 담당자가 10명이든 20명이든, 사람은 변수 목록만 관리하면 됩니다.
💡 핵심: 추출은 ‘같은 조건으로 늘 똑같이’ 받는 게 생명입니다. PAD든 파이썬이든, 옵션값을 고정하는 도구를 쓰세요.
스케줄링의 함정 — 실시간의 유혹과 일 배치의 현실

처음엔 욕심이 났습니다. “이왕이면 실시간으로 SAP와 연동하자.” 멋있어 보였거든요.
결과는 시간 낭비였습니다. 실시간 연동은 (1) SAP 쪽 권한 문제, (2) 시스템 부하, (3) 잠깐의 끊김에도 화면이 깨지는 취약함을 한꺼번에 끌고 옵니다. 현업이 진짜로 원한 건 ‘초 단위 최신’이 아니라 “어제까지 정확한 그림” 이었어요.
그래서 하루에 한 번, 정해진 시간에 자동으로 한 덩어리씩 받는 ‘일 배치’ 로 타협했습니다. 새벽에 추출이 한 번 돌면, 출근한 모두가 같은 기준의 숫자를 봅니다.
여기에도 함정이 있습니다.
- 순서: 자재마스터(기준표)를 먼저 받고, 그 다음에 거래 데이터를 받아야 이름이 안 깨집니다.
- 겹침 방지: 어제 작업이 안 끝났는데 오늘 게 또 돌면 데이터가 뒤섞입니다.
- 시간대: SAP 점검 시간과 안 겹치게 추출 시각을 잡아야 합니다.
💡 핵심: ‘실시간’은 대개 욕심입니다. 현업의 99%는 ‘어제까지 정확하면’ 충분합니다.
추출이 실패해도 어제 숫자를 지키는 안전장치

자동화의 진짜 실력은 잘 될 때가 아니라 실패할 때 드러납니다. 제가 AI와 함께 넣은 안전장치는 세 가지입니다.
- 원본을 함부로 덮어쓰지 않는다
오늘 추출이 절반만 왔다고 어제의 멀쩡한 데이터를 지워버리면 최악입니다. 그래서 “새 데이터가 온전히 확인되기 전까지 어제 것을 지우지 않는다” 를 철칙으로 뒀습니다.
- 과거 버전을 보존한다
‘5월 매입’ 같은 숫자는 나중에 정정될 수 있습니다. 그때마다 덮어쓰면 추적이 안 되니, 기간 단위로 버전을 남겨 언제 무엇이 바뀌었는지 되짚을 수 있게 했습니다.
- 합계의 출처를 하나로 일원화한다
같은 ‘매입 금액’을 여러 경로로 계산하면 값이 미묘하게 달라집니다. 그래서 검증된 단 하나의 데이터 출처(뷰) 만 합계에 쓰도록 고정해, 유령 데이터가 끼어들 틈을 막았습니다. (1편에서 말한 ‘취소된 발주’ 사고가 바로 이걸 안 했을 때 생긴 일입니다.)
💡 핵심: “실패해도 어제는 지킨다.” 이 한 줄이 자동화를 믿을 수 있게 만듭니다.
2편을 마치며 — 다음 편 예고

2편은 가장 안 화려하지만 가장 중요한 ‘추출’을 다뤘습니다. 정리하면:
- 대시보드의 신뢰도는 차트가 아니라 추출의 안정성에서 나온다
- 성격이 다른 5종 데이터는 추출 방식도 다르다
- 실시간은 욕심, 현업엔 ‘어제까지 정확한 일 배치’면 충분하다
- “실패해도 어제는 지킨다” — 원본 보존·버전 관리·출처 일원화
다음 편 예고:
- 3편: PostgreSQL 테이블 설계 — AI에게 스키마를 그리게 하는 프롬프트 공개
- 4편: 대시보드 화면 구성 — 임원이 3초 만에 이해하는 카드 배치의 법칙
- 5편: 운영 회고 — 무엇이 살아남고 무엇이 버려졌나
혹시 지금 사내 데이터를 엑셀로 손수 받아 쓰고 계시다면, 다음 추출부터 딱 하나만 적어두세요 — “이게 실패하면 무엇이 거짓말이 되는가?” SCM 자동화의 안전장치는 늘 그 질문에서 시작됩니다. 댓글로 어떤 추출 때문에 고생하시는지 알려주시면, 다음 편 케이스로 녹여볼게요.
댓글