data : g_textedit type ref to cl_gui_textedit ,
g_position like cl_gui_textedit=>m_wordwrap_position value 64.
create object g_textedit
exporting
parent = g_container
wordwrap_mode =
cl_gui_textedit=>wordwrap_at_fixed_position
wordwrap_position = g_position
wordwrap_to_linebreak_mode = cl_gui_textedit=>false
filedrop_mode = cl_gui_textedit=>dropfile_event_off.
기존 4.0 버전의 프로그램을 ecc 6.0 버전으로 upgrade 하였는데요.
바탕화면에 있는 txt. 파일을 upload 하면 한글이 모두 깨지는 현상이 나옵니다.
(유니코드로 저장하면 한글이 깨지지 않구 나오구요.)
고급님 부탁드립니다....
* e-abap님에 의해서 게시물 이동되었습니다 (2010-02-25 08:41)
댓글 5
-
쭌수야~!
2010.02.25 23:20
-
태사성
2010.02.26 18:21
위 소스가 들어있는 screen 300번 coding 을 말씀드리면...
process before output.
module status_0300.
module call_editor.
*
process after input.
module user_command_0300.
--------------------------------------------------------
module status_0300 output.
set pf-status '400'. "status 설정은 ok button만 설정되어있음.
또한 screen 상에 pushbotton 으로 생성하지도 않았음.
screen 상에는 그냥 container 만 그리고 text-edit 로 지정함.
set titlebar '300' with it_data-kstar it_data-ktext.
endmodule. " status_0300 OUTPUT
--------------------------------------------------------
*&---------------------------------------------------------------------*
*& Module call_editor OUTPUT
*&---------------------------------------------------------------------*
* 편집기 오브젝트 생성
*----------------------------------------------------------------------*
module call_editor output.
perform set_editor_first.
endmodule. " call_editor OUTPUT
*&---------------------------------------------------------------------*
*& Form set_editor_first
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form set_editor_first .
data : ls_edit like tline-tdline.
check fl_calld = space.
fl_calld = 'X'.
*.. 화면상의 편집기 생성 및 내용 삭제
if g_textedit is initial.
perform create_editor.
else.
perform delete_editor.
endif.
*.. 조회모드
if sy-tcode <> c_tcode.
call method g_textedit->set_readonly_mode
exporting
readonly_mode = cl_gui_textedit=>true.
endif.
*.. 내용 화면 편집기에 옮기기
loop at it_tline.
clear ls_edit.
move it_tline-tdline to ls_edit.
append ls_edit to it_edit.
endloop.
*.. 화면출력
perform set_editor.
* perform dispatch.
* perform gui_flush.
endform.
----------------------------------------------------------------------
form create_editor .
create object g_container
exporting
container_name = 'TEXT_EDIT'
repid = sy-cprog
dynnr = sy-dynnr
exceptions
others = 1.
create object g_textedit
exporting
parent = g_container
wordwrap_mode =
cl_gui_textedit=>wordwrap_at_fixed_position
wordwrap_position = g_position
wordwrap_to_linebreak_mode = cl_gui_textedit=>false
filedrop_mode = cl_gui_textedit=>dropfile_event_off.
**.. 아래쪽의 상태바 없애주기
* call method g_textedit->set_statusbar_mode
* exporting
* statusbar_mode = cl_gui_textedit=>false.
endform.
----------------------------------------------------------------------
*&---------------------------------------------------------------------*
*& Form set_editor
*&---------------------------------------------------------------------*
* 인터널 테이블의 내용을 화면 에디터로!
*----------------------------------------------------------------------*
form set_editor.
call method g_textedit->set_text_as_r3table
exporting
table = it_edit
exceptions
others = 1.
endform. " set_editor
----------------------------------------------------------------------------------
이게 로직 전부입니다.. 제가 생각할때는
create_editor 안에서 생성하는거 같아서요..
아무리 봐도 없고, 디버깅도 안되고 해서 여쭈어 본겁니다...
고수님들 부탁합니다.
-
쭌수야~!
2010.02.27 00:14
loop at it_tline.
clear ls_edit.
move it_tline-tdline to ls_edit.
append ls_edit to it_edit.
endloop.
이 부분에서 Editor 에 보여줄 데이터를 Int.Tab it_edit 에 담고 있네요.
Int.Tab it_tline 에 데이터를 어디서 어떻게 담고있는지 확인해보세용...
-
쭌수야~!
2010.02.27 00:16
아마도 300 번 스크린이 실행되기 전 단계...(100 혹은 200 스크린) 에서
editor 에 올릴 데이터를 가져오는 부분이 있을거에요...
-
태사성
2010.03.04 19:50
쭌수야 님께서 말씀하신 부분을 중심으로 몇일에 걸쳐 찾아보고 했는데요.
프로그램 상 별도의 upload, download 프로그램이 존재하지 않습니다. 어떤 함수를 써서 가져오지도 않구요.
text 문구를 가져오는 부분은 read_text 라는 함수를 쓰구요. 저장은 save_text 라는 standdard 함수를 사용하구 있구요.
또한 화면에 스크린이 보여진 후 스크린에 나타난 upload, download 버튼을 클릭하면 실행되는 부분이어서 혹시 pai 쪽에
로직이나 user_command 부분을 찾아보아도 전혀 없구요..
참 난감하네요...ㅠㅠ!!
올려주신 소스만으로는 판단이 불가능합니다.
아마도... cl_gui_textedit 를 이용하여 업로드 한것이 아니라...
다른 업로드 펑션을 이용하여 업로드 후 업로드 한 데이터를 Texteditor에 넘겨주게끔 되어있을것입니다.
데이터 업로드 부분을 살펴보시고,
한글이 깨지는 부분은...
Function 'GUI_UPLOAD' 를 이용하여 데이터 업로드 하시면 될듯합니다.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = lv_filename2
filetype = 'DAT'
CODEPAGE = '8500' " <==== codepage 꼭 셋팅해 주세요.
TABLES
data_tab = gt_up
EXCEPTIONS
file_open_error = 01
file_read_error = 02
UNKNOWN_ERROR = 03.