1 4 5 6 7 8 28 Previous Next

SAP Solution Manager

409 Posts

Solution Manager 7.1 SP10 brings improvements in many areas, as we have already seen here in SCN. Last month I was working with Quality Gate Management scenario (QGM), which is part of the Change Control Management, and could notice some improvements in this area too.


As in ChaRM, QGM has been integrated to Central CTS and to IT Calendar in SP10.


A new check was added during the set up of the project:

    • Disable transport release in Scope phase


Some features that we already had in ChaRM were introduced to QGM, such as:

    • Downgrade protection
    • Task Lists
    • Urgent Change
    • System logon



First of all, I recommend you to read the General Note for QGM 7.1: 1509091. This note mentions the new features, product limitations, authorization roles (I also mention some info about authorizations in my blog) and inform many other notes that must be checked depending on the Support Package you have.


One specific problem that I had was corrected by SAP note 1964353 - QGM: Landscape Graphics shows gray shapes since ST710 SP10mentioned in the General Note:


"Starting from 7.1 SP09; new SICF /SAP/PUBLIC/BC/QGM was created to provide access to QGM MIME repository. This service need to be kept activated otherwise the landscape graphic will not be displayed correctly."



Central CTS integration


Central CTS provides a technical infrastructure for the enhanced flexibility functions in Change Control Management. It can be used not only with ChaRM but also with QGM projects. There is an excellent doc about Central CTS here in SCN that I recommend: How To... Set Up cCTS for ChaRM and QGM


In QGM you will see a checkbox to define if you will use the new infrastructure or not during the set up:



Disable transport release in Scope phase


During set up, in step 4 (Assign Quality Gates to System Roles) you can flag that Transport Release cannot be done in phase Scope:



Trying to release original transports while phase is scope:




Downgrade Protection


There is a new button in the QGM area of the Change Management work center where you select the projects (same area where you find Set up), for Downgrade Protection check:


This button starts the Downgrade Protection check for the project you selected, and you can see it looking at the Details area:



When releasing transports in QGM, if Downgrade Protection is active you will see if there are Conflicts. A message such as


"Release of transport XXXKNNNNNN, XXXKNNNNNN, XXXKNNNNNN canceled due to open conflicts" will be shown.


In this case, the release action has been canceled. You need to identify the conflicts and either set their status to "Ignored" to ignore them or try to solve the conflicts manually. Then you can repeat the release action.

It's important to consider that if you ignore the conflicts, the system will no longer consider these conflicts and execute the action. Ignoring conflicts might lead to inconsistencies, so be very careful.

Picture below shows the details of a Downgrade Protection check:


Task List in QGM:


From SP10 on, a Task List can be created for the QGM Project. Below you can see an example of an implementation project with QGM active and a task list created:





If you work with Maintenance projects, you can create a maintenance cycle. In this case, instead of having the End of Project Q-Gate, you have a Q-Gate called Deploy to Scope.

It’s possible now to import only transports from a change, instead of all the transports of a project. An import subset is done in this case, not import project, but then keep in mind there are risks of wrong import order and downgrades:


Urgent Change in QGM

Besides the transaction type SMQC for Changes in QGM that we already know, which was introduced in SolMan 7.1 since the first Support Package, now there is a new transaction type SMQU, which means QGM Urgent Change.

Vivek Hegde has already mentioned in details this new feature introduced to Quality Gate Management in his blog.

System Logon

In the Details area, below tab System Landscape Graphic, there is now a button for Logon to the systems. You select one of the systems of your project landscape and then click Logon to jump to the system (if you use the work center in a web browser, it will ask you to open SAP GUI)



Integration to IT Calendar

Again in the Details area you have tab "Calendar View". In this screen you see your project milestones in a calendar, and now there is a button "IT Calendar" to take you to the IT Calendar in Solution Manager. Tobias Hauk has explained a bit about this feature in his blog New features of Change Request Management (ChaRM) with SP10 (FP2).


The IT Calendar integrated to QGM and ChaRM allows you to establish a central calendar for all your projects and changes:

    • Change cycle phases
    • Change transactions
    • QGM phases
    • QGM Q-Gates and milestones

Please be aware of some required settings that need to be configured in Solution Manager:

  • Specify for which system roles the entries will be created in the IT calendar for change cycle phases and QGM phases,.
  • Specify a threshold for the grouping of similar objects (example: set a threshold of 5 for Request for Change means that all requests for change on a particular date are grouped if their number exceeds 5).


Ex. of one of the IT Calendar settings:



IT Calendar showing QGM project phases:


You will find more information about IT Calendar in this blog: IT Calendar and CHARM integration Solman 7.1 SP10 (How To)

There has been a significant improvement in the Quality Gate Management area in SP10 which did not make it to headlines as other features did. In SP10, QGM has been armed with Urgent Change concept and I took time today to explore this new feature. As we all aware Urgent Change has been part of ChaRM framework since long time and now in SP10 we can use this feature in QGM also.


What does this mean to Projects?


Earlier in the QGM we had only one type of Change Request which is "QGM Change Request". The movement or TRs inside a Change Request was strictly governed by the Milestone or Q Gates. But there were scenarios where, if you used QGM for a maintenance projects then if something had to be fixed in Production at the earliest, then it has to wait  till the all the Q gates are passed. But in SP10, you need not wait untill all Q gates are passed, "if something needs to be fixed in Production urgently then it will be fixed urgently"


How does Urgent Change in QGM work in SP10?


In the QGM projects while creating a Change Request, you get an option to create a Change Request of type "Urgent Change" as shown below;




Once the Urgent Change Request is created it will be in a status "To be Approved". This needs to be approved by the Quality Manager and Quality Advisory Board. Once approved, now you can create a Transport Request under this Urgent Change Request.






The Urgent Change Request and Transport Request can be imported into Production system even if Q Gates/Milestones leading to Production system are in stage "Initial".


In above example , if I had tried to import a normal QGM Change Request and its TR to Quality/PreProd/Prod then I would get the following error;



However Urgent Change Request would sail pass this barricade smoothly and correction would be imported into Production system on priority.


Can we make use of Urgent Change Request in existing project after upgrade to SP10?


I tested this part and got to know that you can not make use of Urgent Change Requests in already running QGM Projects soon after upgrade to SP10. If you create a new QGM project in SP10 then this feature would be available by default.


Existing QGM Project would continue to have following option




New QGM Projects






Couple of weeks before we have upgraded our solution manager from SP7 to SM7.1 SP10. We were tested all the changes in our existing configurations like CCLM, TechMon, EEMon. During the testing, we found very significant changes in PI Monitoring, through this blog I would like to list down some of my findings.



UI Enhancements in the Technical setup



Improved SM 7.1 SP10 delivered new additional monitoring capabilities to monitor entire PI scenarios.


In SP10, there is no dedicated PI monitoring setup options in solman_Setup. Now all the PI scenarios completely integrated with interface and channel monitoring. It is quite significant, Now We can configure monitoring of all the interfaces channels, web service, Idoc communications, status of message flow and various PI components, message search etc on centrally at one place.



Why Integration



The main reason for Interface and PI monitoring integration would be that most of the PI monitoring scenarios lies on interface monitoring too, if both are defined in single place it helps the both business support users and application support help desk consultants.



First Look



Interface and PO Monitoring setup under solman_Setup -> technical monitoring divided to 4 major scenarios.  Now Pi monitoring is one of them.


Very first would be our usual interface monitoring which taken care of RFC communications, web services, Idocs. This is also enhanced to monitor tRFC,qFC,GW services. Second is our regular Connection monitoring which is dedicated monitoring setup for HTTP and TCP/IP RFCs. As per the latest roadmap Solution Manager – What is New Today, Planned for the Future – ASUG Webcast Part 4 document shared by Tammy that SAP has the roadmap even to integrate interface and connectivity monitor together under the tag as ICMon, we can expect this in future releases. Third one would be our previous PI monitoring which has component, message, channel monitors as same as in the previous releases without any change, message search feature also same as before. The new Message flow monitoring (MFMon) has been added now additionally, which helps monitoring of your B2B scenarios.


Central view of all monitoring under one place looks very more simple and more efficient.






New Message flow monitoring ( MFMon)



If you checked on SM 7.1 SP7, we do have message monitor and it also has some term as message flow monitor.  But this is different from the new message flow monitoring. Starting from the prerequisites and setup both are highly varied. The earlier is used just for getting the overview of message flow only between the components PI components like integration engine, adaptor engine, Proxy etc.


In SP10 PI Monitoring message monitor sub tab message flow monitor renamed to message overview monitor to avoid confusions.






The new message flow monitoring is actually for monitoring cross system message flows, this is more on business relevant. The exact use case for this new message flow monitoring could be the earlier requirement for Jonathan Ma here How to monitor sxmb_moni in the ABAP systems(business system)?


MFMon exactly fit for such B2B Scenarios. SAP strategy for Solution manager is that solman could support all the latest innovations. The original concept of MFMon is from one of the PI 7.3 innovation which is PI Integration visibility component. It is the major prerequisite for MFMon setup and moreover MFMon consumes needed monitoring data from there.  More technical details about PI integration visibility, you can refer here Integration Visibility - Administering Process Integration (PI) - SAP Library




source : SAP




Workflow Monitoring



This is solution manager support for Business process Management ( BPM ), to monitor custom process flow defined in BPM via Technical monitoring alerting framework.


I am very eager to check these new features, waiting for my PI sandbox for test drive. If any of the other experts tested these features, please comment here your feedback about these new monitoring features. Is that really fulfilling all the business requirement? How promising the message flow monitoring? please share your view.

SAP's John Krakowski gave this webcast to ASUG this past week.  Part 1 is here.  Part 2 is here.  Part 3 is here

This is the final part.

SAP Solution Manager 7.1 SP10: Custom Code Management


Figure 1: Source: SAP


What custom code is used, is it justified, using the UPL as shown in Figure 1


Figure 2: Source: SAP


Figure 2 shows how UPL works.  When transactions are used, all objects are logged on SAP kernel.  The UPL tracks and reads kernel level logging, and the UPL is stored in BW which provides you ability to evaluate data and reduce custom code footprint.




Figure 3: Source: SAP


Figure 3 shows an operations dashboard showing system availability and performance across the systems.  You can drill into a system and you can send this to someone for review


Figure 4: Source: SAP


Figure 4 shows the job progress monitor capability, which allows you to keep better track of active, scheduled and completed jobs with drill down capabilities.


SAP Solution Manager 7.1 SP10: Application Operations


Figure 5: Source: SAP


Figure 5 shows the timeline


With 7.1 introduced new monitoring and alerting infrastructure


On the right with SP10 SAP has started the process to harmonize business process monitoring into monitoring and alerting infrastructure; this is to be completed by end of year (planned)


Job monitoring is already harmonized (Figure 4).


Figure 6: Source: SAP


You can view job monitoring activities in a common view, UI, as shown in Figure 6


Figure 7: Source: SAP


Figure 7 shows that interfaces landscape monitoring improvements


Interfaces are more complex in landscapes and you can view it as shown in Figure 7.


Figure 8: Source: SAP


Guided procedures have been expanded (SOLMAN_SETUP)


Guided procedures are used in many use cases in 7.1


You can tailor guided procedures for troubleshooting


Planned Innovations

Planned innovations are subject to change; the usual SAP legal disclaimer applies.


Figure 9: Source: SAP


Figure 9 shows phase 2 of development and future direction, including enhancement scope and effort analyzer and final phase business process monitor


Figure 10: Source: SAP


SP11 is planned for calendar week 11. It is coming soon.  One capability SAP is introducing is the enhancement scope & effort analyzer, with the change impact of enhancement or support pack without implementing it.  It is a guided procedure with little or no effort.


If your timeline to get to SP10 crosses over when SP11 is available, John recommends applying SP11


Figure 11: Source: SAP


Figure 11 is future architecture to run Business Suite and SolMan on HANA with the “slimmest SolMan platform ever”.  No data replication, savings of 70% of running SolMan on HANA


Resources provided by SAP:

Instant Access to SAP Solution Manager Expert Knowledge

SAP Solution Manager 7.1 Wiki:  http://wiki.scn.sap.com/wiki/display/SM/Solution+Manager++7.1

SAP Enterprise Support Information: http://service.sap.com/alm

SAP Solution Manager Homepage: http://service.sap.com/solutionmanager

7.1 Ramp-Up Knowledge Transfer: http://service.sap.com/rkt-solman

Cloud demo: http://www.sapsolutionmanagerdemo.com/


Meet John this month in person at SAP Admin 2014   in Orlando and ASUG Annual Conference in June

SAP's John Krakowski gave this webcast to ASUG this past week.  Part 1 is here.  Part 2 is here.

This is part 3.

SAP Solution Manager 7.1 SP10: IT Service Management


Figure 1: Source: SAP


Why consider IT service management?  Figure 1 explains.  John says you can’t find a better product that is pink verified across 15 processes.


With SAP Support , the use of ITSM is covered under maintenance agreement including non-SAP components (Enterprise Support +)


Figure 2: Source: SAP


Figure 2 shows a history of ITSM


Before 7.1 it was known as Service Desk or application incident management


With 7.1, to be aligned with ITIL SAP adopted ITSM


SP5 has the Pink verified processes


Figure 3: Source: SAP


In SP10 you can create IT service orders as shown in Figure 3


Figure 4: Source: SAP


Figure 4 depicts the IT service order and the end user portal


End users can select key services by IT organizations – password reset, new employee process, BYOD


A guided procedure is used


You can fulfill service order, end to end


SAP Solution Manager 7.1 SP10: Change Control Management


Figure 5: Source: SAP


There are challenges and concerns re: change control activities


Figure 5 shows the central transport management which is the technical layer to manage – ABAP & non ABAP, use quality gate management and change request to manage.


Classic CTS was introduced in 1992.  SP10 covers new Central CTS, this is an option to improve synchronization and bundling challenges.


Figure 6: Source: SAP


Figure 6 covers a concept called a cluster collection which are like systems – DEV-ERP, test –ERP,


A collection is a unit of work could include a program, table change, iView change in portal – those three components could be a unit of work or request for change.


At a technical level, these changes can be synchronized.



Figure 7: Source: SAP


Figure 7 shows at the top the ability with central CTS you can reassign changes include modifiable and released transports


Figure 8: Source: SAP


You can assign changes from one project to another, different cycles


You can change a regular change into an urgent change and fast track into system


Central CTS must be used with Quality Gate or Change Request Management.  It will not work with third party product.


To be continued…


Meet John this month in person at SAP Admin 2014   in Orlando and ASUG Annual Conference in June

SAP's John Krakowski gave this webcast to ASUG this past week.  Part 1 is here.  This is part 2.




Figure 1: Source: SAP


John said you can manage releases with the new IT Portfolio and Project Management Integration with SAP Solution Manager.


In the past, this was not integrated with other life cycle processes and tools.


To support this strategy to execute major/minor releases, SAP has direct integration with cProjects in SolMan


From cProjects in SolMan project you have direct access to SOLAR* transactions



Figure 2: Source: SAP


Your PMO organizations can manage 1 to many projects using cProjects.    You can manage staffing, tasks, and assignments


SAP Solution Manager 7.1 SP10:  Only Test What Matters with Test Management


Figure 3: Source: SAP


Testing is important, universally recognized as a high effort, expenses but necessary test cycles that we all manage.

With 7.1, SAP introduced CBTA – component based testing automation tool.


Figure 4: Source: SAP


With SP10, CBTA has been enhanced per Figure 4.


The user interfaces are listed on Figure 4.  SAP has enabled custom function creation to create automated test scripts,  an improved wizards to step through set up, and an improved process flow analyzer to validate steps as you create test automation scripts.


John said this is a tool to investigate.


Figure 5: Source: SAP


BPCA is the change impact tool.  It can reduce testing cycles, said John.


Figure 6: Source: SAP


The initial creation and maintenance of TBOMS; with SP10 you can create TBOMs with background jobs, with no manual effort


He said you can regenerate at any time with any frequency.


Figure 7: Source: SAP


SAP has improved test scope optimization, allowing you to check the test effort for changed objects.

This is a follow on capability to BPCA allowing you to adjust test windows


To be continued…


Meet John this month in person at SAP Admin 2014   in Orlando and ASUG Annual Conference in June

SAP's John Krakowski gave this webcast to ASUG this past Thursday.  He gave credit to ASUG, and credited ASUG for collaboration.  This is part 1 of 4 blogs.



Figure 1: Source: SAP


First he highlighted efforts by adopting SolMan SP10 – these are the mobile applications.  Job progress mobile application, Dashboards mobile application, business process monitoring includes analytics in Solution Manager.


These can be downloaded immediately from the iTunes App store, and have demo mode so you can see them immediately after downloading.


Figure 2: Source: SAP


Since August of 2011 SAP has 10K productive installs with 300 installs every month.  On the right side IT Service Management are Pink Verified. What does that mean?  If you are aligned with ITIL standards, you have a fully supported verified solution.


Figure 3: Source: SAP


Investments, no matter where you start, are integrated, said John.  You have built-in integration according to Figure 3.


Figure 4: Source: SAP


White paper released (SMP logon req'd) this talks about how customers can accelerate and improve major releases and projects through business suite.  This is a framework to manage testing, releases, downtime management, custom code in an optimized way to realize two releases a year.

This was a challenge to read this white paper to level set you against your organization against best practices.


John said if you are thinking of implementing HANA, Solution Manager can help manage the HANA application and project.


Figure 5: Source: SAP


If you are on Solution Manager 7.0, he encourages you go to 7.1 SP10


Mainstream maintenance ended for 7.0 on 12/31/13. Support does not end, but it moves into customer-specific maintenance – no new notes, no new SP’s.


Key links provided for Solution Manager 7.1 SP10:

This information was provided by John during the webcast:


Release note: http://service.sap.com/sap/support/notes/1843689


You can find links to the following new documentation on the Help Portal at http://help.sap.com/solutionmanager71:


RKT content is available at http://service.sap.com/rkt-solman - > SAP Solution Manager 7.1 -> Solution Roles, SP10.


SP10 Feature Pack 2 – more than bug fixes as it is delivering new enhancements to Solution Manager platform.


SP5 was Feature pack 1


To be continued...


Meet John this month in person at SAP Admin 2014   in Orlando and ASUG Annual Conference in June

Hi Experts,

With this blog i would like to share my experience to thrust ABAP Systems data to Java SLD or Solution Manager 7.1 for Stack XML file generation & for central Monitoring purposes.

There are so many documents available on internet & also on SDN forum about ABAP system data push to Java SLD but here i'll elaborate/share more steps for successful connection with data transfer from ABAP systems to Solution Manager System.

I also request to experts to precise me if 'm wrong somewhere in this blog, this would even help me to gain more on this topic.

Here  i starts with some prerequisites tests on ABAP system end.

Pre activities on ABAP System

(a) Creation of RFC destination from ABAP system to your JAVA system or Solution Manager through SM59.

(b) Maintain SLD Access data via transaction SLDAPICUST, here provide Alias name ,host name of your Java system or Solution manager with  Port 50000  &  admin user password of Solution Manager as like below.


(c) Create one more RFC i.e SAPSLDAPI under SM59 with connection type as T (TCP/IP) and under Technical system use Registered Server Program with ID SAPSLDAPI_<SID> , here SID would be of your Solution Manager e.g SAPSLDAPI_SOL.


Give IP address of Java System or Solution Manager under Gateway host with sapgw00 as Gateway option and save the connection for a successful test.

(d)  After these previous steps run transaction SLDCHECK to get below results & screen on your browser.

3.jpg      4.jpg

RFC Destinations SLD_UC and SLD_NUC

These two RFC connections will create if not present when you configure the target SLD via transaction RZ70 in ABAP system on activation.

Under Transaction RZ70 we need  provide SLD Bridge : Gateway Information

Provide Host Field, enter the name of gateway host (would be hostname of Java System/Solution Manager )  & gateway service (sapgw00) .As we want to send/push data of ABAP system towards Solution Manager so here i have given hostname & gateway information of Solution Manager.

Execute the start data collection this will results screen


and under SM59 you'll able to find SLD_UC as well as SLD_NUC RFC connection which are created automatically by activation & execution of Start Data collection. For more information, see SAP Note 584654.

Activities on Solution Manager end

Now check whether "SAP_LMDB_LDB_0000000001" job (program name: AI_LMDB_R_SYNC_RUNNER) is continuously running successfully or not on Java System , because it plays vital role to drag data from SLD to LMDB .


Now on Solution Manager Go to Transaction SMSY_SETUP & select Transport Management System TMS/RFC & schedule data transfer from TMS/RFC  (F8).

After completion of job SAP_LMDB_LDB_0000000001 you'll be able to find ABAP system data into SMSY

Alternately we've one report named AI_SC_REFRESH_READ_ONLY_DATA for the collection of data for ABAP Systems if you maintained necessary details of ABAP system on http://service.sap.com marketplace.

Execute report AI_SC_REFRESH_READ_ONLY_DATA in transaction SA38 & provide your customer number to execute in background.

One more report named SMSY_FETCH_SYSTEM_UPDATE we can use to fetch the selected ABAP System data, for this execute SMSY_FETCH_SYSTEM_UPDATE in SA38 & provide System ID as well as System type in my case i selected SAP_BCSystem as SLD Classe for ABAP system.


and click on Read system data.

Next step is to maintain the ABAP Host via LMDB transaction as Servers & Hosts are no longer to maintain with SMSY .


Provide the necessary details for successful creation of new Host entry under Landscape Management database. Similarly create the Database information via LMDB.


After feeding database details under LMDB need to maintain Product System

  10.jpg      11.jpg       

Select Copy to make it Active under Installed Product versions & Save your entries. After saving sometimes you get message .23.jpg

For this edit the new Product System to flag it as relevant as like below screen & save.


Major step is to Resync the newly created system from the SLD .To perform this edit Technical system via LMDB & execute option Re Sync from SLD .


Sometimes we get an annoying error message  14.jpg

To avoid this error refer SAP Note 1766713 which tells to execute one standard report RLMDB_SYNC_TECHNICAL_SYSTEM with options as in screen


Here we can opt deletion of data which is created manually under LMDB & SMSY.


After successful execution of report RLMDB_SYNC_TECHNICAL_SYSTEM again try to Re Sync SLD data this time you'll be provided with screen


via LMDB & click on OK .


One more step is to assign Product Instances by searching Product Instance on clicking Add button.


Last we need to maintain RFC connection under Product Systems. Select new added ABAP system from SMSY transaction Product Systems & this switches you to LMDB on browser window to maintain RFC connections.


Click on RFC Maintenance & provide required ABAP user password & Solution manager Administrator user password details to maintain a successful RFC connections.


Under SMSY perform check for RFC destination.


Finally in Solution Manager work centers under Managed System Configuration you'll find your ABAP system & after that we can configure it or to generate Stack file (*.xml) for upgrade procedures as well as for centralized system monitoring.


Hope you guys will find this blog as helpful for you as well as for reference purposes.

Once more i request to all please precise this blog if found wrong somewhere & share your experience with me to make this blog more useful for others.


Gaurav Rana

Good day colleagues:


This is just a quick trick with which you can quickly decide whether you want to


1) Create/submit multiple SAP WF Items of the same SAP WF Task to a list of Agents, but each action upon the Item is independent, hence resolving it does not affect the other Agent's Workliskt, or


2) Create/submit a SAP WF Item to all your Agents, same SAP WF Task, so that the first one who works upon it and resolves it, removes the Item from his/her own Worklist as well as from the other Agent's,



Condition:  You have a multiline ApprovalAgents container element in your WF.


Advantage:  1.  The SAP WF Task for the approval does not have to change in any of the 2 cases explained, only the WF Step's Miscellaneous Tab does.

                    2.  This saves you from having to implement a SAP WF Fork.


My promise to you:  It is going to be short this time, I promise.



1. Each Agent gets a separate SAP WF Item.



Add or make sure your ApprovalAgents multiliner container object is added in the field below.



Testing the SAP WF, as explained with detail in http://scn.sap.com/community/it-management/alm/solution-manager/blog/2014/01/23/sap-crmsolman-charm-multiple-target-agents-via-sap-workflow--minimal-abap-development--part-4, to obtain.




2.  All Agents get the same WF Item.


We had to reduce the expression &APPROVALAGENTS[&_WF_PARFOREACH_INDEX&]& to &APPROVALAGENTS&



Testing the SAP WF, we obtain.






Juan-Carlos Garcia-Garavito

This is step-by-step example how you can create Direct link and group, to launch external URL f.e. your companies MS PS server or any else.

There is already blogs in CRM but they are all a bit complicated for Solman's so I decided to put here a step-by-step guide.


Example Scenario: Add external URL to Navigation Bar in WEB UI.



  1. Setup URL based Launch Transactions
  2. Configure Transaction Launcher using Wizard
  3. Create Logical Link, Create Direct Link Group
  4. Assign all to Business Role
  5. Make it visible in Business Role
  6. See results
  7. Some words about authorization control C_LL_TGT for Logical Links


1. Setup URL based Launch Transactions


Tcode SM30, view CRMV_IC_LTX_URL, choose maintain hit New Entries

URL 1.png



2. Configure Transaction Launcher using Wizard






Give name to Launch Trans. ID like ZLAUNCH_MSPS_LINK




Fill Description and Hadler Class you may call it e.g. ZCL_CRM_LAUNCH_MSPS_TASKS

Mark check box New Window



Transaction Type = B URL Transaction

URL ID created Z_MSPS









3. Create Logical Link, Create Direct Link Group


Tcode CRMC_UI_NBLINKS create new logical link for this

Give name, Type C Launch Transaction, parameter ZLAUNCH_MSPS_LINK

Parameter Class always CL_CRM_UI_LTX_NAVBAR_PARAM

Fill Title and Description




Now Create Derict link group


Choose Assign Links To Direct Link Group and add here our Z* link created



4. Assign all to Business Role


Stay in same Tcode choose Define Navigation Bar Profiles, choose business role you want this to be added f.e. ZSOLMANPRO

Now hit Assign Direct Link Groups To Nav. Bar Profile assign here Z* direct link group created



5. Make it visible in Business Role


Tcode CRMC_UI_PROFILE choose Business role where you added New Z* direct link group and hit Adjust Direct Link Groups

Mark Visible checkbox


Hit Adjust Direct Links and mark Visible for LogLink ID


Save, now we are done and can view / test it !


6. See Results


Finally launch tcode SM_CRM and look at Navigation Bar

URL 15.png

Hit link MSPS my tasks




7. Some words about authorization control C_LL_TGT for Logical Links

The authorization object C_LL_TGT controling this to be able to see this you must be sure you have it







This is the second and final part of the blog

Basic BRFPlus example to confirm if an Employee is a Team Lead (Manager) or not.



We continue completing the SQL statements to complete the exercise and test the solution.




Same way



If by any chance a rule is not in the right place, you move it up or down.


Now the rules are in the right execution order.


You can save.  Also press Activate, which will give you the option of activating all referenced objects



Your Function is ready for testing.



To test out the Function, right-click on the function and choose.



Input a BP of somebody who is a Manager and select Show also Results of Intermediate Steps, the Run Simulation.   You can also use the Import Test Data to import a file to test your Function.



The result shows that the entered BP is a Manager.      The nice thing about the simulation is that you can see where in the processing a link was broken.


As you can see in PPOMA_CRM, the BP ending with 28 is a Manager.  The Functon works fine.



Testing the function for BP ending with 44, the result is False.  The BP is not a Manager.




Back in the function module, always using the Back to Workbench button, by expanding the Show More in the header, you get the Function ID, which is to be used when called in ABAP.   That piece of information will be used in the next section.



That takes us to the final part of the blog.

2.  How to call a BRFPlus function in an ABAP program.  All the code below is standard, hence you need to define all the variables exactly as mentioned below.   The only elements we provided are the ones in bold characters:


The BRFPlus unique identifier:                001E0BEA00C41EE39E93CE6349D5E0FC.

The BRFPlus Input Parameter name:      BP_INPUT

The BRFPlus Input Parameter variable:   lv_rfcrequestertype crmt_partner_no

The BRFPlus Output variable:                lv_isteamlead type boolean.


You will need to add the code below to your ABAP program.


data:   lo_factory        type ref to   if_fdt_factory,
type ref to   if_fdt_function,
type ref to  if_fdt_context,
type ref to  if_fdt_result,
type           string,
type ref to   cx_fdt.


* Init BRFPlus


lo_factory  = cl_fdt_factory=>if_fdt_factory~get_instance( ).
= lo_factory->get_function( iv_id = '001E0BEA00C41EE39E93CE6349D5E0FC' ).
= lo_function->get_process_context( ).
->set_value( iv_name = 'BP_INPUT' ia_value = lv_rfcrequester ).
->process( exporting io_context = lo_context
   importing eo_result = lo_result ).
->get_value( importing ea_value = lv_isteamlead ).
   catch cx_fdt into lx_fdt.
   loop at lx_fdt->mt_message assigning <ls_message>.
   write / <ls_message>-text.
* End of BRFPlus




Some bibliography for you.

1.  BRFPlus - Business Rule management for ABAP Applications.



2.  BRFPlus.  There is this 1-2 days training in BRFplus you can get for free.  Excellent material, well organized.   There 3 sessions that tell you how that works.








For the functional and technical SAP users working with CRM or ChaRM, sometimes the fact that they do not have a Developer Key refrains them from having access to write basic ABAP code to get by in some scenarios.   BRFPlus is a new tool still for which you do not need a developer key.  That fact gives some kind of freedom to us, the non-developers, who have some basic SQL or SAP Query experience.




1. We have a need to confirm is an Employee (EE) in the form of BP is a Manager of an Org. Unit.  We want to use BRFPlus to retrieve in a boolean variable if the EE is Manager (1) or not (0).


2. We want to know how to add the BRFPlust call within an ABAP program.


Part 1. will show how to create the BRF+ Function.

Part 2. will show how to test it out and how to call it from an ABAP program.



Let's begin.


1.  Our BRFPlus Function.

The HR relationship from A012 determines if a EE is Manager.


In Part 2 of one of our previous blogs we explain in step 5 how the HR data is stored for ChaRM in our system http://scn.sap.com/community/it-management/alm/solution-manager/blog/2014/01/22/sap-crmsolman-charm-multiple-target-agents-via-sap-workflow--minimal-abap-development--part-2

In essence the HR data that reflects the Org Structure found in transaction PPOMA_CRM is stored in tables HRP1000 and HRP1001.   Let's follow with an example.


1.1 To retrieve the records for our case, we start with a BP number (BP ending with 28), which is stored in field SHORT of table HRP1000.  The entry found contains in field SOBID the correspondent CP (Central Person) number associated to that BP.



1. 2.With that, we search table HRP1001 for a record which Object ID matches the one we retrieve from the step above.   We refine that search looking for a SCLAS field = S (Position).  From the found record we retrieve the contents of a field SOBID.   That is the S (Position) the BP holds.



1.3 With that we search again in table HRP1001, where ObjectID = the SOBID entry found above.  If in that table there is an active entry (BEGDA and ENDA)  with SUBTY = A012, that S (Position) is Manager of the Org Unit in field SOBID.



Note:  In other words, we follow the path CP-S-O (Central Person to Position to Org. Unit), to get to know if a BP is Manager of an Org. Unit.


Let's provide the screen shots of the BRFPlus function we created to satisfy that.  The BRFPlus function receives a BP number and provides in an output boolean variable whether the entered BP is a Manager (1) or not (0).


Launch transaction BRFPLUS.

The first thing you need to do is to create a container where all your BRFPlus developments will be stored.



Provide some basic information, like package name and save and activate (always).



With the cursor in the new folder, right click and create a function.  BTY, the core object in BRFPlus are functions.    You can create any additional object, like rules, actions, data objects, expressions, etc., but the only element that interact with the exterior are Functions.




Select the Tab Signature and add the Import Parameter.




Now add the Export Variable.



Things should look like this.


Back to the tab Properties, Select Function and Event and click the little square below and select create [expression]




The top expression that we are about to create is the gate we enter into the HRP tables.  It is the first select statement.


NoteIs Reusableis a very useful, because you can then use this expression in any other BRF+ function in the future.


Note:  We are not attaching all the screens, as there are many that ask you if you want to save the parent object.  Always answer yes to those ones.   Parent because we started with the function and now we are jumping to an expression, which switches to another screen, so BRF+ needs to make sure the work is saved as we progress.


Now, create the 1st data retrieval.  As you have created all the parameters and variables, do not type in the empty oxes, but rather select the little triangles besides each field to select the correspondent object from the DB.


Also, keep in mind the mapping you must enter, which is reflected at the bottom of the picture.   It is quite easy to forget about it, as you have to expand (SHow Mapping), to have access to it.


Save your changes for now.   The 1st type of the retrieval is completed.


Press the back button of the object to continue.



Now we are creating a Ruleset.




We are adding two rules, one to retrieve teh S (Position), and the other one to confirm that S is a Manager or Not.

This area is possible one of the trickets ones BRF+ has.  It is not straight forward hwo to create the select statements and a lot of test and try was required until we were able to know how to properly insert the correct SQLs.  Be patient yourself whend doing the same.


Click the Insert Rule button > Create.






and so on and so forth, until.




Select from the available fields FINALOBJECT2, open up Sho Mapping and add the missing field.




If you press the Back button you will see that the 1st rule is completed.   Let's finish the same way Inserting the second rule.





The process is the same as before, so we only attach the final screen.





The final screens, testing an example of call from an ABAP program are found in Part 2.


This is the 4th part of this blog .

SAP CRM/SolMan ChaRM:  Multiple Target Agents via SAP Workflow - Minimal ABAP Development



Second part can be accessed:



Third part can be accessed:



In the link of part 3 appears the word last at the .  That is because with parts 1 to 3 this we consider you have all the elements we researched to do our work and begin working with WF in ChaRM.     This part 4 will show how to test the WF as well as running the full scenario using the Web UI plus getting additional details behind the WF scene like how to trace and troubleshoot.



Let's test the WF itself.


We select one of our RfCs.


Based on table CRMD_ORDERADM_H we get the GUID #.


Back to SWDD, we click on the test button and provide the mandatory import parameter the GUID #.




You get a confirmation that the task is in process.


And from there we can access all the logs.  Click the Workflow Log button and there are lots of screens there to see, but we will just point a couple of them.  The one below gives you access to the Agents that are to process the task to review the RfC.  Click on that button and then on Agents.


As you can see, based on the manager's requirements, even though Requester (Delegate Number 1) is a Delegate, that user is removed from the list of agents to get the Task.  Just the OU's Team  Lead and the other Delegates get notified.



Back to the main log screen, selecting the button you get access to see the individual steps of the WF and e.g. access the container contents of that particular step.  That helps as you can find out you are not passing the correct parameters and need to fix the binding in the WF, etc.




Finally, you can see if the overall WF is stopping at the task it is supposed to be stopped waiting for an asynchronous task to be performed.




etc.   You can continue or quit SWDD.


Before we create a fresh scenario, we need to enable WF event tracing.  Go to transaction SWELS and make sure event tracing is on.



Now, let's create a fresh scenario and for that we will logon as The Boss.  We will create a RfC and place it in phase Validation.  The Boss and all Delegates should be notified in their WebUI's Worklist.   Once any of those Agents moves the RfC to the next phase To Be Approved, the Task in all the Worklists will disappear.




You can access the Worklist and the entry was added there.



Before we access the document to Validate it, let's see what happens behind the scenes.


Launch transaction SWEL and execute it.  The event that starts the WF was launched.


You can double-click on that entry and it will take you to the same Workflow log we access before.


But, what does really control that the WF Task is waiting for an action?  Transaction SWE3 has the answer.   There is an entry automatically created there by the WF Task with the terminating event REQUESTTOBEAPPROVEDNEW.  If you select that line and double-click on Object Data you will get access to a list of different GUIDs of RfCs that are in phase Validation (ready to be processed).



You can confirm with table CRMD_ORDERADM_H that the GUID corresponds to the RfC.


Check on the screen above that there is a receiver key 20137, which is reflected in the WF log you can access through SWEL.


Those key values are important as when the event to terminate the task is triggered, it will find the exact entry in SWE3 (Table SWFDVEVINS) to remove it from there, leaving the other entries there untouched.


Let's go back to the Web UI and click on our RfC entry in the worklist to review it and promote it to the next phase.   The description is the one you entered when created the Task.  Below WF adds the link to the RfC.  You can click on it to open it.


We validate the RfC and promote it to the next phase.



A couple of things:  The RfC gets removed from the Worklist and the WF log diagram shows that the WF for this RfC is completed.



SWEL shows that the terminating event was triggered.


Double-clicking on that entry in the log we click the graphical button and see that the WF is completed.


You can confirm that the document does not exist any longer in SWE3.



I guess that is sufficient for this blog.


Let's just add that there is a table SWWWIHEAD that keeps information that can help troubleshooting.  The list was sorted descending and shows in the red square the different steps the RfC has gone through.  Some completed, some ready.    Accessing that table you can find if, e.g. a RfC phase is on error status.




Some bibliography for you.


1. The 2 workflow pack:

  • Practical WF forSAP 2nd Ed.  All the book.  It covers almost anything in WF.  Excellent.
  • ABAP Development for SAP Business  Workflow    A couple of tips we got to understand the ABAP programming instructions.  Good complement for WF developers



2. Hoping this does not create a conflict.  With all the respect, the guys from http://www.****************.    Good examples to learn WF.


3. Mr Nathan Williams and his wonderful book:  IT Service Management in SAP Solution Manager.   I still do not understand how one guy can do so much and to top it off, he is a musician.  Can you believe that?



4.  BRFPlus - Business Rule management for ABAP Applications.



5.  BRFPlus.  There is this 1-2 days training in BRFplus you can get for free.  Excellent material, well organized.   There are 3 sessions in particular that tell you how it works.





And the bonus ... a BRFPlus example.






This is the 3rd part of this blog.

SAP CRM/SolMan ChaRM:  Multiple Target Agents via SAP Workflow - Minimal ABAP Development



Second part can be accessed:  http://scn.sap.com/community/it-management/alm/solution-manager/blog/2014/01/22/sap-crmsolman-charm-multiple-target-agents-via-sap-workflow--minimal-abap-development--part-2


In the link it appears the word last at the end, because with this we consider you have all the elements we researched to do our work and begin working with WF in ChaRM.     Part 4 will show how to test the WF as well as running the full scenario using the Web UI plus getting additional details behind the WF scene:     How to trace and troubleshoot.



So far we have explained how the delivered WF for Approval of the RfC in ChaRM looks behind the scenes, the creation of the subtype of BUS2000116, the events we need for our WF, a brief description about the 2 tasks we use in our WF, and the rule to retrieve the Agents that are to perform the RfC Validation, which includes some theory about evaluation paths.


We continue the process with our Validation WF in detail; which we will test out in Part 4.  As a bonus there we include how we build a BRFPlus function that finds if a BP is Team Lead or not in the HR Organizational Unit he/she belongs to.  Why BRFPlus?  Because to work with BRFPlus you do not need a developer key.  That gives you some freedom when you do not have a developer to work with you or you do not do ABAP but know basic SQL statements.  For that reason with BR+ you do not get stopped on your work.


6. Our Workflow.


The first task is to create the condition that will trigger our WF.  Many ways to trigger an event exist.  There is an ideal in CRM with no ABAP involved.


Launch transaction BSVW and select Customer Settings.  We created 2 entries there for our WF:  One that triggers the event that starts the WF, the other one that starts the event that terminates the WF when the RfC phase moves from Validation to To be Approved.    The images should be self explanatory.


1st event.



2nd event.



Note: It is very possible there are cases in which you need to have more than one User Status that triggers the termination event.  You should check what are the possible subsequent Actions (next phases) within the RfC of Change Object phase you want to introduce a WF.


Let's now complete the 2 tasks for our WF, which we copied from the SAP standard ones, as mentioned in Part 2.


(There are 2 main tasks in our workflow as described in part 1. We copied both 2 being used by the SAP delivered WF WS17100016.  Some slight modifications were done to ours.


4.1 Task TS999000039 is a copy of the SAP delivered one TS17107927 (Get current step information). The copy of that task was done via transaction PFTC. Although it is the same in essence, we changed some texts to our convenience. We will see them later on once we get back to WF.

4.2 Task TS99900035 is a copy of the SAP delivered one TS17107930 (Approve Request for Change). The different piece in this task is that we created a rule to retrieve the Agents that are to be notified when the RfC moves to phase Validation.)


Via transaction PFTC we call task 999000039, Retrieve RfC Data.  As you see we only changed the description, which takes us to a recommendation we have for you.  SAP WF comes with hundreds of function modules, rules and other objects that are re-usable.  That reduces your efforts considerably.    For example, FM CHANGEWITHDIALOG, which we use below.  Initially we thought we were going to have to create a new method to assign our newly created Task to the Agents.  As step 1 of our trial we approached with caution and tested our task using that method delivered by SAP for the original task we copied from.  It did the work for us at the Validation phase


Probably that may not be a big deal for you, but we have faced the same situation at other occasions, and learning about WF as some of you using ChaRM or CRM may be probably doing now,  recycling objects is a heck of a relief.    WF is huge and believe us, it is a great tool that allows you to manipulate almost any scenario you can imagine without harming the integrity of the SAP Product you work with.


Back to work,

Finally, important to highlight that Synchronous tasks are executed immediately.



The second task T99900035.    We re-use a SAP delivered FM that fits our needs.  It is responsible for creating the tasks for the Agents.  It is asynchronous as we do not know when the Agents are going to check the RfC to Validate it.    While this task is active, the WF stops and waits for resolution.



Below the tab with the Terminating Event data.  Besides the task description, this is probably the main reason we had to create this task as a copy of the task delivered by SAP in the Approve RfC step of the WF.  The event we use is different.



With the 2 tasks available we are ready to create our WF using transaction SWDD.  As explained before, when you create a WF Template, if there are Activities you want to add (Tasks), just grab the icon from the right hand side of the screen, below Step Types that Can Be Inserted, the correspondent Activityicon,  and place it in the middle of the flow window on the right hand side, between Workflow Started and Workflow Completed.    When you create a WF for the first time, there is already an inactive Activity (Task) there, hence you may only need to drag and drop from a second task on (in a two-task WF)


FYI, there is a bar on the right hand side of the screen that gives access to different WF menus.  We used 2 for our exercise:  The first one and Workflow Container.



In that window, switch to WF Container as we need to add an element to our container (Container is where parameter values are kept during the WF execution).  There is an object BUS2000116 delivered by default when the WF is created, but which is useless.  We had to create a new one, almost with the same configuration, only different name and mandatory as it is a requirement for the WF to start. 


To create the object, follow the screens.



The screens below complement are accessed when you click on the Hat.  They contain the WF description and the triggering event.




Note: Do not worry about the variables at this moment.  Below you will get to know about bindings.


The other general tab is the Start Event, which shows the WF trigger event.  The A (Active) green square on the right hand side refers to the automatically created entry in transaction SWE2 (see further down).  The two little green mail envelopes show the bindings or parameter values that are passed from one object to the next in the WF.    For the case below, those are the parameters passed from the event to the WF:  1. The so called _EVT_OBJECT is passed to the WF mandatory Container object we created above, REQUESTFORCHANGE.  2.  The _EVT_CREATOR is passed to the _WF_INITATOR.


A couple of views of SWE2, which entries are automatically created when you add the event to the screen above and activate the linkage. 


FYI, as long as the linkage is active, the event will always start the WF.  In other words, you could have a WFbeing repaired and you can temporary remove the linkage in SWE2 directly or clicking in the green square in the screen above to turn it to gray or grey (color spell depends whether the reader is from America or from England or a former English Colony).    That will avoid the WF from start, no matter if the event is still triggered.  Very useful, because you can have the same event starting many workflows, and by this approach you do not affect the other WFs functionality while fixing one of them.




First Task:  To access it, we double-click on it.


In the Control Tab the Task we created is entered. Adding the task, will add the task description below, the fact that it is synchronous and run in the background.


Let's take a look at the bindings (the button under task number).  Most of the bindings, at least 90+% are automatically added by default or when you click the generate button, they get added for you.  All depends on the task definition and the object it interacts with (WF, rules, e-mail, or other steps).  You may only need to manually bind when you have created your own objects in the Container, which SAP sometimes can not recognize.  We  will visit that scenario below.  In principle you pass Container elements from one object to another so that the values do not get lost, though WF does not loose track on the core ones, e.g. REQUESTFORCHANGE.  For that case, you only pass them from the object to the WF if you updated them.  Still you need to pass them from, e.g. the WF to the Task, because the task may have a method that needs to read from the container.


The last tab in this first task is the outcome.  We will get a better understanding in the next task, as this one is background and basically it is an outcome created by default.



Second Task: To acccess it, we double-click on it.


In the Control Tab the second Task we created is entered. That will add the task description, which is what the Agents will get in the notification of the task they access either in the SAP Business Workplace or in the Web UI's Worklist.  You can see also that the Agents are defined by the AC Rule we already created.



Pressing the button under the task, we get the bindings between the WF and the Task and the returned values after the task is executed.  Remember that no values back does not mean data gets lost. Most of the data in the container is retained always in the WF.


The rule we created had an container parameter for import, the RfC #.  When the rule is added to the WF, the binding window has that object available in list of objects of the rule window.  It is our duty to bind it to an element of the WF, for which we drag and drop on both windows the correspondent matching partners.


Note:  We tried to pass the GUID, but we still need to learn how to deal with RAW16 types, as it looks like they require some kind conversion to 32 characters or vice versa.  So farm the RfC # does the work for us.


Let's review some of the rule screens.




In the logic of the method the rule uses, we retrieve that RFC # from the rule's container.  That is the way you retrieve a parameter from a container.  Knowing that, opens up door to transfer anything you need:  single variables, tables, anything.



And that is all you need in the WF.


In the next and final blog of this topic we show you how to test the WF with SWDD and we will test the whole ChaRM functionality involved, as well.


This is the 2nd part of the blog

SAP CRM/SolMan ChaRM:  Multiple Target Agents via SAP Workflow - Minimal ABAP Development



Doing a recap, so far we have explained how to create the subtype of BUS2000116 and the events.


We continue with Tasks, Rule and HR evaluation paths.


4. Tasks.


There are 2 main tasks in our workflow as described in part 1. We copied both 2 being used by the SAP delivered WF WS17100016.  Some slight modifications were done to ours.


4.1 Task TS999000039 is a copy of the SAP delivered one TS17107927 (Get current step information). The copy of that task was done via transaction PFTC. Although it is the same in essence, we changed some texts to our convenience. We will see them later on once we get back to WF.

4.2 Task TS99900035 is a copy of the SAP delivered one TS17107930 (Approve Request for Change). The different piece in this task is that we created a rule to retrieve the Agents that are to be notified when the RfC moves to phase Validation.


5. Rule.


The specification we got from our it management: For RfC Phase Validation, obtain from the HR Organizational Unit the RfC Requester works for, the Team Lead and the Delegates. Those are to be the WF Task Agents. Exception: If the RfC Requester is not a Team Lead, but a Delegate, that Delegate will not be a Task Agent.


It is essential for our ChaRM solution to work, that we have a HR Structure in place. You can copy and maintain it up-to-date via ALE from your ERP Production to SolMan, or you can download/upload it from the same source and target (which does to provide maintenance capabilities), or as in our case, where we have a big organization but a small group of individuals who deal with ChaRM, create our own Org. Structure in SolMan, where we could also add our own relationships to complement our needs.  That is a simple exercise you can do with transaction PPOMA_CRM.  Should not take you longer than half a day to setup a structure of 100 people with basic relationships.


If you need more details, please reply to this blog and I will add that section. I will avoid it for now as there is still a lot of work to add.


One of our Org. Units looks like this:



You can see a couple of things on the screen:

  • The Boss is the Team Lead. (The one with the hat)
  • There is a Delegate Position (denoted with an S), that has 3 BP-Users assigned to it.
  • There is a Member 4, who is an independent delegate.
  • The last 2 items will be used to demonstrate that you can have 2 approaches to designate somebody as Delegate of a Team Lead, either by adding a relationship between a Position and the Boss' position, or by dropping other BP-US to a Position that is already a Delegate.  The former is what you see with position Member 4,  and the latter what you see with Position named Delegate, in which we dragged and dropped BP-US Member 5 and Member 6, respectively.  Delegate Number 1 was not dropped there.  It is the BP-User that held that Position from the beginning.


Now, PPOMA_CRM allows you to create Org Units, Positions, and to add BPs and Users, but there is no way to define there Delegate and Team Lead relationships.  That is done using transaction PO10 (for Org Units) and PO13 (for Positions).


As you see below in transaction PO13, we created a relationship A311 between the Position (S) 50001385 and the Position 50001382 to reflect what we call Delegate of and SAP calls Substitute.  If you see the diagram above, S 50001382 is The Boss (Team Lead). 


Now, let's look at the view from The Boss' perspective.  There are 2 Ss that are Delegates/Is substitute of S 50001382 (Relationship B311), and also 50001382 Manages OU 33333339 (Relationshiop A012)



Let's pause for a moment to explain the concept of A and B.  A relationship in HR uses a number, e.g. 311, but if the relationship is seen from a lower object to a higher object in the Org Structure, SAP uses the prefix letter A, and they use prefix B to describe it from the opposite object.  That is why in the example above, from the Team Lead's perspective, the delegates are seen as Bs, and the fact the the Team Lead is the Manager of an Org unit, is seen as an A(005), because the Manager is at a lower level than the Org Unit being managed.


Note:  When you create a relationship like B311, the respective A311 is created in the Delegate's Position, hence you have to worry about only one-way of relationship to create.


Other element to keep in mind from the picture above is that as you can see the Position (S) is between the Org Unit (O) and the Central Person (CP).  That means that so far we have a structure that seen from top to bottom looks like O-S-CP.  However, the picture from PPOMA_CRM does not reflect the CP relationship, but it reflects BP and US depending on S.


The connection of all this is in tables HRP1000 and HRP1001 (infotypes 1000 and 1001 - tables that store HR data).  For our case in table HRP1000 we see that there is an entry for OBJID S 50001382, it shows the relationship A008 (holder) with object CP (Central Person) 50000776.HRP1001_1.gif


Going back to HRP1001, but this time searching on OBJID 50000776 we find 2 erlationships B207 and B208.  If you check in transaction OOVK, those relationships are both Is identical to.  That means that CPis identical to BP, and identical to US.  That concept will help for the next step.


Back to our exercise, we need to retrieve the Team Leads and Delegates of an Org Unit.  In order to do that we need to create an HR Evaluation Path if the ones already there do not comply to our goal.  FYI, you can use report RHWEGID0 to find out Evaluation Paths based on what you are looking for.      For the case, we looked for any EP that started in O, and went to US using S.  None of them worked for us.


So, using the transaction OOAW we created the following EP, which looks more dramatic than what it is.  In plain words: We start with an Org Unit (O) to search via relationship B012 the Position (S) that manages it.  From that S using relationship B311 we look for the Ss that are substitutes (Delegates).    For all retrieves Ss so far using relationship A008 we retrieve the Central Persons (CP) holders of those Positions, and from there also the correspondent BPs and USers.



To test that EP we run report RHSTRU00.  Provide the Org Unit and the Evaluation Path.



We obtain the result, that if you compare with the PPOMA_CRM picture provided top conclude we only retrieved the Boss and the Delegates, which is what we are looking for.



With the same approach we created another EP that retrieves the Organizational Unit when a user is provided.    The reason for creating it and not using, e.g. the SAP delivered one WF_ORGUN, is due to the way the HR data is created and stored in table HRP1001 when using PPOMA.OOAW_2.gif



As you see above, WF_ORGUN requires the existence of a relationship between USer and P (Person), but in SolMan PPOMA_CRM the additional entry it creates in HRP1001 when hooking up a Position to a BP and a USer, is a relationship between that Position and a CP (Central Person), and not P (Person).  Two different HR objects.


How to test that the EP works fine was already explained, so please take the same approach.


With that in place the only pending object before we create the Rule, is the FM that will retrieve the Agents from the Org Structure.


The FM has a BRFPlus call that  will be explained at the end of this document, so that we stay focused on the Rule.  That text in Italics in the program below, can be changed with 3 select statements that cover the following:


1. Retrieve from HRP1000 OBJID where SHORT = lv_rfcrequester .  OBJID is the actual CP.

2. Retrieve from HRP1001 SOBID, where OBJID = the above CP and SCLAS = 'S'.  That SOBID is the actual Position (S) of the RfC Requester.

3. Retrieve again from HRP1001, where OBJID = the above S and SUBTY = A012.  If you get a record, the Requester is actually Team Lead.  If not, it is a Delegate.


Note: You still need to include the fields BEGDA and ENDDA to retrieve active records, but we will show that when we explain BRFPlus.


function zch_retrieve_teamlead_delega01.
*"*"Local Interface:
include <cntn01>.

tables  crmd_orderadm_h.


data:      lt_usersorgunit    type  swhactor,
              lv_numlines         type  i,
              lv_isteamlead      type  boolean,

              lv_objid               type  crmt_object_guid,
              lv_rfcrequester     type  crmt_partner_no,
              lv_rfcrequesterou  type actorid,

              it_usersou           like  lt_usersorgunit occurs 0,
              lv_usersouheader like  lt_usersorgunit,
              it_userstldl          like  lt_usersorgunit occurs 0,
              lv_userstldl          like  lt_usersorgunit,

              lo_factory            type ref to if_fdt_factory,
              lo_function          type ref to if_fdt_function,
              lo_context           type ref to if_fdt_context,
              lo_result              type ref to if_fdt_result,
              lv_result_string     type string,
              lx_fdt                   type ref to cx_fdt.


field-symbols:  &lt;ls_message&gt; type if_fdt_types=&gt;s_message.

**Read parameter - RfC # GUID from the WF container
swc_get_element ac_container 'Object_ID' lv_objid.


* As this FM is called from an RfC, then the RfC will always exist in table crmd_orderadm_h,
* hence there is no needd to check for SY-SUBRC =0.
select single guid from crmd_orderadm_h
    into lv_objid
    where object_id eq lv_objid.

* As Team Field is mandatory in the RfC, it will always be an entry in crmd_order_index for it.

* Field PFT_7 with an X means that the Partner_No entry asociated in the record is the RfC Requester.

* PFT_8 .. TeamLead;  PFT_16 .. Change Manager; PFT_1 ... Sold to Party, etc.

select single partner_no from crmd_order_index
    into lv_rfcrequester
    where header eq lv_objid

    and  pft_7 eq 'X'.

* Now we use the SAP FM to retrieve the Org Unit that Team Lead works for.
call function 'RH_STRUC_GET'
        act_otype      = 'US'
        act_objid      = lv_rfcrequester
        act_wegid      = 'ZCH_ORUN'
        result_tab      = it_usersou
      no_plvar_found = 1
      no_entry_found = 2.
*      others        = 3.

describe table it_usersou lines lv_numlines.

* Below there should be a logic to deal with a user that belongs to more than one Org Unit (OU)
* but we leave it like that for now, as that is supposed to be identified at the initiation
* of the RfC.  For now, we assume each user belongs to only one OU
loop at it_usersou into lv_usersouheader.
    lv_rfcrequesterou = lv_usersouheader.


* We now need to find out if the entered TL is actually a TL or a Delegate.  For that we use a BRFPLUS
* function.

* Init BRFPlus
lo_factory  = cl_fdt_factory=&gt;if_fdt_factory~get_instance( ).
lo_function = lo_factory->get_function( iv_id = '001E0BEA00C41EE39E93CE6349D5E0FC' ).
      lo_context  = lo_function->get_process_context( ).
      lo_context-&gt;set_value( iv_name = 'BP_INPUT' ia_value = lv_rfcrequester ).
      lo_function-&gt;process( exporting io_context = lo_context
                          importing eo_result  = lo_result ).
      lo_result-&gt;get_value( importing ea_value = lv_isteamlead ).
  catch cx_fdt into lx_fdt.
      loop at lx_fdt-&gt;mt_message assigning &lt;ls_message&gt;.
        write / &lt;ls_message&gt;-text.
* End of BRFPlus

* We keep in lv_isteamlead if the BP entered in the TeamLead field of the RfC is actually a TL or not.

* If it is not, then that BP will not be notified when the RfC enters in Phase Validation, as another body

* than that Delegate must review the RfC, either the actual Team Lead or any other Delegate of the

* Org Unit they work for.


* We retrieve the Agents based on the list of Team Leads and Delegate of the Org Unit.
call function 'RH_STRUC_GET'
      act_otype      = 'O'
      act_objid      = lv_rfcrequesterou
      act_wegid      = 'ZCH_TLDL'
      result_tab    = it_userstldl
      no_plvar_found = 1
      no_entry_found = 2.
*      others        = 3.
  append lines of it_userstldl to actor_tab.

* Remove any other entry that is not USer.
  delete actor_tab where otype ne 'US'.
  describe table it_userstldl lines lv_numlines.
  if lv_numlines is initial.
    raise nobody_found.
* If more than one Agent is found and the TL in the RfC is actually a Delegate, remove it
* from Agents.
  elseif lv_numlines gt 1 and lv_isteamlead eq 0.
    delete actor_tab where objid eq lv_rfcrequester.



Other important screens from the FM.




In transaction PFAC create a new rule. Use the create button


Note: The recommendation is to use prefixes for all the objects you create. We used "ZCH_" in ours. Below are the different tabs.



The rest of the screens are standard.  Add the description at your leisure in the respective tab.


Let's test the Rule.


We have a RfC where user ending 56 or Delegate Number 1 is the Requester, but that BP is not a Team Lead, but a Delegate.  The rule should retrieve in WF format, all the Agents, Team Leads and Delegates, except for user ending with 56 (Delegate Number 1).





With this we complete the Rule.


Part 3 contains details on the tasks, rule and our full WF ready for testing.



Filter Blog

By author:
By date:
By tag: