Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
Jocelyn_Dart
Product and Topic Expert
Product and Topic Expert
Latest Update October 2020: Please note that from SAP S/4HANA 2020 you are recommended to use the Launchpad App Manager instead of the Launchpad Designer.

EnjoySAP transactions such as ME21N, ME22N, ME29N, etc. have some particular challenges around passing appropriate parameters when called directly from other Fiori apps.  Understand a simple approach for how to workaround these challenges so you can call them confidently from any Fiori app.

There are some additional challenges when calling enjoySAP transactions from the SAP Fiori apps via app to app navigation.  These challenges can be overcome as we explain in this blog. You will need to settle in for this one - I promise you will learn some tips about List of Links dialogs and how Target Mappings work as well that will help you with other Fiori for S/4HANA scenarios!

Back in the day, one of the very early attempts to improve the UX of SAP GUI, long before SAP Fiori was even thought of, was called enjoySAP.   EnjoySAP brought a more consolidated UI where 3 levels of detail – header, items, and subitems – could be viewed and edited at the same time.  The enjoySAP approach was primarily used to improve certain Procurement transactions such as ME21, ME22, ME23, ME29 and others.   Like many such attempts these transactions still exist in SAPGUI, are still used by many users and still provide value to many users.   You can typically identify enjoySAP transactions by the suffix N on the transaction code, e.g. Transaction ME21N was the enjoySAP equivalent of ME21, ME29N was the enjoySAP equivalent of ME29, etc.   You can see an example of ME29N in the screenshot below.



A recent customer experience showed that trying to launch SAP GUI transaction ME29N directly from the Semantic Object based List of Links in SAP Fiori app Monitor Purchase Order Items (App id F2358) didn’t meet expectations, even though:

Essentially when you try to launch the transaction ME29N from a tile or via a link from another app such as Monitor Purchase Order Items, you will find that the Purchase Order number is not passed to the enjoySAP transaction in the same way as it is to other SAP GUI transactions.  Parameter passing just doesn’t work in quite the same way for enjoySAP transactions as it does for most other SAP GUI transactions.

You will see how to overcome this using SAP Fiori app Monitor Purchase Order Items (App id F2358) as an example. You can follow the steps below:

  1. Finding the list of links dialog you want to extend with your new link

  2. Add your app as a new link in the List of Links dialog

  3. Test your new link appears in the List of Links dialog

  4. Adjust the parameters used by your link

  5. Retest your link and parameters in the List of Links dialog


Adjusting the parameters will involve using a wrapper transaction. You will see what a wrapper transaction is and does in step 4 - Adjust the parameters. You will find a list of provided wrapper Transactions for enjoySAP Transactions at the end of this blog.

TIP: You can try this it out for yourself using a SAP S/4HANA Trial instance on https://cal.sap.com . The demo user S4H_PUR_DEM is assigned the Monitor Purchase Order Items app.

Find the List of Links dialog


Start by identifying the app that contains the List of Links dialog and making sure it is working.  In this blog we assume you have already activated the app.

SAP Fiori app Monitor Purchase Order Items (App id F2358) is part of;

  • Business Roles: Purchaser, Transportation Manager, Settlement Clerk (Freight Management)

  • Business Catalog: Purchasing – Purchase Order Processing
    SAP_PRC_BC_PURCHASER_PO




When you are in the SAP Fiori app Monitor Purchase Order Items (App id F2358), you can see a list of Purchase Orders you are monitoring. Every purchase order in the Purchase Order column is displayed as a hyperlink. When you select the hyperlink on a Purchase Order you are shown a List of Links dialog. From the list of links dialog you can then use any link to navigate to other apps related to Purchase Orders.



Click on More Links and you can see all the apps available.



You can navigate to any of the apps by clicking on the hyperlink.  You can even adjust which links are shown by default.

Just deselect the ones you don’t want and press Ok.



Then only the links you want are shown by default. The system will remember what you have selected for next time.



Technically these links are derived as follows:

  • In the Monitor Purchase Order Items app, the Purchase Order column is marked with the special annotation SemanticObject which is assigned to the semantic object id PurchaseOrder.

  • At runtime the Fiori launchpad identifies all the Target Mappings in tile catalogs assigned to you that contain the Semantic Object PurchaseOrder.

  • The end result is you see all the apps related to Purchase Orders assigned to you, i.e. that you are authorized to use


IMPORTANT: This derivation works regardless of the technology type of the app, so the List of Links might contain a mix of links to SAP Fiori apps, Web Dynpro ABAP apps, and SAP GUI transactions.

Find out more about Semantic Objects in the About Navigation section of the SAP Fiori Launchpad Guide on the SAP Help Portal.

Normally when you click on a link the purchase order number is passed correctly. E.g. if we navigate to SAP Fiori app Manage Purchase Orders (F0842A) you should see the SAP Fiori app Manage Purchase Orders has already filtered on and drilled down to the detail of the purchase order you selected.



This works even if we are linking to a classic app such as Purchasing Documents per Supplier (SAP GUI transaction ME2L), Purchasing Documents per Account Assignment (SAP GUI transaction ME2K ) or Print Purchase Orders (SAP GUI transaction ME9F).  You can see what this looks like for transaction ME2L.



TIP: Remember that the standard SAP GUI approach to navigation is to pass the parameters and skip the first screen. This means:

  • Even if you pass a parameter to the transaction, after it has skipped the first screen it may subsequently clear the selection parameters.

  • That's why if there are no documents to print for the Purchase Order and you launch transaction ME9F, you will only see the message “No suitable purchasing documents found”.

  • A good tip here is to compare how the transaction behaves when running the transaction directly in SAP GUI for Windows or SAP GUI for Java, i.e. without using the Fiori launchpad and without the Fiori Visual Theme.


Now watch what happens when you add enjoySAP transaction ME29N to the list of links. Keep reading!

Add a new link in the List of Links dialog 


You follow the same process regardless of whether you are adding a SAP Fiori app, a custom Fiori app, or a classic app such as a SAP GUI Transaction or Web Dynpro ABAP application.

You can add GUI Transaction Release Purchase Order (transaction code ME29N) to the List of Links in Monitor Purchase Order Items by following these steps:

  1. In the Launchpad Designer, you create a custom tile catalog.

  2. You create a reference from the relevant Tile for ME29N in tile catalog SAP_TC_PRC_BE_APPS to your custom catalog

  3. You create a reference for the Target Mapping related to ME29N to your custom catalog.

  4. Assign your custom catalog to a security role, and make sure the security role is assigned to the user.


Before you start you find the tile catalog you need in the SAP Fiori apps reference library.  Just use the filter All apps for SAP S/4HANA, search for your GUI transaction by name or transaction code.  Once you have found it, the tile catalog will be listed in the Implementation Information tab, in the Configuration section. Take a look at the configuration details in the screenshot below for transaction ME29N in the Fiori Apps reference library



Notice particularly the Semantic Object and Action - those 2 fields map the Tile to the Target Mapping and can be used to help you find the matching details in the Launchpad Designer.

Now you can start.

1. Creating a custom Tile Catalog


In the Launchpad Designer, press the Add Catalog icon in the footer.

TIP: You access the Launchpad Designer using your content administration user and the link https://<yourhost>:<yourport>/sap/bc/ui5_ui5/sap/arsrvc_upb_admn/main.html?scope=CUST

Find out more about setting up content with the Launchpad Designer in the SAP Fiori Launchpad Guide in the SAP Help Port....



Give your catalog an id and title.


2. Creating a Reference to an existing Tile definition


You create a reference from the relevant Tile for ME29N in tile catalog SAP_TC_PRC_BE_APPS using the Create Reference option.

Select the catalog and find the tile definition you want to copy. You know it's something to do with Purchase Order so you can use the search field to narrow down the list.  Once you have found it select the tile definition,  then press Create Reference.



Add the reference to your custom catalog.


3. Create a Reference for the matching Target Mapping 


Creating a reference for a target mapping is much the same as creating a reference for a tile. That is:

  • Go to the Target Mappings tab of the same Technical Catalog.

  • Find the target mapping for Semantic Object = PurchaseOrder and Action releaseSingle.

  • Use the Create reference option to add the reference to your custom catalog, just as you did for the tile.




IMPORTANT: Notice the Configure option in the footer - you can use that to check and/or adjust the details of the target mapping.

4. Assign your custom catalog to your user


Then add your custom catalog to a security role assigned to your test user as explained in How to Create and Generate Backend Security Authorizations for SAP Fiori 2.0.

You can see a simple example of what your security role might look like below.


Test your link appears in the List of Links dialog 


Once your test user has been assigned to the custom catalog you can reopen your Fiori Launchpad and retest.

You will now see in the Monitor Purchase Order Items when you select the link on the Purchase Order column that your link Release Purchase Order has been added to the list of links.



What you expect is that when you click on the link transaction ME29N is launched and the Purchase Order number should be passed. When you test you will find transaction ME29N is launched. However the Purchase Order is NOT passed!



What went wrong? Keep reading!

Adjust the Parameters used by your link


If we check the Target Mapping there is no parameter provided to define what should be passed to transaction ME29N.  No problem – we can add that into our target mapping in our custom catalog.  By comparing our target mapping for ME29N to the target mappings for other apps used in the same list of links in the same technical catalog we work out that the source parameter passed by the link in Monitor Purchase Order Items is called PurchaseOrder.  So far so good.

What we want to do is add a parameter map the source parameter PurchaseOrder to set the target selected Purchase Order field in transaction ME29N. Now in most transactions this is easy, because selection fields are usually on the initial screen of the transaction.  So all you need to know is the technical name of the selection field and assign that to your parameters in the target mapping.

However not so fast with an enjoySAP transaction. Look at transaction ME29N.  In an enjoySAP transaction you can’t add the Purchase Order on the initial screen.

With an enjoy transaction you need to:

  • Select the Other Document button in the main window

  • Enter the new Purchase Order number in the dialog window

  • Select the Other Document button in the dialog window




You can use the SAP GUI technical help (F1) on the Purchase Order field to check that the screen field name is MEPO_SELECT-EBELN



So in theory just using the Configure option to add the target parameter value MEPO_SELECT-EBELN to your Target Mapping should work.



TIP: You can just confirm that you are ok with breaking the reference.  That simply means that if the original target mapping you referenced is changed in the future, you will not longer pick up those changes automatically.

Now refresh clear the user's web browser cache, login and test again. There is no change!

Why doesn’t it work?

Well unlike most SAP GUI transactions, with an enjoySAP transaction such as ME29N, because the selection parameter is not on the initial screen, the standard SAP GUI approach of passing a parameter and then skipping the initial screen doesn’t work. You need to do something different.

You will get a clue on what to do from looking at the delivered target mapping for Display Purchase Order (Semantic Object PurchaseOrder, Action display) , which you would expect to be calling transaction ME21N. But it doesn’t. It calls transaction MMPURPAMEPO.



What you can see is that for each of these enjoySAP transactions there is typically a wrapper transaction (see the list at the end of this blog) that makes up for this difficulty when calling the transaction from elsewhere.

For ME29N the wrapper transaction is MMPURUICALLME29N which has a parameter P_EBELN and looks like this:



Ok so instead of calling ME29N directly you want a target mapping that calls MMPURUICALLME29N instead.

So that there is no confusion between the original referenced version and your own, make sure you:

  • Use a different Action for the same Semantic Object - in the example you can see the action is called releaseSingleAdvanced

    • Note: Actions are freely definable



  • Change the title of the target mapping so you can tell whether you are calling the original referenced version or your revised version – in the example you can see the title is Release Purchase Order Individually




NOTE: If you wish you can also create a custom tile to match your target mapping.  It’s not essential in this scenario, just good practice if you want your users to be able to add a tile to their home page to go directly to the SAP GUI transaction.  Of course if they go directly to ME29N from the home page there will be no Purchase Order value passed.

Once you are happy that it is working, you can always remove the original referenced version from your catalog and adjust the texts and actions to their final values.

Adjust the security role assigned to the user.  Make sure:

  • The custom catalog is assigned and updated

  • The user is authorized to use both transaction ME29N and the wrapper transaction MMPURUICALLME29N

  • If you need to run the User Comparison to make sure the user’s details are up to date.

  • Clear the web browser cache and login again as your test user.


Retest your link & parameters via the List of Links dialog 


Now when you go into Monitor Purchase Order Items and select the Purchase Order you will see your new target mapping listed as the link Release Purchase Order Individually.



Select your new link Release Purchase Order Individually.  Transaction ME29N is launched passing the Purchase Order number.



Success!

List of Wrapper Transactions for enjoySAP Transactions


There are a number of similar wrapper transactions delivered for enjoySAP equivalents listed below.  Which one you call depends on your target transaction and what you need to pass to it.













































































































EnjoySAP Transaction Wrapper Transaction Parameters (technical names)
MD03 MMPURUICALLMD03 P_WERKS, P_MATNR, P_NOSKIP, P_ANZDL
ME21N MMPURPAME21N P_EBELN
ME21N MMPURUIME21N None (looks for all requisitions ready to be converted to Purchase Orders)
ME21N MMPURUIPRCREQ P_BANFN, P_BNFPO
ME28 MMPURUICALLME28 P_ID, P_APPID
ME29N MMPURUICALLME29N P_EBELN
ME49 MMPURUICALLME49 P_EKORG, P_SUBMI, P_ID, P_APPID
ME54N MMPURUICALLME54N P_BANFN
ME55 MMPURUICALLME55 P_ID, P_APPID
MEPO MMPURPAMEPO P_EBELN, P_EBELP, P_EDIT, P_TAB
ME53N MMPURPAMEREQ P_BANFN, P_BNFPO, P_EDIT
MIGO MMPURPAMIGO P_MBLNR, P_MJAHR, P_ZEILE
MIRO MMPURPAMIRO (Goods) P_BELNR, P_GJAHR
MIRO MMSRVSESINV (Services) P_LBLNI, P_USER
MIRO POSTIVDOC P_EBELN, P_EBELP, P_USER
ML81N MMPURUIML81N P_LBLNI, P_DISPL, P_EBELN
ML81N MMSRVENTRY P_LBLNI, P_USER
ML81N MMSRVSES P_EBELN, P_EBELP, P_EDIT
MRBR RELINVDOC P_BUKRS, P_BELNR, P_GJAHR
MR8M CANINVDOC P_BELNR, P_GJAHR


 

Becoming a SAP Fiori for SAP S/4HANA guru


You’ll find much more on our SAP Fiori for SAP S/4HANA wiki

 Brought to you by the S/4HANA RIG

 
22 Comments
nabheetscn
Active Contributor
Very nice, Thanks jocelyn.dart for the great tip.
Gustavo_Vazquez
Active Contributor
Great blog !!!
Very helpful. Thank you

 

 
SyambabuAllu
Contributor
Good information.

Thank you,

Syam

 
Private_Member_5521
Participant
wow, thank you! someone in my organization will be very happy with this feature.
Florian
Active Contributor
0 Kudos
Hi jocelyn.dart ,

nice read and really great to calm down after work;-)

*needtologinandtryitdirectly*

in other words if I create a wrapper-program I should also be able to include custom-made transactions here?

~Florian

 
vicky_khambhati5
Explorer
This was the same issue back in ABAP days when we used CALL TRANSACTION 'XXXX' SKIP FIRST SCREEN.

This is really useful information.
Jocelyn_Dart
Product and Topic Expert
Product and Topic Expert
0 Kudos
Yes - it's the same deal.  Transactions have limited options for passing values in from a different source so sometimes a wrapper is the easiest workaround.

Do consider though whether you are better off just using a target mapping direct to your custom transaction - that's a lot easier to change if the business process or use case changes later. Very few people wrote their own enjoySAP transactions.
Jocelyn_Dart
Product and Topic Expert
Product and Topic Expert
0 Kudos
Not really - If you have a CALL TRANSACTION XXXX and SKIP FIRST SCREEN. then that's the standard approach where you can pass in any parameters provided they are named fields of the first screen.

The specific problem with enjoySAP transactions is that the parameters are NOT on the first screen.  Hence the need for a wrapper.

Hope that clarifes..
chris_scott
Active Participant
0 Kudos
Hi Jocelyn

Thanks - it's a great blog, and really relevant for some requirements I have right now.

However, all the apps I'm being asked to look at don't support the list of links control.  (Eg Display Inspection Operation, Monitor Material Coverage)

Is there a way to find a list of all the apps that do support list of links navigation?

Do you recommend enhancing the delivered apps to add in list of links support?

Many thanks

Chris

 
Phani_Kumar
Participant
0 Kudos

Hello jocelyn.dart ,

Thanks for educating.

I would like to know is it possible to change the logo of Purchase Order (8th screenshot in your blog). Here logo for PO is some person holding a cart. I would like to change it . When I check the same ,image is captured as MEME in Fiori Application. When I try to extend the application – MM_PO_MANAGES1 , I have received error Extending smart applications is currently not possible. I am using 1709 S/4 system

 

I have replaced the image from MIME Repository.. Is this the correct option? or is there any other way ?

What happens if we moved to higher levels of S/4. Will these get overwritten by standard images again?

 

Please guide

 

Please suggest

Jocelyn_Dart
Product and Topic Expert
Product and Topic Expert
0 Kudos
Hi Chris,

I'm not aware of any way to find where list of links is being used, other than by inspection.  Generally newer apps use this approach as standard. Older apps may not. However often older apps have more limited opportunities for extension. So to me it would be a case of assessing how important this is to the use case at the customer, rather than a general rule of thumb to extend delivered apps.

Certainly it's worth asking for an enhancement in such cases.

Rgds

Jocelyn
Jocelyn_Dart
Product and Topic Expert
Product and Topic Expert
0 Kudos
Hi Pawan, Your question is not a comment relevant to this blog's topic.  Please ask your question in answers.sap.com where others may be able to assist you with resolving your issue. Your current approach seems dubious - I would expect it to be overridden - and needs more thought.

I can tell you that Fiori elements i.e. Smart Template applications can be extended as of SAPUI5 1.60 using an "Adaptation Project". For S/4HANA this will be available from S/4HANA 1809 FPS01. However you can try this out in the SAP Cloud Platform Web IDE sandpit.

Refer to Teched 2018 Replay session CGE205 What's new with Fiori Elements

Rgds

Jocelyn
richardparisg_80
Explorer
0 Kudos
Good afternoon Joselyn.

Regards.
I have a doubt

If I have the TX ME21N a new tag or dynpro with Z fields on an ECC system and I want to migrate to an S / 4 hana. When I activate the new features in Fiori to see the TX ME21N in Hana, will I see the new dynpro Z or client fields?
Or you would have to do something extra to see the new customer expansion fields in Fiori.

Thank you.
Jocelyn_Dart
Product and Topic Expert
Product and Topic Expert
0 Kudos
Hi Richard,

Ok so that depends on how you move to SAP S/4HANA.

If you do a new implementation ("greenfield") or selective data transition ("bluefield") then you need to reapply any extensions to your GUI transactions because you are moving to a standard solution - usually with a return-to-standard (as much as possible) approach. 

If you do a system conversion ("brownfield") then your current extensions remain in place. They may need to be reworked a little - e.g. where the custom code migration guide picks up any incompatible code changes.

Assuming you are doing a system conversion, then your ME21N transaction extensions are still there and should shown in GUI for HTML when launched from Fiori launchpad.

However if you have a custom Z transaction or a custom ABAP Web Dynpro application, or your ME21N extensions add a custom tab to the existing ME21N transaction, then you may need to fine-tune the display for the Fiori Visual Theme using the Mass Maintenance tool transaction MM_APP
All the best

Jocelyn
former_member5334
Participant
0 Kudos
Hi, Jocelyn.

Thanks for your blog, very usefull information.

But a have one question. I need to call MM03 transaction from my Fiori app. I created target mapping, semantic object, action, but i have a problem with parameters for MM03.

First parameter is ( MAT  ----  RMMG1-MATNR ) for material number. But when MM03 starts , dialog with view selection opens and i can't understand how to set second parameter for automatic view selection.

Maybe in s/4 is exist some wrapper transaction for MM03?
Louis-Arnaud
Participant
Hello jocelyn.dart ,

Is there a way to do the opposite ? Call a Fiori app from a SAPGUI transaction ?

 

We are moving on S/4 Hana and already have SAPGUI transaction codes that we want to keep. We will launch them from Fiori Launchpad (webgui). Then we would like to call a new custom app (Fiori) from this transaction. Is it possible ?

 

Thank you,

 

Louis-Arnaud
Louis-Arnaud
Participant
tarekamr92
Member
Thank you jocelyn.dart for such organized and very helpful blog
0 Kudos
Hi Jocelyn Dart,

I am having a problem. I tried to call an enjoy transaction(MMPURPAMEPO) for 'display purchase order' from 'Monitor purchase order items' fiori app's purchase order column. As this can be done by adding intent 'purchaseOrder-display'.  I tried by adding target mapping  referencing it from standard catalog 'SAP_PRC_BC_PURCHASER_PO'(refer attachment - reference).


But the purchase order quick link didn't show the 'display purchase order' app to navigate. Then i deleted uitype=advanced from target mapping (refer attachement - TargetMapping).


this time its showing 'display purchase order' at the quick link , Can you tell me what could be the problem

 

Thanks in advance

Rakesh Baggam
mathieu_l1
Participant
0 Kudos

Hi,

I've referenced the target mapping for transaction MMPURPAMEPO in a custom catalog, assigned the role containing the catalog to my user, but the link doesn't appear in the Navigation links from a Purchase order.

I wonder if I've missed some prerequisites for those links to appear ?

I've cleared the global cache but it didn't help.

Thanks.

tofo91
Newcomer
0 Kudos
Hello jocelyn.dart

the blog is very instructive. We use the wrapper transaction for the Tcode ME53N. It works. Only limitation is navigating back to the App ID F1048 Process Purchase Requisitions. As soon as we want to jump back we end up in the launchpad on the home page and not in the App F1048. What can be the problem here?

 

Kind regards

 

Tobias