SAP CRM content management工具类
发布日期:2021-06-30 14:06:22 浏览次数:2 分类:技术文章

本文共 18659 字,大约阅读时间需要 62 分钟。

class ZCL_CRM_CM_TOOL definition  public  final  create public .public section.  class-methods GET_DATA_BY_URL    importing      !IV_URL type STRING    returning      value(EV_DATA) type XSTRING .  class-methods CREATE_DOC    importing      !IV_DATA type XSTRING      !IV_BOR_TYPE type STRING      !IV_GUID type SMI_SOCIALDATAUUID      !IV_FILE_NAME type STRING .  class-methods DELETE_DOC    importing      !IV_BOR_TYPE type STRING      !IV_UUID type SOCIALDATA-SOCIALDATAUUID    returning      value(RV_SUCCESSFUL) type ABAP_BOOL .  class-methods GET_ATTACHMENTS    importing      !IV_GUID type SIBFLPORB-INSTID      !IV_BOR_TYPE type STRING    exporting      value(LOIOS) type SKWF_IOS      value(PHIOS) type SKWF_IOS .  class-methods CHANGE_PROPERTY    importing      !IV_GUID type SIBFLPORB-INSTID      !IV_BOR_TYPE type STRING      !IV_ATTR_NAME type STRING      !IV_NEW_VALUE type STRING .  class-methods CLASS_CONSTRUCTOR .  class-methods GET_PRODUCT_DOC_URL    importing      !IV_PROD_ID type COMM_PRODUCT-PRODUCT_ID    returning      value(RT_URL) type STRING_TABLE .  class-methods GET_TEXT_BY_URL    importing      !IV_URL type STRING    returning      value(EV_TEXT) type STRING .  class-methods IS_TEXT_FILE    importing      !IS_IO type SKWF_IO    returning      value(RV_TRUE) type ABAP_BOOL .  class-methods GET_PROD_ID_BY_PHIO    importing      !IV_PHIO type SDOK_PHID    returning      value(RV_PROD_ID) type COMM_PRODUCT-PRODUCT_ID .  class-methods DOWNLOAD_LOCALLY    importing      !IV_LOCAL_PATH type STRING      !IV_BINARY type XSTRING .  class-methods GET_PIC_FROM_CLIPBOARD    returning      value(ET_PIC) type STRING_TABLE .protected section.private section.ENDCLASS.CLASS ZCL_CRM_CM_TOOL IMPLEMENTATION.* 
---------------------------------------------------------------------------------------+* | Static Public Method ZCL_CRM_CM_TOOL=>CHANGE_PROPERTY* +-------------------------------------------------------------------------------------------------+* | [--->] IV_GUID TYPE SIBFLPORB-INSTID* | [--->] IV_BOR_TYPE TYPE STRING* | [--->] IV_ATTR_NAME TYPE STRING* | [--->] IV_NEW_VALUE TYPE STRING* +--------------------------------------------------------------------------------------
method CHANGE_PROPERTY. DATA: loios TYPE SKWF_IOS, phios TYPE SKWF_IOS, ls_header TYPE SDOKOBJECT, lt_properties TYPE STANDARD TABLE OF SDOKPROPTY. DATA(ls_property) = VALUE SDOKPROPTY( name = iv_attr_name value = iv_new_value ). APPEND ls_property TO lt_properties. CALL METHOD zcl_crm_cm_tool=>GET_ATTACHMENTS EXPORTING iv_guid = iv_guid iv_bor_type = iv_bor_type IMPORTING LOIOS = LOIOS phios = phios. LOOP AT phios ASSIGNING FIELD-SYMBOL(
). ls_header-class =
-class. ls_header-objid =
-objid. CALL FUNCTION 'SDOK_PHIO_PROPERTIES_SET' EXPORTING object_id = ls_header TABLES properties = lt_properties EXCEPTIONS NOT_EXISTING = 1 BAD_PROPERTIES = 2 NOT_AUTHORIZED = 3 EXCEPTION_IN_EXIT = 4. IF sy-subrc <> 0. BREAK-POINT. ENDIF. ENDLOOP. endmethod.*
---------------------------------------------------------------------------------------+* | Static Public Method ZCL_CRM_CM_TOOL=>CLASS_CONSTRUCTOR* +-------------------------------------------------------------------------------------------------+* +--------------------------------------------------------------------------------------
method CLASS_CONSTRUCTOR. CALL FUNCTION 'SDOK_INTERNAL_MODE_ACCESS' EXPORTING MODE_REQUESTED = '01'. endmethod.*
---------------------------------------------------------------------------------------+* | Static Public Method ZCL_CRM_CM_TOOL=>CREATE_DOC* +-------------------------------------------------------------------------------------------------+* | [--->] IV_DATA TYPE XSTRING* | [--->] IV_BOR_TYPE TYPE STRING* | [--->] IV_GUID TYPE SMI_SOCIALDATAUUID* | [--->] IV_FILE_NAME TYPE STRING* +--------------------------------------------------------------------------------------
method CREATE_DOC. DATA: ls_bo TYPE sibflporb, ls_prop TYPE LINE OF sdokproptys, lt_prop TYPE sdokproptys, lt_properties_attr TYPE crmt_attr_name_value_t, ls_file_info TYPE sdokfilaci, lt_file_info TYPE sdokfilacis, lt_file_content TYPE sdokcntbins, lv_length TYPE i, lv_file_xstring TYPE xstring, ls_loio TYPE skwf_io, ls_phio TYPE skwf_io, ls_error TYPE skwf_error. ls_prop-name = 'DESCRIPTION'. ls_prop-value = 'created by Tool'. APPEND ls_prop TO lt_prop. ls_prop-name = 'KW_RELATIVE_URL'. ls_prop-value = iv_file_name. APPEND ls_prop TO lt_prop. ls_prop-name = 'LANGUAGE'. ls_prop-value = sy-langu. APPEND ls_prop TO lt_prop." read only field, cannot work* ls_prop-name = 'CREATED_BY'.* ls_prop-value = 'DAIDE'.* APPEND ls_prop TO lt_prop. lv_file_xstring = iv_data. CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' EXPORTING buffer = lv_file_xstring IMPORTING output_length = lv_length TABLES binary_tab = lt_file_content. ls_file_info-binary_flg = 'X'. ls_file_info-file_name = iv_file_name. ls_file_info-file_size = lv_length. ls_file_info-mimetype = 'text/html'."'image/jpeg'. APPEND ls_file_info TO lt_file_info. ls_bo-INSTID = iv_guid. ls_bo-typeid = iv_bor_type. ls_bo-catid = 'BO'. CALL METHOD cl_crm_documents=>create_with_table EXPORTING business_object = ls_bo properties = lt_prop properties_attr = lt_properties_attr file_access_info = lt_file_info file_content_binary = lt_file_content raw_mode = 'X' IMPORTING loio = ls_loio phio = ls_phio error = ls_error. endmethod.*
---------------------------------------------------------------------------------------+* | Static Public Method ZCL_CRM_CM_TOOL=>DELETE_DOC* +-------------------------------------------------------------------------------------------------+* | [--->] IV_BOR_TYPE TYPE STRING* | [--->] IV_UUID TYPE SOCIALDATA-SOCIALDATAUUID* | [<-()] RV_SUCCESSFUL TYPE ABAP_BOOL* +--------------------------------------------------------------------------------------
method DELETE_DOC. DATA: ls_bo TYPE SIBFLPORB, lt_loios TYPE SKWF_IOS, ls_loios TYPE SKWF_IO, ls_error TYPE SKWF_ERROR, lt_badios TYPE SKWF_IOERRS, lv_del_flag TYPE ABAP_BOOL. ls_bo-instid = iv_uuid. ls_bo-typeid = iv_bor_type. ls_bo-catid = 'BO'. rv_successful = abap_false. CALL METHOD cl_crm_documents=>get_info EXPORTING business_object = ls_bo IMPORTING loios = lt_loios. LOOP AT lt_loios INTO ls_loios. CALL METHOD cl_crm_documents=>lock EXPORTING is_bo = ls_bo is_loio = ls_loios IMPORTING es_error = ls_error. IF ls_error IS NOT INITIAL. RETURN. ENDIF. ENDLOOP. CALL METHOD cl_crm_documents=>delete EXPORTING business_object = ls_bo ios = lt_loios IMPORTING bad_ios = lt_badios error = ls_error. IF ls_error IS INITIAL. " deletion failed rv_successful = abap_true. ENDIF. endmethod.*
---------------------------------------------------------------------------------------+* | Static Public Method ZCL_CRM_CM_TOOL=>DOWNLOAD_LOCALLY* +-------------------------------------------------------------------------------------------------+* | [--->] IV_LOCAL_PATH TYPE STRING* | [--->] IV_BINARY TYPE XSTRING* +--------------------------------------------------------------------------------------
METHOD download_locally. TYPES: BEGIN OF ts_line, data(1024) TYPE x, END OF ts_line. DATA: lv_size TYPE int4, lt_data TYPE STANDARD TABLE OF ts_line. CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' EXPORTING buffer = iv_binary IMPORTING output_length = lv_size TABLES binary_tab = lt_data. CALL METHOD cl_gui_frontend_services=>gui_download EXPORTING bin_filesize = lv_size filename = iv_local_path filetype = 'BIN' append = space IMPORTING filelength = lv_size CHANGING data_tab = lt_data EXCEPTIONS OTHERS = 01. ASSERT sy-subrc = 0. ENDMETHOD.*
---------------------------------------------------------------------------------------+* | Static Public Method ZCL_CRM_CM_TOOL=>GET_ATTACHMENTS* +-------------------------------------------------------------------------------------------------+* | [--->] IV_GUID TYPE SIBFLPORB-INSTID* | [--->] IV_BOR_TYPE TYPE STRING* | [<---] LOIOS TYPE SKWF_IOS* | [<---] PHIOS TYPE SKWF_IOS* +--------------------------------------------------------------------------------------
method GET_ATTACHMENTS. DATA(ls) = VALUE SIBFLPORB( INSTID = iv_guid typeid = iv_bor_type catid = 'BO' ). CALL METHOD CL_CRM_DOCUMENTS=>get_info EXPORTING BUSINESS_OBJECT = ls IMPORTING LOIOS = LOIOS phios = phios. endmethod.*
---------------------------------------------------------------------------------------+* | Static Public Method ZCL_CRM_CM_TOOL=>GET_DATA_BY_URL* +-------------------------------------------------------------------------------------------------+* | [--->] IV_URL TYPE STRING* | [<-()] EV_DATA TYPE XSTRING* +--------------------------------------------------------------------------------------
method GET_DATA_BY_URL. DATA:lo_http_client TYPE REF TO if_http_client, lv_status TYPE i, lv_sysubrc TYPE sysubrc. CALL METHOD cl_http_client=>create_by_url EXPORTING url = iv_url proxy_host = 'PROXY.jerry.SAP.CORP' proxy_service = '8080'* ssl_id = 'ANONYM'* sap_username = ''* sap_client = '' IMPORTING client = lo_http_client EXCEPTIONS argument_not_found = 1 plugin_not_active = 2 internal_error = 3 OTHERS = 4. ASSERT sy-subrc = 0. CALL METHOD lo_http_client->request->set_method( if_http_request=>co_request_method_get ).*Disable pop-up when request receives unauthorized error: error 401. lo_http_client->propertytype_logon_popup = if_http_client=>co_disabled.*Send request. CALL METHOD lo_http_client->send EXCEPTIONS http_communication_failure = 1 http_invalid_state = 2 http_processing_failed = 3. ASSERT sy-subrc = 0.* Get response. CALL METHOD lo_http_client->receive EXCEPTIONS http_communication_failure = 1 http_invalid_state = 2 http_processing_failed = 3. IF sy-subrc <> 0. CALL METHOD lo_http_client->get_last_error IMPORTING code = lv_sysubrc message = DATA(ev_message). "BREAK-POINT. WRITE: / 'error: ' , ev_message. RETURN. ENDIF. ev_data = lo_http_client->response->get_data( ). DATA: lv_length TYPE i. lv_length = xstrlen( ev_data ). WRITE: / 'data length: ' , lv_length. lo_http_client->close( ). endmethod.*
---------------------------------------------------------------------------------------+* | Static Public Method ZCL_CRM_CM_TOOL=>GET_PIC_FROM_CLIPBOARD* +-------------------------------------------------------------------------------------------------+* | [<-()] ET_PIC TYPE STRING_TABLE* +--------------------------------------------------------------------------------------
METHOD get_pic_from_clipboard. TYPES: BEGIN OF ty_clipdata, data TYPE c LENGTH 1000, END OF ty_clipdata. DATA: lt_markdown TYPE STANDARD TABLE OF ty_clipdata, lt_result_tab TYPE match_result_tab. CONSTANTS: sv_image_pattern TYPE string VALUE '(!\[.*\])(\((.*)\))'. CALL METHOD cl_gui_frontend_services=>clipboard_import IMPORTING data = lt_markdown EXCEPTIONS cntl_error = 1 error_no_gui = 2 not_supported_by_gui = 3 OTHERS = 4. CHECK sy-subrc = 0. LOOP AT lt_markdown ASSIGNING FIELD-SYMBOL(
) WHERE table_line CS '![]'. CLEAR: lt_result_tab. FIND REGEX sv_image_pattern IN
RESULTS lt_result_tab. DATA(lv_final) = lines( lt_result_tab[ 1 ]-submatches ). DATA(offset) = lt_result_tab[ 1 ]-submatches[ lv_final ]. DATA(lv_start) = offset-offset. DATA(lv_length) = offset-length. data(pic) = conv String(
+lv_start(lv_length) ). REPLACE 'https' in pic with 'http'. APPEND pic TO et_pic. ENDLOOP. ENDMETHOD.*
---------------------------------------------------------------------------------------+* | Static Public Method ZCL_CRM_CM_TOOL=>GET_PRODUCT_DOC_URL* +-------------------------------------------------------------------------------------------------+* | [--->] IV_PROD_ID TYPE COMM_PRODUCT-PRODUCT_ID* | [<-()] RT_URL TYPE STRING_TABLE* +--------------------------------------------------------------------------------------
method GET_PRODUCT_DOC_URL. DATA: lt_query_parameter TYPE crmt_name_value_pair_tab, ls_query_parameter LIKE LINE OF lt_query_parameter, lv_view_name TYPE crmt_view_name, ls_doc TYPE CRMT_PRIL_DOCUMENTS_URI, lv_query_name TYPE crmt_ext_obj_name. ls_query_parameter-name = 'PRODUCT_ID'. ls_query_parameter-value = iv_prod_id. APPEND ls_query_parameter TO lt_query_parameter. DATA(lo_core) = cl_crm_bol_core=>get_instance( ). lo_core->load_component_set( 'PROD_ALL' ). lv_query_name = 'ProdAdvancedSearchProducts'. try. DATA(lo_collection) = lo_core->query( iv_query_name = lv_query_name it_query_params = lt_query_parameter iv_view_name = lv_view_name ). CATCH CX_SY_ARITHMETIC_ERROR. write:/ 'Error' . ENDTRY. DATA(lo_product) = lo_collection->get_first( ). DATA(lo_doc) = lo_product->get_related_entities( IV_RELATION_NAME = 'ProductDocumentLink' ). CHECK lo_doc IS NOT INITIAL. DATA(lo_item) = lo_doc->get_first( ). WHILE lo_item IS NOT INITIAL. lo_item->get_properties( IMPORTING ES_ATTRIBUTES = ls_doc ). APPEND ls_doc-document_uri TO rt_url. lo_item = lo_doc->get_next( ). ENDWHILE. endmethod.*
---------------------------------------------------------------------------------------+* | Static Public Method ZCL_CRM_CM_TOOL=>GET_PROD_ID_BY_PHIO* +-------------------------------------------------------------------------------------------------+* | [--->] IV_PHIO TYPE SDOK_PHID* | [<-()] RV_PROD_ID TYPE COMM_PRODUCT-PRODUCT_ID* +--------------------------------------------------------------------------------------
METHOD get_prod_id_by_phio. DATA: ls_ph TYPE bdsphio22, ls_product TYPE comm_product, lv_instance_b TYPE skwg_brel-instid_b, ls_relation TYPE skwg_brel. SELECT SINGLE * INTO ls_ph FROM bdsphio22 WHERE phio_id = iv_phio. CHECK sy-subrc = 0. lv_instance_b = 'L/' && ls_ph-lo_class && '/' && ls_ph-loio_id. SELECT SINGLE * INTO ls_relation FROM skwg_brel WHERE instid_b = lv_instance_b AND typeid_a = 'BUS1178'. CHECK sy-subrc = 0. SELECT SINGLE * INTO ls_product FROM comm_product WHERE product_guid = ls_relation-instid_a. CHECK sy-subrc = 0. rv_prod_id = ls_product-product_id. ENDMETHOD.*
---------------------------------------------------------------------------------------+* | Static Public Method ZCL_CRM_CM_TOOL=>GET_TEXT_BY_URL* +-------------------------------------------------------------------------------------------------+* | [--->] IV_URL TYPE STRING* | [<-()] EV_TEXT TYPE STRING* +--------------------------------------------------------------------------------------
method GET_TEXT_BY_URL. DATA:lo_http_client TYPE REF TO if_http_client, lv_status TYPE i, lv_sysubrc TYPE sysubrc. CALL METHOD cl_http_client=>create_by_url EXPORTING url = iv_url proxy_host = 'PROXY.jerry.SAP.CORP' proxy_service = '8080'* ssl_id = 'ANONYM'* sap_username = ''* sap_client = '' IMPORTING client = lo_http_client EXCEPTIONS argument_not_found = 1 plugin_not_active = 2 internal_error = 3 OTHERS = 4. ASSERT sy-subrc = 0. CALL METHOD lo_http_client->request->set_method( if_http_request=>co_request_method_get ).*Disable pop-up when request receives unauthorized error: error 401. "lo_http_client->propertytype_logon_popup = if_http_client=>co_disabled.*Send request. CALL METHOD lo_http_client->send EXCEPTIONS http_communication_failure = 1 http_invalid_state = 2 http_processing_failed = 3. ASSERT sy-subrc = 0.* Get response. CALL METHOD lo_http_client->receive EXCEPTIONS http_communication_failure = 1 http_invalid_state = 2 http_processing_failed = 3. IF sy-subrc <> 0. CALL METHOD lo_http_client->get_last_error IMPORTING code = lv_sysubrc message = DATA(ev_message). "BREAK-POINT. WRITE: / 'error: ' , ev_message. RETURN. ENDIF. ev_text = lo_http_client->response->get_cdata( ). lo_http_client->close( ). endmethod.*
---------------------------------------------------------------------------------------+* | Static Public Method ZCL_CRM_CM_TOOL=>IS_TEXT_FILE* +-------------------------------------------------------------------------------------------------+* | [--->] IS_IO TYPE SKWF_IO* | [<-()] RV_TRUE TYPE ABAP_BOOL* +--------------------------------------------------------------------------------------
method IS_TEXT_FILE. DATA: lv_type type W3CONTTYPE. CALL METHOD cl_crm_documents=>get_file_info EXPORTING phio = is_io IMPORTING mimetype = lv_type. IF lv_type = 'text/plain'. rv_true = abap_true. ENDIF. endmethod.ENDCLASS.

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

转载地址:https://jerry.blog.csdn.net/article/details/104009701 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:根据关键字搜索指定的SAP CRM中间件BDOC
下一篇:SAP note下载工具

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月08日 13时52分08秒