‎2009 Aug 18 10:07 AM
Hello Friends,
I have created three custom control which will allow user to enter long text in zmodule pool program.
The problem is when im saving the data its updating the table stxh and stxl with the data entered in the third custom control.
For example
1st custom control contains data >>> u2018hellou2019--- text id 0001(created in se75 tcode)
2nd custom control contains data >> u2018How u2019 --- text id 0002(created in se75 tcode)
3rd custom control contains data >>> u2018are youu2019---- text id 0003(created in se75 tcode)
Now in the database table it is saving text as u2018are youu2019 three times, pls suggest what can be the problem .. for your reference im pasting my code below.
Declarations *****************************************************
CLASS event_handler DEFINITION.
PUBLIC SECTION.
METHODS: handle_f1 FOR EVENT f1 OF cl_gui_textedit
IMPORTING sender,
handle_f4 FOR EVENT f4 OF cl_gui_textedit
IMPORTING sender.
ENDCLASS. "event_handler DEFINITION
DATA:save_ok LIKE sy-ucomm.
DATA: init,
container TYPE REF TO cl_gui_custom_container,
editor TYPE REF TO cl_gui_textedit.
DATA: event_tab TYPE cntl_simple_events,
event TYPE cntl_simple_event.
DATA handle TYPE REF TO event_handler.
DATA: line(256) TYPE c,
text_tab LIKE STANDARD TABLE OF line,
field LIKE line,
wa_text type line,
lv_txt type string,
header like thead,
header1 like thead,
header2 like thead,
tbtxt like standard table of line,
WTBTXT type line,
FTTXT LIKE STANDARD TABLE OF LINE,
WFTTxt type line.
* Internal table to store the Longtext
DATA:BEGIN OF I_LINES OCCURS 0.
INCLUDE STRUCTURE TLINE.
DATA:END OF I_LINES.
DATA:BEGIN OF I_LINES1 OCCURS 0.
INCLUDE STRUCTURE TLINE.
DATA:END OF I_LINES1.
DATA:BEGIN OF I_LINES2 OCCURS 0.
INCLUDE STRUCTURE TLINE.
DATA:END OF I_LINES2.
Pbo
MODULE STATUS_2000 OUTPUT.
SET PF-STATUS 'ZPF2000'.
* SET TITLEBAR 'xxx'.
* IF init is initial.
* init = 'X'.
****************************** FOR TEXTEDIT CUSTOM CONTROL
CREATE OBJECT: container EXPORTING container_name = 'TEXTEDIT',
editor EXPORTING parent = container,
handle.
event-eventid = cl_gui_textedit=>event_f1.
event-appl_event = ' '. "system event
APPEND event TO event_tab.
event-eventid = cl_gui_textedit=>event_f4.
event-appl_event = 'X'. "application event
APPEND event TO event_tab.
CALL METHOD: editor->set_registered_events
EXPORTING events = event_tab.
SET HANDLER handle->handle_f1
handle->handle_f4 FOR editor.
* ENDIF.
CALL METHOD editor->set_text_as_stream
EXPORTING
text = text_tab.
********************************* for tbtxt contaner
* CLEAR INIT.
* IF init is initial.
* init = 'X'.
CREATE OBJECT: container EXPORTING container_name = 'TBTXT',
editor EXPORTING parent = container,
handle.
CALL METHOD editor->set_text_as_stream
EXPORTING
text = tbtxt.
**************************** for FTTXT CONTAINER CUSTOM CONTROL
* CLEAR INIT.
* IF init is initial.
* init = 'X'.
CREATE OBJECT: container EXPORTING container_name = 'FTTXT',
editor EXPORTING parent = container,
handle.
CALL METHOD editor->set_text_as_stream
EXPORTING
text = FTTXT.
ENDMODULE. " STATUS_2000 OUTPUT
PAI
CASE SY-UCOMM.
WHEN 'INSERT'.
CONCATENATE ZSV_SD_SP-COMINV ZSV_SD_SP-COMINVYR INTO NAME.
SELECT SINGLE * FROM STXH WHERE TDOBJECT = 'ZMEMO1'
AND TDNAME EQ NAME AND TDID EQ '0001'.
IF SY-SUBRC EQ 0.
DELETE FROM STXH WHERE TDOBJECT = 'ZMEMO1'
AND TDNAME EQ NAME AND TDID EQ '0001'.
COMMIT WORK AND WAIT.
DELETE FROM STXL WHERE TDOBJECT = 'ZMEMO1'
AND TDNAME EQ NAME AND TDID EQ '0001'.
COMMIT WORK AND WAIT.
ENDIF.
CALL METHOD editor->get_text_as_stream
IMPORTING
text = text_tab.
IF NOT TEXT_TAB[] IS INITIAL.
LOOP AT TEXT_TAB INTO WA_TEXT.
I_LINES-TDLINE = WA_TEXT-LINE.
APPEND I_LINES.
CLEAR : I_LINES,WA_TEXT.
ENDLOOP.
HEADER-TDOBJECT = 'ZMEMO1'.
HEADER-TDNAME = NAME.
HEADER-TDID = '0001'.
HEADER-TDSPRAS = SY-LANGU.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
CLIENT = SY-MANDT
HEADER = HEADER
INSERT = 'X'
* SAVEMODE_DIRECT = ' '
* OWNER_SPECIFIED = ' '
* LOCAL_CAT = ' '
* IMPORTING
* FUNCTION =
* NEWHEADER =
TABLES
LINES = I_LINES[]
.
IF SY-SUBRC EQ 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
COMMIT WORK AND WAIT.
* REFRESH TEXT_TAB.
* CALL SCREEN 1000.
ENDIF.
ENDIF.
*************************************for tbtxt custom control
REFRESH I_LINES[].
CLEAR I_LINES[].
CLEAR HEADER.
SELECT SINGLE * FROM STXH WHERE TDOBJECT = 'ZMEMO1'
AND TDNAME EQ NAME AND TDID EQ '0002'.
IF SY-SUBRC EQ 0.
DELETE FROM STXH WHERE TDOBJECT = 'ZMEMO1'
AND TDNAME EQ NAME AND TDID EQ '0002'.
COMMIT WORK AND WAIT.
DELETE FROM STXL WHERE TDOBJECT = 'ZMEMO1'
AND TDNAME EQ NAME AND TDID EQ '0002'.
COMMIT WORK AND WAIT.
ENDIF.
CALL METHOD editor->get_text_as_stream
IMPORTING
text = TBTXT.
IF NOT TBTXT[] IS INITIAL.
LOOP AT TBTXT INTO WTBTXT.
I_LINES1-TDLINE = WTBTXT-LINE.
APPEND I_LINES1.
CLEAR : I_LINES1,WTBTXT.
ENDLOOP.
HEADER1-TDOBJECT = 'ZMEMO1'.
HEADER1-TDNAME = NAME.
HEADER1-TDID = '0002'.
HEADER1-TDSPRAS = SY-LANGU.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
CLIENT = SY-MANDT
HEADER = HEADER1
INSERT = 'X'
* SAVEMODE_DIRECT = ' '
* OWNER_SPECIFIED = ' '
* LOCAL_CAT = ' '
* IMPORTING
* FUNCTION =
* NEWHEADER =
TABLES
LINES = I_LINES1[]
.
IF SY-SUBRC EQ 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
COMMIT WORK AND WAIT.
* REFRESH TEXT_TAB.
* CALL SCREEN 1000.
ENDIF.
ENDIF.
*********************************************** for fttxt custom control
REFRESH I_LINES1[].
CLEAR HEADER1.
SELECT SINGLE * FROM STXH WHERE TDOBJECT = 'ZMEMO1'
AND TDNAME EQ NAME AND TDID EQ '0003'.
IF SY-SUBRC EQ 0.
DELETE FROM STXH WHERE TDOBJECT = 'ZMEMO1'
AND TDNAME EQ NAME AND TDID EQ '0003'.
COMMIT WORK AND WAIT.
DELETE FROM STXL WHERE TDOBJECT = 'ZMEMO1'
AND TDNAME EQ NAME AND TDID EQ '0003'.
COMMIT WORK AND WAIT.
ENDIF.
CALL METHOD editor->get_text_as_stream
IMPORTING
text = FTtxt.
IF NOT FTtxt[] IS INITIAL.
LOOP AT FTTXT INTO WFTTXT.
I_LINES2-TDLINE = WFTTXT-LINE.
APPEND I_LINES2.
CLEAR : I_LINES2,WFTTXT.
ENDLOOP.
HEADER2-TDOBJECT = 'ZMEMO1'.
HEADER2-TDNAME = NAME.
HEADER2-TDID = '0003'.
HEADER2-TDSPRAS = SY-LANGU.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
CLIENT = SY-MANDT
HEADER = HEADER2
INSERT = 'X'
* SAVEMODE_DIRECT = ' '
* OWNER_SPECIFIED = ' '
* LOCAL_CAT = ' '
* IMPORTING
* FUNCTION =
* NEWHEADER =
TABLES
LINES = I_LINES2[]
.
IF SY-SUBRC EQ 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
COMMIT WORK AND WAIT.
* REFRESH TEXT_TAB.
*
ENDIF.
ENDIF.
CALL SCREEN 1000.
WHEN OTHERS.
* MESSAGE i888(sabapdocu) WITH text-002.
CALL METHOD cl_gui_cfw=>dispatch. "for application events
* MESSAGE i888(sabapdocu) WITH text-003.
ENDCASE.
ENDMODULE. " USER_COMMAND_2000 INPUT
CLASS event_handler IMPLEMENTATION.
METHOD handle_f1.
DATA row TYPE i.
MESSAGE i888(sabapdocu) WITH text-004.
CALL METHOD sender->get_selection_pos
IMPORTING
from_line = row.
CALL METHOD sender->get_line_text
EXPORTING
line_number = row
IMPORTING
text = field.
CALL METHOD cl_gui_cfw=>set_new_ok_code "raise PAI for
EXPORTING new_code = 'F1'. "system events
CALL METHOD cl_gui_cfw=>flush.
ENDMETHOD. "handle_f1
METHOD handle_f4.
DATA row TYPE i.
MESSAGE i888(sabapdocu) WITH text-005.
CALL METHOD sender->get_selection_pos
IMPORTING
from_line = row.
CALL METHOD sender->get_line_text
EXPORTING
line_number = row
IMPORTING
text = field.
CALL METHOD cl_gui_cfw=>flush.
ENDMETHOD. "handle_f4
ENDCLASS. "event_handler IMPLEMENTATION
Kind Regards,
Sunny Vaswani
Edited by: Sandeep Bhowmick on Aug 18, 2009 11:08 AM
‎2009 Aug 18 11:24 AM