This article addresses some technical considerations required for an interface between Mavenlink and SAP Project Systems (PS). To understand more about the business context of this integration, please refer to the first article in this series Business Considerations for Integrating Mavenlink and SAP. Mavenlink’s Project Management solution should communicate with the PS module to integrate with an existing SAP-based infrastructure. To find out more about the SAP premium services Aptimized offers, click here.
This integration will require custom development to pull data from Mavenlink’s public API. Of the returned objects, projects and tasks should be processed prior to transactional data such as time and expense. Developers should separate the logic for processing newly created objects from processing updates to existing objects. User events in Mavenlink such as marking a task as complete, placing a project to an on-hold status, removing tasks from a project, and approving time on a task will need corresponding logic in SAP. Modularizing the program(s) with these considerations will be important for a successful integration.
Mavenlink offers a public API for external consumption. The API utilizes OAuth2.0 for security and provides GET, POST, PUT, and DELETE endpoints for many objects within its data model. The API returns all responses in JSON format. Mavenlink provides API documentation here - http://developer.mavenlink.com/beta/.
The main objects relevant to an SAP PS integration include workspaces (projects), stories (tasks), timesheets, time entries, rate cards, and custom fields. Custom fields in Mavenlink make up their own data object in the API and are grabbed per workspace/story as an “include” parameter in the URL. An important consideration when requesting data via the API is utilizing the request parameters to filter out unnecessary data. If the ABAP program is set on an interval, then filtering objects created or updated only since the last program run will reduce the amount of processing.
The Mavenlink API returns multi-leveled JSON, and parsing the data in ABAP will require the use of multiple field-symbols per JSON object. The developer will utilize BAPI modules to write the parsed data to the relevant SAP tables (PRPS, PROJ, etc.). The program will need to parse the JSON into internal tables with the line type of the corresponding BAPI’s table parameters. Some of the BAPI’s needed for this integration include the following_
· BAPI_BUS2001_SET_STATUS to change the project status
· BAPI_BUS2054_SET_STATUS to change the WBS status
· BAPI_BUS2001_CREATE to create a project
· BAPI_BUS2001_CHANGE to update a project
· BAPI_BUS2054_CREATE_MULTI to create a WBS hierarchy
· BAPI_BUS2054_DELETE_MULTI to delete WBS elements
· BAPI_PROJECT_MAINTAIN to create or delete a milestone
· BAPI_PROJECT_MAINTAIN to update a milestone
· BAPI_ACC_ACTIVITY_ALLOC_POST to post transactions
· BAPI_GOODSMVT_CREATE to post goods receipt for a purchase order
Negative and stress testing is vital to ensure that errors are handled appropriately. We can expect errors due to Mavenlink’s flexibility. End users in Mavenlink are allowed to do things that they would not be able to do in SAP, such as drag-drop WBS elements to new positions easily.
Designers and developers should note the above considerations among others to ensure a successful implementation for this integration.