출력리포트에 2byte cut을 하여서 여러줄로 출력하는 로직을 구현하였습니다.
테스트 결과 정상적으로 출력이 되구요~
그런데 문제는 줄의 마지막 문자가 오타일 경우(ex. 갏, 닳 )에 바로 Dump 가떨어지면서
프로그램이 종료됩니다.
이문제를 해결할 수 있는 방법은 없을까요?
아님 message라도 뿌려서 dump를 막을 방법이 있을까요?
고수님들의 도움을 부탁드리겠습니다.!!
-----------------------------------------------------------------------
* Main Procedure of Function
*-----------------------------------------------------------------------
*--- if Input String doesn't exist, return
s_len = strlen( pu_str ).
IF s_len = 0.
EXIT.
ENDIF.
*- if Input length is greater than total length, check input length
* if Input length is smaller than total length, check total length
IF s_len > pu_len1.
s_len = pu_len1.
ENDIF.
*--- Begin of correction
ASSIGN pu_str TO <str> TYPE 'X'.
CLEAR: sta, flg.
DO s_len TIMES.
sta = sy-index - 1.
ASSIGN <str>+sta(1) TO <xstr>.
IF <xstr> >= '80'. " 2Byte Character
IF flg = space.
flg = 'X'. " 1st Byte of TWO
ELSE.
flg = space. " 2nd Byte of TWO : Normal Case
ENDIF.
ENDIF.
ENDDO.
*- if valid character is incompletede 2Byte,cut from pre-character
IF flg = 'X'. " IF Last character was cut abnormally
s_len = s_len - 1.
ENDIF.
pc_str = pu_str. "i_str(s_len). "Return Value
pc_len1 = s_len.
ENDFORM. " cut_string
댓글 3
-
특정단어
2010.05.14 20:50
-
선우
2010.05.14 22:11
위에 링크걸어주신 것은 참고하였구요 ^^
근데 제가 질문한 것은 조금 다른 문제 입니다.
라인끝에서 한글(2byte)이 깨지거나 걸리는 문제는 없는데,
문제는 라인의 마지막 글자가 '닭' 일때는 정상적으로 나오는지만 오타, 즉' '닲' 이라면 dump가 떨어진다는 것입니다,
즉, 입력한 한글이 오타가 아니라면,
2byte cutting 의 본래의 기능을 다 정상적으로 적용되지만 , 그것이 오타였을때는 2byte일지라도 dump가 떨어지는 문제입니다.
-
특정단어
2010.05.15 00:55
저는 CUT_2BYTES_STRINGS function을 사용했을 때, 오타가 걸려도 정상적으로 오타가 난 글자까지 잘 커팅되어 나오던데요..
이상하네요... @.@a
어차피 위에 적어놓으신 로직이 CUT_2BYTES_STRINGS 를 구현하기 위한 게 아니신가요?
그냥 그 function을 쓰셔도 될 것 같은데요??
http://www.e-abap.net/zb/bbs/zboard.php?id=ABAPQnA&no=5208
참고하세요~