Human Capital Management Blogs by Members
Gain valuable knowledge and tips on SAP SuccessFactors and human capital management from member blog posts. Share your HCM insights with a post of your own.
cancel
Showing results for 
Search instead for 
Did you mean: 
JoseJW
Participant

Positions are one of the most created/modified objects within SAP Successfactors suite  .Hence there is  a need of governing the positions and ensuring that redundant positions are not created. Its quite a tedious task  within  Successfactors(SF)  to check if vacant positions exists  and then proceed with creation of new position if vacant positions doesn't exist.

I was trying to check various options to develop a small app which  helps the  HR Admins to check availability of a vacant position before creation of new position.

Developing a full blown Fiori application as an extension in SAP BTP  was always an option but then I wanted to check if there was something simple and can be implemented  quickly without writing a lot of code.

This is where I decided to take SAP BUILD APP for a ride  and the end result was awesome. I was able to come up with a   working  demo version of the  usecase  in no time and  most importantly without writing any single piece of code.  

A final snapshot of the App (mobile version)developed in SAP BUILD APP :

 

S0015794939_1-1711829632517.png

A recording of the demo is available below

 

I would like to share my experience and also my observations on how SAP BUILD APP made Successfactors extensions development  a lot easier.

Pre-Requisites

SAP Developer Tutorials is the best place to start knowing  the basics of SAP BUILD APP and  to get it activated within the SAP BTP trial environment.

https://developers.sap.com/tutorials/build-apps-trial-booster.html

https://developers.sap.com/mission.appgyver-low-code.html

 

Successfactors Connectivity and Criterias

Before launching the SAP BUILD APP,  I created a destination in the trial subaccount to connect  to one of my sandbox  SF tenants.

S0015794939_2-1711830254931.png

 

I identified the criteria based on which i wanted to find only the vacant managerial positions in Successfactors.  The criteria were the below fields

  • country (we had a custom field configured in position to capture the country )

  • cost center

In the real  scenario, we can have more criterias like Org units, company,etc., and as this was a demo --I  took only 2 fields as criteria.

SAP BUILD APP Config

1. Launch SAP BUILD APP from Instance and Subscriptions section in the trial subaccount

S0015794939_3-1711830659325.png

2.Create a project of type --SAP Build Apps -->Web &Mobile Application

S0015794939_4-1711830781978.png

 

S0015794939_5-1711830823929.png

 

3.Click on the newly created project

S0015794939_15-1711831856890.png

 

4.Navigate to Auth and Data Tab and Integrate it with SAP systems 

In our scenario we would integrate SAP BUILD APP with the destination that we created in the SAP BTP environment

First navigate to AUTH tab and enable BTP authentication

S0015794939_9-1711831435091.png

S0015794939_10-1711831457192.png

Navigate to Data tab and connect to BTP destination

S0015794939_7-1711831318303.png

S0015794939_8-1711831349670.png

5.Enable Position Data entities

S0015794939_11-1711831563123.pngS0015794939_12-1711831743973.pngS0015794939_13-1711831771341.pngS0015794939_14-1711831801050.png

6.Navigate back to UI Canvas tab and start designing your web page

Drag and drop the fields from the left panel into the app . For my app I designed as below

  • Header --S0015794939_18-1711832054129.png

     

  • Text(Subtitle)--S0015794939_19-1711832080264.png

     

  • A Card -- to provide a count of all vacant managerial positionsS0015794939_20-1711832144385.png

     

  • Input Fields for the criterias and a Submit button to trigger searching of the vacant managerial positionsS0015794939_21-1711832231241.png

     

  • A List object to display  the vacant position as    S0015794939_22-1711832341475.png

     

  • Basic Table with data adapter to list all the vacant managerial positions when page is loaded.This component has to be installed from the marketplace S0015794939_23-1711832469915.png

     

7.Define Data Variables

I defined 2 data variables

  • Position1 -- this is linked to the BASIC TABLE component  and will contain all the managerial vacant positions
  • Position2 -- This would be linked to the managerial vacant position as per the criterias defined and would be loaded when the button 'Get Vacant Position...' is clicked

Both the variable is marked as type 'Collection of data records' as we would be querying multiple records from the position entity

S0015794939_24-1711832685001.pngS0015794939_25-1711832707715.png

8.Define Page Variables

S0015794939_27-1711833052372.png

 

The following page variables were defined

  • paramCostCenter --- This is binded to the Cost Center Input fieldS0015794939_26-1711832915535.png

     

  • paramCountry-- this is binded to Country Input fieldS0015794939_28-1711833116090.png

     

  • posCount --This is binded to the Card component and contains the total count of vacant positionsS0015794939_29-1711833196737.png

     

  • showVacRes -- This is binded to the visibility attribute of the container where the result of the vacant positions as per the criteria are displayed

9.On Load of Page ,load all the positions into the Basic Data Tab and  populate the count of the positions in the card.

a.Select  the Page in the UI canvas and then click on Add logic on Home Page

S0015794939_30-1711833406082.png

b.After the Page Mounted event, add 'Get Record Collection' logic and assign the Position entity as the resource.  Click on the Filter condition and provide the condition as per the screenshot below.

This logic triggers  a Query request to Position entity of SF via the BTP destination and the filter condition is also set accordingly.

S0015794939_32-1711833573882.png

S0015794939_33-1711833672551.png

c.Populate the data variable -Position1

The values from the previous step is then passed on to this logic wherein Position1 is updated   and as per the binding provided the value to Basic Table component

For the Record Collecton attribute ,  the binding type has to be set to 'Output  value of another node' and then the output of the previous node has to be selected accordingly.

S0015794939_34-1711833833138.png

S0015794939_35-1711833939857.png

S0015794939_36-1711834031245.png

d. Populate the Page variable 'posCount'

The total count of the entries within data variable Position1 is updated again the page variable 'posCount'. This is binded to the CARD component wherein the total count is displayed.

The Assigned value attribute is populated with the respective formula

S0015794939_37-1711834116056.png

S0015794939_38-1711834205762.png

10.On Click of the button--filter the position data as per the criterias mentioned and load the resulting position in the list screen.

a. Navigate to Show logic of the Button(Get Vacancy).

S0015794939_39-1711834344002.png

 

b. Add  Get Record Collection logic  and link it to Component Tap event. This logic will again trigger a query to the position entity of SF tenant via the BTP destination.

The Filter condition has to  include the page variables -paramCountry and paramCostCenter

 

S0015794939_40-1711834442416.png

S0015794939_41-1711834584119.png

c. Set the data variable Position2 to the result of the 'Get Record Collection' logic

The filter values from the Position entity are passed on the Position2 which is binded to list item wherein the results are displayed.

S0015794939_42-1711834729505.pngS0015794939_43-1711834768973.png

 

d. The other Pagevariables are related to the display of the repsective components and are binded to the visibility attribute of the component.

S0015794939_44-1711834873968.png

11. Launch and test the application

S0015794939_45-1711834961083.pngS0015794939_46-1711834988472.pngS0015794939_47-1711835018116.png

S0015794939_48-1711835171857.png

 

For preview on your mobile --you can install SAP BUILD APPS in your mobile , generate a PIN and then preview the same in your mobile

Conclusion and Observations

SAP BUILD offers a no code option to seamlessly connect to Successfactors Position entity and design the screen just by drag and drop.

SAP BUILD APP also provides a lot of options on the mobile preview  wherein it can interact with your device and perform actions like open your device camera, open contacts, interact with you device barometer,gyroscope ,etc.

One important observation was that the SAP BUILD APP doesn't provide a UPSERT action . It only provides CREATE, REPLACE, UPDATE and DELETE action when making a call to external data. When updates are done in Successfactors, UPSERT actions are predominantly used and with the existing SAP BUILD APP actions, it is very difficult to update entries in Successfactors.  For example, I started developing an app for Quick Hire of employee and in this case EmpEmployment had to be updated .This can be performed only by UPSERT action as Empemployment doesn't have Creatable enabled at the schema level.

I believe providing an UPSERT action will be part of the SAP BUILD Roadmap and once available ,it would be very easy to design Self service applications and deploy then as Successfactors extensions   with low code/no code  options.

Future development of Sucessfactors extensions with SAP BUILD looks exciting and awesome.

Looking forward to your comments   and observations.

 

1 Comment
Labels in this area