Skip to end of metadata
Go to start of metadata

Summary

The Object Link framework of SAP Portfolio and Project Management in SAP S/4HANA is a very powerful tool; many pre-configured object link types are part of the delivery customizing. In addition you can also create your own object links to a variety of objects within your SAP system. But the SAP system boundaries are no limit for this functionality: You can also use data from  external systems - if the necessary APIs are available and the system offers appropriate authentication mechanisms. A good candidate is Atlassian's Jira Cloud Platform, which offers both a comprehensive REST based API and OAuth 2.0 protocol based authentication.

This article describes how you can use the Object Links framework to integrate your projects with Jira Cloud. It contains example coding, necessary DDIC elements to be created, and a guide to set up your object link customizing that will work for SAP S/4HANA 1809 FPS1 and Atlassian Jira Cloud Platform REST API V3. You can also downport the SAP S/4HANA code to SAP Portfolio and Project Management 6.1.

Author(s):

Company: SAP SE

Created on: 04-06-2019

Author(s) Bio

Vytas Cirpus is a Development Architect at SAP and works in the area of Enterprise Portfolio and Project Management. One of his focus topics is the integration of Enterprise Portfolio and Project Management with cloud platform based applications.

Disclaimer

This article is a guidance how you can implement and configure object links to Jira Cloud. It is not a standard software delivery; all code and customizing setting examples are illustrative only. We can not warrant that the examples are error-free nor that this example will work forever. However, after working through this example, you will have the necessary knowledge to create your own implementation and customizing setting for a straight.forward integration of SAP Portfolio and Project Management and Atlassian Jira Cloud Platform.

Features of the Integration

After having performed all steps below, you will be able to create object links between SAP S/4HANA projects and Jira projects. Once you established a link to a Jira project, you will be able to link Jira Epics and Jira Stories to project elements. The Jira data will be available in the project to perform evaluations, so that the system can automatically set a severity on the linked project object depending on the content of the Jira element. Linked Jira Epics and Stories will be updated with a link to the project element carrying the object link on saving. This allows both navigation to the Jira element as well as from the Jira element to the project object.

Prerequisite

Any well designed integration makes sure that users can only see data they are entitled to, regardless of which of the integrated systems they are using. In our example this is ensured by using the OAuth 2.0 protocol to establish secure system-to-system communication. Article Access Atlassian Jira Cloud Platform using the OAuth 2.0 Client describes the steps you need to take to have this possibility available on your system. Perform these steps before starting with this project.

To implement this integration, basic ABAP developer skills are required. You should know how to create DDIC elememts and ABAP classes. To adapt the code to your requirements, you should be a bit more experienced.

The Jira Cloud instance used for this implementation was set up for software projects and agile methodologies with sprints. Other ways of setting up your Jira instance can lead to different Jira element names, so that the example code might need adaptions. We'll give a hint where to check and to adapt below, however, you need to do your adaption on your own.

If you want to experiment with this integration but have no Jira Cloud instance: This example integration works fine when using a Jira Cloud trial system.

Limitations

The solution described in this article is simplified: For example, it does not contain possibilities to create Jira objects from projects, and it does not synchronize team members. However, as the corresponding APIs are available, you should be able to enhance the functionality on your own: The basics are already there.

Some of you might want to integrate SAP Portfolio and Project Management in SAP S/4HANA with Jira Server. However, although the REST APIs are very similar to those of Jira Cloud, there is no OAuth 2.0 support built in on Jira Server. You would have to check for third party extensions that introduce OAuth 2.0 support - there we can't help, as most probably all URLs to the REST API will be affected. And dropping OAuth 2.0 by using a technical user for the connection is not a good idea.

Implementation Steps

The implementation of this Jira integration requires the creation of multiple Data Dictionary objects, a class with some local classes and exceptions, and setting up both object link and evaluation customizing. Repetitive steps cannot be described in detail here - this article would get too large then. So for creating DDIC elements, we'll describe their creation in detail once only. You will have to repeat the steps based on a list of attributes as described for one example then.

Preparation

Make sure that you performed all steps described in the article Access Atlassian Jira Cloud Platform using the OAuth 2.0 Client. Below described object links will not work without that.

Create Domains

StepDescription
Create Domain

Call transaction SE11. Mark radio button "Domain" and enter domain name "ZEPPM_JIRA_NAME". Choose button "Create".

Maintain Domain Definition Data

Chose the Definition tab. As short description, maintain "Name". For Data Type, select "CHAR" with "50" for No. of Characters. Select checkbox for Case-sensitive. Choose button "Activate (Ctrl+F3)".

Assign Package to Domain

On the now triggered pop-up, choose a transportable package from your namespace or select button "Local Object" if transport is not planned. Assign a transport request if required by the system.

Repeat the Steps

Repeat the steps above, so that you have the domains of the following list available:

DomainShort DescriptionData TypeNo. CharactersCase-sensitive
ZEPPM_JIRA_NAMENameCHAR50Yes
ZEPPM_JIRA_STRINGJira StringSTRING
Yes

The created domains allow retrieving and displaying texts without conversion to all-caps.

Create Data Elements

StepDescription
Create Data Element

Call transaction SE11. Select radio button "Data type" and enter name "ZEPPM_JIRA_ASSIGNEE". Choose button "Create".

Select Type "Data Element"

On the pop-up, mark radio button "Data element" and select "Continue (Enter)"

Maintain Data Type Data

As short description, maintain "Assignee". On the Data Type tab, select radio button "Elementary Type" and radio button "Domain". For domain, maintain domain ZEPPM_JIRA_STRING created in the previous section.

Maintain Field Label and Activate

Switch to tab "Field Label" and maintain "Assignee" for the field labels for short, medum, long, and heading. Press "Enter" to get values for the default length. Choose button "Activate (Ctrl+F3)".

Assign Package to Data Element


On the now triggered pop-up, choose a transportable package from your namespace or select button "Local Object" if transport is not planned. Assign a transport request if required by the system.

Repeat the Steps

Repeat the steps above, so that you have the data elements of the following list available:

Data TypeShort descriptionDomainField Label ShortField Label MediumField Label LongField Label Heading
ZEPPM_JIRA_ASSIGNEEAssigneeZEPPM_JIRA_STRINGAssigneeAssigneeAssigneeAssignee
ZEPPM_JIRA_ASSIGNEE_EMAILAssignee MailZEPPM_JIRA_STRINGAssg. MailAssignee MailAssignee MailAssignee Mail
ZEPPM_JIRA_DESCRIPTIONDescriptionZEPPM_JIRA_STRINGDescr.DescriptionDescriptionDescription
ZEPPM_JIRA_DUEDATEDue DateZEPPM_JIRA_STRINGDue DateDue DateDue DateDue Date
ZEPPM_JIRA_ISSUEKEYJira Issue KeyZEPPM_JIRA_NAMEIssueJira Issue KeyJira Issue KeyJira Issue Key
ZEPPM_JIRA_ISSUETYPETypeZEPPM_JIRA_STRINGTypeTypeTypeType
ZEPPM_JIRA_KEYFIELDJira KeyZEPPM_JIRA_NAMEKeyJira KeyJira KeyJira Key
ZEPPM_JIRA_LEADJira Project LeadZEPPM_JIRA_STRINGLeadLeadLeadLead
ZEPPM_JIRA_NAMENameZEPPM_JIRA_STRINGNameNameNameName
ZEPPM_JIRA_PARENT_EPIC_KEYParent Epic KeyZEPPM_JIRA_NAMEEpicEpic KeyEpic KeyEpic Key
ZEPPM_JIRA_PARENT_ISSUE_KEYParent Issue KeyZEPPM_JIRA_NAMEParentParent IssueParent Issue KeyParent Issue Key
ZEPPM_JIRA_PERCENTProgress (%)ZEPPM_JIRA_STRINGProgress %Progress (%)Progress (%)Progress (%)
ZEPPM_JIRA_PROGRESSProgressZEPPM_JIRA_STRINGProgr. (h)Progress (h)Progress (h)Progress (h)
ZEPPM_JIRA_PROGRESSTOTProgress total time forecastZEPPM_JIRA_STRINGTotlForcstTotal forecast (h)Total forecast (h)Total forecast (h)
ZEPPM_JIRA_PROJECTKEYJira Project KeyZEPPM_JIRA_NAMEProjectJira Project KeyJira Project KeyJira Project Key
ZEPPM_JIRA_STATUSJira StatusZEPPM_JIRA_STRINGStatusStatusStatusStatus
ZEPPM_JIRA_SUMMARYJira SummaryZEPPM_JIRA_NAMESummarySummarySummarySummary
ZEPPM_JIRA_TIMEESTIMATERemaining TimeZEPPM_JIRA_STRINGRemainingRemaining Time (h)Remaining Time (h)Remaining Time (h)
ZEPPM_JIRA_TIMEORIGESTIMATEOriginal planned timeZEPPM_JIRA_STRINGOrig.Pln.Orig. Planned (h)Original planned time (h)Original planned time (h)
ZEPPM_JIRA_TIMESPENTLogged TimeZEPPM_JIRA_STRINGLogged (h)Logged Time (h)Logged Time (h)Logged Time (h)


Create Structures

StepDescription
Create Structure


Call transaction SE11. Select radio button "Data type" and enter name "ZEPPM_JIRA_ISSUE_DATA". Choose button "Create". Select radio button "Structure" and continue.

Select Type Structure

On the pop-up, mark radio button "Structure" and select "Continue (Enter)"

Maintain Description and Components

Maintain "Jira Issue Data" as Short Description. Maintain the following components, each with typing method "Types":

ComponentComponent Type
ISSUEKEYZEPPM_JIRA_ISSUEKEY
ROOTKEYZEPPM_JIRA_PROJECTKEY
PARENTKEYZEPPM_JIRA_PARENT_ISSUE_KEY
PARENTEPICZEPPM_JIRA_PARENT_EPIC_KEY
ISSUETYPEZEPPM_JIRA_ISSUETYPE
ASSIGNEEZEPPM_JIRA_ASSIGNEE
ASSIGNEEMAILZEPPM_JIRA_ASSIGNEE_EMAIL
STATUSZEPPM_JIRA_STATUS
SUMMARYZEPPM_JIRA_SUMMARY
DUEDATEZEPPM_JIRA_DUEDATE
BUPAGUIDBU_PARTNER_GUID
TIMEESTIMATEZEPPM_JIRA_TIMEESTIMATE
TIMEORIGESTIMATEZEPPM_JIRA_TIMEORIGESTIMATE
TIMESPENTZEPPM_JIRA_TIMESPENT
PROGRESSZEPPM_JIRA_PROGRESS
PROGRESSTOTZEPPM_JIRA_PROGRESSTOT
PERCENTZEPPM_JIRA_PERCENT
AGGTIMEORIGESTZEPPM_JIRA_TIMEORIGESTIMATE
AGGTIMESPENTZEPPM_JIRA_TIMESPENT
AGGPROGRESSZEPPM_JIRA_PROGRESS
AGGPROGRESSTOTZEPPM_JIRA_PROGRESSTOT
AGGPERCENTZEPPM_JIRA_PERCENT
Maintain Enhancement Category and Activate

Chose menu path "Extras" → "Enhancement Category..." to maintain the enhancement category of this structure. Select radio button "Can be enhanced (deep)" and press button "Copy (Enter)". Activate using button "Activate (Ctrl+F3)".

Assign Package to Structure


On the now triggered pop-up, choose a transportable package from your namespace or select button "Local Object" if transport is not planned. Assign a transport request if required by the system.

Repeat the Steps

Repeat the steps above, so that you have the data elements of the following list available in addition:

StructureShort DescriptionComponents
ZEPPM_JIRA_PROJECT_DATAJira Project Detail Data
ComponentComponent Type
KEYFIELDZEPPM_JIRA_KEYFIELD
LEADZEPPM_JIRA_LEAD
NAMEZEPPM_JIRA_NAME
ZEPPM_JIRA_KEYJira Project Key Structure
ComponentComponent Type
KEY

ZEPPM_JIRA_KEYFIELD

Remark: A warning will occur with reference to the component name "KEY" but can be ignored.

ZEPPM_JIRA_SEARCHJira Project Search Structure
ComponentComponent Type
KEY

ZEPPM_JIRA_KEYFIELD

SUMMARYZEPPM_JIRA_SUMMARY

Remark: A warning will occur with reference to the component name "KEY" but can be ignored.

Create Message Class ZJIRA

StepDescription
Create Message Class ZJIRA

Open transaction SE91. Enter message class ZJIRA and choose button "Create". Switch to tab "Messages".


Assign Package to Message Class

On the now triggered pop-up, choose a transportable package from your namespace or select button "Local Object" if transport is not planned. Assign a transport request if required by the system.

Maintain Message Short Texts

On tab messages, maintain the following entries:

No.Message Short TextSelf-Explanatory
001No authorization to access Jira. Grant access via link &1&2&3&4Yes
002A connection error occurred (&1&2&3&4)Yes
003Connection error: URL &1&2&3&4 cannot be reachedYes
004Object link customizing for type &1 missing or incompleteYes
005You must link at least one Jira project before adding issuesYes

Save your entries and leave the transaction.


Create the Object Link Proxy Class

StepDescription
Create Proxy Class

Call transaction SE24. Maintain "CL_EPPM_JIRA_PROXY" for Object Type and select "Create".

Maintain Class Description

As class description, maintain "Proxy Class for Object Links To Jira". Keep all other default values. Select "Save"

Assign Package to Class

On the now triggered pop-up, choose a transportable package from your namespace or select button "Local Object" if transport is not planned. Assign a transport request if required by the system.

Toggle to Source Code-Based Class Builder

Toggle the the mode of the Class Builder by choosing Button "Source Code-Based (Shift+Ctrl+0)". In the editor, remove all generated coding.

Paste Class Source Code

Copy the code contained in page zcl_eppm_jira_proxy to the clipboard by marking all content of this file with Ctrl+A followed by Ctrl+C. Paste the buffered code into the source code-based class builder using Ctrl+A followed by Ctrl+V. Save.

Add Local Definitions / Implementations

To add local classes and exceptions, select button "Local Definitions/Implementations (Ctrl+F10)". In the editor, remove all generated code and comments.

Paste Local Class Source Code

Copy the code contained in page zcl_eppm_jira_proxy, local classes to the clipboard by marking all content of this file with Ctrl+A followed by Ctrl+C. Paste the buffered code into the source code-based class builder using Ctrl+A followed by Ctrl+V. Save.

Assign Package to ClassOn the now triggered pop-up, choose a transportable package from your namespace or select button "Local Object" if transport is not planned. Assign a transport request if required by the system.

Customizing Settings

You now have all necessary ABAP artifacts on your system. They can now be used for creating the object link customizing entries. The customizing will also cover a severity calculation that allows to set a red traffic light on an object link to Jira epics and stories if the aggregated forecast for work in Jira exceeds the aggregated original estimate.

Group Object Types

StepDescription
Open SettingsNavigate to the object links customizing in the IMG using the following path: SAP Portfolio and Project Management → Project Management → Basic Settings. Open the IMG Activity Group Object Types.
New Entries

Select "New Entries". Maintain the following data and save:

FieldValue
GroupZJIRA
NameJIRA Objects
Used InProject Management
ActiveYes


Make Settings for Calling an SAP Transaction

StepDescription
Open SettingsNavigate to the object links customizing in the IMG using the following path: SAP Portfolio and Project Management → Project Management → Connection to External Systems → Object Links in SAP Systems. Open the IMG Activity Make Settings for Calling an SAP Transaction.
Maintain Service for an SAP Transaction

In the Dialog Structure, double click on the entry Service for an SAP Transaction. Choose "New Entries" and add the service "ZJIRA_SHOW" with description "Open browser and display a selected Jira object". Save.

Alias for the Web Server of an SAP Transaction

Double click on the entry "Alias for the Web Server of an SAP Transaction". Chose New Entries and maintain the following entries. For entry ZJIRA_SHOW, replace the <xxx> in the URL by your Jira instance name as in the url you use to show your Jira projects in a browser. All api.atlassian.com related links must exactly be maintained as given below: The code in the class created above will make sure that the placeholder <CLOUDID> in these links will be replaced by your individual Jira ID at runtime.

Save your entries.

Make Settings for the Linked SAP Objects

Object Link for Object Type Jira Project

StepDescription
Open SettingsNavigate to the object links customizing in the IMG using the following path: SAP Portfolio and Project Management → Project Management → Connection to External Systems → Object Links in SAP Systems. Open the IMG Activity Make Settings for the linkes SAP Objects.
Maintain Object Types for Object Links

In the dialog structure, select top entry "Object Types for Object Links". Choose "New Entries".

Maintain the following data:

FieldValue
Object TypeZJIRAPROJECT
Object Type NameJira Project
ActiveYes
KeyZEPPM_JIRA_KEY
GroupZJIRA
Existence CheckYes
Search HelpYes
Read DataYes
Search FieldsZEPPM_JIRA_KEY
Proxy ClassZCL_EPPM_JIRA_PROXY
Web Server

ZJIRA_PROJECT_SERVICE_URL

Restrict Project Element Types

In the dialog structure, select "Restrict Plroject Element Types.Choose "New Entries". Maintain the following data, so that Jira projects can only be assigned to projects on root level:

Project Element Types
Project Template
Checklist
Checklist Template
Phase
Phase in Template
Task
Task in Template
Checklist Item
Checklist Item in Template
Project Role
Project Role in Template
Maintain Fields per Object Type

In the dialog structure, select "Fields per Object Type". Choose "New Entries". Maintain the following data:

Field NameField Name for Evaluation
ZEPPM_JIRA_PROJECT_DATA-KEYFIELDZKEYFIELD
ZEPPM_JIRA_PROJECT_DATA-LEADZLEAD
ZEPPM_JIRA_PROJECT_DATA-NAMEZNAME
Maintain Frames per Object Type

In the dialog structure, select "Frames per Object Type". Choose "New Entries". Maintain the following data and save:

FramesFrame TypeSequenceActiveFrame Name
0FRAME111YesGeneral Data
Maintain Frames per Object Type - Fields per Frame

Select the new entry and choose "Fields per Frame" in the dialog structure. Press button "New Entries". Maintain the following values:

CounterField NameSequenceActive
1ZEPPM_JIRA_PROJECT_DATA-KEYFIELD1Yes
2ZEPPM_JIRA_PROJECT_DATA-NAME2Yes
3ZEPPM_JIRA_PROJECT_DATA-LEAD3Yes



Maintain Table/View in SAP System per Object Type and Meth.

Select Entry "Table/View in SAP System per Object Type and Meth." in the dialog structure. Press button "New Entries". Maintain the following values:

MethodStrategyDDIC StructureStrategy Description
41ZEPPM_JIRA_PROJECT_DATA
Maintain Service for an Object Type

Select Entry "Table/View in SAP System per Object Type and Meth." in the dialog structure Press button "New Entries". Maintain the following values:

Service for an Object TypeItemActive

Web Server

ZJIRA_SHOW1YesZJIRA_SHOW

Object Link for Object Type Jira Epic

StepDescription
Open SettingsNavigate to the object links customizing in the IMG using the following path: SAP Portfolio and Project Management → Project Management → Connection to External Systems → Object Links in SAP Systems. Open the IMG Activity Make Settings for the linkes SAP Objects.
Maintain Object Types for Object Links


In the dialog structure, select top entry "Object Types for Object Links". Choose "New Entries".

Maintain the following data:

FieldValue
Object TypeZJIRAEPIC
Object Type NameJira Epic
ActiveYes
KeyZEPPM_JIRA_KEY
GroupZJIRA
Existence CheckYes
Search HelpYes
Read DataYes
Search FieldsZEPPM_JIRA_SEARCH
Proxy ClassZCL_EPPM_JIRA_PROXY
Web ServerZJIRA_EPIC_SERVICE_URL
Maintain Fields per Object Type

In the dialog structure, select "Fields per Object Type". Choose "New Entries". Maintain the following data:

Field NameField Name for Evaluation
ZEPPM_JIRA_ISSUE_DATA-AGGPERCENTZAGGPERCENT
ZEPPM_JIRA_ISSUE_DATA-AGGPROGRESSZAGGPROGRESS
ZEPPM_JIRA_ISSUE_DATA-AGGPROGRESSTOTZAGGPROGRESSTOT
ZEPPM_JIRA_ISSUE_DATA-AGGTIMEORIGESTZAGGTIMEORIGEST
ZEPPM_JIRA_ISSUE_DATA-AGGTIMESPENTZAGGTIMESPENT
ZEPPM_JIRA_ISSUE_DATA-ASSIGNEEZASSIGNEE
ZEPPM_JIRA_ISSUE_DATA-ASSIGNEEMAILZASSIGNEEMAIL
ZEPPM_JIRA_ISSUE_DATA-DUEDATEZDUEDATE
ZEPPM_JIRA_ISSUE_DATA-ISSUEKEYZISSUEKEY
ZEPPM_JIRA_ISSUE_DATA-ISSUETYPEZISSUETYPE
ZEPPM_JIRA_ISSUE_DATA-PARENTEPICZPARENTEPIC
ZEPPM_JIRA_ISSUE_DATA-PARENTKEYZPARENTKEY
ZEPPM_JIRA_ISSUE_DATA-PERCENTZPERCENT
ZEPPM_JIRA_ISSUE_DATA-PROGRESSZPROGRESS
ZEPPM_JIRA_ISSUE_DATA-PROGRESSTOTZPROGRESSTOT
ZEPPM_JIRA_ISSUE_DATA-ROOTKEYZROOTKEY
ZEPPM_JIRA_ISSUE_DATA-STATUSZSTATUS
ZEPPM_JIRA_ISSUE_DATA-SUMMARYZSUMMARY
ZEPPM_JIRA_ISSUE_DATA-TIMEESTIMATEZTIMEESTIMATE
ZEPPM_JIRA_ISSUE_DATA-TIMEORIGESTIMATEZTIMEORIGESTIMATE
ZEPPM_JIRA_ISSUE_DATA-TIMESPENTZTIMESPENT
Maintain Frames per Object Type

In the dialog structure, select "Frames per Object Type". Choose "New Entries". Maintain the following data and save, ignoring warnings about namespaces:

FramesFrame TypeSequenceActiveFrame Name
0FRAME111YesGeneral Data
0FRAME222YesKey Data
0FRAME323YesWork and Progress (Including Sub-Issues)
0FRAME424YesWork and Progress (Current Issue Only)
Maintain Frames per Object Type - Fields per Frame

Select the first line and choose Fields per frame. Maintain the data for 0FRAME1 as listed below. Double click on Dialog Structure, Frames per Object Type to navigate back to Frames per Object Type. Repeat for the next three entries.

FrameFields per Frame
0FRAME1: General Data

CounterField NameSequenceActive
1

ZEPPM_JIRA_ISSUE_DATA-SUMMARY

1Yes
2ZEPPM_JIRA_ISSUE_DATA-STATUS2Yes
3ZEPPM_JIRA_ISSUE_DATA-ASSIGNEE3Yes
4ZEPPM_JIRA_ISSUE_DATA-ASSIGNEEMAIL4Yes
5ZEPPM_JIRA_ISSUE_DATA-DUEDATE5Yes
0FRAME2: Key Data

CounterField NameSequenceActive
1ZEPPM_JIRA_ISSUE_DATA-ISSUEKEY1Yes
2ZEPPM_JIRA_ISSUE_DATA-ROOTKEY2Yes
3ZEPPM_JIRA_ISSUE_DATA-ISSUETYPE3Yes
0FRAME3: Work and Progress (Including Sub-Issues)


CounterField NameSequenceActive
1ZEPPM_JIRA_ISSUE_DATA-AGGTIMEORIGEST1Yes
2ZEPPM_JIRA_ISSUE_DATA-AGGTIMESPENT2Yes
3ZEPPM_JIRA_ISSUE_DATA-AGGPROGRESS3Yes
4ZEPPM_JIRA_ISSUE_DATA-AGGPERCENT4Yes
5ZEPPM_JIRA_ISSUE_DATA-AGGPROGRESSTOT5Yes
0FRAME4: Work and Progress (Current Issue Only)

CounterField NameSequenceActive
1ZEPPM_JIRA_ISSUE_DATA-TIMEORIGESTIMATE1Yes
2ZEPPM_JIRA_ISSUE_DATA-TIMESPENT2Yes
3ZEPPM_JIRA_ISSUE_DATA-PROGRESS3Yes
4ZEPPM_JIRA_ISSUE_DATA-PERCENT4Yes
5ZEPPM_JIRA_ISSUE_DATA-PROGRESSTOT5Yes
6ZEPPM_JIRA_ISSUE_DATA-TIMEESTIMATE6Yes
Maintain Table/View in SAP System per Object Type and Meth.


Select Entry "Table/View in SAP System per Object Type and Meth." in the dialog structure. Press button "New Entries". Maintain the following values:

MethodStrategyDDIC StructureStrategy Description
41ZEPPM_JIRA_ISSUE_DATA
Maintain Service for an Object Type


Select Entry "Service for an Object Type" in the dialog structure Press button "New Entries". Maintain the following values:

Service for an Object TypeItemActiveWeb Server
ZJIRA_SHOW1YesZJIRA_SHOW

Object Link for Object Type Jira User Story

StepDescription
Open SettingsNavigate to the object links customizing in the IMG using the following path: SAP Portfolio and Project Management → Project Management → Connection to External Systems → Object Links in SAP Systems. Open the IMG Activity Make Settings for the linkes SAP Objects.
Maintain Object Types for Object Links

In the dialog structure, select top entry "Object Types for Object Links". Choose "New Entries".

Maintain the following data:

FieldValue
Object TypeZJIRAUSERSTORY
Object Type NameJira User Story
ActiveYes
KeyZEPPM_JIRA_KEY
GroupZJIRA
Existence CheckYes
Search HelpYes
Read DataYes
Search FieldsZEPPM_JIRA_SEARCH
Proxy ClassZCL_EPPM_JIRA_PROXY
Web Server

ZJIRA_USERSTORY_SERVICE_URL

Maintain Fields per Object Type


In the dialog structure, select "Fields per Object Type". Choose "New Entries". Maintain the following data:

Field NameField Name for Evaluation
ZEPPM_JIRA_ISSUE_DATA-AGGPERCENTZAGGPERCENT
ZEPPM_JIRA_ISSUE_DATA-AGGPROGRESSZAGGPROGRESS
ZEPPM_JIRA_ISSUE_DATA-AGGPROGRESSTOTZAGGPROGRESSTOT
ZEPPM_JIRA_ISSUE_DATA-AGGTIMEORIGESTZAGGTIMEORIGEST
ZEPPM_JIRA_ISSUE_DATA-AGGTIMESPENTZAGGTIMESPENT
ZEPPM_JIRA_ISSUE_DATA-ASSIGNEEZASSIGNEE
ZEPPM_JIRA_ISSUE_DATA-ASSIGNEEMAILZASSIGNEEMAIL
ZEPPM_JIRA_ISSUE_DATA-DUEDATEZDUEDATE
ZEPPM_JIRA_ISSUE_DATA-ISSUEKEYZISSUEKEY
ZEPPM_JIRA_ISSUE_DATA-ISSUETYPEZISSUETYPE
ZEPPM_JIRA_ISSUE_DATA-PARENTEPICZPARENTEPIC
ZEPPM_JIRA_ISSUE_DATA-PARENTKEYZPARENTKEY
ZEPPM_JIRA_ISSUE_DATA-PERCENTZPERCENT
ZEPPM_JIRA_ISSUE_DATA-PROGRESSZPROGRESS
ZEPPM_JIRA_ISSUE_DATA-PROGRESSTOTZPROGRESSTOT
ZEPPM_JIRA_ISSUE_DATA-ROOTKEYZROOTKEY
ZEPPM_JIRA_ISSUE_DATA-STATUSZSTATUS
ZEPPM_JIRA_ISSUE_DATA-SUMMARYZSUMMARY
ZEPPM_JIRA_ISSUE_DATA-TIMEESTIMATEZTIMEESTIMATE
ZEPPM_JIRA_ISSUE_DATA-TIMEORIGESTIMATEZTIMEORIGESTIMATE
ZEPPM_JIRA_ISSUE_DATA-TIMESPENTZTIMESPENT


Maintain Frames per Object Type


In the dialog structure, select "Frames per Object Type". Choose "New Entries". Maintain the following data and save, ignoring warnings about namespaces:

FramesFrame TypeSequenceActiveFrame Name
0FRAME111YesGeneral Data
0FRAME222YesKey Data
0FRAME323YesWork and Progress (Including Sub-Issues)
0FRAME424YesWork and Progress (Current Issue Only)


Maintain Frames per Object Type - Fields per Frame

Select the first line and choose Fields per frame. Maintain the data for 0FRAME1 as listed below. Double click on Dialog Structure, Frames per Object Type to navigate back to Frames per Object Type. Repeat for the next three entries.

FrameFields per Frame
0FRAME1: General Data

CounterField NameSequenceActive
1

ZEPPM_JIRA_ISSUE_DATA-SUMMARY

1Yes
2ZEPPM_JIRA_ISSUE_DATA-STATUS2Yes
3ZEPPM_JIRA_ISSUE_DATA-ASSIGNEE3Yes
4ZEPPM_JIRA_ISSUE_DATA-ASSIGNEEMAIL4Yes
5ZEPPM_JIRA_ISSUE_DATA-DUEDATE5Yes
0FRAME2: Key Data

CounterField NameSequenceActive
1ZEPPM_JIRA_ISSUE_DATA-ISSUEKEY1Yes
2ZEPPM_JIRA_ISSUE_DATA-ROOTKEY2Yes
3ZEPPM_JIRA_ISSUE_DATA-PARENTKEY3Yes
4ZEPPM_JIRA_ISSUE_DATA-PARENTEPIC4Yes
5ZEPPM_JIRA_ISSUE_DATA-ISSUETYPE5Yes
0FRAME3: Work and Progress (Including Sub-Issues)

CounterField NameSequenceActive
1ZEPPM_JIRA_ISSUE_DATA-AGGTIMEORIGEST1Yes
2ZEPPM_JIRA_ISSUE_DATA-AGGTIMESPENT2Yes
3ZEPPM_JIRA_ISSUE_DATA-AGGPROGRESS3Yes
4ZEPPM_JIRA_ISSUE_DATA-AGGPERCENT4Yes
5ZEPPM_JIRA_ISSUE_DATA-AGGPROGRESSTOT5Yes
0FRAME4: Work and Progress (Current Issue Only)

CounterField NameSequenceActive
1ZEPPM_JIRA_ISSUE_DATA-TIMEORIGESTIMATE1Yes
2ZEPPM_JIRA_ISSUE_DATA-TIMESPENT2Yes
3ZEPPM_JIRA_ISSUE_DATA-PROGRESS3Yes
4ZEPPM_JIRA_ISSUE_DATA-PERCENT4Yes
5ZEPPM_JIRA_ISSUE_DATA-PROGRESSTOT5Yes
6ZEPPM_JIRA_ISSUE_DATA-TIMEESTIMATE6Yes
Maintain Table/View in SAP System per Object Type and Meth.


Select Entry "Table/View in SAP System per Object Type and Meth." in the dialog structure. Press button "New Entries". Maintain the following values:

MethodStrategyDDIC StructureStrategy Description
41ZEPPM_JIRA_ISSUE_DATA


Maintain Service for an Object Type


Select Entry "Service for an Object Type" in the dialog structure Press button "New Entries". Maintain the following values:

Service for an Object TypeItemActiveWeb Server
ZJIRA_SHOW1YesZJIRA_SHOW


Setting Traffic Lights: Example Customizing for Evaluation

Severity calculation within SAP Portfolio and Project Management is a rule based tool that allows to visualize within a project structure if issues exist.In the context of this article we use this tool to influence the severity of project objects (which is then visualized as traffic light) based on data from Jira. Due to the flexibility of the tool, a lot of different scenarios can be realized, however, here we we focus on a very simple example to show the principle. If you have other requirements, you can use the example as a starting point for your implementation.

This example checks if the effort for a Jira issue with status 'in Progress' will be larger than the original estimate, indicating a potential delay of a project element. If such a situation is detected, a traffic light is set on an object link, which then is passed to super-ordinate project elements. A project lead can then check if the additional unplanned effort from Jira has an influence on the current project plan, so that he can adjust project or Jira data if necessary.

Define Attributes and Object Types for Evaluation

StepDescription

Define Attributes and Object Types for Evaluation

Navigate to the evaluations customizing in the IMG using the following path: SAP Portfolio and Project Management → Project Management → Evaluations. Open the IMG Activity Define Attributes and Object Types for Evaluations.
Maintain Secondary Object Categories

In the dialog structure, select "Secondary Object Categories" and choose "New Entries". Maintain the following values:

Secondary Object TypeSecondary Object Category DescriptionObject CategoryIcon name
ZJIRAEPICObject Link to Jira EpicOBJECT_LINKICON_DEFECT
ZJIRAUSERSTORYObject Link to Jira User StoryOBJECT_LINKICON_DEFECT



Maintain Attributes


In the dialog structure, select "Attributes" and choose "New Entries". Maintain the following values:

AttributeAttr. TypeType NameSumm. RuleSumm. Res.Init. Vals

ZAGGTIMEORIGEST

Data Element

ZEPPM_JIRA_TIMEORIGESTIMATENo SummarizationInclude Higher LevelIgnore During Summarization

ZAGGPROGRESSTOT

Data ElementZEPPM_JIRA_PROGRESSTOTNo SummarizationInclude Higher LevelIgnore During Summarization
ZSTATUSData ElementZEPPM_JIRA_STATUSNo SummarizationInclude Higher LevelIgnore During Summarization


Maintain Attributes, Objects for Attributes

Mark the entry for attribute ZAGGTIMEORIGEST. In the dialog structure, choose Objects for Attributes and select "New Entries". For ObjectCat., add the entry "OBJECT_LINK" and press Enter.


Mark the new entry "OBJECT_LINK". In the dialog structure, choose "Secondary Objects for Attributes" and select "New Entries". For Secondary Object Type, add the values "ZJIRAEPIC' and "ZJIRAUSERSTORY". Double click on Dialog Structure, entry Attributes to get back to the list of attributes.Repeat for ZAGGPROGRESSTOT and ZSTATUS, so that both attributes are assigned to Objects for Attributes "OBJECT_LINK" and Secondary Object Type "ZJIRALINK", too. Save.

Repeat for attributes ZAGGPROGRESSTOT and ZSTATUS, maintaining the same values for Object Cat. and Secondary Object Type.

Define Extract Layouts

StepDescription

Define Extract Layouts

Navigate to the evaluations customizing in the IMG using the following path: SAP Portfolio and Project Management → Project Management → Evaluations. Open the IMG Activity Define Extract Layouts.
Maintain Extracts

In the dialog structure, select "Extracts". Choose "New Entries". Maintain a new entry with the following values:

Extract LayoutExtract NameIterator
ZJIRAUNPLANNEDUnplanned additional Jira EffortPROJECT
Maintain Extracts → Objects

Mark the new entry ZJIRAUNPLANNED. In the dialog structure, select Objects and choose "New Entries". Add Object Cat. "OBJECT_LINK".

Maintain Extracts → Objects → Secondary Objects

Mark the new entry OBJECT_LINK. In the dialog structure, select Secondary Objects and choose "New Entries". Add Secondary Object Type "ZJIRALINK".

Maintain Extracts → Attributes

In the dialog structure, select Attributes and choose "New Entries". Maintain the following Attributes and save.

AttributeAlways ExtractCalculate after Aggr.
ZAGGPROGRESSTOTYes
ZAGGTIMEORIGESTYes
ZSTATUSYes

Assign Extract Layouts to Project Types

StepDescription
Assign Extract Layouts to Project Types

Navigate to the evaluations customizing in the IMG using the following path: SAP Portfolio and Project Management → Project Management → Evaluations. Open the IMG Activity Assign Extract Layouts to Project Types. Choose "New Entries" and create a new line with project types relevant for your process and the Extract Layout ZJIRAUNPLANNED. Save your entries.

Note: The screenshot above is for illustration only, you will have to adapt the project type here.

Define Evaluations

StepDescription
Define Evaluations

Navigate to the evaluations customizing in the IMG using the following path: SAP Portfolio and Project Management → Project Management → Evaluations. Open the IMG Activity Define Evaluations. Choose "New Entries" and maintain the following data:

Evaluation LayoutEvaluation NameEv.Inactv.Extract Layout
ZJIRAUNPLANNEDUnplanned Effort in Jira<initial>ZJIRAUNPLANNED
Maintain Evaluations → Objects

Mark the new entry ZJIRAUNPLANNED. In the dialog structure, select Objects and choose "New Entries". Add ObjectCat. "OBJECT_LINK".

Maintain Evaluations → Objects → Secondary Objects


Mark the new entry OBJECT_LINK. In the dialog structure, select Secondary Objects and choose "New Entries". Add Secondary Object Types ZJIRAEPIC and ZJIRAUSERSTORY.

Maintain Evaluations → Attributes

In the dialog structure, select Attributes and choose "New Entries". Maintain the following entries and save.

AttributeSort Order
ZAGGPROGRESSTOT1
ZAGGTIMEORIGEST2
ZSTATUS3

Define Threshold Values

StepDescription
Define Threshold ValuesNavigate to the evaluations customizing in the IMG using the following path: SAP Portfolio and Project Management → Project Management → Evaluations. Open the IMG Activity Define Threshold Values.
Maintain New Entry

Select "New Entries". Maintain the following data:

Thres.Val.Thresh.ValSeverityEval.Lay.ObjectCat.
ZJIRAUNPLANNEDAlert on unplanned JIRA effort200ZJIRAUNPLANNEDOBJECT_LINK
Change Formula

In the new entry, press the button "Form. (a/b)". In the formula editor, switch to expert mode and maintain the formula:

ZSTATUS = 'In Progress' AND ZAGGPROGRESSTOT > ZAGGTIMEORIGEST

Go back (F3) and save.

Testing Your Implementation

You are done with the implementation, now you should test:

StepDescription
Test System ConnectionMake sure that you implemented the OAuth 2.0 based authorization grant process correctly. Execute the test report from article Access Atlassian Jira Cloud Platform using the OAuth 2.0 Client. Then check if the search help on Jira objects works fine. You will get an error message if the system connection isn't working and you try to assign Jira objects explicitly. Note that the example implementation requires that you assign a Jira project on root level before you can assign epics or user stories.
Test EvaluationIf you can assign a Jira element, test the severity calculation. For that, assign a user story to your project via object links. Navigate to that user story in Jira and maintain remaining time to be larger than the original estimate. If the evaluation is set up properly, you will see a change in project severity on save.

Variants

Next to extending the severity calculation by using other or more complex formulas, you can also change the behavior of the Jira object links. For example, the restriction can be removed that a Jira project needs to be assigned at project root level. You just need to change the relevant code lines in method ZCL_EPPM_JIRA_PROXY=>IF_DPR_OBL_PROXY~SEARCH_OBJECTS(). In the very same method you can make more than the object types user story and epic available for linking (but make sure that you also set up the customizing accordingly). Remember: It's your code now (smile)








Summary

The Object Link framework of SAP Portfolio and Project Management in SAP S/4HANA is a very powerful tool; many pre-configured object link types are part of the delivery customizing. In addition you can also create your own object links to a variety of objects within your SAP system. But the SAP system boundaries are no limit for this functionality: You can also use data from  external systems - if the necessary APIs are available and the system offers appropriate authentication mechanisms. A good candidate is Atlassian's Jira Cloud Platform, which offers both a comprehensive REST based API and OAuth 2.0 protocol based authentication.

This article describes how you can use the Object Links framework to integrate your projects with Jira Cloud. It contains example coding, necessary DDIC elements to be created, and a guide to set up your object link customizing that will work for SAP S/4HANA 1809 FPS1 and Atlassian Jira Cloud Platform REST API V3. You can also downport the SAP S/4HANA code to SAP Portfolio and Project Management 6.1.

Author(s):

Company: SAP SE

Created on: 04-06-2019

Author(s) Bio

Vytas Cirpus is a Development Architect at SAP and works in the area of Enterprise Portfolio and Project Management. One of his focus topics is the integration of Enterprise Portfolio and Project Management with cloud platform based applications.

Disclaimer

This article is a guidance how you can implement and configure object links to Jira Cloud. It is not a standard software delivery; all code and customizing setting examples are illustrative only. We can not warrant that the examples are error-free nor that this example will work forever. However, after working through this example, you will have the necessary knowledge to create your own implementation and customizing setting for a straight.forward integration of SAP Portfolio and Project Management and Atlassian Jira Cloud Platform.

Features of the Integration

After having performed all steps below, you will be able to create object links between SAP S/4HANA projects and Jira projects. Once you established a link to a Jira project, you will be able to link Jira Epics and Jira Stories to project elements. The Jira data will be available in the project to perform evaluations, so that the system can automatically set a severity on the linked project object depending on the content of the Jira element. Linked Jira Epics and Stories will be updated with a link to the project element carrying the object link on saving. This allows both navigation to the Jira element as well as from the Jira element to the project object.

Prerequisite

Any well designed integration makes sure that users can only see data they are entitled to, regardless of which of the integrated systems they are using. In our example this is ensured by using the OAuth 2.0 protocol to establish secure system-to-system communication. Article Access Atlassian Jira Cloud Platform using the OAuth 2.0 Client describes the steps you need to take to have this possibility available on your system. Perform these steps before starting with this project.

To implement this integration, basic ABAP developer skills are required. You should know how to create DDIC elememts and ABAP classes. To adapt the code to your requirements, you should be a bit more experienced.

The Jira Cloud instance used for this implementation was set up for software projects and agile methodologies with sprints. Other ways of setting up your Jira instance can lead to different Jira element names, so that the example code might need adaptions. We'll give a hint where to check and to adapt below, however, you need to do your adaption on your own.

If you want to experiment with this integration but have no Jira Cloud instance: This example integration works fine when using a Jira Cloud trial system.

Limitations

The solution described in this article is simplified: For example, it does not contain possibilities to create Jira objects from projects, and it does not synchronize team members. However, as the corresponding APIs are available, you should be able to enhance the functionality on your own: The basics are already there.

Some of you might want to integrate SAP Portfolio and Project Management in SAP S/4HANA with Jira Server. However, although the REST APIs are very similar to those of Jira Cloud, there is no OAuth 2.0 support built in on Jira Server. You would have to check for third party extensions that introduce OAuth 2.0 support - there we can't help, as most probably all URLs to the REST API will be affected. And dropping OAuth 2.0 by using a technical user for the connection is not a good idea.

Implementation Steps

The implementation of this Jira integration requires the creation of multiple Data Dictionary objects, a class with some local classes and exceptions, and setting up both object link and evaluation customizing. Repetitive steps cannot be described in detail here - this article would get too large then. So for creating DDIC elements, we'll describe their creation in detail once only. You will have to repeat the steps based on a list of attributes as described for one example then.

Preparation

Make sure that you performed all steps described in the article Access Atlassian Jira Cloud Platform using the OAuth 2.0 Client. Below described object links will not work without that.

Create Domains

StepDescription
Create Domain

Call transaction SE11. Mark radio button "Domain" and enter domain name "ZEPPM_JIRA_NAME". Choose button "Create".

Maintain Domain Definition Data

Chose the Definition tab. As short description, maintain "Name". For Data Type, select "CHAR" with "50" for No. of Characters. Select checkbox for Case-sensitive. Choose button "Activate (Ctrl+F3)".

Assign Package to Domain

On the now triggered pop-up, choose a transportable package from your namespace or select button "Local Object" if transport is not planned. Assign a transport request if required by the system.

Repeat the Steps

Repeat the steps above, so that you have the domains of the following list available:

DomainShort DescriptionData TypeNo. CharactersCase-sensitive
ZEPPM_JIRA_NAMENameCHAR50Yes
ZEPPM_JIRA_STRINGJira StringSTRING
Yes

The created domains allow retrieving and displaying texts without conversion to all-caps.

Create Data Elements

StepDescription
Create Data Element

Call transaction SE11. Select radio button "Data type" and enter name "ZEPPM_JIRA_ASSIGNEE". Choose button "Create".

Select Type "Data Element"

On the pop-up, mark radio button "Data element" and select "Continue (Enter)"

Maintain Data Type Data

As short description, maintain "Assignee". On the Data Type tab, select radio button "Elementary Type" and radio button "Domain". For domain, maintain domain ZEPPM_JIRA_STRING created in the previous section.

Maintain Field Label and Activate

Switch to tab "Field Label" and maintain "Assignee" for the field labels for short, medum, long, and heading. Press "Enter" to get values for the default length. Choose button "Activate (Ctrl+F3)".

Assign Package to Data Element


On the now triggered pop-up, choose a transportable package from your namespace or select button "Local Object" if transport is not planned. Assign a transport request if required by the system.

Repeat the Steps

Repeat the steps above, so that you have the data elements of the following list available:

Data TypeShort descriptionDomainField Label ShortField Label MediumField Label LongField Label Heading
ZEPPM_JIRA_ASSIGNEEAssigneeZEPPM_JIRA_STRINGAssigneeAssigneeAssigneeAssignee
ZEPPM_JIRA_ASSIGNEE_EMAILAssignee MailZEPPM_JIRA_STRINGAssg. MailAssignee MailAssignee MailAssignee Mail
ZEPPM_JIRA_DESCRIPTIONDescriptionZEPPM_JIRA_STRINGDescr.DescriptionDescriptionDescription
ZEPPM_JIRA_DUEDATEDue DateZEPPM_JIRA_STRINGDue DateDue DateDue DateDue Date
ZEPPM_JIRA_ISSUEKEYJira Issue KeyZEPPM_JIRA_NAMEIssueJira Issue KeyJira Issue KeyJira Issue Key
ZEPPM_JIRA_ISSUETYPETypeZEPPM_JIRA_STRINGTypeTypeTypeType
ZEPPM_JIRA_KEYFIELDJira KeyZEPPM_JIRA_NAMEKeyJira KeyJira KeyJira Key
ZEPPM_JIRA_LEADJira Project LeadZEPPM_JIRA_STRINGLeadLeadLeadLead
ZEPPM_JIRA_NAMENameZEPPM_JIRA_STRINGNameNameNameName
ZEPPM_JIRA_PARENT_EPIC_KEYParent Epic KeyZEPPM_JIRA_NAMEEpicEpic KeyEpic KeyEpic Key
ZEPPM_JIRA_PARENT_ISSUE_KEYParent Issue KeyZEPPM_JIRA_NAMEParentParent IssueParent Issue KeyParent Issue Key
ZEPPM_JIRA_PERCENTProgress (%)ZEPPM_JIRA_STRINGProgress %Progress (%)Progress (%)Progress (%)
ZEPPM_JIRA_PROGRESSProgressZEPPM_JIRA_STRINGProgr. (h)Progress (h)Progress (h)Progress (h)
ZEPPM_JIRA_PROGRESSTOTProgress total time forecastZEPPM_JIRA_STRINGTotlForcstTotal forecast (h)Total forecast (h)Total forecast (h)
ZEPPM_JIRA_PROJECTKEYJira Project KeyZEPPM_JIRA_NAMEProjectJira Project KeyJira Project KeyJira Project Key
ZEPPM_JIRA_STATUSJira StatusZEPPM_JIRA_STRINGStatusStatusStatusStatus
ZEPPM_JIRA_SUMMARYJira SummaryZEPPM_JIRA_NAMESummarySummarySummarySummary
ZEPPM_JIRA_TIMEESTIMATERemaining TimeZEPPM_JIRA_STRINGRemainingRemaining Time (h)Remaining Time (h)Remaining Time (h)
ZEPPM_JIRA_TIMEORIGESTIMATEOriginal planned timeZEPPM_JIRA_STRINGOrig.Pln.Orig. Planned (h)Original planned time (h)Original planned time (h)
ZEPPM_JIRA_TIMESPENTLogged TimeZEPPM_JIRA_STRINGLogged (h)Logged Time (h)Logged Time (h)Logged Time (h)


Create Structures

StepDescription
Create Structure


Call transaction SE11. Select radio button "Data type" and enter name "ZEPPM_JIRA_ISSUE_DATA". Choose button "Create". Select radio button "Structure" and continue.

Select Type Structure

On the pop-up, mark radio button "Structure" and select "Continue (Enter)"

Maintain Description and Components

Maintain "Jira Issue Data" as Short Description. Maintain the following components, each with typing method "Types":

ComponentComponent Type
ISSUEKEYZEPPM_JIRA_ISSUEKEY
ROOTKEYZEPPM_JIRA_PROJECTKEY
PARENTKEYZEPPM_JIRA_PARENT_ISSUE_KEY
PARENTEPICZEPPM_JIRA_PARENT_EPIC_KEY
ISSUETYPEZEPPM_JIRA_ISSUETYPE
ASSIGNEEZEPPM_JIRA_ASSIGNEE
ASSIGNEEMAILZEPPM_JIRA_ASSIGNEE_EMAIL
STATUSZEPPM_JIRA_STATUS
SUMMARYZEPPM_JIRA_SUMMARY
DUEDATEZEPPM_JIRA_DUEDATE
BUPAGUIDBU_PARTNER_GUID
TIMEESTIMATEZEPPM_JIRA_TIMEESTIMATE
TIMEORIGESTIMATEZEPPM_JIRA_TIMEORIGESTIMATE
TIMESPENTZEPPM_JIRA_TIMESPENT
PROGRESSZEPPM_JIRA_PROGRESS
PROGRESSTOTZEPPM_JIRA_PROGRESSTOT
PERCENTZEPPM_JIRA_PERCENT
AGGTIMEORIGESTZEPPM_JIRA_TIMEORIGESTIMATE
AGGTIMESPENTZEPPM_JIRA_TIMESPENT
AGGPROGRESSZEPPM_JIRA_PROGRESS
AGGPROGRESSTOTZEPPM_JIRA_PROGRESSTOT
AGGPERCENTZEPPM_JIRA_PERCENT
Maintain Enhancement Category and Activate

Chose menu path "Extras" → "Enhancement Category..." to maintain the enhancement category of this structure. Select radio button "Can be enhanced (deep)" and press button "Copy (Enter)". Activate using button "Activate (Ctrl+F3)".

Assign Package to Structure


On the now triggered pop-up, choose a transportable package from your namespace or select button "Local Object" if transport is not planned. Assign a transport request if required by the system.

Repeat the Steps

Repeat the steps above, so that you have the data elements of the following list available in addition:

StructureShort DescriptionComponents
ZEPPM_JIRA_PROJECT_DATAJira Project Detail Data
ComponentComponent Type
KEYFIELDZEPPM_JIRA_KEYFIELD
LEADZEPPM_JIRA_LEAD
NAMEZEPPM_JIRA_NAME
ZEPPM_JIRA_KEYJira Project Key Structure
ComponentComponent Type
KEY

ZEPPM_JIRA_KEYFIELD

Remark: A warning will occur with reference to the component name "KEY" but can be ignored.

ZEPPM_JIRA_SEARCHJira Project Search Structure
ComponentComponent Type
KEY

ZEPPM_JIRA_KEYFIELD

SUMMARYZEPPM_JIRA_SUMMARY

Remark: A warning will occur with reference to the component name "KEY" but can be ignored.

Create Message Class ZJIRA

StepDescription
Create Message Class ZJIRA

Open transaction SE91. Enter message class ZJIRA and choose button "Create". Switch to tab "Messages".


Assign Package to Message Class

On the now triggered pop-up, choose a transportable package from your namespace or select button "Local Object" if transport is not planned. Assign a transport request if required by the system.

Maintain Message Short Texts

On tab messages, maintain the following entries:

No.Message Short TextSelf-Explanatory
001No authorization to access Jira. Grant access via link &1&2&3&4Yes
002A connection error occurred (&1&2&3&4)Yes
003Connection error: URL &1&2&3&4 cannot be reachedYes
004Object link customizing for type &1 missing or incompleteYes
005You must link at least one Jira project before adding issuesYes

Save your entries and leave the transaction.


Create the Object Link Proxy Class

StepDescription
Create Proxy Class

Call transaction SE24. Maintain "CL_EPPM_JIRA_PROXY" for Object Type and select "Create".

Maintain Class Description

As class description, maintain "Proxy Class for Object Links To Jira". Keep all other default values. Select "Save"

Assign Package to Class

On the now triggered pop-up, choose a transportable package from your namespace or select button "Local Object" if transport is not planned. Assign a transport request if required by the system.

Toggle to Source Code-Based Class Builder

Toggle the the mode of the Class Builder by choosing Button "Source Code-Based (Shift+Ctrl+0)". In the editor, remove all generated coding.

Paste Class Source Code

Copy the code contained in page zcl_eppm_jira_proxy to the clipboard by marking all content of this file with Ctrl+A followed by Ctrl+C. Paste the buffered code into the source code-based class builder using Ctrl+A followed by Ctrl+V. Save.

Add Local Definitions / Implementations

To add local classes and exceptions, select button "Local Definitions/Implementations (Ctrl+F10)". In the editor, remove all generated code and comments.

Paste Local Class Source Code

Copy the code contained in page zcl_eppm_jira_proxy, local classes to the clipboard by marking all content of this file with Ctrl+A followed by Ctrl+C. Paste the buffered code into the source code-based class builder using Ctrl+A followed by Ctrl+V. Save.

Assign Package to ClassOn the now triggered pop-up, choose a transportable package from your namespace or select button "Local Object" if transport is not planned. Assign a transport request if required by the system.

Customizing Settings

You now have all necessary ABAP artifacts on your system. They can now be used for creating the object link customizing entries. The customizing will also cover a severity calculation that allows to set a red traffic light on an object link to Jira epics and stories if the aggregated forecast for work in Jira exceeds the aggregated original estimate.

Group Object Types

StepDescription
Open SettingsNavigate to the object links customizing in the IMG using the following path: SAP Portfolio and Project Management → Project Management → Basic Settings. Open the IMG Activity Group Object Types.
New Entries

Select "New Entries". Maintain the following data and save:

FieldValue
GroupZJIRA
NameJIRA Objects
Used InProject Management
ActiveYes


Make Settings for Calling an SAP Transaction

StepDescription
Open SettingsNavigate to the object links customizing in the IMG using the following path: SAP Portfolio and Project Management → Project Management → Connection to External Systems → Object Links in SAP Systems. Open the IMG Activity Make Settings for Calling an SAP Transaction.
Maintain Service for an SAP Transaction

In the Dialog Structure, double click on the entry Service for an SAP Transaction. Choose "New Entries" and add the service "ZJIRA_SHOW" with description "Open browser and display a selected Jira object". Save.

Alias for the Web Server of an SAP Transaction

Double click on the entry "Alias for the Web Server of an SAP Transaction". Chose New Entries and maintain the following entries. For entry ZJIRA_SHOW, replace the <xxx> in the URL by your Jira instance name as in the url you use to show your Jira projects in a browser. All api.atlassian.com related links must exactly be maintained as given below: The code in the class created above will make sure that the placeholder <CLOUDID> in these links will be replaced by your individual Jira ID at runtime.

Save your entries.

Make Settings for the Linked SAP Objects

Object Link for Object Type Jira Project

StepDescription
Open SettingsNavigate to the object links customizing in the IMG using the following path: SAP Portfolio and Project Management → Project Management → Connection to External Systems → Object Links in SAP Systems. Open the IMG Activity Make Settings for the linkes SAP Objects.
Maintain Object Types for Object Links

In the dialog structure, select top entry "Object Types for Object Links". Choose "New Entries".

Maintain the following data:

FieldValue
Object TypeZJIRAPROJECT
Object Type NameJira Project
ActiveYes
KeyZEPPM_JIRA_KEY
GroupZJIRA
Existence CheckYes
Search HelpYes
Read DataYes
Search FieldsZEPPM_JIRA_KEY
Proxy ClassZCL_EPPM_JIRA_PROXY
Web Server

ZJIRA_PROJECT_SERVICE_URL

Restrict Project Element Types

In the dialog structure, select "Restrict Plroject Element Types.Choose "New Entries". Maintain the following data, so that Jira projects can only be assigned to projects on root level:

Project Element Types
Project Template
Checklist
Checklist Template
Phase
Phase in Template
Task
Task in Template
Checklist Item
Checklist Item in Template
Project Role
Project Role in Template
Maintain Fields per Object Type

In the dialog structure, select "Fields per Object Type". Choose "New Entries". Maintain the following data:

Field NameField Name for Evaluation
ZEPPM_JIRA_PROJECT_DATA-KEYFIELDZKEYFIELD
ZEPPM_JIRA_PROJECT_DATA-LEADZLEAD
ZEPPM_JIRA_PROJECT_DATA-NAMEZNAME
Maintain Frames per Object Type

In the dialog structure, select "Frames per Object Type". Choose "New Entries". Maintain the following data and save:

FramesFrame TypeSequenceActiveFrame Name
0FRAME111YesGeneral Data
Maintain Frames per Object Type - Fields per Frame

Select the new entry and choose "Fields per Frame" in the dialog structure. Press button "New Entries". Maintain the following values:

CounterField NameSequenceActive
1ZEPPM_JIRA_PROJECT_DATA-KEYFIELD1Yes
2ZEPPM_JIRA_PROJECT_DATA-NAME2Yes
3ZEPPM_JIRA_PROJECT_DATA-LEAD3Yes



Maintain Table/View in SAP System per Object Type and Meth.

Select Entry "Table/View in SAP System per Object Type and Meth." in the dialog structure. Press button "New Entries". Maintain the following values:

MethodStrategyDDIC StructureStrategy Description
41ZEPPM_JIRA_PROJECT_DATA
Maintain Service for an Object Type

Select Entry "Table/View in SAP System per Object Type and Meth." in the dialog structure Press button "New Entries". Maintain the following values:

Service for an Object TypeItemActive

Web Server

ZJIRA_SHOW1YesZJIRA_SHOW

Object Link for Object Type Jira Epic

StepDescription
Open SettingsNavigate to the object links customizing in the IMG using the following path: SAP Portfolio and Project Management → Project Management → Connection to External Systems → Object Links in SAP Systems. Open the IMG Activity Make Settings for the linkes SAP Objects.
Maintain Object Types for Object Links


In the dialog structure, select top entry "Object Types for Object Links". Choose "New Entries".

Maintain the following data:

FieldValue
Object TypeZJIRAEPIC
Object Type NameJira Epic
ActiveYes
KeyZEPPM_JIRA_KEY
GroupZJIRA
Existence CheckYes
Search HelpYes
Read DataYes
Search FieldsZEPPM_JIRA_SEARCH
Proxy ClassZCL_EPPM_JIRA_PROXY
Web ServerZJIRA_EPIC_SERVICE_URL
Maintain Fields per Object Type

In the dialog structure, select "Fields per Object Type". Choose "New Entries". Maintain the following data:

Field NameField Name for Evaluation
ZEPPM_JIRA_ISSUE_DATA-AGGPERCENTZAGGPERCENT
ZEPPM_JIRA_ISSUE_DATA-AGGPROGRESSZAGGPROGRESS
ZEPPM_JIRA_ISSUE_DATA-AGGPROGRESSTOTZAGGPROGRESSTOT
ZEPPM_JIRA_ISSUE_DATA-AGGTIMEORIGESTZAGGTIMEORIGEST
ZEPPM_JIRA_ISSUE_DATA-AGGTIMESPENTZAGGTIMESPENT
ZEPPM_JIRA_ISSUE_DATA-ASSIGNEEZASSIGNEE
ZEPPM_JIRA_ISSUE_DATA-ASSIGNEEMAILZASSIGNEEMAIL
ZEPPM_JIRA_ISSUE_DATA-DUEDATEZDUEDATE
ZEPPM_JIRA_ISSUE_DATA-ISSUEKEYZISSUEKEY
ZEPPM_JIRA_ISSUE_DATA-ISSUETYPEZISSUETYPE
ZEPPM_JIRA_ISSUE_DATA-PARENTEPICZPARENTEPIC
ZEPPM_JIRA_ISSUE_DATA-PARENTKEYZPARENTKEY
ZEPPM_JIRA_ISSUE_DATA-PERCENTZPERCENT
ZEPPM_JIRA_ISSUE_DATA-PROGRESSZPROGRESS
ZEPPM_JIRA_ISSUE_DATA-PROGRESSTOTZPROGRESSTOT
ZEPPM_JIRA_ISSUE_DATA-ROOTKEYZROOTKEY
ZEPPM_JIRA_ISSUE_DATA-STATUSZSTATUS
ZEPPM_JIRA_ISSUE_DATA-SUMMARYZSUMMARY
ZEPPM_JIRA_ISSUE_DATA-TIMEESTIMATEZTIMEESTIMATE
ZEPPM_JIRA_ISSUE_DATA-TIMEORIGESTIMATEZTIMEORIGESTIMATE
ZEPPM_JIRA_ISSUE_DATA-TIMESPENTZTIMESPENT
Maintain Frames per Object Type

In the dialog structure, select "Frames per Object Type". Choose "New Entries". Maintain the following data and save, ignoring warnings about namespaces:

FramesFrame TypeSequenceActiveFrame Name
0FRAME111YesGeneral Data
0FRAME222YesKey Data
0FRAME323YesWork and Progress (Including Sub-Issues)
0FRAME424YesWork and Progress (Current Issue Only)
Maintain Frames per Object Type - Fields per Frame

Select the first line and choose Fields per frame. Maintain the data for 0FRAME1 as listed below. Double click on Dialog Structure, Frames per Object Type to navigate back to Frames per Object Type. Repeat for the next three entries.

FrameFields per Frame
0FRAME1: General Data

CounterField NameSequenceActive
1

ZEPPM_JIRA_ISSUE_DATA-SUMMARY

1Yes
2ZEPPM_JIRA_ISSUE_DATA-STATUS2Yes
3ZEPPM_JIRA_ISSUE_DATA-ASSIGNEE3Yes
4ZEPPM_JIRA_ISSUE_DATA-ASSIGNEEMAIL4Yes
5ZEPPM_JIRA_ISSUE_DATA-DUEDATE5Yes
0FRAME2: Key Data

CounterField NameSequenceActive
1ZEPPM_JIRA_ISSUE_DATA-ISSUEKEY1Yes
2ZEPPM_JIRA_ISSUE_DATA-ROOTKEY2Yes
3ZEPPM_JIRA_ISSUE_DATA-ISSUETYPE3Yes
0FRAME3: Work and Progress (Including Sub-Issues)


CounterField NameSequenceActive
1ZEPPM_JIRA_ISSUE_DATA-AGGTIMEORIGEST1Yes
2ZEPPM_JIRA_ISSUE_DATA-AGGTIMESPENT2Yes
3ZEPPM_JIRA_ISSUE_DATA-AGGPROGRESS3Yes
4ZEPPM_JIRA_ISSUE_DATA-AGGPERCENT4Yes
5ZEPPM_JIRA_ISSUE_DATA-AGGPROGRESSTOT5Yes
0FRAME4: Work and Progress (Current Issue Only)

CounterField NameSequenceActive
1ZEPPM_JIRA_ISSUE_DATA-TIMEORIGESTIMATE1Yes
2ZEPPM_JIRA_ISSUE_DATA-TIMESPENT2Yes
3ZEPPM_JIRA_ISSUE_DATA-PROGRESS3Yes
4ZEPPM_JIRA_ISSUE_DATA-PERCENT4Yes
5ZEPPM_JIRA_ISSUE_DATA-PROGRESSTOT5Yes
6ZEPPM_JIRA_ISSUE_DATA-TIMEESTIMATE6Yes
Maintain Table/View in SAP System per Object Type and Meth.


Select Entry "Table/View in SAP System per Object Type and Meth." in the dialog structure. Press button "New Entries". Maintain the following values:

MethodStrategyDDIC StructureStrategy Description
41ZEPPM_JIRA_ISSUE_DATA
Maintain Service for an Object Type


Select Entry "Service for an Object Type" in the dialog structure Press button "New Entries". Maintain the following values:

Service for an Object TypeItemActiveWeb Server
ZJIRA_SHOW1YesZJIRA_SHOW

Object Link for Object Type Jira User Story

StepDescription
Open SettingsNavigate to the object links customizing in the IMG using the following path: SAP Portfolio and Project Management → Project Management → Connection to External Systems → Object Links in SAP Systems. Open the IMG Activity Make Settings for the linkes SAP Objects.
Maintain Object Types for Object Links

In the dialog structure, select top entry "Object Types for Object Links". Choose "New Entries".

Maintain the following data:

FieldValue
Object TypeZJIRAUSERSTORY
Object Type NameJira User Story
ActiveYes
KeyZEPPM_JIRA_KEY
GroupZJIRA
Existence CheckYes
Search HelpYes
Read DataYes
Search FieldsZEPPM_JIRA_SEARCH
Proxy ClassZCL_EPPM_JIRA_PROXY
Web Server

ZJIRA_USERSTORY_SERVICE_URL

Maintain Fields per Object Type


In the dialog structure, select "Fields per Object Type". Choose "New Entries". Maintain the following data:

Field NameField Name for Evaluation
ZEPPM_JIRA_ISSUE_DATA-AGGPERCENTZAGGPERCENT
ZEPPM_JIRA_ISSUE_DATA-AGGPROGRESSZAGGPROGRESS
ZEPPM_JIRA_ISSUE_DATA-AGGPROGRESSTOTZAGGPROGRESSTOT
ZEPPM_JIRA_ISSUE_DATA-AGGTIMEORIGESTZAGGTIMEORIGEST
ZEPPM_JIRA_ISSUE_DATA-AGGTIMESPENTZAGGTIMESPENT
ZEPPM_JIRA_ISSUE_DATA-ASSIGNEEZASSIGNEE
ZEPPM_JIRA_ISSUE_DATA-ASSIGNEEMAILZASSIGNEEMAIL
ZEPPM_JIRA_ISSUE_DATA-DUEDATEZDUEDATE
ZEPPM_JIRA_ISSUE_DATA-ISSUEKEYZISSUEKEY
ZEPPM_JIRA_ISSUE_DATA-ISSUETYPEZISSUETYPE
ZEPPM_JIRA_ISSUE_DATA-PARENTEPICZPARENTEPIC
ZEPPM_JIRA_ISSUE_DATA-PARENTKEYZPARENTKEY
ZEPPM_JIRA_ISSUE_DATA-PERCENTZPERCENT
ZEPPM_JIRA_ISSUE_DATA-PROGRESSZPROGRESS
ZEPPM_JIRA_ISSUE_DATA-PROGRESSTOTZPROGRESSTOT
ZEPPM_JIRA_ISSUE_DATA-ROOTKEYZROOTKEY
ZEPPM_JIRA_ISSUE_DATA-STATUSZSTATUS
ZEPPM_JIRA_ISSUE_DATA-SUMMARYZSUMMARY
ZEPPM_JIRA_ISSUE_DATA-TIMEESTIMATEZTIMEESTIMATE
ZEPPM_JIRA_ISSUE_DATA-TIMEORIGESTIMATEZTIMEORIGESTIMATE
ZEPPM_JIRA_ISSUE_DATA-TIMESPENTZTIMESPENT


Maintain Frames per Object Type


In the dialog structure, select "Frames per Object Type". Choose "New Entries". Maintain the following data and save, ignoring warnings about namespaces:

FramesFrame TypeSequenceActiveFrame Name
0FRAME111YesGeneral Data
0FRAME222YesKey Data
0FRAME323YesWork and Progress (Including Sub-Issues)
0FRAME424YesWork and Progress (Current Issue Only)


Maintain Frames per Object Type - Fields per Frame

Select the first line and choose Fields per frame. Maintain the data for 0FRAME1 as listed below. Double click on Dialog Structure, Frames per Object Type to navigate back to Frames per Object Type. Repeat for the next three entries.

FrameFields per Frame
0FRAME1: General Data

CounterField NameSequenceActive
1

ZEPPM_JIRA_ISSUE_DATA-SUMMARY

1Yes
2ZEPPM_JIRA_ISSUE_DATA-STATUS2Yes
3ZEPPM_JIRA_ISSUE_DATA-ASSIGNEE3Yes
4ZEPPM_JIRA_ISSUE_DATA-ASSIGNEEMAIL4Yes
5ZEPPM_JIRA_ISSUE_DATA-DUEDATE5Yes
0FRAME2: Key Data

CounterField NameSequenceActive
1ZEPPM_JIRA_ISSUE_DATA-ISSUEKEY1Yes
2ZEPPM_JIRA_ISSUE_DATA-ROOTKEY2Yes
3ZEPPM_JIRA_ISSUE_DATA-PARENTKEY3Yes
4ZEPPM_JIRA_ISSUE_DATA-PARENTEPIC4Yes
5ZEPPM_JIRA_ISSUE_DATA-ISSUETYPE5Yes
0FRAME3: Work and Progress (Including Sub-Issues)

CounterField NameSequenceActive
1ZEPPM_JIRA_ISSUE_DATA-AGGTIMEORIGEST1Yes
2ZEPPM_JIRA_ISSUE_DATA-AGGTIMESPENT2Yes
3ZEPPM_JIRA_ISSUE_DATA-AGGPROGRESS3Yes
4ZEPPM_JIRA_ISSUE_DATA-AGGPERCENT4Yes
5ZEPPM_JIRA_ISSUE_DATA-AGGPROGRESSTOT5Yes
0FRAME4: Work and Progress (Current Issue Only)

CounterField NameSequenceActive
1ZEPPM_JIRA_ISSUE_DATA-TIMEORIGESTIMATE1Yes
2ZEPPM_JIRA_ISSUE_DATA-TIMESPENT2Yes
3ZEPPM_JIRA_ISSUE_DATA-PROGRESS3Yes
4ZEPPM_JIRA_ISSUE_DATA-PERCENT4Yes
5ZEPPM_JIRA_ISSUE_DATA-PROGRESSTOT5Yes
6ZEPPM_JIRA_ISSUE_DATA-TIMEESTIMATE6Yes
Maintain Table/View in SAP System per Object Type and Meth.


Select Entry "Table/View in SAP System per Object Type and Meth." in the dialog structure. Press button "New Entries". Maintain the following values:

MethodStrategyDDIC StructureStrategy Description
41ZEPPM_JIRA_ISSUE_DATA


Maintain Service for an Object Type


Select Entry "Service for an Object Type" in the dialog structure Press button "New Entries". Maintain the following values:

Service for an Object TypeItemActiveWeb Server
ZJIRA_SHOW1YesZJIRA_SHOW


Setting Traffic Lights: Example Customizing for Evaluation

Severity calculation within SAP Portfolio and Project Management is a rule based tool that allows to visualize within a project structure if issues exist.In the context of this article we use this tool to influence the severity of project objects (which is then visualized as traffic light) based on data from Jira. Due to the flexibility of the tool, a lot of different scenarios can be realized, however, here we we focus on a very simple example to show the principle. If you have other requirements, you can use the example as a starting point for your implementation.

This example checks if the effort for a Jira issue with status 'in Progress' will be larger than the original estimate, indicating a potential delay of a project element. If such a situation is detected, a traffic light is set on an object link, which then is passed to super-ordinate project elements. A project lead can then check if the additional unplanned effort from Jira has an influence on the current project plan, so that he can adjust project or Jira data if necessary.

Define Attributes and Object Types for Evaluation

StepDescription

Define Attributes and Object Types for Evaluation

Navigate to the evaluations customizing in the IMG using the following path: SAP Portfolio and Project Management → Project Management → Evaluations. Open the IMG Activity Define Attributes and Object Types for Evaluations.
Maintain Secondary Object Categories

In the dialog structure, select "Secondary Object Categories" and choose "New Entries". Maintain the following values:

Secondary Object TypeSecondary Object Category DescriptionObject CategoryIcon name
ZJIRAEPICObject Link to Jira EpicOBJECT_LINKICON_DEFECT
ZJIRAUSERSTORYObject Link to Jira User StoryOBJECT_LINKICON_DEFECT



Maintain Attributes


In the dialog structure, select "Attributes" and choose "New Entries". Maintain the following values:

AttributeAttr. TypeType NameSumm. RuleSumm. Res.Init. Vals

ZAGGTIMEORIGEST

Data Element

ZEPPM_JIRA_TIMEORIGESTIMATENo SummarizationInclude Higher LevelIgnore During Summarization

ZAGGPROGRESSTOT

Data ElementZEPPM_JIRA_PROGRESSTOTNo SummarizationInclude Higher LevelIgnore During Summarization
ZSTATUSData ElementZEPPM_JIRA_STATUSNo SummarizationInclude Higher LevelIgnore During Summarization


Maintain Attributes, Objects for Attributes

Mark the entry for attribute ZAGGTIMEORIGEST. In the dialog structure, choose Objects for Attributes and select "New Entries". For ObjectCat., add the entry "OBJECT_LINK" and press Enter.


Mark the new entry "OBJECT_LINK". In the dialog structure, choose "Secondary Objects for Attributes" and select "New Entries". For Secondary Object Type, add the values "ZJIRAEPIC' and "ZJIRAUSERSTORY". Double click on Dialog Structure, entry Attributes to get back to the list of attributes.Repeat for ZAGGPROGRESSTOT and ZSTATUS, so that both attributes are assigned to Objects for Attributes "OBJECT_LINK" and Secondary Object Type "ZJIRALINK", too. Save.

Repeat for attributes ZAGGPROGRESSTOT and ZSTATUS, maintaining the same values for Object Cat. and Secondary Object Type.

Define Extract Layouts

StepDescription

Define Extract Layouts

Navigate to the evaluations customizing in the IMG using the following path: SAP Portfolio and Project Management → Project Management → Evaluations. Open the IMG Activity Define Extract Layouts.
Maintain Extracts

In the dialog structure, select "Extracts". Choose "New Entries". Maintain a new entry with the following values:

Extract LayoutExtract NameIterator
ZJIRAUNPLANNEDUnplanned additional Jira EffortPROJECT
Maintain Extracts → Objects

Mark the new entry ZJIRAUNPLANNED. In the dialog structure, select Objects and choose "New Entries". Add Object Cat. "OBJECT_LINK".

Maintain Extracts → Objects → Secondary Objects

Mark the new entry OBJECT_LINK. In the dialog structure, select Secondary Objects and choose "New Entries". Add Secondary Object Type "ZJIRALINK".

Maintain Extracts → Attributes

In the dialog structure, select Attributes and choose "New Entries". Maintain the following Attributes and save.

AttributeAlways ExtractCalculate after Aggr.
ZAGGPROGRESSTOTYes
ZAGGTIMEORIGESTYes
ZSTATUSYes

Assign Extract Layouts to Project Types

StepDescription
Assign Extract Layouts to Project Types

Navigate to the evaluations customizing in the IMG using the following path: SAP Portfolio and Project Management → Project Management → Evaluations. Open the IMG Activity Assign Extract Layouts to Project Types. Choose "New Entries" and create a new line with project types relevant for your process and the Extract Layout ZJIRAUNPLANNED. Save your entries.

Note: The screenshot above is for illustration only, you will have to adapt the project type here.

Define Evaluations

StepDescription
Define Evaluations

Navigate to the evaluations customizing in the IMG using the following path: SAP Portfolio and Project Management → Project Management → Evaluations. Open the IMG Activity Define Evaluations. Choose "New Entries" and maintain the following data:

Evaluation LayoutEvaluation NameEv.Inactv.Extract Layout
ZJIRAUNPLANNEDUnplanned Effort in Jira<initial>ZJIRAUNPLANNED
Maintain Evaluations → Objects

Mark the new entry ZJIRAUNPLANNED. In the dialog structure, select Objects and choose "New Entries". Add ObjectCat. "OBJECT_LINK".

Maintain Evaluations → Objects → Secondary Objects


Mark the new entry OBJECT_LINK. In the dialog structure, select Secondary Objects and choose "New Entries". Add Secondary Object Types ZJIRAEPIC and ZJIRAUSERSTORY.

Maintain Evaluations → Attributes

In the dialog structure, select Attributes and choose "New Entries". Maintain the following entries and save.

AttributeSort Order
ZAGGPROGRESSTOT1
ZAGGTIMEORIGEST2
ZSTATUS3

Define Threshold Values

StepDescription
Define Threshold ValuesNavigate to the evaluations customizing in the IMG using the following path: SAP Portfolio and Project Management → Project Management → Evaluations. Open the IMG Activity Define Threshold Values.
Maintain New Entry

Select "New Entries". Maintain the following data:

Thres.Val.Thresh.ValSeverityEval.Lay.ObjectCat.
ZJIRAUNPLANNEDAlert on unplanned JIRA effort200ZJIRAUNPLANNEDOBJECT_LINK
Change Formula

In the new entry, press the button "Form. (a/b)". In the formula editor, switch to expert mode and maintain the formula:

ZSTATUS = 'In Progress' AND ZAGGPROGRESSTOT > ZAGGTIMEORIGEST

Go back (F3) and save.

Testing Your Implementation

You are done with the implementation, now you should test:

StepDescription
Test System ConnectionMake sure that you implemented the OAuth 2.0 based authorization grant process correctly. Execute the test report from article Access Atlassian Jira Cloud Platform using the OAuth 2.0 Client. Then check if the search help on Jira objects works fine. You will get an error message if the system connection isn't working and you try to assign Jira objects explicitly. Note that the example implementation requires that you assign a Jira project on root level before you can assign epics or user stories.
Test EvaluationIf you can assign a Jira element, test the severity calculation. For that, assign a user story to your project via object links. Navigate to that user story in Jira and maintain remaining time to be larger than the original estimate. If the evaluation is set up properly, you will see a change in project severity on save.

Variants

Next to extending the severity calculation by using other or more complex formulas, you can also change the behavior of the Jira object links. For example, the restriction can be removed that a Jira project needs to be assigned at project root level. You just need to change the relevant code lines in method ZCL_EPPM_JIRA_PROXY=>IF_DPR_OBL_PROXY~SEARCH_OBJECTS(). In the very same method you can make more than the object types user story and epic available for linking (but make sure that you also set up the customizing accordingly). Remember: It's your code now (smile)



Back




  • No labels