ARTIClE
Screens, CFW
The example illustrates the use of different GUI controls on a
screen.
ABAP_SOURCE_CODE
ABAP_EXEC
ABAP_DESCRIPTION
On the screen layout of screen 100 is a Custom Control named
CUSTOM_CONTROL that covers the entire screen area. In the flow logic,
both dialog modules STATUS_0100 and CANCEL are called at
which the addition AT EXIT-COMMAND is used for PAI.
In GUI status SCREEN_100 , the common symbols of the status bar
are occupied with function codes of the type E . The PAI
module only serves to exit the program. The most important action to
PBO is calling the static method create_screen of the
local class screen_handler , in which an object of this class is
created.
The instance constructor of the class screen_handler generates
container controls for a Picture Control and a Tree Control
and afterwards both application controls.
First, a Docking Control is created with the local reference
variable l_docking . By transferring the constant
dock_at_left of the class CL_GUI_DOCKING_CONTAINER to the
parameter side , a new area is created on the left side of the
screen with a width of 135 pixels.
This screen area is split into two horizontal areas. This is achieved
via the local reference variable l_splitter , which creates an
object of the class CL_GUI_SPLITTER_CONTAINER and transfers the
reference to the Docking Control to the parameter parent .
Using the functional method get_container , the references to both
areas of the splitter-control are determined in the local reference
variables l_container_top and l_container_bottom .
Afterwards, the application-controls Picture and Tree are
generated, at which the parameter parent of each constructor
receives one of the references to the areas of the splitter control.
By calling the method set_registered_events , the doubleclick
event for the nodes of the tree are activated as system event. The
method handle_node_double_click is registered as event handler.
When leaving the instance constructor, all reference variables are
deleted. However, the control objects generated in the constructor with
local reference variables are not collected by the garbage collection,
as they are maintained by references from the CFW .
The method fill_picture imports an image file in GIF format
from the MIME Repository into a byte string l_pict_wa ,
which is then filled into an internal table l_pict_tab . The
function module DP_CREATE_URL
generates an URL address for this table in the local variable
l_url , which is passed to the method load_picture_from_url
of the Picture Control .
The method fill_tree generates the tree structure of the tree
control in the internal table l_node_table of the row
structure ABDEMONODE . Every row of
the table describes a node of the tree structure and must have a unique
node key node_key for it. The components relatkey and
relatship describe the relationships among the nodes.
The node table is generated from the content of the database
table SPFLI . At the subnodes, the standard icons for
non-expanded and expanded nodes are replaced with aircraft icons.
The event handler method handle_node_double_click imports the
parameter node_key of the event node_double_click of the
class CL_GUI_SIMPLE_TREE , which contains the key of the selected
node. Depending on the content, the methods fill_html or
fill_list are called.
When the method fill_html is called for the first time, it
generates an object of the class CL_GUI_HTML_VIEWER and links the
associated HTML control with the area of the container control to
which the reference in container_html points (with the
Custom Control on the screen). According to the selected node, the
web address of an airline is read and handed over to the method
show_url of the HTML control , by which the Homepage of
the airline is displayed.
The method fill_list generates a dialog box container and an
ALV Grid Control that is displayed in the dialog box. The event
handler close_box is registered for the dialog box container.
Activation using the method set_registered_events is not
necessary here, as the event is activated by the class itself as system
event when the object is generated. A list is generated for the selected
nodes. By assigning values to some components of the structure
l_list_layout of the type lvc_s_layo , it is determined that
the list title in displayed in small format, and that the column width
of the list is optimized, and that the list should not have an
application toolbar. By calling the method
set_table_for_first_display of the ALV Grid Control , the list
is displayed in the dialog box.
You use the event handler method close_box to close the dialog
box. To do this, you call the methods free of the concerned
controls one after another and then initialize the respective reference
variables. After that, if a node is selected to generate a list, both
controls are created again in the method fill_list . All other
controls of the program cannot be deleted by the user and will be
available until the program ends.
Note
The class CL_SALV_TABLE and other classes with the prefix
CL_SALV_ meanwhile offer more comfortable ways of displaying ALV
Controls .
Documentation extract taken from SAP system, � Copyright SAP AG. All rights reserved