Enterprise Resource Planning Blogs by SAP
Get insights and updates about cloud ERP and RISE with SAP, SAP S/4HANA and SAP S/4HANA Cloud, and more enterprise management capabilities with SAP blog posts.
cancel
Showing results for 
Search instead for 
Did you mean: 
SandeepJanardan
Advisor
Advisor
A manager needs to know who is assigned what work in their team, in order to effectively assign people to the right tasks for the right time.

The goal of the Business ByDesign Employee Resource Calendar is to fulfil this need. We want to reduce our customer's dependency on tools like excel, rather we want to help our resource calendar provide  a central view of work assignment. One of the challenges we know is that there are more types of work that people are assigned to, that can be effectively represented in the standard ByDesign product.

One way to With the 2102 release of SAP Business ByDesign, a new business object is made available in the Public Solution Model called the Resource Calendar Generic Work Assignment. Using this business object, employee-work assignments based on custom solutions that are build using the ByD Cloud Studio, or those captured by an external solution can be added to the employee's resource calendar.


This business object serves as a kind of interface, using which a partner can add their custom work objects to the standard resource calendar.

Some of the available features:

  1. Control on when the custom work items should be present in the Resource Calendar

  2. Choice of which work assignment affects employee availability

  3. Ability to decide a custom work distribution

  4. Support for work hierarchy - Just like how you see a hierarchy for project assignment - project at the root followed by the project task and underneath that, the service - you can code for a parent child relationship between different work assignments.


I would explain the above features in more detail, in a separate blog post. For now, I would like to show you an example of what you can build.

Example custom solution: Training Course Assignments


I created a very simple application in the ByD Cloud studio that allows a user to add training courses to employees.

Let us first take a look at the resource calendar for employee Peter Sellers. This is accessed from the Resource Management work center, from the Resource Search work center view. As you can see, Peter Sellers is pretty free over the next few weeks - he is assigned only two projects.


Now I open my custom application that is assigned to my user - I've called this work center Custom Work Assignments. I go to the Training work center view, where I can see the employees who have been assigned to training courses.


Custom Application - Training List


I click the New button as i want to assign some new Training courses to Peter Sellers. I add some items - Java and Javascript training, with specific dates for the training as well, as well as the number of hours that Peter would spend in the course.


Custom Application - Assign Training Schedule and Send to Resource Calendar


I now click on the "Send to Resource Calendar" button. I tied this button to an action on the Resource Calendar Work Assignment BO, that allows the standard work distribution algorithm (that is used for the project work distribution) to operate on the Training assignments I just made.

If I refresh Peter's resource calendar, you can see the "In Process" icon against his name - showing that the new custom work objects are causing a recalculation of employee availability.


ByDesign Resource Calendar - In Process Icon against Employee


After a minute or so, I refresh the Resource Calendar, and can see that the Training schedule that I created out of my custom application is now part of the standard Resource Calendar ! The availability calculation also takes this into account - you can see by the reduced number of available hours for the affected weeks.


ByDesign Resource Calendar - with the Trainings custom object


 

Enabling usage of Resource Calendar Generic Work Assignment


This business object is part of the Public solution model, with all the required attributes writable from the ByD Cloud studio. It serves as a sort of interface, that allows the work object to be viewed in the Employee's Resource Calendar.


Its usage is only supported for the Resource Management solution that is based on the planned work of the employee. It is not supported for the solution that is based on the committed work.


Business Configuration scoping option for Resource Management


As mentioned earlier, I would write a separate blog post that explains how I've used this interface to add my custom object into the Resource Calendar, leveraging the standard work distribution mechanisms that are used for Projects.

I would be super interested to hear what kind of solutions you would like to build for the resource calendar. You can contact me via messages, or can put in a comment below if you would like to have a chat.

Thank you very much for reading !
6 Comments
Jacques-Antoine
Active Participant
0 Kudos

I cannot believe I missed this. Thank you sandeepdinesh.janardan we will test this on our side.

I have a question around this BO actually. Did you release it only for partners to manipulate it and insert new values to it, or do SAP also uses it to store your own Work Packages assignment done through Period Plans.

I an wondering if I could use this BO to also manipulate already created Period plans from it. 🙂 But I think I cannot retrieve these period plans from the generic work assignment and need to go back to the project. Am I right?

Thank you for your attention

Best

Jacques-Antoine Ollier

SandeepJanardan
Advisor
Advisor
0 Kudos
Hello jacques-antoine.ollier

SAP uses the Resource Calendar Generic Work Assignment business object to include the service order assignments in the resource availability calculation - see Service Order Dispatching in SAP Business ByDesign | SAP Blogs - this was part of release 2202.

This business object would not be used for projects - as there already is an existing mechanism for its inclusion in the resource calendar. So yes, to view the period plans, you would need to read the project business objects.

Regards,
Sandy
Jacques-Antoine
Active Participant
0 Kudos

Ok that is what I thought and found from my backend analysis.

Thank you very much for confirming sandeepdinesh.janardan !

I will continue my research on what we could do.

Regards

Jacques-Antoine

VenkateshG
Explorer
0 Kudos
Hi sandeepdinesh.janardan

Thanks for the blog. We are trying to create Resource Calendar Generic Work Assignment from an action of custom object. But we are not sure of what needs to be filled for few parameters. Can you please help us on this.? We are able to create an instance on the Resource Calendar Generic Work Assignment object. However nothing is visible in the resource calendar of the employee.


Awaiting your reply. Thanks in advance.

Venkatesh
SandeepJanardan
Advisor
Advisor
0 Kudos
Hello nipurna07032018

The "Reference" attributes that you have outlined are not required for their display in the resource calendar. - these parameters are helpful for any custom logic you can execute for the object categories. We use exactly the same business object to display the assigned service order items in the resource calendar of the employee.

In order that the resource calendar reads the information, and calculate employee availability based on it, we need to call the action "TriggerWorkDistribution" that is on the Work Item node.

Hope this helps !

Regards,
Sandeep
davidbecker
Discoverer
0 Kudos

Hi sandeepdinesh.janardan,

thanks for sharing this blog with us.

I am trying to implement this with multiple levels, meaning that I want to get a 4-level structure with 3 WorkItems and 1WorkAssignment.

Therefore I write the UUID of the root-WorkItem into the ParentWorkItemUUID of the second WorkItem and so on. Code for 3-level structure.

foreach (var obj in this)
{

var calendarWA = ResourceCalendarGenericWorkAssignment.Retrieve("E0002");

if (!calendarWA.IsSet()){
calendarWA = ResourceCalendarGenericWorkAssignment.Create();
calendarWA.ResourceID = "E0002";
}

if (calendarWA.IsSet())
{
var cWAitem;

foreach (var workItem in calendarWA.WorkItem){
if (workItem.ID.content == "HEAD1"){
cWAitem = workItem;
break;
}
}

if (!cWAitem.IsSet()){
cWAitem = calendarWA.WorkItem.Create();

cWAitem.ID.content = "HEAD1";
cWAitem.Description.content = "Planned Time";
cWAitem.StartDateTime = Context.GetCurrentGlobalDateTime();
cWAitem.EndDateTime = Context.GetCurrentGlobalDateTime();
cWAitem.TriggerWorkDistribution();
}

var cWAitemTest = calendarWA.WorkItem.Create();
if (cWAitem.IsSet())
{
cWAitemTest.ID.content = "PROJECT1";
cWAitemTest.ParentWorkItemUUID = cWAitem.UUID;
cWAitemTest.Description.content = "Project 1";
cWAitemTest.StartDateTime = Context.GetCurrentGlobalDateTime();
cWAitemTest.EndDateTime = Context.GetCurrentGlobalDateTime();
cWAitemTest.TriggerWorkDistribution();

var cWAitem2 = cWAitemTest.WorkAssignment.Create();
if (cWAitem2.IsSet())
{
cWAitem2.Description.content = "Projecttask 1";
cWAitem2.StartDateTime = GlobalDateTime.ParseFromString("20220920102800");
cWAitem2.EndDateTime = GlobalDateTime.ParseFromString("20220920182800");
cWAitem2.ManualDistributionIndicator = false;
cWAitem2.WorkQuantity.content = 8;
cWAitem2.WorkQuantity.unitCode = "HUR";
cWAitem2.TriggerWorkDistribution();
}
}
}
}

My result is a valid 3-level structure, but I am missing the description of the "head" node.

Can you tell me what is wrong?

Regards,
David