ALV 화면에서요. INTERNAL TABLE 중 한 필드를 버튼으로 만들었구요.
해당 버튼별 LONGTEXT를 해야 하는데요. 몇백건의 데이터가 생성될지 모르는 상황이라서요.
따로 se75에서 object나 id 생성해서 사용하지 않구요.
때문에 CALL FUNCTION 'save_text' 랑 read_text 사용 안하구요.
이중 한 버튼을 누르면 textedit 컨테이너로 생성한 스크린이 뜨는데요.
textedit 컨테이너로 text 받아서 cbo 테이블 필드에 저장되고
바로 cbo에서 읽어서 textedit 컨테이너에서 뿌려주려고 하는데요.
일단. longtext의 cbo 저장에는 원하는대로 저장되도록 했습니다.
방법은요.
TDFORMAT에 첫줄은 *, 둘째줄부터 엔터로 인식된 '/' 이게 입력되잖아요?
이거 다 무시하고 TLINE 테이블에 들어온 데이터 LOOP 돌리면서 CONCATENATE로 한줄로 만들어서 CBO에 저장합니다.
근데. 이 CBO에 저장된 LONGTEXT를 다시 컨테이너에 뿌리려면 TLINE-TDLINE길이에 걸려서 LENGTH이후
부분은 짤리네요..ㅡㅡ;
우선, 위와같이 CONCATE로 한줄로 받은걸 그대로 받아올수 있는 방법은 없을까요?
아니면, '*' 와 '/' 이 구분자를 함께 저장해서 뿌려줄수 있을까요?
도움 부탁드립니다~ㅠ
굳이 그렇게 오래된 방법을....
CBO 테이블 생성할 때 String type으로 선언하구, custom container를 사용하시면 될것 같은데요..
* Top
DATA: g_con TYPE REF TO cl_gui_custom_container,
g_con_text TYPE REF TO cl_gui_textedit
g_text type string.
* PBO
IF g_text IS INITIAL.
CREATE OBJECT g_con
EXPORTING
container_name = 'TEXT'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
CREATE OBJECT g_con_text
EXPORTING
parent = g_con
wordwrap_mode = cl_gui_textedit=>wordwrap_at_fixed_position
wordwrap_position = 254
wordwrap_to_linebreak_mode = cl_gui_textedit=>true.
CALL METHOD g_con_text->set_textstream
EXPORTING
text = g_text
EXCEPTIONS
error_cntl_call_method = 1
not_supported_by_gui = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL METHOD cl_gui_cfw=>flush
EXCEPTIONS
cntl_system_error = 1
cntl_error = 2
OTHERS = 3.