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