본문 바로가기
ERP-SAP/ABAP

<ABAP> OPEN DATASET 한글 깨짐 문제 (펌뱅킹, LG U+)

by 행복한워니의 기록 2013. 5. 16.
728x90
반응형

 모 회사에서 펌뱅킹이 제대로 된 구동이 되지 않아
 
디버깅을 하였다.
 
문제는 한글깨짐 현상..
 
해당 파일은 LG U+에서 전송하여 주고 회사의 SAP 서버에 쌓이게 되고,
 
그 쌓인 데이터를 배치로 읽어서 SAP DB에 넣어주는 케이스 인데...
 
 
EDI 같은 경우는 문자 열의 위치에 따라서 값이 휙휙 바뀌기 때문에 굉장히 민감한 문제이다.
 
가령 300번째부터 3자리까지가 은행코드.. 이런식으로....
 
 
그런데 만약 한글이 깨진다면?????
 
당연히 코드들이 뒤로 밀리게 되며 제대로 계산된 값들이 들어가지 않는다..
 
가령 300번째자리부터 3개를 끊으면 000인 값이... 300번째 이전에 한글이 들어가있어서 깨져버리고...
 
자릿수가 밀려있다면 111 이 들어가는 것!!!! (실제 이렇게 문제가 발생했다.)
 
 
 
 
그래서 중요한 부분이 데이터를 오픈하는 부분이다.
 
이방법 저 방법 다 해보았는데...
 
먼저..
 
기본적으로 프로그램을 생성할 때  ECC 6.0 같은 경우는 Unicode checks active를 빼야 한다.
 
이 부분은 아래 설명을 덧붙인다.
 
 
3. ABAP Object Attributes
Abap Object의(실행프로그램, 모듈풀) 속성을 보면 Unicode Checks active 옵션이
있는데, 현재 Upgrade ECC6.0에서는 Unicode를 사용하지 않으므로 기본적으로는
Check하지 말아야 합니다. 텍스트 정보 등의 처리 시 Unicode Check로 인한
Runtime Error발생 이 있을 수 있으므로 반드시 해제하시고 생성하시기 바랍니다
(아래 [그림 3] 참조 )
 

이 부분이 영향을 미칠수도 있다고 한다...
 
 
자.. 그럼 코딩부를 보자..
 
기존 코딩부는
 

      OPEN DATASET gv_file_name FOR INPUT IN TEXT MODE ENCODING NON-UNICODE.

 
이런식으로 되어 있었다.
 
db 서버의 데이터 위치파일경로를 논 유니코드로 불러오는데... 깨져있다.
 
그래서 한 방식

     OPEN DATASET gv_file_name FOR INPUT IN LEGACY TEXT MODE."

 
안된다... 이것저것 테스트 해보아라.. 한글 깨져 있당..

     OPEN DATASET gv_file_name FOR INPUT in legacy text mode code page '8500'.  

 
이것도 실패였다.
 
8500이 한글 코드페이지이긴 하지만... tcp00 테이블 참조해라..
 
자 그럼 해결 방법은...
 

      OPEN DATASET gv_file_name FOR INPUT in text mode encoding UTF-8 SKIPPING BYTE-ORDER MARK.

 
 
 
 
위 코드가 영광의 코드였다.
 
그냥 UTF-8 로만 했었는데도 깨졌었었는데...
 
프로그램 속성하고, 위 스킵핑 바이트 어더 마크 이 부분은 따로 연습을 해봐야 겠다 ㅎㅎㅎ
 
 
 
아무튼 이렇게 하면 제대로 된 한글이 디버깅상에서 표시되는 것을 볼 수 있다!!!!!
 
 
 
 
 
 
 
 
 

728x90
반응형