Posted: Thu Jul 24, 2008 12:29 pm Post subject: Text editer in PopUp window
Author: Uwe Schieferstein
Here selection screen is used as initial screen where a ALV grid is displayed. Material field is hotspot. The text type in popup is stored and retrived from ABAP memory... u can use read_text and save_text FMs instead.
Code:
REPORT ztest2_8181 NO STANDARD PAGE HEADING LINE-SIZE 263.
*---------------------------------------------------------------------*
* CLASS lcl_event_handler DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_event_handler DEFINITION.
PUBLIC SECTION.
METHODS : hotspot_click FOR EVENT hotspot_click
OF cl_gui_alv_grid
IMPORTING e_row_id
e_column_id
es_row_no,
close FOR EVENT close
OF cl_gui_dialogbox_container.
ENDCLASS. "lcl_event_handler DEFINITION
PARAMETER p. " Dummy
DATA : container TYPE REF TO cl_gui_docking_container,
popup TYPE REF TO cl_gui_dialogbox_container,
alv_grid TYPE REF TO cl_gui_alv_grid,
text_editor TYPE REF TO cl_gui_textedit,
handler TYPE REF TO lcl_event_handler,
lt_mara TYPE TABLE OF mara WITH HEADER LINE,
lt_fcat TYPE lvc_t_fcat WITH HEADER LINE,
lt_texttab TYPE soli_tab.
SET HANDLER : handler->hotspot_click FOR ALL INSTANCES,
handler->close FOR ALL INSTANCES.
*&--------------------------------------------------------------------*
*& Form build_fcat
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM build_fcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'MARA'
CHANGING
ct_fieldcat = lt_fcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc = 0.
LOOP AT lt_fcat WHERE fieldname = 'MATNR'.
lt_fcat-hotspot = 'X'.
MODIFY lt_fcat.
ENDLOOP.
ENDIF.
ENDFORM. "build_fcat
*---------------------------------------------------------------------*
* CLASS lcl_event_handler IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_event_handler IMPLEMENTATION.
METHOD hotspot_click.
CHECK popup IS NOT BOUND.
CREATE OBJECT popup EXPORTING width = '500'
height = '80'
top = '100'
left = '100'
caption = 'Enter the text here'.
IMPORT tab TO lt_texttab FROM MEMORY ID 'ABCD'.
text_editor->set_text_as_r3table( EXPORTING table = lt_texttab[] ).
ENDMETHOD. "hotspot_click
METHOD close.
text_editor->get_text_as_r3table( IMPORTING table = lt_texttab[] ).
EXPORT tab FROM lt_texttab TO MEMORY ID 'ABCD' COMPRESSION ON.
popup->free( ).
CLEAR popup.
ENDMETHOD. "close
ENDCLASS. "lcl_event_handler IMPLEMENTATION
Example 2
If you want to display a control on a screen level different than the main screen (level=0) then you have to use the correct parameter for IMPORTING parameter PARENT.
*&---------------------------------------------------------------------*
*& Report ZUS_SDN_TEXTEDIT_CTXMENU
*&
*&---------------------------------------------------------------------*
*& Thread: Text edioter in Pop up window
*& https://forums.sdn.sap.com/thread.jspa?threadID=899495&tstart=0
*&---------------------------------------------------------------------*
*&
*& Flow logic of screen 100.
* PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
**
* PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0100.
*&---------------------------------------------------------------------*
REPORT zus_sdn_textedit_ctxmenu.
TYPE-POOLS: cntl. " Types for Controls
DATA:
gd_okcode TYPE ui_func,
go_docking TYPE REF TO cl_gui_docking_container,
go_textedit TYPE REF TO cl_gui_textedit,
*
gd_name TYPE thead-tdname,
gs_header TYPE thead,
gd_langu TYPE thead-tdspras,
gt_lines TYPE STANDARD TABLE OF tline.
*---------------------------------------------------------------------*
* CLASS lcl_eventhandler DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_eventhandler DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
handle_context_menu
FOR EVENT context_menu OF cl_gui_textedit
IMPORTING
menu
sender,
handle_ctxmenu_selected
FOR EVENT context_menu_selected OF cl_gui_textedit
IMPORTING
fcode
sender.
ENDCLASS. "lcl_eventhandler DEFINITION
*---------------------------------------------------------------------*
* CLASS lcl_eventhandler IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_eventhandler IMPLEMENTATION.
CASE fcode.
WHEN 'MY_FUNC'.
MESSAGE 'My function selected from ctxmenu' TYPE 'I'.
WHEN OTHERS.
ENDCASE.
ENDMETHOD. "handle_ctxmenu_selected
ENDCLASS. "lcl_eventhandler IMPLEMENTATION
PARAMETERS:
p_pspnr TYPE prps-pspnr.
PARAMETERS:
p_popup AS CHECKBOX.
START-OF-SELECTION.
* Get the text object
gs_header-tdid = 'LTXT'. " long text
gs_header-tdspras = syst-langu.
CONCATENATE syst-langu p_pspnr
INTO gs_header-tdname.
gs_header-tdobject = 'PMS'.
CALL FUNCTION 'READ_TEXT'
EXPORTING
* CLIENT = SY-MANDT
id = gs_header-tdid
language = gs_header-tdspras
name = gs_header-tdname
object = gs_header-tdobject
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
TABLES
lines = gt_lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
IF ( p_popup = 'X' ).
CALL SCREEN '0100' STARTING AT 10 10
ENDING AT 80 40.
ELSE.
CALL SCREEN '0100'.
ENDIF.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form SET_REGISTERED_EVENTS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM
set_registered_events .
* define local data
DATA:
lt_events TYPE cntl_simple_events,
ls_event TYPE cntl_simple_event.
TYPES: BEGIN OF cntl_simple_event,
eventid TYPE i,
appl_event TYPE c,
END OF cntl_simple_event.
ls_event-eventid = cl_gui_textedit=>event_context_menu.
APPEND ls_event TO lt_events.
ls_event-eventid = cl_gui_textedit=>event_context_menu_selected.
APPEND ls_event TO lt_events.
CALL METHOD go_textedit->set_registered_events
EXPORTING
events = lt_events
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
illegal_event_combination = 3
OTHERS = 4.
IF sy-subrc 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " SET_REGISTERED_EVENTS
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'MAIN_0100'.
* SET TITLEBAR 'xxx'.
CALL METHOD go_textedit->set_text_as_r3table
EXPORTING
table = gt_lines
EXCEPTIONS
error_dp = 1
error_dp_create = 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 go_textedit->set_enable
EXPORTING
enable = cl_gui_cfw=>true
EXCEPTIONS
cntl_error = 1
cntl_system_error = 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.
PERFORM set_registered_events.
SET HANDLER:
lcl_eventhandler=>handle_context_menu FOR go_textedit,
lcl_eventhandler=>handle_ctxmenu_selected FOR go_textedit.
ENDIF.
CASE gd_okcode.
WHEN 'BACK' OR
'EXIT' OR
'CANC'.
SET SCREEN 0. LEAVE SCREEN.
WHEN OTHERS.
ENDCASE.
CLEAR: gd_okcode.
ENDMODULE. " USER_COMMAND_0100 INPUT
Example 2
Code:
* use cli_gui_textedit class
DATA: ok_code LIKE sy-ucomm.
DATA:
* Create reference to the custom container
custom_container TYPE REF TO cl_gui_custom_container,
* Create reference to the TextEdit control
editor TYPE REF TO cl_gui_textedit,
o_docking TYPE REF TO cl_gui_docking_container,
repid LIKE sy-repid,
line_length TYPE i VALUE '72'.
* Impmenting events
**********************************************************************
DATA:
event_type(20) TYPE c,
* Internal table for events that should be registred
i_events TYPE cntl_simple_events,
* Structure for oneline of the table
wa_events TYPE cntl_simple_event.
CREATE OBJECT custom_container
EXPORTING
container_name = 'MYCONTAINER1'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
others = 6
.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
* Create obejct for the TextEditor control
CREATE OBJECT o_docking
EXPORTING
ratio = '95'.
CREATE OBJECT editor
EXPORTING
wordwrap_mode = cl_gui_textedit=>wordwrap_at_fixed_position
wordwrap_position = line_length
wordwrap_to_linebreak_mode = cl_gui_textedit=>true
parent = o_docking
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
gui_type_not_supported = 5
others = 6
.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.