The Controller Interface
Standard Attributes
wd_this (always available - references controller - see next section for list of
methods because it is dependent on controller type. Within a component click
on Display interface controller to view attributes and methods associated
with its wd_this)
wd_context (always available - list of methods)
wd_comp_controller (if componentcontroller defined as used controller for
another controller, it appears in the other controller as type
IG<USDED_CONTROLLER>. A view's componentcontroller is always
present for the view as type IG_COMPONENTCONTROLLER which is
thewd_this for componentcontroller. )
wd_assist (if an assistance class is related to a component)
wd_this - Structure of the Controller Interface
IF_<CONTROLLER> (Local)
o e.g., IF_VIEW1 - The view name is VIEW1. Its WD_THIS is defined as
IF_VIEW1, which is a local controller interface.
o e.g., WD_THIS->WD_CPIFC_<CONTROLLER> will access the view's
used component
e.g., wd_this->wd_cpifc_model( )
model is the name of the used component
IG_<CONTROLLER> (Global)
IWCI_<CONTROLLER> (SAP Reusable)
o accessing the used component within the view, VIEW1 above:
wd_this->wd_cpifc_model( )
ZIWCI_<CONTROLLER> (Custom Reusable) *** Note, if you create a
reusuable component (e.g., ZLSO_MC_ATTENDEE_LIST), when you reuse
it, the code must reference ZIWCI_LSO_MC_ATTENDEE_LIST, not
ZIWCI_ZLSO_MC_ATTENDEE_LIST!
Generated Local Interface for View Controllers
View Controller <VIEW>
Generated Interface IF_<VIEW> (e.g., IF_VIEW1)
METHODS
wd_get_api
wd_create_action
USED CONTROLLERS
methods
o get_<USED_CONTROLLER>_CTR (e.g.,
get_componentcontroller_ctr)
o wd_cpuse_<COMPONENT_USAGE> (e.g., wd_cpuse_model)
o wd_cpifc_<COMPONENT_USAGE> (e.g., wd_cpifc_model)
INBOUND PLUGS
methods
o handle<INBOUND_PLUG>
OUTBOUND PLUGS
methods
o fire_<OUTBOUND_PLUG>_plg
CONTEXT
constants
o wdctx_<NODE>
types
o element_<NODE>
o elements_<NODE>
USER-DEFINED ATTRIBUTES
ACTIONS
ORDINARY METHODS
IF_<VIEW> (e.g., IF_VIEW1) generated interface for view controllers - view interfaces
always private
<ATTRIBUTE> (e.g., RANKING)
WDCTX_<NODE> (e.g., WDCTX_SEARCH_RESULTS)
WD_GET_API()
WD_CREATE_ACTION()
GET_<USED_CONTROLLER>_CTR() e.g., GET_COMPONENTCONTROLLER_CTR() for
all used controllers defined in same component
WD_CPUSE_<COMPONENT_USAGE>() e.g., WD_CPUSE_MODEL() if component usage
is added to used controller list
WD_CPIFC_<COMPONENT_USAGE>() e.g., WD_CPIFC_MODEL() if interface controller
of used component is used controller
HANDLE<INBOUND_PLUG>()
FIRE_<OUTBOUND_PLUG>_PLG()
GET_<ACTION>_ACT()
ONACTION<ACTION>()
<ORDINARY_METHOD>()
IG_<WINDOW> generated public interface for window controllers
<ATTRIBUTE> flag PUBLIC checked
WDCTX_<NODE>
WD_GET_API()
FIRE_<OUTBOUND_PLUG>_PLG()
<ORDINARY_METHOD>()
For window controller all ordinary methods and outbound plugs are defined
as public.
IF_<WINDOW> generated private interface for window controllers
<ATTRIBUTE> flag PUBLIC not checked
WD_CREATE_ACTION()
GET_<CONTROLLER>_CTR() for all controllers defined in same component
WD_CPUSE_<COMPONENT_USAGE>() if component usage is added to used controller list
WD_CPIFC_<COMPONENT_USAGE>() if interface controller of used component is used
controller
HANDLE<INBOUND_PLUG>()
<EVENT_HANDLER_METHOD>()
For window controller all inbound plugs are defined as private.
Custom controllers similar to window controllers except no inbound or outbound
plugs. Instead event and event handlers, both of which are defined in private interface.
IG_<CUSTOM_CTR> generated public interface for custom controllers
<ATTRIBUTE> flag PUBLIC checked
WDCTX_<NODE>
WD_GET_API()
<ORDINARY_METHOD>()
IF_<CUSTOM_CTR> generated private interface for custom controllers
<ATTRIBUTE> flag PUBLIC not checked
WD_CREATE_ACTION()
GET_<CONTROLLER>_CTR() for all controllers defined in same component
WD_CPUSE_<COMPONENT_USAGE>() if component usage is added to used controller list
WD_CPIFC_<COMPONENT_USAGE>() if interface controller of used component is used
controller
<EVENT_HANDLER_METHOD>()
FIRE_<EVENT>_EVT
(Z)IWCI_<COMPONENT> (globally visible)
WD_GET_API()
<ORDINARY_METHOD>() flag INTERFACE checked
<SUPPLY_FUNCTION>() flag INTERFACE checked (automatically initializes context nodes
with data)
Can be accessed by controllers in other components
via WD_CPIFC_<COMPONENT_USAGE>
IG_COMPONENTCONTROLLER (global)
<ATTRIBUTE> flag PUBLIC checked
WDCTX_<NODE>
<ORDINARY_METHOD>() flag INTERFACE not checked
FIRE_<EVENT>_EVT flag INTERFACE checked
IF_COMPONENTCONTROLLER (local)
<ATTRIBUTE> flag PUBLIC not checked
WD_CREATE_ACTION()
GET_<CONTROLLER>_CTR() for all controllers defined in same component
WD_CPUSE_<COMPONENT_USAGE>() if component usage is added to used controller list
WD_CPIFC_<COMPONENT_USAGE>() if interface controller of used component is used
controller
<EVENT_HANDLER_METHOD>()
FIRE_<EVENT>_EVT flag INTERFACE not checked
Generic Web Dynpro API
IF_WD_CONTROLLER contains the functionality available for all controllers. Thus,
this interface is embedded in the interfaces IF_WD_VIEW_CONTROLLER and
IF_WD_COMPONENT.
Except for the View Controller, which has no public interface, the wd_get_api() is
defined in the public interface of all the controllers. Therefore, it can be called from
any controller that declares the usage of that controller. Is the following correct?
wd_this->wd_cpifc_<COMPONENT_USAGE>-wd_get_api()
Web Dynpro API for custom controllers (and embedded in view/window &
component controllers)
IF_WD_CONTROLLER
NAME: string
GET_ACTION()
GET_COMPONENT()
GET_CONTEXT()
GET_CONTROLLER_INFO()
GET_MESSAGE()
GET_MESSAGE_MANAGER()
GET_PERSONALIZATION_MANAGER()
IS_ALIVE()
GET_ACTION() Returns IF_WD_ACTION used to read & redefine action
properties. Can only be called from view controller methods
GET_COMPONENT() Returns IF_WD_COMPONENT. The following are
equivalent when not component controller:
WD_THIS->get_componentcontroller_ctr()->wd_get_api()
WD_COMP_CONTROLLER->wd_get_api()
WD_THIS->wd_get_api()->get_component
GET_CONTEXT() Returns IF_WD_CONTEXT. The following are equivalent ways
to access controller's root node:
WD_CONTEXT
WD_THIS->wd_get_api()->get_context()->ROOT_NODE
GET_CONTROLLER_INFO() Returns IF_WD_RR_CONTROLLER (controller's
name)
GET_MESSAGE_MANAGER() Returns IF_WD_MESSAGE_MANAGER (methods
used to report messages, clear the message stack or check existance of messages)
GET_PERSONALIZATION_MANAGER() Returns
IF_WD_PERSONALIZATION_MANAGER (methods used to load, save or delete
personalization variants. Not accessible from view or window controllers)
IS_ALIVE() Returns whether controller object has been cleared
Web Dynpro API for view & window controllers
IF_WD_CONTROLLER (see above)
IF_WD_NAVIGATION_SERVICES
PREPARE_DYNAMIC_NAVIGATION()
DO_DYNAMIC_NAVIGATION()
REMOVE_DYNAMIC_META_DATA()
IF_WD_NAVIG_SERVICES_NEW
PREPARE_DYNAMIC_NAVIGATION()
DO_DYNAMIC_NAVIGATION()
IF_WD_VIEW_CONTROLLER
FIRE_PLUG()
GET_EMBEDDING_WINDOW_CTLR()
GET_VIEW_INFO()
REQUEST_FOCUS()
REQUEST_FOCUS_ON_ACTION()
GET_CURRENT_ACTION()
GET_CURRENT_ACTION_INFO()
IS_CURRENT_ACTION_VALIDATING()
GET_VIEW_USAGE()
GET_CONTEXT_MENU_MANAGER()
FIRE_PLUG() Fires any plug using it's name as string parameter
GET_EMBEDDING_WINDOW_CTLR() Returns
IF_WD_WINDOW_CONTROLLER if the view or window is embedded in another
window (methods allow access to the meta data description of the window controller,
e.g., embedded views, navigation links, name of default view)
GET_VIEW_INFO() Returns IF_WD_RR_VIEW methods allow access to the meta
data description of the view controller (e.g., view name, life span, description)
REQUEST_FOCUS() sets the focus to a certain UI element if the element has its
value property bound to a context attribute. Can not be called from window
controller.
REQUEST_FOCUS_ON_ACTION() sets the focus to a certain UI element if the
element has the event property on_ bound to an action. Can not be called from
window controller.
GET_CURRENT_ACTION() Returns IF_WD_ACTION used to determine which
client side event was fired. Typically used in method wddobeforeaction(). Can not be
called from window controller.
GET_CURRENT_ACTION_INFO() Returns WDAPI_ACTION used to determine
which client side event was fired. Typically used in method wddobeforeaction().
IS_CURRENT_ACTION_VALIDATING() Returns ABAP_BOOL used to
determine if the current action is of type Standard (ABAP_TRUE) or Validation-
Independent (ABAP_FALSE). Used in connection with handling application errors.
Can not be called from window controller.
GET_VIEW_USAGE() Returns IF_WD_RR_VIEW_USAGE methods allow access
to the meta data about the view usage (view, name of the view usage, embedding
container). In addition, there are methods to define or create temporary container
assignments for the view usage and to create or delete temporary navigation links
between outbound plugs. Can not be called from the window controller.
GET_CONTEXT_MENU_MANAGER() Returns
IF_WD_CONTEXT_MENU_MANAGER methods allow access to the runtime objects
of context menus. Can not be called from window controller.
PREPARE_DYNAMIC_NAVIGATION()
& DO_DYNAMIC_NAVIGATION() Returns IF_WD_NAVIGATION_SERVICES
or IF_WD_NAVIGATION_SERVICES_NEW methods allow the definition of
navigation links dynamically. This is necessary if component usages are defined and
instantiated at runtime. Then the inbound plugs of the related interface views do not
exist at design time, which is the prerequisite to define static navigation links. If you
dynamically create plugs, you must dynamically delete them. The methods in
IF_WD_NAVIGATION_SERVICES_NEW return handles that may be used to delete
the dynamically defined navigation links subsequently. If the methods of the interface
IF_WD_NAVIGATION_SERVICES are used to create the navigation links, the
method remove_dynamic_meta_data() has to be called to remove the links.
Web Dynpro API for component controllers
IF_WD_CONTROLLER (see above)
IF_WD_COMPONENT
ID: String
ASSISTANCE_CLASS: CL_WD_COMPONENT_ASSISTANCE()
GET_ID()
GET_WINDOW_MANAGER()
GET_COMPONENT_INFO()
GET_PORTAL_MANAGER()
GET_CONFIGURATION_KEY()
GET_PERSONALIZATION_MANAGER()
GET_APPLICATION()
CANCEL_NAVIGATION()
ADD_EVENT_HANDLER()
REMOVE_EVENT_HANDLER()
GET_CMP_USAGE_GROUP()
CREATE_CMP_USAGE_GROUP()
HAS_CMP_USAGE_GROUP()
REMOVE_CMP_USAGE_GROUP()
REMOVE_PENDING_INPUT()
GET_ID() Returns unique ID (string) of the actual WD component
GET_WINDOW_MANAGER() Returns unique IF_WD_WINDOW_MANAGER.
Used to create modal popups or external dialog screens.
GET_COMPONENT_INFO() Returns unique IF_WD_RR_COMPONENT. Used to
access meta data description of the component and included entities.
GET_PORTAL_MANAGER() Returns unique IF_WD_PORTAL_INTEGRATION.
Allows access to information about the portal type and version embedding the WD
application. Contains methods to access portal functionality.
GET_APPLICATION() Returns unique IF_WD_APPLICATION.Used to access
meta data description of the application.
CANCEL_NAVIGATION() Used to prevent navigation. Must be called before
wddobeforenativation() is finished.
ADD_EVENT_HANDLER() Used to dynamically register an event handler method.
REMOVE_EVENT_HANDLER() Used to dynamically delete any dynamically
defined registration of an event handler for an event.
xxx_CMP_USAGE_GROUP() Used to handle component usages that are defined
dynamically. GET_ & CREATE_ return IF_WD_COMPONENT_USAGE_GROUP.
MESSAGE MANAGER API
WD_THIS->wd_get_api->get_message_manager()
IF_WD_MESSAGE_MANAGER
Category TEXT
REPORT_SUCCESS()
REPORT_WARNING()
REPORT_ERROR_MESSAGE()
REPORT_FATAL_ERROR_MESSAGE()
REPORT_ATTRIBUTE_ERROR_MESSAGE()
REPORT_ELEMENT_ERROR_MESSAGE()
Category EXCEPTION
REPORT_EXCEPTION()
REPORT_FATAL_EXCEPTION()
REPORT_ATTRIBUTE_EXCEPTION()
REPORT_ELEMENT_EXCEPTION()
Category T100
REPORT_T100_MESSAGE()
REPORT_ATTRIBUTE_T100_MESSAGE()
REPORT_ELEMENT_T100_MESSAGE()
IS_EMPTY()
HAS_VAL_ERRORS_FOR_WINDOW()
HAS_VALIDATION_ERRORS()
CLEAR_MESSAGES()
REMOVE_MESSAGE()
GET_MESSAGES()
GET_MESAGE_FOR_ID()
Standard Messages
1. report_success()
2. report_t100_message() with MSGTY = S, I
3. report_exception() with MESSAGE_TYPE = 0
Warnings
1. report_warning()
2. report_t100_message() with MSGTY = W
3. report_exception() with MESSAGE_TYPE = 1
Error Messages
1. report_error_message()
2. report_t100_message() with MSGTY = E
3. report_exception() with MESSAGE_TYPE = 2