PI_PO

SAP PO에서 XSLT로 Excel XML 파일 만들고 FTP에 업로드하는 이유와 방법

피오농부 2025. 7. 13. 04:00
반응형
SAP PO(PI)를 처음 접하셨나요? XSLT를 사용해 Excel 스타일 XML 파일을 만들고 FTP 서버에 업로드하는 방법이 궁금하시죠? 이 글에서는 SAP PO XSLT, 엑셀 XML, FTP 파일 업로드를 중심으로 초보자도 이해하기 쉽게 설명합니다.

📚 목차

  • SAP PO에서 FTP 파일 전송 구조 이해하기
  • SAP PO의 다양한 매핑 방식
  • XSLT란 무엇이며 왜 사용할까?
  • XSLT로 만드는 Excel XML(SpreadsheetML)
  • 실무에서 XSLT를 꼭 쓰는 이유
  • XSLT를 로컬에서 테스트하는 쉬운 방법
  • XSLT vs Java vs Groovy Mapping 비교
  • 마무리: 언제 XSLT를 써야 할까?

🔄 SAP PO에서 FTP 파일 전송 구조 이해하기

SAP PI/PO(Process Integration/Process Orchestration)는 기업 내외부 시스템 간 데이터를 주고받을 때 사용되는 SAP의 대표적인 미들웨어입니다.
보통 SAP에서 발생한 IDoc, Proxy, RFC 데이터를 받아
Message Mapping이나 XSLT로 포맷을 바꾼 뒤,
FTP Adapter를 통해 타 시스템에 파일을 업로드합니다.
즉 SAP PO는 데이터 변환 + 전송(FTP/File/REST 등) 의 역할을 맡죠.

🛠 SAP PO의 다양한 매핑 방식

SAP PO는 변환이 필요한 경우 여러 방식의 매핑을 제공합니다.
  • Message Mapping : 그래픽 툴을 이용해 소스 → 타겟 매핑
  • Java Mapping : 복잡 로직을 Java 코드로 처리
  • XSLT Mapping : XML → XML 변환에 최적화된 표준 방식
특히 XSLT는 XPath 기반으로 복잡한 XML을 쉽게 탐색하고 변환할 수 있는 강력한 도구입니다.

💡 XSLT란 무엇이며 왜 사용할까?

XSLT(Extensible Stylesheet Language Transformations)는
XML → XML 변환에 특화된 W3C 표준 언어입니다.
  • XPath를 사용해 원하는 노드를 쉽게 선택
  • for-each, if 같은 반복문과 조건문을 통해 다단계 구조 처리 가능
  • SAP PO 뿐 아니라 CPI, MuleSoft, IBM IIB 같은 다른 미들웨어에서도 동일 XSLT를 재사용 가능
즉 XML 기반 데이터 변환을 정밀하고 유연하게 하려면
XSLT만큼 강력한 도구도 없습니다.

📊 XSLT로 만드는 Excel XML(SpreadsheetML)

많은 기업에서
“FTP로 전송된 파일을 더블클릭하면 바로 Excel에서 열리게 해주세요.”
라는 요구를 합니다.
이때 쓰는 것이 바로 SpreadsheetML입니다.
이는 Microsoft의 Excel 2003 XML 포맷으로,
FTP에 .xml 파일로 올려두면
사용자가 더블클릭할 때 Excel이 자동으로 시트로 열어줍니다.
Java Mapping으로 일일이 태그를 붙이는 건 너무 번거롭지만
XSLT에서는 아래처럼 XPath + XML 태그만으로 간단히 구현 가능합니다.
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet">
  <Worksheet ss:Name="Sheet1">
    <Table>
      <Row>
        <Cell><Data ss:Type="String">ID</Data></Cell>
        <Cell><Data ss:Type="String">Name</Data></Cell>
      </Row>
      <Row>
        <Cell><Data ss:Type="Number">1</Data></Cell>
        <Cell><Data ss:Type="String">John</Data></Cell>
      </Row>
    </Table>
  </Worksheet>
</Workbook>

🚀 실무에서 XSLT를 꼭 쓰는 이유

실제로는 아래와 같은 요청에서 XSLT를 거의 필수적으로 사용합니다.

✅ 엑셀 스타일 XML(SpreadsheetML) 생성

  • FTP로 Excel처럼 보이는 XML을 줄 때
  • Java Mapping은 Element + 속성 + 반복문이 복잡, XSLT는 훨씬 직관적

✅ 다단계 루프 + 조건부 매핑

  • nested XML → flatten, 특정 조건(예: price > 150)만 매핑
  • Message Mapping으로 하면 복잡도가 급격히 증가

✅ 특정 벤더 포맷 대응

  • Peppol, XRechnung, ZUGFeRD 같은 표준 전자세금계산서
  • 벤더가 아예 XSLT 샘플을 주기도 함

✅ 멀티 플랫폼 공유

  • SAP PO뿐 아니라 CPI, MuleSoft, IBM IIB에서도 같은 XSLT 사용 가능
  • Java나 Groovy Mapping은 플랫폼 종속적

✅ XPath로 복잡 조건 처리

  • Order[Customer='C123'] 같은 조건도 XSLT 한줄이면 끝

🖥 XSLT를 로컬에서 테스트하는 쉬운 방법

PO 서버에 바로 올려 Activate해서 테스트하면 느리고 번거롭죠.
아래 툴을 쓰면 훨씬 편합니다.

🚀 Eclipse XSLT

  • Eclipse IDE + XSL Developer Tools 설치
  • input.xml, mapping.xsl 만든 뒤 → Run As → XSL Transformation → output.xml 확인

🌐 웹 기반 XSLT

✅ Notepad++ XML Tools

  • Plugins Admin → XML Tools 설치
  • Plugins > XML Tools > XSL Transformation 으로 바로 실행

📊 Excel에서 더블클릭

  • SpreadsheetML 결과 파일을 그냥 더블클릭 → Excel에서 확인

🔍 XSLT vs Java vs Groovy Mapping 비교


📝 마무리: 언제 XSLT를 써야 할까?

✅ FTP에 Excel 스타일 XML을 만들어야 할 때
✅ XPath를 이용해 복잡한 조건과 루프를 깔끔히 처리할 때
✅ 벤더가 XSLT 템플릿을 제공할 때
✅ PO와 CPI에서 같은 매핑을 재사용하고 싶을 때
이럴 땐 주저 말고 XSLT를 선택하세요!
반응형