Saturday, November 7, 2009

How to enter long text into database table from front end???




This is program which allows us to insert a long text from front end in SAP R/3 system.


For this created one table name : ztext_editor83 in which there was a field remarks1 whose type was RSRAWSTRING (xstring) which converts cstring to xstring and store it in database table.


if we want to fetch the same remarks then we need to convert xstring to cstring by the following


function module : ECATT_CONV_XSTRING_TO_STRING.






REPORT ztext_editor83.


********************************************************************


DATA : line_length TYPE i VALUE 254,


editor_container TYPE REF TO cl_gui_custom_container,


text_editor TYPE REF TO cl_gui_textedit,


text TYPE string.
DATA : it_tab TYPE TABLE OF ztext_editor83,

wa_tab TYPE ztext_editor83.

DATA: name TYPE vrm_id,

list TYPE vrm_values,

value LIKE LINE OF list.


**********************************************************************


START-OF-SELECTION.


CALL SCREEN '100'.


**********************************************************************


MODULE status_0100 OUTPUT.


SET PF-STATUS '0100'.


SET TITLEBAR '100'.


CREATE OBJECT editor_container


EXPORTING


container_name = 'TEXTEDITOR'


EXCEPTIONS


cntl_error = 1


cntl_system_error = 2


create_error = 3


lifetime_error = 4


lifetime_dynpro_dynpro_link = 5


OTHERS = 6 .


IF sy-subrc <> 0.


*MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO


* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.


ENDIF.


**************************************************************************


CREATE OBJECT text_editor


EXPORTING


wordwrap_mode = cl_gui_textedit=>wordwrap_at_fixed_position


wordwrap_position = line_length


wordwrap_to_linebreak_mode = cl_gui_textedit=>true


parent = editor_container




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 text_editor->set_toolbar_mode


EXPORTING


toolbar_mode = cl_gui_textedit=>false.


*****************************************************************************


CALL METHOD text_editor->set_statusbar_mode


EXPORTING


statusbar_mode = 0. "CL_GUI_TEXTEDIT=>FALSE.


*****************************************************************************

SELECT * from pa0000

into TABLE it_pa0000

UP TO 10 ROWS.

LOOP AT it_pa0000 INTO wa_pa0000 .

value-key = wa_pa0000-pernr.

value-text = wa_pa0000-pernr.

APPEND value to list.

ENDLOOP.

CALL FUNCTION 'VRM_SET_VALUES'

EXPORTING

id = 'WA_TAB-EMP_NO'

values = list

* EXCEPTIONS

* ID_ILLEGAL_NAME = 1

* OTHERS = 2 .

IF sy-subrc <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.


DATA : W_LINES TYPE I.

TYPES : PICT_LINE(256) TYPE C.

DATA : CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,

EDITOR TYPE REF TO CL_GUI_TEXTEDIT,

PICTURE TYPE REF TO CL_GUI_PICTURE,

PICT_TAB TYPE TABLE OF PICT_LINE,

URL(255) TYPE C.

DATA : GRAPHIC_URL(255).
DATA : BEGIN OF GRAPHIC_TABLE OCCURS 0,

LINE(255) TYPE X,

END OF GRAPHIC_TABLE.

DATA : L_GRAPHIC_CONV TYPE I.

DATA : L_GRAPHIC_OFFS TYPE I.

DATA : GRAPHIC_SIZE TYPE I.

DATA : L_GRAPHIC_XSTR TYPE XSTRING.


CALL METHOD CL_GUI_CFW=>FLUSH.
CREATE OBJECT : CONTAINER EXPORTING CONTAINER_NAME =

'PICTURE_CONTAINER',

PICTURE EXPORTING PARENT = CONTAINER.


CALL METHOD CL_SSF_XSF_UTILITIES=>GET_BDS_GRAPHIC_AS_BMP EXPORTING

P_OBJECT = 'GRAPHICS'

P_NAME = 'ZLOGO_WIPRO'

P_ID = 'BMAP'

P_BTYPE = 'BCOL' RECEIVING

P_BMP = L_GRAPHIC_XSTR

* EXCEPTIONS

* NOT_FOUND = 1

* INTERNAL_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.


*********************************************************************

GRAPHIC_SIZE = XSTRLEN( L_GRAPHIC_XSTR ).

L_GRAPHIC_CONV = GRAPHIC_SIZE.

L_GRAPHIC_OFFS = 0.

WHILE L_GRAPHIC_CONV > 255.

GRAPHIC_TABLE-LINE = L_GRAPHIC_XSTR+L_GRAPHIC_OFFS(255).

APPEND GRAPHIC_TABLE.

L_GRAPHIC_OFFS = L_GRAPHIC_OFFS + 255.

L_GRAPHIC_CONV = L_GRAPHIC_CONV - 255.

ENDWHILE.


GRAPHIC_TABLE-LINE = L_GRAPHIC_XSTR+L_GRAPHIC_OFFS(L_GRAPHIC_CONV). APPEND GRAPHIC_TABLE.


CALL FUNCTION 'DP_CREATE_URL'

EXPORTING

TYPE = 'IMAGE'

SUBTYPE = 'X-UNKNOWN'

SIZE = GRAPHIC_SIZE

LIFETIME = 'T'

TABLES

DATA = GRAPHIC_TABLE

CHANGING

URL = URL.


CALL METHOD PICTURE->LOAD_PICTURE_FROM_URL

EXPORTING

URL = URL.


CALL METHOD PICTURE->SET_DISPLAY_MODE

EXPORTING

DISPLAY_MODE = PICTURE->DISPLAY_MODE_FIT_CENTER.


ENDMODULE. " STATUS_0100 OUTPUT


********************************************************************************


MODULE user_command_0100 INPUT.


IF sy-ucomm = 'BACK' OR sy-ucomm = 'EXIT'.


LEAVE PROGRAM.


ELSEIF sy-ucomm = 'SAVE'.


CALL METHOD text_editor->get_textstream


EXPORTING


only_when_modified = cl_gui_textedit=>true


IMPORTING


text = text


* is_modified =


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.


*******************************************************************************


*******this flush method helps us to bring the buffered data on to front end*************


CALL METHOD cl_gui_cfw=>flush


EXCEPTIONS


cntl_system_error = 1


cntl_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.


*****************************************************************************


CALL FUNCTION 'SCMS_STRING_TO_XSTRING'


EXPORTING


text = text


IMPORTING


BUFFER = wa_tab-remarks1.


******************************************************************************


modify ztext_editor83 FROM wa_tab.




ENDIF.


ENDMODULE. " USER_COMMAND_0100 INPUT


*******************************************************************************


Se51 flow logic :


PROCESS BEFORE OUTPUT.


MODULE STATUS_0100.


PROCESS AFTER INPUT.


MODULE USER_COMMAND_0100.


**********************************************************************************


No comments: