2016 - Sap 4 All

Latest

Wednesday, 28 December 2016

You can log the changes of data like append, modification or delete fields in a table.
When you create your transparent table, you can go to the technical settings screen and set the flag "Log data changes". 
SE11 -> Technical Settings -> tick the Log data changes
Remember that you must have the parameter rec/client set in the system profile. 
RZ10 - Extended Maintenance
  • rec/client = ALL (log all clients)
  • rec/client = 000(,...) (log all specified clients)
  • rec/client = OFF (do not log)
You can see the changes to the table in the transaction OY18 or SCU3.
Logging is independent of update. Obviously, it will slow down the accesses when you change the table as record have to be written into the log table for each change.

DBTABPRT - Table of log records for table changes

Saturday, 3 December 2016

How to set a custom theme as the default theme in SAP Fiori launchpad in 5 steps.



Step 1: Rebuild the custom theme

Access your theme designer in the SAP Gateway URL. The URL is:
https://<Your GW Server Host:port>/sap/bc/theming/theme-designer/
Select the custom theme and click rebuild.







Step 2: Clear Fiori Theme Cache

In your SAP Gateway system use TCODE /ui5/theme_tool. There you can see all your custom fiori themes.

Double click on the [Invalidate Cache] button. Also note the Custom Theme id, we will need it later.




Step 3: Set default theme parameter

In your SAP Gateway system use TCODE /UI2/NWBC_CFG_CUST.
There you should add the SAP_FLP parameter which will override the one provided by SAP*.

Add the following values:

Filter - SAP_FLP
Parameter Name - Theme
Value - Custom_Theme_Id (See step 2)

Save the changes



* You can see the standard SAP Fiori Parameters using TCODE  /UI2/NWBC_CFG_SAP

Step 4: Clear the SAP Fiori Cache

Follow this guide to clear the SAP Fiori Cache


Step 5: Check the Custom Fiori Theme from external network (Optional)

It is a very common scenario the access of  Fiori apps from public internet using a Reverse Proxy Server, usually the SAP Web Dispatcher. In that case the host which your users are accessing is  different from the one that you used when accessing the theme designer toolkit.

Strangely the SAP Fiori launchpad does not use a relative to host URL for accessing the custom theme, but instead it uses a hard-coded one provided by the customization configuration resource.

You can check your Fiori Launchpad configuration resources in the following URL:

https://<Your external host>/sap/bc/ui2/start_up?shellType=FLP&depth=0

This will return a JSON response. There you will see the following fields between others:

"system": "GW_SYSTEM",
"theme": "custom_theme_id@https://<internal_GW_host>:<internal_GW_port>/sap/public/bc/themes/~client-100/~cache-9dCxur06U0MptvEF2o32-aPCRKQ",
  "timeFormat": "0",
  "timeZone": "CET",
  "welcomeMessage": "",
  "themeRoot": "/sap/public/bc/themes/~client-100/~cache-9dCxur06U0MptvEF2o32-aPCRKQ",

In the above case, theme value is using the internal SAP Gateway Host. As a result of this the SAP Fiori launchpad will crash when the custom theme is used and it is accessed using an external host....

The solution to this is to implement the following SAP Notes:

  • SAP Note #2041742 - UI Theme Designer for ABAP: Correct host
    This will be applied to SAP Web Dispatcher and it will correct the host issue.
  • SAP Note #2230117 - Theme is not loaded in SAP Fiori launchpad
    You should also apply note this to your SAP Gateway if the port of the SAP Web Dispatcher is different from the SAP Gateway port e.g WD Port 443 - GW Port 1443


After the implementation of the those SAP Notes you should:
  1. Rebuild the theme (See STEP 1).
  2. Clear  the cache (See STEP 4)
Finally the response from the Resources URL will be like:

"system": "GW_SYSTEM",
  "theme": "custom_theme_id"
  "timeFormat": "0",
  "timeZone": "CET",
  "welcomeMessage": "",
  "themeRoot": "/sap/public/bc/themes/~client-100/~cache-9dCxur06U0MptvEF2o32-aPCRKQ",

Theme value now is not providing a URL Parameter, so it is relative to host.

Saturday, 26 November 2016

Urgently Required for one of the biggest contracting companies in KSA  
SAP ABAP UI5 Developer  
Software Developer Role Diverse: SAP UI5, Fiori, HTML5, CSS, Java Script, JQuery.  
Developing the application in most current technologies.  
Follow the standards and coding guidelines.

Qualification:  


Experience: 5-8 years.  
Bachelor’s/Master’s Degree holders, preferably in Computer Science or an IT related discipline.  
SAP Solution Manager 2-3 Full end to end projects implementations, including support.  
SAP certified.



Interested candidates can send their CVs mentioning the job title in the mail subject to: engineer@climaxmr.com

Wednesday, 23 November 2016

Urgent hiring for Indian Nationals having good Skills in Implementation of SAP for below modules:

1. SAP - CRM 
2. SAP - ABAP 
3. SAP BASIS 
4. BI
5. FICO 
6. MDM
7. PI
8. PMO
9. REFX 
10 SOLMAN
Job Location - Saudi Arabia. 
Salary - Best in the Industry 
Minimum - 04-06 Years experience required in implementation of relative Modules

Interested candidates please inbox me their updated resume at - deepak@khanconsultants.in

Wednesday, 16 November 2016

We are having following requirements with our organisation. Kindly send your resume to navpreet@shivansh.co.in for review in case you are interested.

Module    SAP Experience No. of Positions
SD          5+ years       2
ABAP      3-5 years       6
ABAP (BOPF) 3-5 years       2
ABAP (BOPF) 8+ years       2
SD          3-5 years       2
SD          5+ years       2
MM          3-5 years       2

PP          3-5 years       2
Basis      3-5 years       4
BW          3-5 years       2
SAP PO (Process 
Orchestration) 3-5 years       2

FI          5+ years       2

Sunday, 13 November 2016

Hi All, 
we have weekend drive in Volvo IT for SAP ABAP from 4 to 8 years of exp in B'lore location, 
people who are strong in Core ABAP with good exposure to Ale/Idoc interface, 
can share your cv to me so that I can refer to HR. 


Email id : sandeep.rao@volvo.com

Monday, 31 October 2016

Introduction
More than one user has access to the same entity and hence the same data in SAP Fiori applications. So how to prevent parallel edit access for users so as to prevent the data from being overwritten in flight.
There are three ways to lock records to manage the concurrency.
    1. Pessimistic

        In this scenario the application assumes that concurrent writes will occur and hence protects it by aggressively locking out resources. This can lead to deadlocks and also have some performance reduction as applications using the resource will have to wait in queue to apply its changes.
    2. Optimistic
        In this scenario the application assumes that the likelihood of a concurrent write is rare and so allows the operation to continue.
    3. Semi-optimistic
        This is a combination of pessimistic and optimistic concurrency controls. This kind of solution is used for very specific scenarios.
For Data Concurrency OData recommends implementing Entity tags or ETAG’s. Since OData uses HTTP protocols and is stateless, it can use only optimistic concurrency control of data and only that is discussed in detail further in this paper.
Implementing ETags in SAP Gateway
SAP Gateway allows three ways to implement ETags.
1. A field based ETag (typically a timestamp)
When an entity is typically a subset of a database table and the database has a field that  maintains a timestamp to signify a change whenever the record changes, then that field could be included in the entity and can be used as the E-Tag.
In transaction SAP Gateway Service Builder (SEGW), at the Entity Types, you select a field as your ETag property. Save and re-generate the Service.
2. A full entity based ETag (typically a timestamp)

    The shortcoming of the above method is that, there are scenarios where only a few fields from a database is exposed in an entity model. But changes to the DB table in the backend can occur through various sources including background programming, manual changes through backend transactions etc. These backend changes might not have changed the Entity fields at all, but still that will be considered as a change.
    In such a scenario the full entity based ETag could be implemented.
    Include a Field ETAG with data element HASH160 into the entity. And use that field as the ETag property for the entity.
    Once all data for the entity is fetched the hash value calculation happens.
    
3. Partial entity based ETag
Whatever ETag method that we implement will apply for all operations except Create. There are scenarios where the get_entityset implementation and get_entity implementation of the same Entity might not have same ETag values. This is due to that fact that there are certain information in an Entity which will be costly to fetch during a get_entityset operation. In such a scenario the partial entity based ETag could be implemented.
    The implementation of partial entity based ETag is very similar to the full entity based Etag. The only change is the calculation of hash value.
    Here instead of passing the complete entity, you remove the values for fields that you do not want to be part of the hash value calculation and then call the calculate hash.
For eg:-

Using ETags in Fiori

Classic Scenario with Etags
During the get entity if a valid etag is provided and the entity has not changed then the server responds with return code 304 (Resource not modified). If the entity has changed then the new set of data is returned with return code 200.
If-None-Match: W/”‘DBF5DD4DE0073002917521B7057C0826FC5A7F8E'”
if you do not want to check against an existing e-tag, but get the data anyway you can use ‘*’ to get the data.
If-None-Match: *
Update/Merge/Delete Entity uses the http header variable If-Match
If a valid e-tag is provided, the OData infrastructure checks for the hash value by calling the get_entity and verifies the passed e-tag value. If it is successful the update/merge/delete operation proceeds without any issues. If the e-tag does not match then the server returns status code 412 (Precondition failed.).

Note 1:
    As a developer if you want to any how update the data from client (while using the SAP Gateway Client for testing purpose) then you can pass the If-Match value as a ‘*’, which means the client will win and will update the data irrespective.
Note 2:
     During the Update/Merge/Delete options in case of a ETag get_entity call is made in the backend before the update call to verify the ETag value.


References

Monday, 12 September 2016

All the object related to one development should be saved in one request, Eg. A development is having program, table, fields, view, structure etc… All these objects are the part of one development so they have to be in one request. If by mistake you have saved one object in different request then you have the option of merging that separated objects task into the main request through SE09.. Another option is to create a TOC and include both the tasks into that TOC.. But one should have a good practice of keeping the related objects of one development into one request..  TOC should not be used for merging the request for avoiding such mistakes.


The beauty with Transport of Copy is, it dies in the next target system. Let's say I have three system landscape for my ECC system: DA1 -> QA1 -> PA1. If you create a workbench request in DA1 system and release it, it goes to import buffer of QA1. Once imported in QA1, transport is now available in the import buffer of PA1 for import in PA1. But, if you create a Transport of Copy for the same transport in DA1 and release it, it will be in import queue of QA1. However, when you import this transport to QA1 it does not go to the import buffer of PA1. 

Friday, 2 September 2016

A step by step guide to clear SAP Fiori Cache.



First a quick introduction to SAP Fiori Caching...

Why does SAP Fiori use caching techniques?
The SAP Fiori is used in consumer devices (Laptops/Tablets/Smartphones) where the UI/UX standards are very high.  It has a modern User Interface build on SAPUI5, and for performance SAP Fiori is using heavily caching techniques, in order to be as fast as possible to end users.



Keep in mind that in most cases SAP Fiori is installed on premise, using company's network infrastructure which many times suffers from network latencies, especially in complex and distributed landscapes.

In order to overcome these problems SAP Fiori has the following Cache Layers:

  • SAP Backend System Cache - Usually OData Services related cache
  • SAP Netweaver Gateway Cache - OData Services, Bsp App and Fiori Configuration Caches
  • SAP Web Dispatcher Cache - HTML,CSS and JS Code cache
  • SAP Fiori Client/ Web browser Cache - Cache of the end user's device


When should I clear SAP Fiori Cache?
Usually SAP Fiori cache should be cleared when a change has been made in its configuration, in OData Service, in a Fiori BSP App, in a Theme or when you are applying patches/notes. Also when you are facing strange issues with SAP Fiori, a good point to start the troubleshooting  is by clearing the SAP Fiori Cache.

Steps to clear the SAP Fiori Cache...

Step 1. Clear backend Cache
Execute TCODE /IWBEP/CACHE_CLEANUP for each of your backend systems (SAP ERP,CRM etc)
Select check box "Cleanup Cache in all models"



Step 2. Clear SAP Gateway Cache

2.1 Rebuild the custom theme  and clear the theme cache if something related to the theme has changed or the system has been patched:
  • Rebuild theme using by accessing your theme designer in the SAP Gateway URL. The URL is:
    https://<Your GW Server Host:Port>/sap/bc/theming/theme-designer/
    Select the custom theme and click rebuild.




  • Clear the Fiori Theme Cache by executing in your SAP Gateway system TCODE /ui5/theme_tool. Double click on the [Invalidate Cache] button.  



2.2 Execute TCODE /IWBEP/CACHE_CLEANUP  in the SAP Gateway

Select check box "Cleanup Cache in all models"

2.3 Execute TCODE /IWFND/CACHE_CLEANUP in the SAP Gateway

2.4 Execute TCODE SE38 in the SAP Gateway and run the following reports:

  • /UI2/INVALIDATE_GLOBAL_CACHES - Select Execution mode 
  • /UI2/CHIP_SYNCHRONIZE_CACHE
  • /UI2/DELETE_CACHE_AFTER_IMP
  • /UI2/INVALIDATE_CLIENT_CACHES - Select For All users
  • /UI5/UPDATE_CACHEBUSTER
2.5 Execute TCODE  SMICM.  On the Menu select Goto - HTTP Plug-in - Server Cache -Invalidate Globally


Step 3. Clear the Reverse Proxy Cache (if exists)
You should clear you Reverse Proxy Cache. Usually this is an SAP Web Dispatcher but other products could be used as well.

Step 4. Clear the Client Caches
If SAPUI5 Cachebuster has been set up correctly then no further action is needed. In other cases you should clear manually the web browser cache or the fiori client app cache.


References:
http://scn.sap.com/docs/DOC-64731