‎2007 Jul 30 10:59 AM
Hi
what is custom control. what is the use of this.and how to create this
Regards
prajwal
‎2007 Jul 30 11:06 AM
hi,
You can display logo(s) on your screen using the custom control function. A custom control is an area on the screen, created using the screen painter. Custom controls are used to embed controls. Container controls are instances of special global classes from the SAP Control Framework.
The global class for custom controls is called CL_GUI_CUSTOM_CONTAINER. To link a custom control to a container control, pass the custom control name to the CONTAINER_NAME parameter of the container control.
<b>REWARDS POINT</b>
Regards,
ASHOK KUMAR
‎2007 Jul 30 11:08 AM
hi
check with this link
http://help.sap.com/saphelp_47x200/helpdata/en/e4/6013361d5af835e10000009b38f839/frameset.htm
/people/ravikumar.allampallam/blog/2005/06/01/alv-reporting-using-controls--part-i
/people/ravikumar.allampallam/blog/2005/06/01/alv-reporting-using-controls-control-layouts--part-ii
reward if useful
Asha
‎2007 Jul 30 11:09 AM
Area on a screen in which you can display GUI-Controls.
A custom control is an area on a screen. You create them in the Screen Painter, and, like all other screen objects, they have a unique name. You use custom controls to embed controls. A control is a software component on the presentation server, which can be either an ActiveX control or a JavaBean, depending on the SAPgui you are using. They allow you to perform tasks, such as editing texts, locally on the presentation server. The control is driven by the application logic, which still runs on the application server.
for refrence u can refer to program DEMO_CUSTOM_CONTROL in IDES
‎2007 Jul 30 11:10 AM
Hi,
Custom control is a parent control for other controls like ALV Grid, Picture control
Following is the tutorial on creating Cutom control.
http://help.sap.com/saphelp_47x200/helpdata/en/e4/6013361d5af835e10000009b38f839/frameset.htm
refer this report.
DEMO_CUSTOM_CONTROL
Regards
‎2007 Jul 30 11:11 AM
Custom Controls
Container Controls
Before you can work with a custom control on a screen, you must assign a Structure link SAP Container Control to it. Container controls are instances of special global classes from the SAP Control Framework. The global class for custom controls is called CL_GUI_CUSTOM_CONTAINER. To link a custom control to a container control, pass the custom control name to the CONTAINER_NAME parameter of the container control constructor when you instantiate it.
As well as using custom containers, you can link controls to a screen using a SAP Docking Container. This is encapsulated in the global class CL_GUI_DOCKING_CONTAINER. The SAP Docking Container does not place the control within a screen. Instead, it attaches it to one of the four edges. You can nest containers. For example, you can use the SAP Splitter Container (classes CL_GUI_EASY_SPLITTER_CONTAINER or CL_GUI_SPLITTER_CONTAINER) within other containers. This allows you to split a custom control or docking control into more than one area, allowing you to embed more than one control.
One example,
program z.
*----
*
Constants *
*----
*
constants: c_me like trdir-cnam value 'VNDOVV',
c_myurl type scarr-url value
'http://www.brainbench.com/transcript.jsp?pid=147699',
c_width type i value 260,
c_height type i value 130.
*----
*
Types *
*----
*
types: begin of t_pgm,
year(4) type c,
name like trdir-name,
end of t_pgm,
begin of t_pgmkey,
id type i,
name like trdir-name,
end of t_pgmkey.
*----
*
Data *
*----
*
data: it_pgmkey type table of t_pgmkey.
*----
*
Classes *
*----
*
*----
*
Definitions *
*----
*
class screen_init definition create private.
public section.
class-methods init_screen returning value(this)
type ref to screen_init.
methods constructor.
private section.
class-data a_id type i.
data: splitter_h type ref to cl_gui_splitter_container,
splitter_v type ref to cl_gui_splitter_container,
picture type ref to cl_gui_picture,
tree type ref to cl_gui_simple_tree.
methods: fill_tree,
fill_picture.
endclass.
*----
*
class screen_handler definition.
public section.
methods: constructor importing container
type ref to cl_gui_container,
handle_node_double_click
for event node_double_click
of cl_gui_simple_tree
importing node_key,
handle_picture_double_click
for event picture_dblclick
of cl_gui_picture.
private section.
data: html_viewer type ref to cl_gui_html_viewer,
editor type ref to cl_gui_textedit.
methods: fill_html,
fill_src importing programid type trdir-name.
endclass.
*----
*
Implementations *
*----
*
class screen_init implementation.
*----
*
method init_screen.
data screen type ref to screen_init.
create object screen.
this = screen.
endmethod.
*----
*
method constructor.
data: events type cntl_simple_events,
event like line of events,
event_handler type ref to screen_handler,
container_left type ref to cl_gui_container,
container_right type ref to cl_gui_container,
container_top type ref to cl_gui_container,
container_bottom type ref to cl_gui_container.
create object splitter_h
exporting
parent = cl_gui_container=>screen0
rows = 1
columns = 2.
call method splitter_h->set_border
exporting border = cl_gui_cfw=>false.
call method splitter_h->set_column_mode
exporting mode = splitter_h->mode_absolute.
call method splitter_h->set_column_width
exporting id = 1
width = c_width.
container_left = splitter_h->get_container( row = 1 column = 1 ).
container_right = splitter_h->get_container( row = 1 column = 2 ).
create object splitter_v
exporting
parent = container_left
rows = 2
columns = 1.
call method splitter_v->set_border
exporting border = cl_gui_cfw=>false.
call method splitter_v->set_row_mode
exporting mode = splitter_v->mode_absolute.
call method splitter_v->set_row_height
exporting id = 1
height = c_height.
container_top = splitter_v->get_container( row = 1 column = 1 ).
container_bottom = splitter_v->get_container( row = 2 column = 1 ).
create object picture
exporting parent = container_top.
create object tree
exporting parent = container_bottom
node_selection_mode =
cl_gui_simple_tree=>node_sel_mode_single.
create object event_handler
exporting container = container_right.
event-eventid = cl_gui_simple_tree=>eventid_node_double_click.
event-appl_event = ' '. "system event, does not trigger PAI
append event to events.
call method tree->set_registered_events
exporting events = events.
clear: event, events[].
event-eventid = cl_gui_picture=>eventid_picture_dblclick.
event-appl_event = ' '. "system event, does not trigger PAI
append event to events.
call method picture->set_registered_events
exporting events = events.
set handler: event_handler->handle_node_double_click for tree,
event_handler->handle_picture_double_click for picture.
call method: me->fill_picture,
me->fill_tree.
endmethod.
*----
*
method fill_picture.
call method:
picture->load_picture_from_sap_icons exporting icon = '@J4@',
picture->set_display_mode
exporting display_mode = picture->display_mode_fit_center.
endmethod.
*----
*
method fill_tree.
data: node_table type table of abdemonode,
node type abdemonode,
w_pgm type t_pgm,
w_cdat type rdir_cdate,
it_pgm type table of t_pgm,
w_pgmkey type t_pgmkey.
clear: a_id, it_pgmkey[].
select distinct name cdat from trdir into (w_pgm-name, w_cdat)
where cnam = c_me.
w_pgm-year = w_cdat(4).
append w_pgm to it_pgm.
clear w_pgm.
endselect.
sort it_pgm.
node-hidden = ' '. " All nodes are visible,
node-disabled = ' '. " selectable,
node-isfolder = 'X'. " a folder,
node-expander = ' '. " have no '+' sign for expansion.
loop at it_pgm into w_pgm.
at new year.
node-node_key = w_pgm-year.
clear node-relatkey.
clear node-relatship.
node-text = w_pgm-year.
node-n_image = ' '.
node-exp_image = ' '.
append node to node_table.
endat.
at new name.
add 1 to a_id.
node-node_key = w_pgmkey-id = a_id.
w_pgmkey-name = w_pgm-name.
node-relatkey = w_pgm-year.
node-relatship = cl_gui_simple_tree=>relat_last_child.
node-text = w_pgm-name.
node-n_image = '@0P@'.
node-exp_image = '@0P@'.
append w_pgmkey to it_pgmkey.
endat.
append node to node_table.
endloop.
call method tree->add_nodes
exporting table_structure_name = 'ABDEMONODE'
node_table = node_table.
endmethod.
endclass.
*----
*
class screen_handler implementation.
*----
*
method constructor.
create object: html_viewer exporting parent = container,
editor exporting parent = container
wordwrap_mode =
cl_gui_textedit=>wordwrap_at_fixed_position
wordwrap_position = 72.
call method: fill_html,
editor->set_readonly_mode exporting readonly_mode = 1.
endmethod.
*----
*
method handle_node_double_click.
data: w_name type programm,
w_id type i,
w_year(4) type c,
w_pgmkey type t_pgmkey.
w_name = node_key+4.
w_id = w_name.
clear w_name.
read table it_pgmkey into w_pgmkey with key id = w_id
binary search.
if sy-subrc = 0.
w_name = w_pgmkey-name.
endif.
w_year = node_key(4).
if w_name is initial.
call method: fill_html,
html_viewer->set_visible exporting visible = 'X',
editor->set_visible exporting visible = ' '.
else.
call method: fill_src exporting programid = w_name,
editor->set_visible exporting visible = 'X',
html_viewer->set_visible exporting visible = ' '.
endif.
call method cl_gui_cfw=>flush.
endmethod.
*----
*
method handle_picture_double_click.
call method: fill_html,
html_viewer->set_visible exporting visible = 'X',
editor->set_visible exporting visible = ' '.
call method cl_gui_cfw=>flush.
endmethod.
*----
*
method fill_html.
call method html_viewer->show_url exporting url = c_myurl.
endmethod.
*----
*
method fill_src.
types t_line(72) type c.
data src type table of t_line.
read report programid into src.
call method: editor->delete_text,
editor->set_text_as_r3table exporting table = src[].
endmethod.
endclass.
*----
*
Data *
*----
*
data this_screen type ref to screen_init.
*----
*
Program execution *
*----
*
load-of-program.
call screen 100.
*----
*
Dialog Modules PBO *
*----
*
module status_0100 output.
set pf-status 'SCREEN_100'.
set titlebar 'TIT_100'.
this_screen = screen_init=>init_screen( ).
endmodule.
*----
*
Dialog Modules PAI *
*----
*
module cancel input.
leave program.
endmodule.
*----
*
Regards,
Pavan