Aaron H. Kim Fearless Integration Maniac

[TroubleShooting] SAP로부터 idoc 수신에 실패한 경우 – 1

2007-01-20
Aaron Kim

얼마전에 발생한 이슈를 공유합니다. 아주 드문 케이스이긴 하지만, 충분히 레퍼런스가 될 수 있다고 생각합니다. SAP와의 Conversion 이슈는 자주 발생하니까요. 참고하시기 바랍니다.

  • 내용 idoc Outbound(SAP관점) 시 SM58에서는 분명 보냈다고 하는데 Biztalk에서는 수신 받은 데이터가 없는 현상이 발생하였습니다.

  • 원인

    분석한 결과, 이전과 달리(얼마전에 SAP를 Unicode System으로 변경했음) SAP에서 Unicode로 Connection을 맺으면서 기존 Biztalk Receive Location에서 설정해준 Code page가 SAP의 바뀐 그것과 일치하지 않아 발생한 문제로 판명되었습니다.

  • 해결 여부 해결됨.

  • 해결 방법

일단 최초로 문제가 발생되었을 때의 저희 Receive Location의 세팅은 다음과 같았습니다.

Code Page가 바꿔야 하는 Value

이 때 SAP에서 Connection Test를 했을 때는 다음과 같은 결과가 나왔습니다.

이제 Code Page를 4102로 바꾸고 테스트한 결과입니다.

4102는 SAP Defined code page로서 UTF-8을 의미하는 숫자입니다. 4103은 UTF-16 입니다. 참고로 4103으로 세팅을 바꾸고 테스트 했을 경우는 다음과 같은 결과가 나옵니다.

Connection Test는 성공했지만 Unicode System으로는 인식하지 않는군요. 따라서 최종적으로 4102로 세팅 하였습니다.

  • 주의할점

– 여기서 기존 설정과 다르게 char size가 2가 되었으므로 SAP Schema 의 Property중 하나인 “Count Positions in Bytes”를 반드시 “No”로 설정해주어야 합니다. (원래 “No”가 기본) 기존의 Ansi Connection을 사용했을 경우는,65001(UTF-8)로 문서를 수신 받아서 파이프라인을 통해 949(한글)로 다시 인코딩하는 작업을 거치면서 한글을 한 바이트로 읽게 되었기 때문에 일일이 “Yes”로 바꿔주었지만, 위의 설정에선 Character 개수로서 Count하게끔 해줘야 하므로 “No”로 세팅해주는 것이 맞습니다.

  • 교훈

SAP에서 Connection이 Fail났을 경우도 SAP 관리자가 보기엔 포트까지 무사히 자료를 전송해준 걸로 보일 수가 있다. 이런 때는 SAP Connection test를 해보자.

그렇다면 SAP Connection Test는 어떤 순서로 할까? 다음 내용은 기존에 정리해 둔 것이다.

RFC Destination connection test

1. launch SAPGUI.
2. login.
3. excute transaction SM59(Display and maintain RFC destinations)
4. TCP/IP Connections
 4.1. pick RFC destination.
5. go to special options.
6. change “Character Width in Target System”.
 6.1. either Non-Unicode or Unicode.
7. test connection .
8. Unicode connection.


Configuration in Biztalk Admin Console


Non-Unicode:


1. Biztalk Administration
2. Receive PipeLine
3. Sap Transport Properties
4. Sap Authorization
 4.1. code page = 0(default)
 4.2. Biztalk code page = 65001(this can be varied for own situations)


Unicode:


1. Biztalk Administration
2. Receive PipeLine
3. Sap Transport Properties
4. Sap Authorization
 4.1. code page = 4102
 4.2. Biztalk code page = 65001

SAP에서는 내부적으로 SAP Defined Code page를 쓴다는 것을 알아두자.

4102(UTF-8), 4103(UTF-16), 그 외 Non-Unicode는 이곳, 이곳을 참조. SAP와 MS Codepage 비교는 이곳을 참조하시길.(링크 잃음)

SAP에서도 문서를 보내기 전에 Character Conversion을 하는데 Default Setting이, Conversion Error가 났을 경우 이를 무시하고 Error Indicator로 #을 사용한다. 따라서 SAP관리자가 한글이 포함된 문서를 보냈다고 하는데 비즈톡에서 받아보았을 때 문서내 한글이 #으로 나타난다면 이는 SAP에서 Conversion시 에러가 발생한 것임을 알 수 있다.


Similar Posts

Comments