메뉴 건너뛰기

SAP 한국 커뮤니티

사용자에게 입력받은 문장을 몇줄에 걸쳐서 잘라서 표현해야하는데요


일단 40바이트씩 잘라서 줄을 넣으려고 하는데


한글이 2바이트다보니 40바이트와 41바이트 사이에 끼이면 표현이 안되더군요.(참고로 스마트폼에 윈도우 밑에 템플릿만들고 텍스트에 넣으려고 합니다)


 


그래서


if ( ls_zsret1000-text_xl+40(2) >= '가' and ls_zsret1000-text_xl+40(2) <= '힣' )
   or ls_zsret1000-text_xl+40(2) = ''.


endif.


요런식으로 해당 2바이트가 한글이 아닌경우에 넣으려는 변수에 1바이트 추가해서 완전한 한글을 만들어서 보여주려


했습니다.


그런데 이런,


왠일인지 39~40까지 문자를 디버깅해서 보니 값이 '낳' 요런식으로 요상하게 들어가있는것입니다.


아마도 양쪽에 있는 값을 어떻게 반씩 물어오다보니 그렇게 변한듯한데 아무튼 낳 요런식으로 들어가다보니


위에 로직에 포함되서 1바이트 추가가 안되는겁니다.


 


휴~


그래서 어디서 요런 로직을 찾았습니다.



2Byte String은 MSB가 '1'로 Setting되어 두개의 Byte가 Pair를 이룬다는


원칙을 기반으로 한다는 펑션이지요.


 


그런데 이 펑션이 좀 완전치가 못한거 같아서요.


혹시 아시는 분 없으신가요. 또는 위와 같은 문제를 해결해보신분이요~


 


 



FUNCTION CORRECT_2BYTES_STR.


*"----------------------------------------------------------------------


*"*"로컬인터페이스:


*" IMPORTING


*" VALUE(I_STR) TYPE C


*" EXPORTING


*" VALUE(O_STR) TYPE C


*"----------------------------------------------------------------------


 


 


 


*-----------------------------------------------------------------------


* Data Declaration


*-----------------------------------------------------------------------


DATA: STA   TYPE   I, " HEXA로 읽을위치


         POS   TYPE   I, " Space로 조정할 위치


         FLG, " 현재 2Byte Pair 상태


         LEN    TYPE I. " Input String 길이


FIELD-SYMBOLS: , " Input String의 Hexa Value


TYPE X. " 비교할 1byte Charater의 Hexa값


 


 


*-----------------------------------------------------------------------


* Main Procedure of Function


*-----------------------------------------------------------------------


O_STR = I_STR.


 


*--- Input String이 없으면 그냥 Return


LEN = STRLEN( I_STR ).


IF LEN = 0.


EXIT.


ENDIF.


 


 


*--- Correction 시작


ASSIGN I_STR TO TYPE 'X'.


CLEAR: STA, POS, FLG.


DO LEN TIMES.


STA = SY-INDEX - 1.


 


ASSIGN +STA(1) TO .


IF >= '80'. " 2Byte Character인지 Check: MSB가 '1'


IF FLG = SPACE.


FLG = 'X'. " 2Byte문자의 첫번째 Byte임: 시작


ELSE.


FLG = SPACE. " 2Byte문자의 두번째 Byte이고, 정상상태: 종료


ENDIF.


ELSE. " 1Byte Character임


IF FLG = 'X'. " 바로 앞의 Byte가 2Byte문자의 첫번째Byte였음.


FLG = SPACE. " 비정상으로 짤려진 2Byte문자을 Space로 변환


POS = STA - 1.


O_STR+POS(1) = SPACE. " Correction


ENDIF.


ENDIF.


ENDDO.


 


IF FLG = 'X'. " 마지막 문자가 짤려진 2Byte문자인지 Check


O_STR+STA(1) = SPACE. " Correct


ENDIF.


 


ENDFUNCTION.


 


 


 


데이타 정의가 좀 잘 안되있는지 분석도 잘안되네용.


MSB 개념도 잘 이해가 안가고요~


 


고수분들의 도움부탁드립니다.

번호 제목 글쓴이 날짜 조회 수
4499 <img src=3.gif>비스타 사용하시는분께.. saplogon.ini 파일정보 관련.. [5] 수갬 2010.02.12 1290
4498 <img src=3.gif>'CHAR%' 가 무엇을 의미하는지요? [5] 하루하루 2010.02.11 1442
4497 <img src=2.gif>alv 의 스텐다드 엑셀 다운로드 받을때 필드 순서가 변하네요... [6] 숟가락맨 2010.02.11 2468
4496 <img src=2.gif>FIELD-SYMBOLS에 관한 질문입니다. 도와주세요 ^^ [4] 처음처럼 2010.02.11 1408
4495 <img src=1.gif>S 그룹에서 필요로 하는 Function Point 자동 산출 ABAP 플그램 가지고 계신분... 계신가여? StoryGuy™ 2010.02.11 1275
4494 <img src=2.gif>db_link 데이터를 어떻게 확인하나요..답답. [3] 돌맹이 2010.02.11 1765
» <img src=3.gif>한글깨짐현상에 대해서요. 2바이트 스트링 값이 어떻게 구성되는지도 좀 궁금합니다. [2] 오류제로 2010.02.11 3326
4492 <img src=2.gif>report program에서 출력결과에 더블클릭하면 상세화면 뜨게 하는 방법.. [3] 쾌남 2010.02.10 1326
4491 <img src=2.gif>MM CBO프로그램보다보니..궁금해서 문의드려요^^ [2] 양키 2010.02.09 1469
4490 <img src=2.gif>ALV로 나온 검색 결과를 Excel 파일로 가져오는 방법 질문입니다. [2] 쾌남 2010.02.09 1581
4489 <img src=2.gif>Keyboard의 'Delelte' Key 를 사용하지 못하도록 하고 싶습니다. [5] 쿨쿨 2010.02.08 1227
4488 <img src=3.gif>Read Table... Comparing 구문 질문입니다. [8] elie 2010.02.09 1923
4487 <img src=1.gif>Enhancement Prod order operation confirmation 찬호사랑 2010.02.09 1271
4486 <img src=2.gif>BDC에서 팝업 창 처리하는 부분에서 에러가 납니다. [1] 쿵푸ㅋ 2010.02.09 1761
4485 <img src=2.gif>Database 의 index 에 대해 질문 드립니다. [7] 아밥 2010.02.08 1316
4484 <img src=3.gif>BC가 작업하는 테이블 로깅 활성화를 어디서 할 수 있나요? [2] 페르츠 2010.02.08 1273
4483 <img src=3.gif>Win7 사용하시는분 ALV 사용 잘되시나요? [17] 두목 2010.02.03 2196
4482 <img src=3.gif>ABAP 관련된 문제에 대해서 몇 가지 궁금한게 있어서요^^; [3] 쾌남 2010.02.08 1316
4481 <img src=2.gif>SAP에서 SAP를 감싸고 있는 OS(UNIX)랑 통신하는 방법?? [4] SD2 2010.02.06 1061
4480 <img src=2.gif>saplink 에 관한 질문 하려고 합니다. [1] file cskang 2010.02.06 1398