使用ABAP的SAP到Sharepoint 365

2020-08-18 20:51发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在尝试使用REST服务将PDF文件发送到共享点,并且我正在使用以下方法,但是由于共享点服务器未处于预安装状态,而共享点服务器位于Office 365云中,因此无法正常工作。

我找到了SAP之类的文章到SharePoint(使用PI),但是我想使用ABAP上传PDF文件,那么我们是否可以使用REST服务将PDF文件发送到Sharepoint(办公室365云)?

呼叫方法CL_HTTP_CLIENT => CREATE_BY_URLEXPORTING
URL =' https:// companyname sharepoint.com/teams/SharePoint/Invoice/Forms/AllItems.aspx

'" URLIMPORTINGCLIENT = LO_CLIENT" HTTP客户端抽象EXCEPTIONS
ARGUMENT_NOT_FOUND = 1
PLUGIN_NOT_ACTIVE = 2
INTERNAL_ERROR = 3OTHERS = 4.data:部分类型引用到if_http_entity。
IF SY-SUBRC NE 0 消息ID SY-MSGID类型SY-MSGTY编号SY-MSGNOWITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4INTO CV_ERROR_MSG。
CV_ERROR_OCCURRED ='X'.RETURN.ENDIF。

PROXY_AUTHENTICATION ='X'"代理登录(='X')* CLIENT =" R/3系统,登录时的客户端编号
USERNAME = WF_VAR1" ABAP系统,用户登录名称
PASSWORD = WF_VAR2" 登录ID * LANGUAGE =" SAP系统,当前语言)。

LO_CLIENT-> REQUEST-> SET_METHOD('POST')。



part = lo_client-> request-> if_http_entity 〜add_multipart()。
呼叫方法part-> set_header_fieldEXPORTING
name ='content-disposition'value ='form-data; name =" file"; filename =" dotguide.pdf "'。
调用方法部分-> set_co ntent_typeEXPORTING
content_type ='application/pdf'。
呼叫方法part-> set_header_fieldEXPORTING
name ='Content-Transfer-Encoding'value ='binary'。
清除LV_REQUEST_URI。


> LV_REQUEST_URL =' https://公司名称 sharepoint.com/teams/SharePoint/Invoice/Forms/AllItems


LV_LEN = STRLEN(LV_REQUEST_URL)。
呼叫方法LO_CLIENT-> REQUEST-> SET_CDATAEXPORTINGDATA = LV_REQUEST_URL
OFFSET = 0
LENGTH = LV_LEN。
*发送HTTP请求呼叫方法LO_CLIENT -> SENDEXPORTING
超时= 600例外情况
HTTP_COMMUNICATION_FAILURE = 1
HTTP_INVALID_STATE = 2
HTTP_PROCESSING_FAILED = 3OTHERS = 4.如果SY-SUBRC NE 0.
LO_CLIENT-> GET_LAST_ERROR(导入消息)= 。
CV_ERROR_OCCURRED ='X'.RETURN.ENDIF。
* HTTP呼叫接收
LO_CLIENT-> RECEIVE(EXCEPTIONS OTHERS = 1)。如果SY-SUBRC NE 0.
LO_CLIENT-> GET_LAST_ERROR( 导入消息= CV_ERROR_MSG)。
CV_ERROR_OCCURRED ='X'.RETURN.ENDIF。

*获取响应的状态呼叫方法LO_CLIENT-> RESPONSE-> GET_STATUSIMPORTINGCODE = CV_STATUS
原因= CV_ERROR_MSG **。 *读取ResponseCALL方法LO_CLIENT-> RESPONSE-> GET_CDATA(接收数据= RESPONSE)。

*实例化REST客户端创建对象LO_REST_CLIENTEXPORTING
IO_HTTP_CLIENT = LO_CLIEN T.
*获取响应数据
LO_RESPONSE = LO_REST_CLIENT-> IF_REST_CLIENT〜GET_RESPONSE_ENTITY()。

*获取字符串数据
RESPONSE = LO_RESPONSE-> GET_STRING_DATA()。
调用函数'SCMS_STRING_TO_XSTRING'EXPORTINGTEXT =响应"变量类型stringIMPORTINGBUFFER = XSTR。"变量类型xstring
调用函数SPORTUTIL_CONVER
XDOC = XSTRIMPORTING
ERROR_TEXT = LD_ERROR_TEXTDATA = LD_DATA。 " SRTUTIL_CONVERT_XML_TO_TABLE

 

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在尝试使用REST服务将PDF文件发送到共享点,并且我正在使用以下方法,但是由于共享点服务器未处于预安装状态,而共享点服务器位于Office 365云中,因此无法正常工作。

我找到了SAP之类的文章到SharePoint(使用PI),但是我想使用ABAP上传PDF文件,那么我们是否可以使用REST服务将PDF文件发送到Sharepoint(办公室365云)?

呼叫方法CL_HTTP_CLIENT => CREATE_BY_URLEXPORTING
URL =' https:// companyname sharepoint.com/teams/SharePoint/Invoice/Forms/AllItems.aspx

'" URLIMPORTINGCLIENT = LO_CLIENT" HTTP客户端抽象EXCEPTIONS
ARGUMENT_NOT_FOUND = 1
PLUGIN_NOT_ACTIVE = 2
INTERNAL_ERROR = 3OTHERS = 4.data:部分类型引用到if_http_entity。
IF SY-SUBRC NE 0 消息ID SY-MSGID类型SY-MSGTY编号SY-MSGNOWITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4INTO CV_ERROR_MSG。
CV_ERROR_OCCURRED ='X'.RETURN.ENDIF。

PROXY_AUTHENTICATION ='X'"代理登录(='X')* CLIENT =" R/3系统,登录时的客户端编号
USERNAME = WF_VAR1" ABAP系统,用户登录名称
PASSWORD = WF_VAR2" 登录ID * LANGUAGE =" SAP系统,当前语言)。

LO_CLIENT-> REQUEST-> SET_METHOD('POST')。



part = lo_client-> request-> if_http_entity 〜add_multipart()。
呼叫方法part-> set_header_fieldEXPORTING
name ='content-disposition'value ='form-data; name =" file"; filename =" dotguide.pdf "'。
调用方法部分-> set_co ntent_typeEXPORTING
content_type ='application/pdf'。
呼叫方法part-> set_header_fieldEXPORTING
name ='Content-Transfer-Encoding'value ='binary'。
清除LV_REQUEST_URI。


> LV_REQUEST_URL =' https://公司名称 sharepoint.com/teams/SharePoint/Invoice/Forms/AllItems


LV_LEN = STRLEN(LV_REQUEST_URL)。
呼叫方法LO_CLIENT-> REQUEST-> SET_CDATAEXPORTINGDATA = LV_REQUEST_URL
OFFSET = 0
LENGTH = LV_LEN。
*发送HTTP请求呼叫方法LO_CLIENT -> SENDEXPORTING
超时= 600例外情况
HTTP_COMMUNICATION_FAILURE = 1
HTTP_INVALID_STATE = 2
HTTP_PROCESSING_FAILED = 3OTHERS = 4.如果SY-SUBRC NE 0.
LO_CLIENT-> GET_LAST_ERROR(导入消息)= 。
CV_ERROR_OCCURRED ='X'.RETURN.ENDIF。
* HTTP呼叫接收
LO_CLIENT-> RECEIVE(EXCEPTIONS OTHERS = 1)。如果SY-SUBRC NE 0.
LO_CLIENT-> GET_LAST_ERROR( 导入消息= CV_ERROR_MSG)。
CV_ERROR_OCCURRED ='X'.RETURN.ENDIF。

*获取响应的状态呼叫方法LO_CLIENT-> RESPONSE-> GET_STATUSIMPORTINGCODE = CV_STATUS
原因= CV_ERROR_MSG **。 *读取ResponseCALL方法LO_CLIENT-> RESPONSE-> GET_CDATA(接收数据= RESPONSE)。

*实例化REST客户端创建对象LO_REST_CLIENTEXPORTING
IO_HTTP_CLIENT = LO_CLIEN T.
*获取响应数据
LO_RESPONSE = LO_REST_CLIENT-> IF_REST_CLIENT〜GET_RESPONSE_ENTITY()。

*获取字符串数据
RESPONSE = LO_RESPONSE-> GET_STRING_DATA()。
调用函数'SCMS_STRING_TO_XSTRING'EXPORTINGTEXT =响应"变量类型stringIMPORTINGBUFFER = XSTR。"变量类型xstring
调用函数SPORTUTIL_CONVER
XDOC = XSTRIMPORTING
ERROR_TEXT = LD_ERROR_TEXTDATA = LD_DATA。 " SRTUTIL_CONVERT_XML_TO_TABLE

 
付费偷看设置
发送
1条回答
My梦
1楼-- · 2020-08-18 21:55

您好 Jay Dalwadi

请查看下面的代码。

请注意,我在调用分配了SharePoint API密钥的SharePoint API,而不是可供用户使用的SharePoint页面。 您可能需要与SharePoint管理员联系以获取API访问和密钥。

数据:
     lo_rest_client类型参考cl_rest_http_client,
     lo_rest_multipart_entity类型参考if_rest_multipart_entity。

   呼叫方法cl_http_client => create_by_url
     出口
       网址= ac_sharepoint_api_url
     输入
       客户端= DATA(lo_http_client)
     例外情况
       arguments_not_found = 1
       plugin_not_active = 2
       internal_error = 3
       其他= 4。

   lo_http_client-> request-> set_version(if_http_request => co_protocol_version_1_1)。

   创建对象lo_rest_client
     出口
       io_http_client = lo_http_client。

   呼叫方法lo_http_client-> request-> set_header_field
     出口
       名称='APIKey'
       值= av_api_key。

   lo_rest_multipart_entity?= lo_rest_client-> if_rest_client〜create_request_entity(iv_multipart = abap_true)。
   lo_rest_multipart_entity-> set_content_type(if_rest_media_type => gc_multipart_form_data)。

   DATA(lo_rest_entity)= lo_rest_multipart_entity-> create_entity(iv_multipart = abap_true)。
   lo_rest_entity-> set_binary_data(iv_file_contents)。

   lo_rest_entity-> set_header_field(
     出口
       iv_name = if_http_header_fields => content_disposition
       iv_value = |表单数据;  name ="文件";  filename =" {iv_file_name}" |  )。

   lo_rest_entity-> set_header_field(
     出口
       iv_name = if_http_header_fields => content_type
       iv_value ='application/octet-stream')。

   lo_rest_client-> if_rest_client〜post(io_entity = lo_rest_multipart_entity)。

   DATA(lo_response)= lo_rest_client-> if_rest_client〜get_response_entity()。
   ev_response_code = lo_response-> get_header_field('〜status_code')。
   ev_response_message = lo_response-> get_string_data()。

问候,
Mateusz

一周热门 更多>