Tuesday, November 24, 2009

Send mail with specific sender details !!!!!


Method : with HTML code









Method :


Function Module :








Saturday, November 21, 2009

upload excell data to database table@@@@@

REPORT zmrs_cool_upload.
************************************************************************DATA : lv_filename TYPE rlgrap-filename.
DATA: it_intern_q TYPE TABLE OF alsmex_tabline ,

wa_intern_q TYPE alsmex_tabline.
DATA : it_incool TYPE TABLE OF zmrs_coolprd_mas,

wa_incool TYPE zmrs_coolprd_mas.
***********************************************************************
SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-001.

SELECTION-SCREEN SKIP 2.
PARAMETERS : p_fname TYPE localfile MODIF ID g1.
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN END OF BLOCK a1.
***********************************************************************

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.
CALL FUNCTION 'F4_FILENAME'

EXPORTING
program_name = sy-repid
dynpro_number = sy-dynnr
IMPORTING
file_name = p_fname.
************************************************************************
START-OF-SELECTION.

IF p_fname IS NOT INITIAL.
lv_filename = p_fname.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING
filename = lv_filename
i_begin_col = 1
i_begin_row = 2
i_end_col = 100
i_end_row = 65000
TABLES
intern = it_intern_q
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE 'Error in uploading the file' TYPE 'I'.
ENDIF.
IF it_intern_q[] IS NOT INITIAL.
CLEAR wa_incool.
LOOP AT it_intern_q INTO wa_intern_q.
IF wa_intern_q-col = 1.
wa_incool-source_gc = wa_intern_q-value.
ENDIF.
IF wa_intern_q-col = 2.
wa_incool-destination_gc = wa_intern_q-value.
ENDIF.
IF wa_intern_q-col = 3.

wa_incool-cooling_period = wa_intern_q-value.
ENDIF.
IF wa_intern_q-col = 4.
wa_incool-remarks = wa_intern_q-value.
ENDIF.
AT END OF row.
APPEND wa_incool TO it_incool.
CLEAR wa_incool.
ENDAT.
ENDLOOP.
ENDIF.
LOOP AT it_incool INTO wa_incool.
INSERT zmrs_coolprd_mas FROM wa_incool.
ENDLOOP.
MESSAGE 'Data has uploaded' TYPE 'S'.
ELSE.

CALL TRANSACTION 'ZMRSTINV'.
ENDIF.
END-OF-SELECTION.

Friday, November 20, 2009

Schedule mutiple jobs dynamically in abap

REPORT zpsr_psp_cbf_upload_sch.
***************************************************************
INCLUDE zpsr_psp_cbf_upload_schtop.
START-OF-SELECTION.
SELECT DISTINCT pernr

bukrs
FROM pa0001 INTO TABLE it_pa0001
WHERE bukrs IN ('WC01' ,'WH01','WT01','WT02','WT11', 'WT23', 'WT27', 'WT29', 'WT40', 'WU11')
%_HINTS ORACLE 'INDEX("pa0001" "pa0001~BUK")'.
* This is create secondary index in select statement this improves the performance
IF sy-subrc = 0.
SORT it_pa0001 BY pernr.
IF it_pa0001 IS NOT INITIAL.
SELECT DISTINCT pernr
FROM pa0000
INTO TABLE it_pa0000
FOR ALL ENTRIES IN it_pa0001
WHERE pernr = it_pa0001-pernr AND
endda = '99991231' AND
stat2 = '3'
%_HINTS ORACLE 'INDEX("pa0000" "pa0000~Z03")'.
IF sy-subrc = 0.
SORT it_pa0000 BY pernr.
IF it_pa0000 IS NOT INITIAL.
SELECT DISTINCT pernr
FROM pa0008
INTO TABLE it_pa0008
FOR ALL ENTRIES IN it_pa0000
WHERE pernr = it_pa0000-pernr AND
endda = '99991231' AND
trfgr NOT IN ('GROUP D1', 'GROUP D2', 'GROUP E').
IF sy-subrc = 0.
SORT it_pa0008 BY pernr.
ENDIF.
ENDIF. "End of PA0008
ENDIF.
ENDIF. "End of PA0000
ENDIF. "End of PA0001
DESCRIBE TABLE it_pa0008 LINES lv_count.
lv_n = lv_count / lv_value.
lv_val = lv_n * lv_value.

IF lv_count LT lv_value.
lv_n = '1'.
ELSE.
IF lv_count GT lv_val.
lv_n = lv_n + 1.
ENDIF.
ENDIF.
IF lv_count GE lv_value.

lv_end = lv_value.
ELSE.
lv_end = lv_end + lv_count.
ENDIF.
lv_start = '1'.
DO lv_n TIMES.
LOOP AT it_pa0008 INTO wa_pa0008 FROM lv_start TO lv_end.

rspar_line-selname = 'SO_PERNR'.
rspar_line-kind = 'S'.
rspar_line-low = wa_pa0008-pernr.
rspar_line-sign = 'I'.
rspar_line-option = 'EQ'.
APPEND rspar_line TO rspar_tab.
ENDLOOP.
IF rspar_tab IS NOT INITIAL.
lv_no = sy-index.
CONCATENATE '/oracle/WE3/sapreorg/abap/cbf' lv_no INTO lv_filename.

CONDENSE lv_filename NO-GAPS.
CONCATENATE lv_filename sy-datum INTO lv_filename SEPARATED BY '_'. CONCATENATE lv_filename '.txt' INTO lv_filename.
CONDENSE lv_filename NO-GAPS.
rspar_line-selname = 'P_PATH'.
rspar_line-kind = 'P'.
rspar_line-low = lv_filename.
rspar_line-sign = 'I'.
rspar_line-option = 'EQ'.
APPEND rspar_line TO rspar_tab.
CLEAR: lv_filename.
CONCATENATE lv_name lv_no INTO lv_jobname SEPARATED BY '_'.
CONDENSE lv_jobname NO-GAPS.

********************************************
CALL FUNCTION 'JOB_OPEN'
EXPORTING
jobname = lv_jobname
IMPORTING
jobcount = number
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.
*******************************************
IF sy-subrc IS INITIAL.
SUBMIT zpsr_psp_cbf_file TO SAP-SPOOL
SPOOL PARAMETERS print_parameters .
WITHOUT SPOOL DYNPRO
VIA JOB lv_jobname NUMBER number
WITH SELECTION-TABLE rspar_tab
AND RETURN.
ENDIF.
************************************************************
IF sy-subrc IS INITIAL.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = number
jobname = lv_jobname
* predjob_checkstat = 'X'
strtimmed = 'X'
* pred_jobcount = ls_jobstatus-prejobno
* pred_jobname = ls_jobstatus-prejobname
EXCEPTIONS
cant_start_immediate = 1
invalid_startdate = 2
jobname_missing = 3
job_close_failed = 4
job_nosteps = 5
job_notex = 6
lock_failed = 7
OTHERS = 8.
IF sy-subrc IS INITIAL.
WRITE: / lv_jobname, 'is created'.
ELSE.
WRITE: / lv_jobname, 'is not created'.
ENDIF.
ENDIF.
ENDIF.
*********************************************
lv_start = lv_start + lv_value.
lv_end = lv_end + lv_value.
IF lv_end > lv_count.

lv_end = lv_count.
ENDIF.
CLEAR: lv_jobname,

rspar_tab, number.
ENDDO.
**********************************************

Wednesday, November 18, 2009

Pre-exit, Post-exit and over write exit

Pre-exit --> This is a method which triggers before the original method when you enhance the SAP standard component (at run time).
Post-exit ---> This is a method which triggers after the original method when you enhance the SAP standard component(at run time).
Overwrite-exit---> This is a method which over writed the original method when you enhance the SAP standard component at run time.

Wednesday, November 11, 2009

Create POP-UP in web dynpro without creating new window...







1. Goto SE80

2. Create web dynpro component YRG_POP_UP

3. Create a button

4. And on its action create a method

say method name is :

method ONACTIONBUTTON .

* write below code inside this method*

data: l_cmp_api type ref to if_wd_component,

l_window_manager type ref to if_wd_window_manager,

l_popup type ref to if_wd_window,

l_text type string_table,

l_api type ref to if_wd_view_controller.

l_cmp_api = wd_comp_controller->wd_get_api( ).

l_window_manager = l_cmp_api->get_window_manager( ).

insert `Data where changed` into table l_text.

insert `Do you want to save?` into table l_text.

l_popup = l_window_manager->create_popup_to_confirm(

text = l_text

button_kind = if_wd_window=>co_buttons_yesnocancel

message_type = if_wd_window=>co_msg_type_question

window_title = 'Test: Popup to confirm'

window_position = if_wd_window=>co_center ).

l_api = wd_this->wd_get_api( ).

l_popup->subscribe_to_button_event( )

button = if_wd_window=>co_button_yes

action_name = 'YES'

action_view = l_api

is_default_button = abap_true ).

l_popup->subscribe_to_button_event(

button = if_wd_window=>co_button_no

action_name = 'NO'

action_view = l_api

is_default_button = abap_false ).

l_popup->subscribe_to_button_event(

button = if_wd_window=>co_button_cancel

action_name = 'CANCEL'

action_view = l_api

is_default_button = abap_false ).

l_popup->open( ).

endmethod.

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

Now activate your application .

We need to create 3 actions and their methods also

1. YES

2. NO

3. CANCEL









Tuesday, November 10, 2009

Create T-code for Web dynpro component....


First goto transaction code SE93.

and select last radio button (Transaction with parameters).

and pass WDYID in Transaction.

In default values :

APPLICATION = obligatory field (give your web dynpro componant name)

HTTPS = optional

STARTMODE = GUI/BROWSER (optional)

WDCONFIGURATIONID = optional

Call URL from T-code in SAP r/3 system

First create T-code from se93 for the below report.

REPORT ZCALL_URL.
******************************************************************
CALL FUNCTION 'PRGN_GENER_EXECUTE_URL'

EXPORTING
node_data = 'http://www.google.com'
* TARGET_SYSTEM = ' '
* LOGICAL_TARGET_SYSTEM = ' ' .
*******************************************************************
we can also concatenate other thing with any URL.

Monday, November 9, 2009

How to use subroutine pool in program

Sub routine pool is used when you don't want to call another screen.
If there is any syntax error in appended code , subroutine pool starting with %_ will not generate.
*************************************************************************************
REPORT zmrs_down_special.
TABLES: zbi_table_list.

DATA: BEGIN OF it_fields OCCURS 0 ,
tablename LIKE zbi_table_list-tablename,
field LIKE zbi_table_list-field,
END OF it_fields.
DATA: BEGIN OF it_all_fields OCCURS 0,
tablename LIKE zbi_table_list-tablename,
field LIKE zbi_table_list-field,
END OF it_all_fields.
TYPES: BEGIN OF tab_type,

fcode LIKE rsmpe-func,
END OF tab_type.
DATA: tab TYPE STANDARD TABLE OF tab_type WITH

NON-UNIQUE DEFAULT KEY INITIAL SIZE 10,
wa_tab TYPE tab_type.DATA itab(72) OCCURS 0.
DATA flag.
**********************************************************************************
DATA: BEGIN OF dict OCCURS 0,
tabname TYPE dntab-tabname,
fieldname TYPE dntab-fieldname,
langu TYPE dntab-langu,
position TYPE dntab-position,
offset TYPE dntab-offset,
keyflag TYPE dntab-keyflag,
fieldtext TYPE dntab-fieldtext,
datatype TYPE dntab-datatype,
inttype TYPE dntab-inttype,
ddlen TYPE dntab-ddlen,
intlen TYPE dntab-intlen,
decimals TYPE dntab-decimals,
checktable TYPE dntab-checktable,
reftable TYPE dntab-reftable,
reffield TYPE dntab-reffield,
precfield TYPE dntab-precfield,
logflag TYPE dntab-logflag,
memoryid TYPE dntab-memoryid,
lowercase TYPE dntab-lowercase,
sign TYPE dntab-sign,
valexi TYPE dntab-valexi,
noforkey TYPE dntab-noforkey,
convexit TYPE dntab-convexit,
set(60),
whr(60),
relop(3),
END OF dict.
*****************************************************************************
PARAMETERS : filepath(132) LOWER CASE MODIF ID 006
DEFAULT '/oracle/WE3/sapreorg/abap/' OBLIGATORY.
SELECT-OPTIONS : s_table FOR zbi_table_list-tablename.
DATA fn(128).
DATA : BEGIN OF it_fdata OCCURS 0,
fn(128),
END OF it_fdata.
DATA : sid TYPE string.
START-OF-SELECTION.
PERFORM prepare_data_decl USING filepath.

********************************************************************************
FORM prepare_data_decl USING filepath.

DATA dict_wa LIKE dntab.

DATA wa_dict LIKE LINE OF dict.
DATA zname(8).
DATA wa(72).
CLEAR itab[].
DATA: l_tablename LIKE dntab-tabname.
READ TABLE s_table INDEX 1.
l_tablename = s_table-low.
CALL FUNCTION 'NAMETAB_GET'
EXPORTING
langu = sy-langu
tabname = l_tablename
TABLES
nametab = dict
EXCEPTIONS
internal_error = 1
table_has_no_fields = 2
table_not_activ = 3
no_texts_found = 4
OTHERS = 5.
CASE sy-subrc.
WHEN 1.
WRITE 'Internal Error!'.
WHEN 2.
WRITE 'Table has no fields!'.
WHEN 3.
WRITE 'Table not active!'.
WHEN 4.
WRITE 'No Text Found!'. ENDCASE.
IF dict[] IS INITIAL.
WRITE 'Error! Please check the table name'.
EXIT
ENDIF.
DELETE dict WHERE fieldname = 'MANDT'.
REFRESH it_all_fields.
LOOP AT dict INTO wa_dict.
CLEAR it_all_fields.
it_all_fields-tablename = wa_dict-tabname.
it_all_fields-field = wa_dict-fieldname.
APPEND it_all_fields.
ENDLOOP.
.........................................................
...........................................................
..........................................................
GENERATE SUBROUTINE POOL itab NAME zname SHORTDUMP-ID sid .
PERFORM data_upload IN PROGRAM (zname) USING l_tablename filepath IF FOUND.

****************************
But in my openion this is not a good way of calling another program rather use SUBMIT statement.
Rahul gupta

Saturday, November 7, 2009

Send mail with text attachment in sap!!!!!!!!

REPORT ZSEND_MAIL.
*******************************************************************************
TYPES : BEGIN OF ty_coolprd_mas,
SOURCE_GC TYPE ZMRS_COOLPRD_MAS-SOURCE_GC,
DESTINATION_GC TYPE ZMRS_COOLPRD_MAS-DESTINATION_GC,
COOLING_PERIOD TYPE ZMRS_COOLPRD_MAS-COOLING_PERIOD,
BU TYPE ZMRS_COOLPRD_MAS-BU,
EXP_DATE TYPE ZMRS_COOLPRD_MAS-EXP_DATE,
END OF ty_coolprd_mas.

DATA : it_coolprd_mas TYPE TABLE OF ty_coolprd_mas,
wa_coolprd_mas TYPE ty_coolprd_mas.
DATA : it_header LIKE solisti1 OCCURS 1 WITH HEADER LINE.
DATA : it_content LIKE solisti1 OCCURS 1 WITH HEADER LINE.
DATA : it_recv LIKE somlreci1 OCCURS 1 WITH HEADER LINE.
DATA : doc_data LIKE sodocchgi1 OCCURS 1 WITH HEADER LINE.
DATA : objpack LIKE sopcklsti1 OCCURS 1 WITH HEADER LINE.
DATA : attach_name LIKE solisti1-line. "attchment name for the email
DATA : it_att LIKE solisti1 OCCURS 0 WITH HEADER LINE.
DATA : objbin LIKE solisti1 OCCURS 1 WITH HEADER LINE.
DATA : objhead LIKE solisti1 OCCURS 1 WITH HEADER LINE.
DATA : tab_lines TYPE sy-tabix.DATA : text(255).
DATA : head(255).
**************************************************************************
START-OF-SELECTION.
SELECT SOURCE_GC
DESTINATION_GC
COOLING_PERIOD
BU
EXP_DATE
FROM ZMRS_COOLPRD_MAS
INTO CORRESPONDING FIELDS OF TABLE it_coolprd_mas.
IF it_coolprd_mas[] IS NOT INITIAL.
PERFORM SEND_MAIL TABLES it_coolprd_mas.
ENDIF.
end-of-SELECTION.
**************************************************************************
form SEND_MAIL tables p_it_coolprd_mas .
****receiver's mail ids************************************************
CLEAR it_recv.
MOVE 'rahul.gupta1407@gmail.com' TO it_recv-receiver.
it_recv-express = 'X'.
* it_recv-copy = 'X'.
it_recv-rec_type = 'U'.
it_recv-com_type = 'INT'.
it_recv-notif_del = 'X'.
it_recv-notif_ndel = 'X'.
APPEND it_recv .
CLEAR it_recv .
MOVE 'rahul.gupta1@wipro.com' TO it_recv-receiver.
it_recv-express = 'X'.
it_recv-copy = 'X'. " carbon copy enabled
it_recv-rec_type = 'U'.
it_recv-com_type = 'INT'.
it_recv-notif_del = 'X'.
it_recv-notif_ndel = 'X'.
APPEND it_recv .
CLEAR it_recv .
********************Body of the Mail********************************************
MOVE space TO it_content-line .
APPEND it_content . CLEAR it_content-line .

MOVE 'Hi,' TO it_content-line .
APPEND it_content . CLEAR it_content-line .

MOVE space TO it_content-line .
APPEND it_content . CLEAR it_content-line .

text = 'Please find the attachment for the cooling off period data.'.
MOVE text TO it_content-line. APPEND it_content.

MOVE space TO it_content-line .
APPEND it_content . CLEAR it_content-line .

MOVE space TO it_content-line .
APPEND it_content . CLEAR it_content-line .
CLEAR text.

text = 'Best Regards,'.
MOVE text TO it_content-line. APPEND it_content. CLEAR it_content-line .

MOVE 'MRS Team.' TO it_content-line.
APPEND it_content .
CLEAR it_content-line .
**********************************************************************
DESCRIBE TABLE it_content LINES tab_lines.
READ TABLE it_content INDEX tab_lines.
doc_data-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( it_content ).
APPEND doc_data.
CLEAR objpack.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = 1.
objpack-body_num = tab_lines.
objpack-doc_type = 'RAW'.
APPEND objpack.

doc_data-obj_descr = 'Cool off data'.
CONCATENATE 'cool_off_data' '.TXT' INTO attach_name SEPARATED BY space.
DATA : len1 TYPE i.
DATA : len2 TYPE i,
txt_content(255).
CONCATENATE 'Source group customer '
'Destination group customer '
'Cooling period '
'Business unit '
'Expiry date' INTO txt_content.
SHIFT txt_content LEFT DELETING LEADING space. objbin-line = txt_content.
APPEND objbin.
LOOP AT p_it_coolprd_mas INTO wa_coolprd_mas.
objbin+1 = wa_coolprd_mas-SOURCE_GC.
objbin+33 = ''.
objbin+35 = wa_coolprd_mas-DESTINATION_GC.
objbin+67 = ''.
objbin+69 = wa_coolprd_mas-COOLING_PERIOD.
objbin+76 = ''.
objbin+78 = wa_coolprd_mas-BU.
objbin+130 = ''.
objbin+132 = wa_coolprd_mas-EXP_DATE.
APPEND objbin.
ENDLOOP.
DESCRIBE TABLE objbin LINES tab_lines.
* Assign the attachment file name
objhead = attach_name.
APPEND objhead.
* Creation of the entry for the compressed attachment
objpack-transf_bin = 'X'.
objpack-head_start = 1.
objpack-head_num = 1.
objpack-body_start = 1.
objpack-body_num = tab_lines.
objpack-doc_type = 'RAW'.
objpack-obj_name = 'ANLAGE'.
objpack-obj_descr = attach_name.
objpack-doc_size = tab_lines * 255.
APPEND objpack.
****************************************************************************
IF NOT it_recv[] IS INITIAL.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = doc_data
put_in_outbox = 'X'
commit_work = 'X'
TABLES
packing_list = objpack
CONTENTS_BIN = objbin
contents_txt = it_content
receivers = it_recv

endform. " SEND_MAIL
*****************************************************************************

Down load any database table(with header ) dynamically..........








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.


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