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:

 

qgm_img7.jpg

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:

 

qgm_img8.jpg

Trying to release original transports while phase is scope:

qgm_img1.jpg

 

 

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:

qgm_img9.jpg

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

qgm_img11.jpg

 

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.

qgm_img2.jpg

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:

qgm_img3.jpg

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:

qgm_img4.jpg

 

qgm_img5.jpg

 

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:



qgm_img6.jpg


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)

qgm_img12.jpg


qgm_img13.jpg


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).

qgm_img14.jpg

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:

qgm_img15.jpg

 

IT Calendar showing QGM project phases:

qgm_img16.jpg

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;

 

sshot-1.png

 

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.

 

sshot-2.png

 

sshot-3.png

 

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".

sshot-6.png

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;

 

sshot-9.png

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

 

sshot-1.png

 

New QGM Projects

 

sshot-4.png

 

Cheers,

Vivek

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.

 

 

t2.JPG

 

 

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.

 

 

t2.JPG

 

 

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

 

 

t3.JPG

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

1fig.png

Figure 1: Source: SAP

 

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

2fig.png

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.

 

Demo

3fig.png

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

4fig.png

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

5fig.png

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).

6fig.png

Figure 6: Source: SAP

 

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

7fig.png

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.

8fig.png

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.

9fig.png

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

10fig.png

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

11fig.png

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

1fig.png

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 +)

2fig.png

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

3fig.png

Figure 3: Source: SAP

 

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

4fig.png

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

5fig.png

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.

6fig.png

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.

 

7fig.png

Figure 7: Source: SAP

 

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

8fig.png

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.

 

Today:

1fig.png

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

 

2fig.png

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

3fig.png

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.

4fig.png

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.

5fig.png

Figure 5: Source: SAP

 

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

6fig.png

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.

7afig.png

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.

 

1fig.png

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.

2fig.png

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.

3fig.png

Figure 3: Source: SAP

 

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

4fig.png

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.

5fig.png

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.

1.jpg

(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.


2.jpg

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

5.jpg


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 .

6.jpg

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.

7.jpg

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 .

8.jpg


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

9.jpg

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.

12.jpg

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 .

13.jpg

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

15.jpg

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

16.jpg

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

17.jpg

via LMDB & click on OK .

18.jpg

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

19.jpg

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.

20.jpg

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

21.jpg

Under SMSY perform check for RFC destination.

22.jpg

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.

Regards,

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.

 

SWDD_7.gif

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

SWDD_5.gif

 

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.

SWDD_6.gif

 

 

2.  All Agents get the same WF Item.

 

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

SWDD_2.gif

SWDD_4.gif

Testing the SAP WF, we obtain.

SWDD_1.gif

 

 

Regards,

 

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.

 

Steps:

  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

Save.

 

2. Configure Transaction Launcher using Wizard

 

Tcode  CRMC_UI_ACTIONWZ

URL 2.JPG


Continue

 

Give name to Launch Trans. ID like ZLAUNCH_MSPS_LINK

URL 3.JPG

Continue

 

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

Mark check box New Window

URL 4.JPG

Continue

Transaction Type = B URL Transaction

URL ID created Z_MSPS

URL 5.JPG

Continue

URL 6.JPG

Continue

URL 7.JPG

Complete

URL 8.JPG

 

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

URL 9.JPG

Save.

 

Now Create Derict link group

URL 10.JPG

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

URL 11.JPG

 

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

URL 12.JPG

 

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

URL 13.JPG

Hit Adjust Direct Links and mark Visible for LogLink ID

URL 14.JPG

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

 

URL 15.JPG

 

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

 

Example

 

C_LL_TGT

LL_TYPE  : C

LL_TGT    : ZLAUNCH_BBP_LINK

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.

http://scn.sap.com/community/it-management/alm/solution-manager/blog/2014/01/24/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.

BRFPLUS2_9.gif

BRFPLUS2_A.gif

BRFPLUS2_B.gif

Same way

BRFPLUS2_C.gif

BRFPLUS2_D.gif

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

BRFPLUS2_E.gif

Now the rules are in the right execution order.

BRFPLUS2_F.gif

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

BRFPLUS2_G.gif

 

Your Function is ready for testing.

BRFPLUS2_H.gif

 

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

BRFPLUS_2.gif

 

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.

http://scn.sap.com/servlet/JiveServlet/showImage/38-100787-370754/BRFPLUS_6.gif

BRFPLUS_6.gif

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.

http://scn.sap.com/servlet/JiveServlet/showImage/38-100787-370753/BRFPLUS_5.gifBRFPLUS_5.gifBRFPLUS_5B.gif

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

PPOMA_CRM2.gif

 

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

BRFPLUS_7.gif

 

 

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.

BRFPLUS_1.gif

 

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,
          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.

...

* Init BRFPlus

 

lo_factory  = cl_fdt_factory=>if_fdt_factory~get_instance( ).
lo_function
= lo_factory->get_function( iv_id = '001E0BEA00C41EE39E93CE6349D5E0FC' ).
try.
   lo_context
= lo_function->get_process_context( ).
   lo_context
->set_value( iv_name = 'BP_INPUT' ia_value = lv_rfcrequester ).
   lo_function
->process( exporting io_context = lo_context
   importing eo_result = lo_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.
   endloop.
endtry.
* End of BRFPlus

 

 

 

Some bibliography for you.

1.  BRFPlus - Business Rule management for ABAP Applications.

http://www.sap-press.com/products/BRFplus-%E2%80%94-Business-Rule-Management-for-ABAP-Applications.html

 

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.

http://scn.sap.com/docs/DOC-8824?rid=/webcontent/uuid/90754865-f283-2b10-6d9f-b10f3c28c3a0

 

Enjoy,

 

Juan-Carlos

Greetings.

 

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.

 

Scenario.

 

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.

HRP1000_3.gif

 

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.

HRP1000_3.gif

 

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.

HRP1001_4.gif

 

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.

BRFPLUS_8.gif

 

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

BRFPLUS_9.gif

 

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.

BRFPLUS_A.gif

BRFPLUS_B.gif

 

Select the Tab Signature and add the Import Parameter.

BRFPLUS_I.gif

BRFPLUS_J.gif

 

Now add the Export Variable.

BRFPLUS_K.gif

BRFPLUS_L.gif

Things should look like this.

BRFPLUS_M.gif

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

 

BRFPLUS_C.gif

 

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

BRFPLUS_N.gif

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.

BRFPLUS_P.gif

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

 

Press the back button of the object to continue.

BRFPLUS_Q.gif

 

Now we are creating a Ruleset.

BRFPLUS_R.gif

BRFPLUS_S.gif

 

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.

BRFPLUS_T.gif

BRFPLUS_U.gif

BRFPLUS_V.gif

BRFPLUS_W.gif

BRFPLUS_X.gif

and so on and so forth, until.

 

BRFPLUS_Y.gif

 

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

BRFPLUS_Z.gif

Save.

 

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.

BRFPLUS2_1.gif

BRFPLUS2_2.gif

BRFPLUS2_3.gif

 

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

BRFPLUS2_7.gif

BRFPLUS2_8.gif

 

 

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

http://scn.sap.com/community/it-management/alm/solution-manager/blog/2014/01/24/basic-brfplus-example-to-confirm-if-an-employee-is-a-team-lead-manager-or-not-part-2

This is the 4th part of this blog .

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

http://scn.sap.com/community/it-management/alm/solution-manager/blog/2014/01/21/sap-crmsolman-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

 

Third part can be accessed:

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-3-last

 

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.

PFAC_7B.gif

Based on table CRMD_ORDERADM_H we get the GUID #.

CRMD_ORDERADM_I.png

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

SWDD_WS99900020_Q.gif

SWDD_WS99900020_R.gif

 

You get a confirmation that the task is in process.

SWDD_WS99900020_S.gif

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.

SWDD_WS99900020_T.gif

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.

SWDD_WS99900020_U.gif

 

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.

SWDD_WS99900020_V.gif

SWDD_WS99900020_W.gif

 

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.

SWDD_WS99900020_X.gif

SWDD_WS99900020_Y.gif

 

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.

SWELS.gif

 

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.

CRM_UI_1.gif

CRM_UI_2.gif

 

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

CRM_UI_3.gif

 

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.

SWEL_1.gif

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).

SWE3_1.gif

SWE3_2.gif

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

CRMD_ORDERADM_J.png

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

SWEL_3.gif

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.

CRM_UI_4.gif

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

CRM_UI_4.gif

 

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.

CRM_UI_6.gif

 

SWEL shows that the terminating event was triggered.

SWEL_4.gif

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

SWEL_5.gif

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

SWE3_3.gif

 

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.

SWWWIHEAD.gif

 

 

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

http://www.sap-press.com/products/The-Workflow-2%252dpack.html

 

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?

http://www.sap-press.com/products/IT-Service-Management-in-SAP-Solution-Manager.html

 

4.  BRFPlus - Business Rule management for ABAP Applications.

http://www.sap-press.com/products/BRFplus-%E2%80%94-Business-Rule-Management-for-ABAP-Applications.html

 

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.

http://scn.sap.com/docs/DOC-8824?rid=/webcontent/uuid/90754865-f283-2b10-6d9f-b10f3c28c3a0

 

 

 

And the bonus ... a BRFPlus example.

http://scn.sap.com/community/it-management/alm/solution-manager/blog/2014/01/24/basic-brfplus-example-to-confirm-if-an-employee-is-a-team-lead-manager-or-not

 

Enjoy,

 

Juan-Carlos

This is the 3rd part of this blog.

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

http://scn.sap.com/community/it-management/alm/solution-manager/blog/2014/01/21/sap-crmsolman-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.

BSVW_3.gifBSVW_4.gif

 

2nd event.

BSVW_1.gif

BSVW_2.gif

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.

PFTC_1.gif

 

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.

PFTC_2.gif

 

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.

PFTC_3.gif

 

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)

SWDD_WS99900020_1.gif

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.

SWDD_WS99900020_8.gif

 

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.

SWDD_WS99900020_9.gif

SWDD_WS99900020_A.gif

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

SWDD_WS99900020_B.gif

 

SWDD_WS99900020_C.gif

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.
SWDD_WS99900020_D.gif

 

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.

SWE2_2BVALIDATED.gif

SWE2_2BVALIDATED_2.gif

 

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

SWDD_WS99900020_E.gif

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.

SWDD_WS99900020_F.gif

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.

SWDD_WS99900020_G.gif

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.

SWDD_WS99900020_H.gif

 

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

SWDD_WS99900020_I.gif

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.

SWDD_WS99900020_J.gif

 

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.

SWDD_WS99900020_K.gif

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.

SWDD_WS99900020_L.gif

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.

SWDD_WS99900020_M.gif

SWDD_WS99900020_O.gif

 

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.

SWDD_WS99900020_P.gif

 

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.

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

This is the 2nd part of the blog

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

http://scn.sap.com/community/it-management/alm/solution-manager/blog/2014/01/21/sap-crmsolman-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:

PPOMA_CRM1.gif

 

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). 
PO13_1.gif

 

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)

PO13_2.gif

 

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.
HRP1001_2.gif

 

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.

OOAW_1.gif

 

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

RHSTRU00_1.gif

 

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.

RHSTRU00_2.gif

 

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

OOAW_3.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:
*"  TABLES
*"      AC_CONTAINER STRUCTURE  SWCONT
*"      ACTOR_TAB STRUCTURE  SWHACTOR
*"  EXCEPTIONS
*"      NOBODY_FOUND
*"----------------------------------------------------------------------
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'
    exporting
        act_otype      = 'US'
        act_objid      = lv_rfcrequester
        act_wegid      = 'ZCH_ORUN'
    tables
        result_tab      = it_usersou
    exceptions
      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.
endloop.

 

* 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' ).
try.
      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.
      endloop.
endtry.
* 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'
    exporting
      act_otype      = 'O'
      act_objid      = lv_rfcrequesterou
      act_wegid      = 'ZCH_TLDL'
    tables
      result_tab    = it_userstldl
    exceptions
      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.
  endif.

endfunction.

 

Other important screens from the FM.

SE37_1.gif

SE37_2.gif

 

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.

PFAC_2.gifPFAC_3.gif

PFAC_4.gif

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).

PFAC_7.gif

PFAC_5.gif

PFAC_6.gif

 

With this we complete the Rule.

 

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

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-3-last

Actions

Filter Blog

By author:
By date:
By tag: