Hier war es lange still, Zeit für einen neuen Beitrag. Das Thema hat mich einige Stunden gekostet. Ich hoffe es hilft dem ein oder anderen.
SharePoint bietet eine umfassende REST-API mit CRUD (Create Read Update Delete) Methoden an. Mit dieser API können z.B. Listenelemente gelesen und erstellt werden. Diese lässt sich auch in ABAP verwenden.
Die REST-API wird mittels HTTP Requests angesprochen. Das Ergebnis ist ein XML Dokument. Diese URL z.B. liefert die XML Struktur einer Liste.
http://<url zur Site>/_api/web/lists/GetByTitle('<Listentitel>')
Das folgende Beispiel zeigt, wie sich die SharePoint-API aus SAP aufrufen lässt. Somit ist es beispielsweise möglich, aus SAP heraus ein neues SharePoint Listenelement zu erzeugen.
Wird auf der SharePoint Liste ein Workflow ausgeführt (Trigger ist die Erstellung eines neuen Elements), kann über diesen Weg der SharePoint Workflow von SAP angestoßen werden.
Code
In diesem Beispiel wird die Listendefinition einer Liste gelesen
*&---------------------------------------------------------------------*
*& Report Z_TEST_RESTFUL_SERVICE
*&
*&---------------------------------------------------------------------*
*& SharePoint API aufrufen
*&
*&---------------------------------------------------------------------*
REPORT z_test_restful_service.
DATA: lo_http_client TYPE REF TO if_http_client,
lv_service TYPE string,
lv_result TYPE xstring.
lv_service = 'http://url/_api/web/lists/GetByTitle(' && |'| && 'Title' && |'| && ')'.
cl_http_client=>create_by_url(
EXPORTING
url = lv_service
IMPORTING
client = lo_http_client
EXCEPTIONS
argument_not_found = 1
plugin_not_active = 2
internal_error = 3
OTHERS = 4 ).
" Methode setzen
lo_http_client->request->set_method( if_http_request=>co_request_method_get ).
" Protokollversion setzen
lo_http_client->request->set_version( if_http_request=>co_protocol_version_1_0 ).
" content type setzen
lo_http_client->request->set_content_type( 'application/json' ).
" Header setzen
lo_http_client->request->set_header_field( name = 'accept' value = 'application/json;odata/verbose' ).
" Authentifizierung
lo_http_client->request->set_authorization( auth_type = '1'
username = 'user'
password = 'passwd').
lo_http_client->send(
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2 ).
lo_http_client->receive(
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3 ).
" XML Ergebnis lesen
CLEAR lv_result .
lv_result = lo_http_client->response->get_data( ).
" XML ausgeben
CALL FUNCTION 'SRTUTIL_HELPER_XML_SHOW'
EXPORTING
xdoc = lv_result
html = abap_false.
Verweise
https://msdn.microsoft.com/de-de/library/office/fp142380.aspx
https://msdn.microsoft.com/de-de/library/office/dn292552.aspx