on 11-21-2012 7:20 AM
Hi SAP gurus,
I have requirements for passing the data using wiring between two componets in FPM_OIF_COMPONENT. I tried to understand some standard wiring in PLM 7.3 between components /PLMU/WDC_RSA and /PLMU/WDC_RFO but couldn't get much idea about it as to how it has been done in Config. Can anybody please suggest on this? Your help will be more appreciated.
Thanks and Regards,
Sumesh
Dear all,
Wiring between components can be done mainly by two type of FPM class.
Transaction Handler class: It is implemented globally for a FPM Application. However, it is not mandatory to specify. So, you can make an application without using any transaction handler.
Use interface IF_FPM_WIRE_MODEL_TRANSACTION
Connector Class: It is main and mandatory part for implementing wire model. Here you can specify the Namespace and this namespace plays big role for passing data.
Namespace: The definition interface possesses a static attribute, “SV_NAMESPACE”, which should be filled with the namespace (ex. ‘FPM_DEMO’ or ‘BOL’ or user specific such as XYZ_NS) in the class constructor of a connector implementation.
Wire for Free UIBBs
Wire model is implemented on Web Dynpro component by implementing “IF_FPM_UIBB_MODEL” Web Dynpro interface. It contains only one method “GET_MODEL_API” which is used to set “FPM Feeder Model” for Free GUIBBs. It contains only one parameter “RO_FEEDER_MODEL”. So, we have to create a FPM Feeder Model class and assign to that parameter.
FPM Feeder Model Class – Interface “IF_FPM_FEEDER_MODEL” is implemented for creating Feeder Model Class.
Assistance class can also be used as Feeder Model Class and reference “WD_ASSIT” can used as Feeder model instance.
Ex: METHOD get_model_api .
ro_feeder_model = wd_assist.
ENDMETHOD.
Wire for GUIBBs: Nothing special we need to do that. Interface “IF_FPM_FEEDER_MODEL” is also implemented on feeder class for getting port support. We need to set port manually using structure “IF_FPM_FEEDER_MODEL=>CS_PORT_TYPE”. It contains three constants “COLLECTION”, “SELECTION” and “LEAD_SELECTION”. It should be properly configured.
In addition of this, create collection handler class that will be passed between components for retrieving and fetching data.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I am attaching my example that passing data between GUIBB and Free UIBB.
Code for Transaction handler class:
class ZCL_MY_TRAN_HANDLER definition
public
create public .
public section.
*"* public components of class ZCL_MY_TRAN_HANDLER
*"* do not include other source files here!!!
interfaces IF_FPM_WIRE_MODEL_TRANSACTION .
protected section.
*"* protected components of class ZCL_MY_TRAN_HANDLER
*"* do not include other source files here!!!
private section.
*"* private components of class ZCL_MY_TRAN_HANDLER
*"* do not include other source files here!!!
data MO_MSG_MAN type ref to IF_FPM_MESSAGE_MANAGER .
ENDCLASS.
CLASS ZCL_MY_TRAN_HANDLER IMPLEMENTATION.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_MY_TRAN_HANDLER->IF_FPM_WIRE_MODEL_TRANSACTION~AFTER_FLUSH
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
method IF_FPM_WIRE_MODEL_TRANSACTION~AFTER_FLUSH.
return.
endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_MY_TRAN_HANDLER->IF_FPM_WIRE_MODEL_TRANSACTION~AFTER_NEEDS_CONFIRMATION
* +-------------------------------------------------------------------------------------------------+
* | [--->] IO_EVENT TYPE REF TO CL_FPM_EVENT
* | [--->] IT_UIBBS TYPE FPM_T_UIBB_COMPONENTS
* | [<-->] CT_CONFIRMATION_REQUESTS TYPE FPM_T_CONFIRMATION_REQUESTS
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD if_fpm_wire_model_transaction~after_needs_confirmation.
*----- which event
CASE io_event->mv_event_id.
*----- start over
WHEN if_fpm_constants=>gc_event-start_over.
*----- raise confirmation request if state is dirty
CHECK if_fpm_wire_model_transaction~is_dirty( ) = abap_true.
APPEND cl_fpm_confirmation_request=>go_data_loss TO ct_confirmation_requests.
ENDCASE.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_MY_TRAN_HANDLER->IF_FPM_WIRE_MODEL_TRANSACTION~AFTER_PROCESS_BEFORE_OUTPUT
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
method IF_FPM_WIRE_MODEL_TRANSACTION~AFTER_PROCESS_BEFORE_OUTPUT.
RETURN.
endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_MY_TRAN_HANDLER->IF_FPM_WIRE_MODEL_TRANSACTION~AFTER_PROCESS_EVENT
* +-------------------------------------------------------------------------------------------------+
* | [--->] IO_EVENT TYPE REF TO CL_FPM_EVENT
* | [<-()] RV_RESULT TYPE FPM_EVENT_RESULT
* +--------------------------------------------------------------------------------------</SIGNATURE>
method IF_FPM_WIRE_MODEL_TRANSACTION~AFTER_PROCESS_EVENT.
CASE io_event->mv_event_id.
WHEN ''.
WHEN ''.
WHEN OTHERS.
ENDCASE.
endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_MY_TRAN_HANDLER->IF_FPM_WIRE_MODEL_TRANSACTION~IS_DIRTY
* +-------------------------------------------------------------------------------------------------+
* | [<-()] RV_IS_DIRTY TYPE BOOLE_D
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD if_fpm_wire_model_transaction~is_dirty.
rv_is_dirty = cl_fpm_wire_model_col_factory=>work_protection_is_dirty( ).
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_MY_TRAN_HANDLER->IF_FPM_WIRE_MODEL_TRANSACTION~START
* +-------------------------------------------------------------------------------------------------+
* | [--->] IO_MESSAGE_MANAGER TYPE REF TO IF_FPM_MESSAGE_MANAGER
* | [--->] IO_APP_PARAMETER TYPE REF TO IF_FPM_PARAMETER
* | [--->] IS_RUNTIME_INFO TYPE FPM_S_RUNTIME_INFO
* | [<---] EV_ALLOW_FPM_COMMIT TYPE BOOLE_D
* +--------------------------------------------------------------------------------------</SIGNATURE>
method IF_FPM_WIRE_MODEL_TRANSACTION~START.
mo_msg_man = io_message_manager.
ev_allow_fpm_commit = abap_false.
endmethod.
ENDCLASS.
Code for Connector Class:
class ZCL_MY_WIRE_CONNECTOR definition
public
create public .
public section.
*"* public components of class ZCL_MY_WIRE_CONNECTOR
*"* do not include other source files here!!!
interfaces IF_FPM_CONNECTOR .
interfaces IF_FPM_CONNECTOR_DEF .
interfaces IF_FPM_CONNECTOR_RUN .
class-methods CLASS_CONSTRUCTOR .
protected section.
*"* protected components of class ZCL_MY_WIRE_CONNECTOR
*"* do not include other source files here!!!
data MO_COLLECTION type ref to ZCL_COLLECTION_SUPPORT .
data MV_PORT_TYPE type FPM_MODEL_PORT_TYPE .
private section.
*"* private components of class ZCL_MY_WIRE_CONNECTOR
*"* do not include other source files here!!!
ENDCLASS.
CLASS ZCL_MY_WIRE_CONNECTOR IMPLEMENTATION.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZCL_MY_WIRE_CONNECTOR=>CLASS_CONSTRUCTOR
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
method CLASS_CONSTRUCTOR.
if_fpm_connector~sv_namespace = 'FPM_DEMO'. "_BY_SIMI'.
endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_MY_WIRE_CONNECTOR->IF_FPM_CONNECTOR_DEF~GET_PARAMETER_LIST
* +-------------------------------------------------------------------------------------------------+
* | [<---] ET_PARAMETER TYPE FPM_T_PARAMETER_DEF
* +--------------------------------------------------------------------------------------</SIGNATURE>
method IF_FPM_CONNECTOR_DEF~GET_PARAMETER_LIST.
*----- no parameters
RETURN.
endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_MY_WIRE_CONNECTOR->IF_FPM_CONNECTOR_DEF~GET_PARAMETER_VALUE_SET
* +-------------------------------------------------------------------------------------------------+
* | [--->] IV_PARAMETER_NAME TYPE FPM_PARAMETER_NAME
* | [--->] IR_OBJECT_KEY_SOURCE TYPE REF TO DATA
* | [--->] IR_OBJECT_KEY_TARGET TYPE REF TO DATA
* | [<---] ET_VALUE_SET TYPE FPM_T_PARAMETER_VALUE_SET
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD if_fpm_connector_def~get_parameter_value_set.
*----- no parameters
RETURN.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_MY_WIRE_CONNECTOR->IF_FPM_CONNECTOR_DEF~INITIALIZE
* +-------------------------------------------------------------------------------------------------+
* | [--->] IT_PARAMETER_VALUE TYPE FPM_T_PARAMETER_VALUE
* | [--->] IV_PORT_TYPE TYPE FPM_MODEL_PORT_TYPE
* +--------------------------------------------------------------------------------------</SIGNATURE>
method IF_FPM_CONNECTOR_DEF~INITIALIZE.
mv_port_type = iv_port_type.
if_fpm_connector_def~mv_wire_label = 'My Identity'.
endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_MY_WIRE_CONNECTOR->IF_FPM_CONNECTOR_DEF~SET_INPUT
* +-------------------------------------------------------------------------------------------------+
* | [--->] IO_INPUT TYPE REF TO OBJECT
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD if_fpm_connector_def~set_input.
mo_collection ?= io_input.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_MY_WIRE_CONNECTOR->IF_FPM_CONNECTOR_RUN~CREATE_ENTITY
* +-------------------------------------------------------------------------------------------------+
* | [--->] I_INITIAL_DATA TYPE ANY(optional)
* | [<-()] RO_RESULT TYPE REF TO OBJECT
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD if_fpm_connector_run~create_entity.
*----- no creation
RETURN.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_MY_WIRE_CONNECTOR->IF_FPM_CONNECTOR_RUN~GET_OUTPUT
* +-------------------------------------------------------------------------------------------------+
* | [--->] I_FILTER_DATA TYPE ANY(optional)
* | [<-()] RO_OUTPUT TYPE REF TO OBJECT
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD if_fpm_connector_run~get_output.
ro_output = mo_collection.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_MY_WIRE_CONNECTOR->IF_FPM_CONNECTOR_RUN~IS_CREATE_ALLOWED
* +-------------------------------------------------------------------------------------------------+
* | [--->] I_INITIAL_DATA TYPE ANY(optional)
* | [<-()] RV_ALLOWED TYPE ABAP_BOOL
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD if_fpm_connector_run~is_create_allowed.
**----- no creation allowed
* rv_allowed = abap_false.
ENDMETHOD.
ENDCLASS.
Code for Feeder Class (List GUIBB):
class ZCL_GUIBB_LIST definition
public
final
create public .
public section.
*"* public components of class ZCL_GUIBB_LIST
*"* do not include other source files here!!!
interfaces IF_FPM_GUIBB .
interfaces IF_FPM_GUIBB_LIST .
interfaces IF_FPM_FEEDER_MODEL .
protected section.
*"* protected components of class ZCL_GUIBB_LIST
*"* do not include other source files here!!!
data MO_CONNECTOR type ref to IF_FPM_CONNECTOR_RUN .
data MO_COLLECTION type ref to ZCL_COLLECTION_SUPPORT .
data:
ms_object_key TYPE c LENGTH 1 value 'A'. "#EC NOTEXT .
interface IF_FPM_FEEDER_MODEL load .
data MT_OUTPORT type IF_FPM_FEEDER_MODEL=>TY_T_PORT .
data MV_PORT_DESCRIPTION type FPM_MODEL_PORT_DESCRIPTION .
methods SET_UP_PORTS .
methods SET_UP_PORT
importing
!IV_PORT_TYPE type FPM_MODEL_PORT_TYPE .
private section.
*"* private components of class ZCL_GUIBB_LIST
*"* do not include other source files here!!!
types:
BEGIN OF sdisplay,
userid TYPE zde_userid,
password TYPE zde_pass,
name TYPE zde_empname,
role TYPE zde_role,
dob TYPE zde_dob,
doj TYPE zde_doj,
gender TYPE zde_gender,
address TYPE zde_empaddress,
phone TYPE zde_phoneno,
managerid TYPE zde_managerid,
rating TYPE zde_rating,
END OF sdisplay .
types:
tdisplay TYPE TABLE OF sdisplay .
data MS_DISPLAY type SDISPLAY .
data MT_DISPLAY type TDISPLAY .
data MS_CHANGE type FPMGB_S_CHANGELOG .
data MT_CHANGE type FPMGB_T_CHANGELOG .
data FLAG type BOOLEAN value 'X'. "#EC NOTEXT .
methods GET_COLLECTION .
ENDCLASS.
CLASS ZCL_GUIBB_LIST IMPLEMENTATION.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Private Method ZCL_GUIBB_LIST->GET_COLLECTION
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD get_collection.
IF mo_connector IS BOUND.
mo_collection ?= mo_connector->get_output( ).
ENDIF.
IF mo_collection IS BOUND.
IF mo_collection->mv_lead_selection_index IS INITIAL.
mo_collection->set_lead_selection_index( 1 ).
ENDIF.
ENDIF.
* Inintial time
IF mo_collection IS INITIAL.
CREATE OBJECT mo_collection.
mo_collection->set_lead_selection_index( 1 ).
ENDIF.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_GUIBB_LIST->IF_FPM_FEEDER_MODEL~GET_INPORT_KEY
* +-------------------------------------------------------------------------------------------------+
* | [<-()] RR_OBJECT_KEY TYPE REF TO DATA
* +--------------------------------------------------------------------------------------</SIGNATURE>
method IF_FPM_FEEDER_MODEL~GET_INPORT_KEY.
FIELD-SYMBOLS:
<ls_object_key> LIKE ms_object_key.
CREATE DATA rr_object_key LIKE ms_object_key.
ASSIGN rr_object_key->* TO <ls_object_key>.
<ls_object_key> = ms_object_key.
endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_GUIBB_LIST->IF_FPM_FEEDER_MODEL~GET_NAMESPACE
* +-------------------------------------------------------------------------------------------------+
* | [<-()] RV_NAMESPACE TYPE FPM_MODEL_NAMESPACE
* +--------------------------------------------------------------------------------------</SIGNATURE>
method IF_FPM_FEEDER_MODEL~GET_NAMESPACE.
rv_namespace = 'FPM_DEMO'.
endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_GUIBB_LIST->IF_FPM_FEEDER_MODEL~GET_OUTPORTS
* +-------------------------------------------------------------------------------------------------+
* | [<---] ET_OUTPORT TYPE TY_T_PORT
* +--------------------------------------------------------------------------------------</SIGNATURE>
method IF_FPM_FEEDER_MODEL~GET_OUTPORTS.
et_outport = mt_outport.
endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_GUIBB_LIST->IF_FPM_FEEDER_MODEL~GET_OUTPORT_DATA
* +-------------------------------------------------------------------------------------------------+
* | [--->] IV_PORT_TYPE TYPE FPM_MODEL_PORT_TYPE
* | [--->] IV_PORT_IDENTIFIER TYPE FPM_MODEL_PORT_IDENTIFIER
* | [<-()] RO_DATA TYPE REF TO OBJECT
* +--------------------------------------------------------------------------------------</SIGNATURE>
method IF_FPM_FEEDER_MODEL~GET_OUTPORT_DATA.
ro_data = mo_collection.
endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_GUIBB_LIST->IF_FPM_FEEDER_MODEL~SET_CONNECTOR
* +-------------------------------------------------------------------------------------------------+
* | [--->] IO_CONNECTOR TYPE REF TO IF_FPM_CONNECTOR_RUN
* +--------------------------------------------------------------------------------------</SIGNATURE>
method IF_FPM_FEEDER_MODEL~SET_CONNECTOR.
mo_connector = io_connector.
endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_GUIBB_LIST->IF_FPM_GUIBB_LIST~CHECK_CONFIG
* +-------------------------------------------------------------------------------------------------+
* | [--->] IO_LAYOUT_CONFIG TYPE REF TO IF_FPM_GUIBB_LIST_CONFIG
* | [<---] ET_MESSAGES TYPE FPMGB_T_MESSAGES
* +--------------------------------------------------------------------------------------</SIGNATURE>
method IF_FPM_GUIBB_LIST~CHECK_CONFIG.
endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_GUIBB_LIST->IF_FPM_GUIBB_LIST~FLUSH
* +-------------------------------------------------------------------------------------------------+
* | [--->] IT_CHANGE_LOG TYPE FPMGB_T_CHANGELOG
* | [--->] IT_DATA TYPE REF TO DATA
* | [--->] IV_OLD_LEAD_SEL TYPE I(optional)
* | [--->] IV_NEW_LEAD_SEL TYPE I(optional)
* +--------------------------------------------------------------------------------------</SIGNATURE>
method IF_FPM_GUIBB_LIST~FLUSH.
endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_GUIBB_LIST->IF_FPM_GUIBB_LIST~GET_DATA
* +-------------------------------------------------------------------------------------------------+
* | [--->] IV_EVENTID TYPE REF TO CL_FPM_EVENT
* | [--->] IT_SELECTED_FIELDS TYPE FPMGB_T_SELECTED_FIELDS(optional)
* | [--->] IV_RAISED_BY_OWN_UI TYPE BOOLE_D(optional)
* | [--->] IV_VISIBLE_ROWS TYPE I(optional)
* | [<---] ET_MESSAGES TYPE FPMGB_T_MESSAGES
* | [<---] EV_DATA_CHANGED TYPE BOOLE_D
* | [<---] EV_FIELD_USAGE_CHANGED TYPE BOOLE_D
* | [<---] EV_ACTION_USAGE_CHANGED TYPE BOOLE_D
* | [<---] EV_SELECTED_LINES_CHANGED TYPE BOOLE_D
* | [<-->] CT_DATA TYPE DATA
* | [<-->] CT_FIELD_USAGE TYPE FPMGB_T_FIELDUSAGE
* | [<-->] CT_ACTION_USAGE TYPE FPMGB_T_ACTIONUSAGE
* | [<-->] CT_SELECTED_LINES TYPE RSTABIXTAB
* | [<-->] CV_LEAD_INDEX TYPE SYTABIX
* | [<-->] CV_FIRST_VISIBLE_ROW TYPE I
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD IF_FPM_GUIBB_LIST~GET_DATA.
DATA: lv_sel_index TYPE i,
lv_col TYPE string.
*----- get data
get_collection( ).
ct_data = mo_collection->get_table( ).
ev_data_changed = abap_true.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_GUIBB_LIST->IF_FPM_GUIBB_LIST~GET_DEFAULT_CONFIG
* +-------------------------------------------------------------------------------------------------+
* | [--->] IO_LAYOUT_CONFIG TYPE REF TO IF_FPM_GUIBB_LIST_CONFIG
* +--------------------------------------------------------------------------------------</SIGNATURE>
method IF_FPM_GUIBB_LIST~GET_DEFAULT_CONFIG.
endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_GUIBB_LIST->IF_FPM_GUIBB_LIST~GET_DEFINITION
* +-------------------------------------------------------------------------------------------------+
* | [<---] EO_FIELD_CATALOG TYPE REF TO CL_ABAP_TABLEDESCR
* | [<---] ET_FIELD_DESCRIPTION TYPE FPMGB_T_LISTFIELD_DESCR
* | [<---] ET_ACTION_DEFINITION TYPE FPMGB_T_ACTIONDEF
* | [<---] ET_SPECIAL_GROUPS TYPE FPMGB_T_SPECIAL_GROUPS
* | [<---] ES_MESSAGE TYPE FPMGB_S_T100_MESSAGE
* | [<---] EV_ADDITIONAL_ERROR_INFO TYPE DOKU_OBJ
* | [<---] ET_DND_DEFINITION TYPE FPMGB_T_DND_DEFINITION
* +--------------------------------------------------------------------------------------</SIGNATURE>
method IF_FPM_GUIBB_LIST~GET_DEFINITION.
DATA: ls_field_usage TYPE fpmgb_s_listfield_descr,
lt_fxdval TYPE WDR_CONTEXT_ATTR_VALUE_LIST,
ls_fxdval TYPE wdr_context_attr_value.
eo_field_catalog ?= cl_abap_structdescr=>describe_by_data( mt_display ).
** field description
* ls_field_usage-name = 'TEXTREF'.
* ls_field_usage-technical_field = 'X'.
* APPEND ls_field_usage to et_field_description.
* CLEAR ls_field_usage-technical_field.
*
* ls_field_usage-name = 'LINKTOURL'.
* ls_field_usage-text_ref = 'TEXTREF'.
* ls_field_usage-header_label = 'linkToURL'.
* APPEND ls_field_usage to et_field_description.
*
* ls_field_usage-name = 'TEXTVIEW'.
* ls_field_usage-header_label = 'TextView'.
* APPEND ls_field_usage to et_field_description.
*
* ls_field_usage-name = 'INPUTFIELD'.
* ls_field_usage-header_label = 'InputField'.
* APPEND ls_field_usage to et_field_description.
*
* ls_field_usage-name = 'LINKTOACTION'.
* ls_field_usage-header_label = 'LinkToAction'.
* APPEND ls_field_usage to et_field_description.
*
* ls_field_usage-name = 'BUTTON'.
* ls_field_usage-header_label = 'Button'.
* APPEND ls_field_usage to et_field_description.
*
* ls_field_usage-name = 'IMAGE'.
* ls_field_usage-header_label = 'Image'.
* APPEND ls_field_usage to et_field_description.
*
* ls_field_usage-name = 'DROPDOWN'.
* ls_field_usage-header_label = 'Dropdown'.
*
* ls_fxdval-text = 'Printer'.
* ls_fxdval-value = 'PRINTER'.
* APPEND ls_fxdval to lt_fxdval.
*
* ls_fxdval-text = 'Loptop'.
* ls_fxdval-value = 'LOPTOP'.
* APPEND ls_fxdval to lt_fxdval.
*
* ls_fxdval-text = 'Webcam'.
* ls_fxdval-value = 'WEBCAM'.
* APPEND ls_fxdval to lt_fxdval.
*
* ls_field_usage-fixed_values = lt_fxdval.
* APPEND ls_field_usage to et_field_description.
endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_GUIBB_LIST->IF_FPM_GUIBB_LIST~PROCESS_EVENT
* +-------------------------------------------------------------------------------------------------+
* | [--->] IO_EVENT TYPE REF TO CL_FPM_EVENT
* | [--->] IV_RAISED_BY_OWN_UI TYPE BOOLE_D(optional)
* | [--->] IV_LEAD_INDEX TYPE SYTABIX
* | [--->] IV_EVENT_INDEX TYPE SYTABIX
* | [--->] IT_SELECTED_LINES TYPE RSTABIXTAB
* | [<---] EV_RESULT TYPE FPM_EVENT_RESULT
* | [<---] ET_MESSAGES TYPE FPMGB_T_MESSAGES
* +--------------------------------------------------------------------------------------</SIGNATURE>
method IF_FPM_GUIBB_LIST~PROCESS_EVENT.
*----- which event?
CASE io_event->mv_event_id.
*----- lead selection
WHEN if_fpm_guibb_list=>gc_fpm_event_on_lead_sel.
*----- manage own lead selection change
CHECK iv_raised_by_own_ui = abap_true.
mo_collection->set_lead_selection_index( iv_lead_index ).
*----- all other events
WHEN OTHERS.
ENDCASE.
endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_GUIBB_LIST->IF_FPM_GUIBB~GET_PARAMETER_LIST
* +-------------------------------------------------------------------------------------------------+
* | [<-()] RT_PARAMETER_DESCR TYPE FPMGB_T_PARAM_DESCR
* +--------------------------------------------------------------------------------------</SIGNATURE>
method IF_FPM_GUIBB~GET_PARAMETER_LIST.
endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_GUIBB_LIST->IF_FPM_GUIBB~INITIALIZE
* +-------------------------------------------------------------------------------------------------+
* | [--->] IT_PARAMETER TYPE FPMGB_T_PARAM_VALUE
* | [--->] IO_APP_PARAMETER TYPE REF TO IF_FPM_PARAMETER(optional)
* | [--->] IV_COMPONENT_NAME TYPE FPM_COMPONENT_NAME(optional)
* | [--->] IS_CONFIG_KEY TYPE WDY_CONFIG_KEY(optional)
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD if_fpm_guibb~initialize.
set_up_ports( ).
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Protected Method ZCL_GUIBB_LIST->SET_UP_PORT
* +-------------------------------------------------------------------------------------------------+
* | [--->] IV_PORT_TYPE TYPE FPM_MODEL_PORT_TYPE
* +--------------------------------------------------------------------------------------</SIGNATURE>
method SET_UP_PORT.
FIELD-SYMBOLS:
<ls_port> LIKE LINE OF mt_outport,
<ls_object_key> LIKE ms_object_key.
*----- collection outport
APPEND INITIAL LINE TO mt_outport ASSIGNING <ls_port>.
<ls_port>-type = iv_port_type.
CREATE DATA <ls_port>-object_key LIKE ms_object_key.
ASSIGN <ls_port>-object_key->* TO <ls_object_key>.
<ls_object_key> = ms_object_key.
<ls_port>-identifier = ms_object_key.
<ls_port>-description = mv_port_description.
endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Protected Method ZCL_GUIBB_LIST->SET_UP_PORTS
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD set_up_ports.
mv_port_description = 'selection outport'.
*----- selection outport
set_up_port( if_fpm_feeder_model=>cs_port_type-selection ).
mv_port_description = 'lead selection outport'.
*----- lead selection outport
set_up_port( if_fpm_feeder_model=>cs_port_type-lead_selection ).
ENDMETHOD.
ENDCLASS.
Code for Assistance Class also working as Feeder Model Class:
class ZCL_FREEGUIBB_ASSIT definition
public
inheriting from CL_WD_COMPONENT_ASSISTANCE
create public .
public section.
*"* public components of class ZCL_FREEGUIBB_ASSIT
*"* do not include other source files here!!!
interfaces IF_FPM_FEEDER_MODEL .
methods BEFORE_PBO .
methods INIT
importing
!IO_ATTR_NODE type ref to IF_WD_CONTEXT_NODE .
protected section.
*"* protected components of class ZCL_FREEGUIBB_ASSIT
*"* do not include other source files here!!!
private section.
*"* private components of class ZCL_FREEGUIBB_ASSIT
*"* do not include other source files here!!!
data MO_CONNECTOR type ref to IF_FPM_CONNECTOR_RUN .
data MO_ATTR_NODE type ref to IF_WD_CONTEXT_NODE .
data MO_COLLECTION type ref to ZCL_COLLECTION_SUPPORT .
ENDCLASS.
CLASS ZCL_FREEGUIBB_ASSIT IMPLEMENTATION.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_FREEGUIBB_ASSIT->BEFORE_PBO
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD before_pbo.
DATA:
ls_data TYPE ZCL_COLLECTION_SUPPORT=>ty_data,
lo_rtti TYPE REF TO cl_abap_structdescr,
lr_data TYPE REF TO data,
lt_prop TYPE wdr_context_prop_for_node_tab.
FIELD-SYMBOLS:
<ls_data> TYPE any,
<ls_prop> LIKE LINE OF lt_prop.
CHECK mo_attr_node IS BOUND.
IF mo_connector IS BOUND.
mo_collection ?= mo_connector->get_output( ).
ENDIF.
IF mo_collection IS BOUND.
ls_data = mo_collection->get_lead_selection( ).
ENDIF.
lo_rtti = mo_attr_node->get_node_info( )->get_static_attributes_type( ).
CREATE DATA lr_data TYPE HANDLE lo_rtti.
ASSIGN lr_data->* TO <ls_data>.
MOVE-CORRESPONDING ls_data TO <ls_data>.
mo_attr_node->set_static_attributes( static_attributes = <ls_data> ).
CHECK mo_collection IS INITIAL.
mo_attr_node->get_attribute_props_for_node( IMPORTING properties = lt_prop ).
LOOP AT lt_prop ASSIGNING <ls_prop>.
<ls_prop>-enabled = abap_false.
ENDLOOP.
mo_attr_node->set_attribute_props_for_node( lt_prop ).
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_FREEGUIBB_ASSIT->IF_FPM_FEEDER_MODEL~GET_INPORT_KEY
* +-------------------------------------------------------------------------------------------------+
* | [<-()] RR_OBJECT_KEY TYPE REF TO DATA
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD if_fpm_feeder_model~get_inport_key.
FIELD-SYMBOLS:
<ls_object_key> TYPE any.
CREATE DATA rr_object_key TYPE c LENGTH 1.
ASSIGN rr_object_key->* TO <ls_object_key>.
<ls_object_key> = 'A'.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_FREEGUIBB_ASSIT->IF_FPM_FEEDER_MODEL~GET_NAMESPACE
* +-------------------------------------------------------------------------------------------------+
* | [<-()] RV_NAMESPACE TYPE FPM_MODEL_NAMESPACE
* +--------------------------------------------------------------------------------------</SIGNATURE>
method IF_FPM_FEEDER_MODEL~GET_NAMESPACE.
rv_namespace = 'FPM_DEMO_SIMI'.
endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_FREEGUIBB_ASSIT->IF_FPM_FEEDER_MODEL~GET_OUTPORTS
* +-------------------------------------------------------------------------------------------------+
* | [<---] ET_OUTPORT TYPE TY_T_PORT
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD if_fpm_feeder_model~get_outports.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_FREEGUIBB_ASSIT->IF_FPM_FEEDER_MODEL~GET_OUTPORT_DATA
* +-------------------------------------------------------------------------------------------------+
* | [--->] IV_PORT_TYPE TYPE FPM_MODEL_PORT_TYPE
* | [--->] IV_PORT_IDENTIFIER TYPE FPM_MODEL_PORT_IDENTIFIER
* | [<-()] RO_DATA TYPE REF TO OBJECT
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD if_fpm_feeder_model~get_outport_data.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_FREEGUIBB_ASSIT->IF_FPM_FEEDER_MODEL~SET_CONNECTOR
* +-------------------------------------------------------------------------------------------------+
* | [--->] IO_CONNECTOR TYPE REF TO IF_FPM_CONNECTOR_RUN
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD if_fpm_feeder_model~set_connector.
mo_connector = io_connector.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_FREEGUIBB_ASSIT->INIT
* +-------------------------------------------------------------------------------------------------+
* | [--->] IO_ATTR_NODE TYPE REF TO IF_WD_CONTEXT_NODE
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD init.
mo_attr_node = io_attr_node.
ENDMETHOD.
ENDCLASS.
Code for Collection support class (Used for Providing Data):
class ZCL_COLLECTION_SUPPORT definition
public
create private
global friends ZCL_GUIBB_LIST .
public section.
*"* public components of class ZCL_COLLECTION_SUPPORT
*"* do not include other source files here!!!
types:
BEGIN OF ty_data,
userid TYPE zde_userid,
password TYPE zde_pass,
name TYPE zde_empname,
role TYPE zde_role,
dob TYPE zde_dob,
doj TYPE zde_doj,
gender TYPE zde_gender,
address TYPE zde_empaddress,
phone TYPE zde_phoneno,
managerid TYPE zde_managerid,
rating TYPE zde_rating,
END OF ty_data .
types:
t_data TYPE STANDARD TABLE OF ty_data
WITH DEFAULT KEY .
data MV_LEAD_SELECTION_INDEX type I read-only .
methods GET_TABLE
returning
value(RT_DATA) type T_DATA .
methods GET_LEAD_SELECTION
returning
value(RS_DATA) type TY_DATA .
methods SET_TABLE
importing
!IT_DATA type T_DATA .
methods SET_LEAD_SELECTION_INDEX
importing
!IV_INDEX type I .
methods SET_ATTRIBUTE
importing
!IV_ATTRIBUTE type NAME_KOMP
!I_VALUE type ANY
!IV_INDEX type I optional .
methods GET_TOTAL_COUNT
returning
value(RV_COUNT) type I .
protected section.
*"* protected components of class ZCL_COLLECTION_SUPPORT
*"* do not include other source files here!!!
methods CONSTRUCTOR .
private section.
*"* private components of class ZCL_COLLECTION_SUPPORT
*"* do not include other source files here!!!
data MT_DATA type T_DATA .
type-pools ABAP .
data MV_IS_DIRTY type ABAP_BOOL value ABAP_FALSE. "#EC NOTEXT .
methods CREATE_DATA .
ENDCLASS.
CLASS ZCL_COLLECTION_SUPPORT IMPLEMENTATION.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Protected Method ZCL_COLLECTION_SUPPORT->CONSTRUCTOR
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD constructor.
create_data( ).
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Private Method ZCL_COLLECTION_SUPPORT->CREATE_DATA
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
User | Count |
---|---|
101 | |
13 | |
13 | |
11 | |
11 | |
7 | |
6 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.