Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

three custom control in module pool

Former Member
0 Likes
413

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

1 REPLY 1
Read only

Former Member
0 Likes
377

answered