안녕하세요..
허접한 실력으로 전산매체를 하다 보니 별에별 문제가 많이 생깁니다..
우선 유니코드 프로그램이고요
처음엔 한글이 2바이튼데 1바이트로 먹어서
* Non Unicode(한글 2바이트로 인식)
l_wa-langu = '3'.
l_wa-codepage = '8500'.
insert l_wa into table cp_tab.
cc = cl_nls_struc_container=>create( cp_tab = cp_tab ).
.....중략
call method cc->struc_to_cont
exporting
struc = fname3_other
langu = '3'
importing
cont = downtab_other-content.
이런식으로 해서 무리없게 했습니다..
두번째는 뒤쪽 공백을 꼭입력하라는 주문때문에
clear head_data-head_space+0(4).
head_data-head_space+4(1) = cl_abap_char_utilities=>cr_lf.
이방법으로 입력했습니다..
이제 끝났다 싶어서 마음 놓고 있었는데
한줄에 한글이 하나도 없는 것들 즉 숫자와 영문으로 이루어진 것들은
뒤쪽공백이 생기질 않습니다...
대략난감...
call method cc->struc_to_cont
이 메소드 쓰기전까지는 빈공간으로 잘들어옵니다..
이메소드를 지나면서 한글이 포함되어있지 않으면 그냥 공백이 없어져 버립니다...
혹시 원인을 아시는 분은 알려주시면 감사하겠습니다..
허접한글 읽어주셔서 감사합니다..
댓글 3
-
왕초~삽질맨
2008.02.06 06:45
-
초코
2008.02.14 01:49
답글 달아주셔서 감사드립니다..
'HR_KR_STRING_TO_XSTRING' 이함수는
스탠다드 함수가 아닌듯 하네요..
그쪽에서 개발한거 같은데 .. 소스를 보내주실순 없나요??
그리고 어떤내용인지도 알려주시면 감사하겠습니다..
-
마이크타이슨
2008.02.15 01:51
standard 함수 맞습니다...버전이 틀려서 없을런지 모르겠습니다. 소스첨부합니다.
FUNCTION hr_kr_string_to_xstring.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" REFERENCE(CODEPAGE_TO) TYPE ABAP_ENCODING DEFAULT '8500'
*" REFERENCE(UNICODE_STRING) TYPE STRING
*" REFERENCE(OUT_LEN) TYPE I OPTIONAL
*" EXPORTING
*" REFERENCE(XSTRING_STREAM) TYPE XSTRING
*" EXCEPTIONS
*" INVALID_CODEPAGE
*" INVALID_STRING
*"----------------------------------------------------------------------
DATA xstr_len TYPE i.
* Initialize encoder
TRY.
obj_convert_to_codepage = cl_abap_conv_out_ce=>create(
encoding = codepage_to ).
CATCH cx_sy_codepage_converter_init.
IF codepage_to NE '8300'. "note 921731
RAISE invalid_codepage.
ENDIF. "note 921731
ENDTRY.
* Output buffers put back
obj_convert_to_codepage->reset( ).
* Conversion call
TRY.
obj_convert_to_codepage->write( data = unicode_string ).
CATCH cx_sy_conversion_codepage .
IF codepage_to NE '8300'. "note 921731
RAISE invalid_string.
ENDIF. "note 921731
ENDTRY.
* Output buffers with converted data call up
xstring_stream = obj_convert_to_codepage->get_buffer( ).
xstr_len = xstrlen( xstring_stream ).
* Adjust xstream in local codepage (Korean codepage 8500; Taiwan
* traditional Chinese 8300)
* 1) Adjust xstring length.
IF out_len IS NOT INITIAL.
PERFORM string_length_adjust USING out_len
CHANGING xstring_stream.
ENDIF.
* 2) Check the broken character
CHECK out_len IS NOT INITIAL AND xstr_len GT out_len.
PERFORM check_broken_char USING codepage_to out_len
CHANGING xstring_stream.
ENDFUNCTION.
EXPORTING
unicode_string = lv_instring
out_len = lv_len
IMPORTING
xstring_stream = lv_outxstring
EXCEPTIONS
invalid_codepage = 1
invalid_string = 2
OTHERS = 3.
이함수로 써보세요