Embedding paint.exe in SAP GUI transactions

Here is some code to embed the paint application into a GUI application. Tablet signatures, anyone? However, my preferred approach is using a Flex components in web dynpros - much slicker but you will need EP1 for NW.

report zzzzzzzz.

include ole2incl.

selection-screen begin of screen 1100.
selection-screen end of screen 1100.

*———————————————————————-*
* CLASS cl_paint DEFINITION
*———————————————————————-*
class cl_paint definition.

public section.

methods:
constructor,

on_close_document
for event on_close_document of i_oi_document_proxy
importing document_proxy has_changed.

private section.

data:
go_control type ref to i_oi_container_control,
go_proxy type ref to i_oi_document_proxy.

endclass. “cl_paint DEFINITION

*———————————————————————-*
* CLASS cl_paint IMPLEMENTATION
*———————————————————————-*
*
*———————————————————————-*
class cl_paint implementation.

method constructor.

data:
retcode type soi_ret_string.

*– Create the OLE control
call method c_oi_container_control_creator=>get_container_control
importing
control = go_control
retcode = retcode.
call method c_oi_errors=>raise_message
exporting
type = ‘E’.

*– Attach the OLE control to the screen container
call method go_control->init_control
exporting
r3_application_name = ‘Signature Pad’(000)
inplace_enabled = ‘X’
inplace_scroll_documents = ‘X’
parent = cl_gui_container=>screen0
register_on_close_event = ‘X’
register_on_custom_event = ‘X’
importing
retcode = retcode.
call method c_oi_errors=>raise_message
exporting
type = ‘E’.

*– Create a proxy to the Paint application in the OLE container
call method go_control->get_document_proxy
exporting
document_type = ‘Paint.Picture’
document_format = ‘OLE’
importing
document_proxy = go_proxy
retcode = retcode.
if retcode ne c_oi_errors=>ret_ok.
exit.
endif.

*– Create a new paint document
call method go_proxy->create_document
exporting
create_view_data = ‘X’
open_inplace = ‘X’
importing
retcode = retcode.
if retcode ne c_oi_errors=>ret_ok.
exit.
endif.

set handler me->on_close_document for go_proxy.

endmethod. “constructor

method on_close_document.

” Save the signature here

endmethod.

endclass. “cl_paint IMPLEMENTATION

start-of-selection.

data:
go_picture type ref to cl_paint.

create object go_picture.

call selection-screen 1100.


Leave a Reply