Sei sulla pagina 1di 6

If an employee enters his/her working hours thru CATS i.e. TCode CAT2.

How to integrate CATS with TMW (Time Manager's Workspace) so that the supervisor or time adminstrator could approve the employee working h ours thru TMW. Time Manager's Workplace is a option for managers to record the time datas of their own subordinates and even he/she can include the employees not belong to his control. We need to configure the TMW in img, using various initutive id's, we can enter the time datas, in background we have assigned this id's to the corresponding Infotypes record. We have four types of views in TMW, One Day view, Multi day, Multi Person and Team View. The manager can select any type of view to enter the time datas. It i especially for the decentralized department. /GLB/HGTHRN_ITFIELD_FORM ((reference for locking)) ************************************************** FUNCTION sww_wi_start. *"---------------------------------------------------------------------*"*"Lokale Schnittstelle: *" IMPORTING *" VALUE(CALLBACK_FB) LIKE SWWWIHEAD-WI_CBFB DEFAULT SPACE *" VALUE(CHECKED_WI) LIKE SWWWIHEAD-WI_CHCKWI DEFAULT SWFCO_NO_ID *" VALUE(CONFIRM) LIKE SWWWIHEAD-WI_CONFIRM DEFAULT SPACE *" VALUE(CREATOR) LIKE SWWWIHEAD-WI_CREATOR *" VALUE(DESIRED_END_ACTION) TYPE SWW_DEACT DEFAULT *" SWFCO_WI_DEF_DH_ACT *" VALUE(DESIRED_END_DATE) TYPE SWW_DED DEFAULT SWFCO_NO_DATE *" VALUE(DESIRED_END_TIME) TYPE SWW_DET DEFAULT SWFCO_NO_TIME *" VALUE(DESIRED_START_DATE) TYPE SWW_DSD DEFAULT SWFCO_NO_DATE *" VALUE(DESIRED_START_TIME) TYPE SWW_DST DEFAULT SWFCO_NO_TIME *" VALUE(LANGUAGE) LIKE SWWWIHEAD-WI_LANG DEFAULT SY-LANGU *" VALUE(LATEST_END_ACTION) TYPE SWW_LEACT DEFAULT *" SWFCO_WI_DEF_DH_ACT *" VALUE(LATEST_END_DATE) TYPE SWW_LED DEFAULT SWFCO_NO_DATE *" VALUE(LATEST_END_ESCALATION) TYPE SWW_LEESC DEFAULT *" SWFCO_NO_ESC *" VALUE(LATEST_END_TIME) TYPE SWW_LET DEFAULT SWFCO_NO_TIME *" VALUE(LATEST_START_ACTION) TYPE SWW_LSACT DEFAULT *" SWFCO_WI_DEF_DH_ACT *" VALUE(LATEST_START_DATE) TYPE SWW_LSD DEFAULT SWFCO_NO_DATE *" VALUE(LATEST_START_TIME) TYPE SWW_LST DEFAULT SWFCO_NO_TIME *" VALUE(MAX_EVENT_COUNT) LIKE SWWEI-MAX_COUNT DEFAULT *" SWFCO_DEF_MAX_EVT_CNT *" VALUE(PRIORITY) LIKE SWWWIHEAD-WI_PRIO DEFAULT SWFCO_NO_PRIO *" VALUE(TASK) LIKE SWWWIHEAD-WI_RH_TASK *" VALUE(WORKITEM_TYPE) LIKE SWWWIHEAD-WI_TYPE DEFAULT SPACE *" VALUE(DO_COMMIT) LIKE SWWCOMMIT-COMMITFLAG DEFAULT 'X' *" VALUE(DO_SYNC_CALLBACK) LIKE SWWCOMMIT-SYNCFLAG DEFAULT SPACE *" VALUE(TEXT) LIKE SWWWIHEAD-WI_TEXT DEFAULT SPACE *" VALUE(DO_SYNC_WI_CHAIN) LIKE SWWWIHEAD-SYNCCHAIN DEFAULT SPACE *" VALUE(CREATED_BY_USER) LIKE SY-UNAME DEFAULT SY-UNAME *" VALUE(CREATED_BY_ADDRESS) LIKE SWWADDRKEY STRUCTURE SWWADDRKEY *" DEFAULT SPACE *" VALUE(CALLED_IN_BACKGROUND) LIKE SWWCOMMIT-DIALOGFLAG DEFAULT *" SPACE *" VALUE(STEP_MODELED_WI_DISPLAY) LIKE SWWWIHEAD-WLC_DISPL DEFAULT

*" SPACE *" VALUE(NO_DEADLINE_PARAMETERS) LIKE SWWCOMMIT-DEADLCKFLG DEFAULT *" SPACE *" VALUE(RESTRICTED_LOG) LIKE SWWWIHEAD-WI_RESTLOG DEFAULT SPACE *" VALUE(SECONDS_UNTIL_TIMEOUT) LIKE SWWWIHEAD-TIMEOUT OPTIONAL *" VALUE(CREATE_EVENT) LIKE SWWCOMMIT-EVENTFLAG DEFAULT SPACE *" VALUE(STATUS_EVENT) LIKE SWWWIHEAD-STATUS_EVT DEFAULT SPACE *" VALUE(XML_PROTOCOL) LIKE SWD_PROTCL STRUCTURE SWD_PROTCL *" OPTIONAL *" VALUE(WLC_FLAGS) LIKE SWWWIHEAD-WLC_FLAGS OPTIONAL *" VALUE(START_PROPERTIES) TYPE SWW_PROPS OPTIONAL *" VALUE(DEBUG_FLAG) TYPE XFELD DEFAULT SPACE *" VALUE(TRACE_FLAG) TYPE XFELD DEFAULT SPACE *" VALUE(WI_CONTAINER_HANDLE) TYPE REF TO IF_SWF_CNT_CONTAINER *" OPTIONAL *" VALUE(START_ASYNCHRONOUS) TYPE XFELD DEFAULT SPACE *" EXPORTING *" VALUE(WI_ID) LIKE SWWWIHEAD-WI_ID *" VALUE(WI_HEADER) LIKE SWWWIHEAD STRUCTURE SWWWIHEAD *" VALUE(RETURN) LIKE SWOTRETURN STRUCTURE SWOTRETURN *" VALUE(WI_RESULT) LIKE SWWWIRES STRUCTURE SWWWIRES *" VALUE(SWF_RETURN) TYPE SWF_RETURN *" VALUE(NEW_STATUS) TYPE SWR_WISTAT *" TABLES *" AGENTS STRUCTURE SWHACTOR OPTIONAL *" DEADLINE_AGENTS STRUCTURE SWHACTOR OPTIONAL *" DESIRED_END_AGENTS STRUCTURE SWHACTOR OPTIONAL *" LATEST_START_AGENTS STRUCTURE SWHACTOR OPTIONAL *" EXCLUDED_AGENTS STRUCTURE SWHACTOR OPTIONAL *" NOTIFICATION_AGENTS STRUCTURE SWHACTOR OPTIONAL *" SECONDARY_METHODS STRUCTURE SWWMETHODS OPTIONAL *" WI_CONTAINER STRUCTURE SWCONT OPTIONAL *" COMP_EVENTS STRUCTURE SWWCOMPEVT OPTIONAL *" EXCEPTIONS *" ID_NOT_CREATED *" READ_FAILED *" IMMEDIATE_START_NOT_POSSIBLE *" EXECUTION_FAILED *" INVALID_STATUS *"---------------------------------------------------------------------DATA: ls_wi_create TYPE swwscrtpar. DATA: l_excp TYPE REF TO cx_swf_run_wim. DATA: l_excp_wfm TYPE REF TO cx_swf_wfm. DATA: l_crt_ctx TYPE REF TO if_swf_ifs_parameter_container. DATA: l_checked_wi LIKE swwwihead-wi_chckwi. DATA: l_latest_end_escalation TYPE sww_leesc. DATA: l_max_event_count LIKE swwei-max_count. DATA: l_do_sync_callback LIKE swwcommit-syncflag. DATA: l_do_sync_wi_chain LIKE swwwihead-syncchain. DATA: l_step_modeled_wi_display LIKE swwwihead-wlc_displ. DATA: l_created_by_address LIKE swwaddrkey. DATA: l_workitem_type LIKE swwwihead-wi_type. DATA: l_seconds_until_timeout LIKE swwwihead-timeout. DATA: l_max_retry_count TYPE swwwihead-max_retry. DATA: l_logical_system LIKE tbdls-logsys. DATA: l_properties TYPE sww_wihext. DATA: l_status TYPE sww_wistat. DATA: l_use_wiid_as_objid TYPE swwcommit-widasobjid. DATA: l_node_type TYPE swd_nodetp. DATA: l_wi_rejectable TYPE sww_reject.

DATA: lh_txmgr TYPE REF TO cl_swf_run_transaction_manager. DATA: lh_wi_handle TYPE REF TO if_swf_run_wim_internal. DATA: l_fbname LIKE swlloghist-method VALUE 'SWW_WI_START'. DATA: ls_t100msg TYPE swf_t100ms. DATA: lr_srv_class TYPE REF TO cl_swf_app_log. * DATA: lh_alm_context TYPE REF TO if_swf_alm_context. DATA: l_enqueue_owner TYPE string. DATA: lh_workflow_start TYPE REF TO cl_swf_run_workflow_start. DATA: lh_transaction TYPE REF TO if_swf_utl_transaction. DATA: l_do_commit TYPE xfeld. DATA: l_transaction_created type xfeld. *- set commit flag IF do_commit NE space. l_do_commit = 'X'. ENDIF. *- initialize parameters (which will be ignored) l_checked_wi = checked_wi. l_latest_end_escalation = swfco_no_esc. l_max_event_count = swfco_def_max_evt_cnt. l_do_sync_callback = space. l_do_sync_wi_chain = space. l_step_modeled_wi_display = space. l_created_by_address = space. l_workitem_type = space. l_seconds_until_timeout = space. l_max_retry_count = swfco_no_retry. l_logical_system = space. l_status = swfco_wi_status_ready. *-------------------------------------------------------------------------------*- create workitem *-------------------------------------------------------------------------------TRY. *- create parameters for new factory PERFORM get_creation_parameters TABLES agents deadline_agents desired_end_agents latest_start_agents excluded_agents notification_agents wi_container comp_events USING callback_fb l_checked_wi confirm creator desired_end_action desired_end_date desired_end_time desired_start_date desired_start_time language latest_end_action latest_end_date l_latest_end_escalation

latest_end_time latest_start_action latest_start_date latest_start_time l_max_event_count l_max_retry_count priority task l_workitem_type l_do_commit l_do_sync_callback text l_do_sync_wi_chain created_by_user l_created_by_address called_in_background l_logical_system l_step_modeled_wi_display no_deadline_parameters restricted_log l_seconds_until_timeout create_event status_event xml_protocol wlc_flags l_properties l_status l_use_wiid_as_objid l_node_type l_wi_rejectable CHANGING wi_container_handle ls_wi_create l_crt_ctx l_excp. IF l_excp IS BOUND. cl_swf_utl_exception_services=>raise_cx_swf_run_wim( l_excp ). ENDIF. *- create transaction and force commit work lh_transaction = cl_swf_utl_transaction=>get( ). IF lh_transaction IS NOT BOUND. lh_transaction = cl_swf_utl_transaction=>create( im_commit_work_control = l_do_commit ). l_transaction_created = 'X'. ENDIF. IF do_commit EQ 'W'. CALL METHOD lh_transaction->set_trfc_executed( ). ENDIF. l_enqueue_owner = l_fbname. CALL METHOD cl_swf_run_transaction_manager=>get_instance EXPORTING im_transaction = lh_transaction im_enqueue_owner = l_enqueue_owner RECEIVING re_instance = lh_txmgr. CALL METHOD cl_swf_run_wim_factory=>create_via_api EXPORTING im_context = l_crt_ctx

im_parameter im_tx im_language RECEIVING re_wi_handle

= ls_wi_create = lh_txmgr = language = lh_wi_handle.

* * * *

IF lh_wi_handle->m_sww_wihead-wi_type eq swfco_wi_normal. "note 1069661 CALL METHOD lh_wi_handle->write_success EXPORTING im_method = l_fbname. ENDIF. CALL METHOD lh_txmgr->save( ). IF l_do_commit EQ 'X'. COMMIT WORK. ENDIF. CATCH cx_swf_run_wim INTO l_excp. IF l_transaction_created EQ 'X'. CALL METHOD lh_transaction->remove( ). ENDIF. lh_alm_context = cl_swf_alm_factory=>create_context( im_category = cl_swf_alm_factory=>c_cat_wi_create im_system_type = cl_swf_alm_factory=>c_system_webflow ). CALL METHOD lh_alm_context->raise_exception( l_excp ). MESSAGE ID l_excp->t100_msg-msgid TYPE l_excp->t100_msg-msgty NUMBER l_excp->t100_msg-msgno WITH l_excp->t100_msg-msgv1 l_excp->t100_msg-msgv2 l_excp->t100_msg-msgv3 l_excp->t100_msg-msgv4 RAISING id_not_created. ENDTRY.

*-------------------------------------------------------------------------------*- start workitem *-------------------------------------------------------------------------------TRY. IF lh_wi_handle->m_sww_wihead-wi_type EQ swfco_wi_normal OR lh_wi_handle->m_sww_wihead-wi_type EQ swfco_wi_flow OR lh_wi_handle->m_sww_wihead-wi_type EQ swfco_wi_batch. CALL METHOD cl_swf_run_workflow_start=>get_instance_for_start EXPORTING im_wihandle = lh_wi_handle im_txmgr = lh_txmgr im_language = language im_user = created_by_user im_background = called_in_background im_start_dialog = do_sync_wi_chain im_execute_in_background = start_asynchronous im_log_method = l_fbname RECEIVING re_instance = lh_workflow_start. CALL METHOD lh_workflow_start->set_do_commit( l_do_commit ). CALL METHOD lh_workflow_start->execute( ). ENDIF. CALL METHOD lh_txmgr->save( ). IF l_do_commit EQ 'X'. CALL METHOD lh_txmgr->commit( ).

ENDIF. CALL METHOD lh_txmgr->dequeue( ). CATCH cx_swf_run_wim INTO l_excp. IF l_transaction_created EQ 'X'. CALL METHOD lh_transaction->remove( ). ENDIF. CALL METHOD lh_txmgr->dequeue( ). MESSAGE ID l_excp->t100_msg-msgid TYPE l_excp->t100_msg-msgty NUMBER l_excp->t100_msg-msgno WITH l_excp->t100_msg-msgv1 l_excp->t100_msg-msgv2 l_excp->t100_msg-msgv3 l_excp->t100_msg-msgv4 RAISING id_not_created. ENDTRY. IF l_transaction_created EQ 'X'. CALL METHOD lh_transaction->remove( ). ENDIF. *- set export parameter wi_id = lh_wi_handle->m_sww_wihead-wi_id. IF wi_header IS REQUESTED. MOVE-CORRESPONDING lh_wi_handle->m_sww_wihead TO wi_header. ENDIF. IF return IS REQUESTED OR swf_return IS REQUESTED. swf_return = lh_wi_handle->get_wi_return( ). MOVE-CORRESPONDING swf_return TO return. ENDIF. IF wi_result IS REQUESTED. MOVE-CORRESPONDING lh_wi_handle->m_sww_wihead TO wi_result. ENDIF. IF new_status IS REQUESTED. new_status-status = lh_wi_handle->m_sww_wihead-wi_stat. CALL METHOD cl_swf_utl_status=>get_status_text EXPORTING im_status = new_status-status im_langu = language RECEIVING re_text = new_status-statustext. ENDIF. ENDFUNCTION. *************************************************** rpwfpa01 pernr awart begda endda days hours groupleaders approver date time submitted

Potrebbero piacerti anche