Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- FORM get_content_connection USING p_objid TYPE bapisrmdoc-guid
- p_docclass TYPE bapisrmdoc-docclass
- p_version TYPE bapisrmdoc-version
- p_context TYPE bapidoccontext
- CHANGING p_sp_document TYPE REF TO if_srm_sp_document
- RAISING cx_srm.
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) FORM GET_CONTENT_CONNECTION, Íà÷àëî A
- *$*$-Start: (1)---------------------------------------------------------------------------------$*$*
- ENHANCEMENT 1 ZLSRM_BAPI_DOCUMENTF01_2. "active version
- DATA:
- l_sps_id TYPE string,
- l_rms_id TYPE string,
- l_dps_id TYPE string,
- l_rep_type TYPE string,
- l_kpro_doc_id TYPE srmgs_doc_id,
- l_doc_id TYPE string,
- lt_wdcl_user TYPE STANDARD TABLE OF srmwdcluser,
- wa_wdcl_user TYPE srmwdcluser,
- lt_sp_poid TYPE srm_list_poid,
- l_str TYPE string,
- l_offset TYPE i,
- l_document2 TYPE REF TO cl_srm_document2,
- l_dm_rep TYPE REF TO cl_dm_documents,
- l_fw_connector TYPE REF TO cl_srm_rmf_connector,
- lif_srm TYPE REF TO if_srm,
- lif_srm_service TYPE REF TO if_srm_srm_service,
- lif_client_service TYPE REF TO if_srm_srm_client_service,
- lif_generic_sp TYPE REF TO if_srm_generic_sp,
- lif_sp_document TYPE REF TO if_srm_sp_document,
- lif_poid TYPE REF TO if_srm_poid,
- lif_model_poid TYPE REF TO if_srm_poid,
- ex_gsp TYPE REF TO cx_srm_gsp,
- ex_dm TYPE REF TO cx_dm
- .
- *-- WebDAV Repository: rms id and sps id must be supplied
- * KPro Repository: either doc class or (rms id and sps id) must be supplied
- * if only doc class is known, rms id and sps id can be red from doc properties
- IF p_context-rms_id IS NOT INITIAL AND p_context-sps_id IS NOT INITIAL.
- l_rms_id = p_context-rms_id.
- l_sps_id = p_context-sps_id.
- ELSEIF p_docclass IS NOT INITIAL.
- TRY.
- l_kpro_doc_id-class = p_docclass.
- l_kpro_doc_id-objid = p_objid.
- l_doc_id = l_kpro_doc_id.
- CREATE OBJECT l_document2
- EXPORTING
- doc_id = l_doc_id.
- l_rms_id = l_document2->if_srm_gsp_properties~get_property( 'SRM_RMS_ID' ).
- l_sps_id = l_document2->if_srm_gsp_properties~get_property( 'SRM_SPS_ID' ).
- l_rep_type = srmgs_c_repository_kpro.
- CATCH cx_srm_gsp INTO ex_gsp.
- CASE ex_gsp->error_type.
- WHEN cx_srm_gsp=>not_authorized.
- RAISE EXCEPTION TYPE cx_srm_document_client
- EXPORTING textid = cx_srm_document_client=>et_not_authorized.
- WHEN cx_srm_gsp=>parameter_error.
- RAISE EXCEPTION TYPE cx_srm_dcl_backend
- EXPORTING textid = cx_srm_dcl_backend=>et_parameter_error.
- WHEN cx_srm_gsp=>not_found or cx_srm_gsp=>doc_class_not_found .
- RAISE EXCEPTION TYPE cx_srm_dcl_backend
- EXPORTING textid = cx_srm_dcl_backend=>et_doc_not_found
- doc_id = l_doc_id.
- WHEN OTHERS.
- RAISE EXCEPTION TYPE cx_srm_document_client
- EXPORTING textid = cx_srm_document_client=>et_unexpected.
- ENDCASE.
- ENDTRY.
- ELSE.
- * documentclass and doc_context must not both be initial,
- ** if documentclass is 'WebDAV', doc_context must not be initial
- RAISE EXCEPTION TYPE cx_srm_dcl_backend
- EXPORTING textid = cx_srm_dcl_backend=>et_parameter_error.
- ENDIF.
- *-- create framework connector
- CREATE OBJECT l_fw_connector
- EXPORTING sps_id = l_sps_id.
- lif_srm = l_fw_connector->get_if_srm( ).
- lif_srm_service ?= lif_srm->get_srm_service( ).
- lif_client_service ?= lif_srm_service.
- *-- if doc class is not supplied, repository can be kpro or webdav. some repository
- * parameter must be determined
- IF p_docclass IS INITIAL.
- lif_model_poid ?= lif_client_service->poid_create_model( im_rms_id = l_rms_id
- im_sps_id = l_sps_id ).
- lif_generic_sp ?= lif_srm_service->get_sp_connection( im_poid = lif_model_poid ).
- l_dm_rep = lif_generic_sp->get_dm_repository( ).
- IF l_dm_rep IS INITIAL.
- RAISE EXCEPTION TYPE cx_srm_dcl_backend
- EXPORTING textid = cx_srm_dcl_backend=>et_parameter_error.
- ENDIF.
- l_rep_type = l_dm_rep->get_repository_property( name = srmgs_c_rep_para_rep_type ).
- ENDIF.
- IF l_rep_type = srmgs_c_repository_webdav.
- *-- set user id/password for connecting WebDAV server
- l_dps_id = lif_generic_sp->get_connection_param( name =
- if_srm_generic_sp=>c_conn_para_doc_provider_space ).
- SELECT * FROM srmwdcluser INTO TABLE lt_wdcl_user WHERE dps_id = l_dps_id.
- IF lt_wdcl_user IS INITIAL.
- * customizing error: user/password for WebDAV access must be set up
- RAISE EXCEPTION TYPE cx_srm_customizing_error.
- ENDIF.
- READ TABLE lt_wdcl_user INTO wa_wdcl_user INDEX 1.
- TRY.
- l_str = wa_wdcl_user-user_id.
- l_dm_rep->set_repository_parameter( name = srmgs_c_rep_para_user_name value = l_str ).
- l_str = wa_wdcl_user-passwd.
- l_dm_rep->set_repository_parameter( name = srmgs_c_rep_para_password value = l_str ).
- CATCH cx_dm INTO ex_dm.
- RAISE EXCEPTION TYPE cx_srm_document_client
- EXPORTING textid = cx_srm_document_client=>et_unexpected previous = ex_dm.
- ENDTRY.
- * get base url, construct tech doc id
- CLEAR l_str.
- l_str = l_dm_rep->get_repository_property( name = srmgs_c_rep_para_base_url ).
- IF l_str IS INITIAL.
- * customizing error, base url must be registered in document service provider
- RAISE EXCEPTION TYPE cx_srm_customizing_error.
- ENDIF.
- l_offset = STRLEN( l_str ) - 1.
- IF l_str+l_offset(1) = '/'.
- CONCATENATE l_str p_objid INTO l_doc_id.
- ELSE.
- CONCATENATE l_str '/' p_objid INTO l_doc_id.
- ENDIF.
- ELSEIF p_docclass IS INITIAL.
- *-- get doc class of KPro repository, construct tech doc id
- CLEAR l_str.
- l_str = l_dm_rep->get_repository_property( name = srmgs_c_rep_para_doc_class ).
- IF l_str IS INITIAL.
- l_str = lif_generic_sp->get_connection_param( name =
- if_srm_generic_sp=>c_conn_para_doc_class ).
- ENDIF.
- IF l_str IS INITIAL.
- * customizing error, document class must be registered either in SPS or in DPS
- RAISE EXCEPTION TYPE cx_srm_customizing_error.
- ENDIF.
- l_kpro_doc_id-class = l_str.
- l_kpro_doc_id-objid = p_objid.
- l_doc_id = l_kpro_doc_id.
- ENDIF.
- *-- create poid
- l_str = p_version.
- CONDENSE l_str.
- IF l_str = space.
- l_str = '0'.
- ENDIF.
- l_kpro_doc_id-class = p_docclass.
- l_kpro_doc_id-objid = p_objid.
- l_doc_id = l_kpro_doc_id.
- CALL METHOD cl_srm_generic_sp2=>create_sp_poid
- EXPORTING
- doc_id = l_doc_id
- version = l_str
- IMPORTING
- sp_poid = lt_sp_poid.
- lif_poid ?= lif_client_service->poid_get_instance( im_rms_id = l_rms_id im_sps_id = l_sps_id
- im_sp_poid = lt_sp_poid ).
- *-- get content connection of instance object
- p_sp_document ?= lif_srm_service->get_sp_connection( im_poid = lif_poid ).
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(6 ) FORM GET_CONTENT_CONNECTION, Âûõîä A
- ENDFORM. " get_content_connection
Add Comment
Please, Sign In to add comment