This blog intends to raise awareness about consequences to custom functionality when upgrading from SAP PLM 7.02 (EHP6) to SAP PLM 7.4.7 (EHP7). In addition to explaining the consequences, a solution is given to minimize the impact caused by the upgrade.
I doubt no SAP customers are live with a out-of-the-box standard SAP PLM solution. Most SAP customers have the need to customize, enhance, modify, etc. the standard solution. If you are one of those SAP customers or an implementation partner for one, read on.
Upgrading from EHP6 to EHP7 changes core APIs used by the PLM Web UI. The most disruptive changes are contained in SAP notes 1861056 and 1980389. The SAP notes change the implementation of methods GET_HEADER and CHANGE_HEADER of the class /PLMI/CL_DIR_BO. The class /PLMI/CL_DIR_BO, as you may already know, is a central class in PLM Web UI. The class serves as a layer between PLM Web UI and SAP DMS. The disruptive change is that the methods GET_HEADER and CHANGE_HEADER no longer work correctly if used outside of the PLM Web UI context, be it from SAP GUI, RFC or background job.
The disruptive code in method GET_HEADER
lv_activity = ’02’.
lv_activity = ’03’.
WHEN ‘I’. ” SAP Note 1962595
lv_activity = ’01’. ” SAP Note 1962595
Similarly, the disruptive code in method CHANGE_HEADER
IF ( /plmu/cl_frw_appl_cntrl=>gv_mode = /plmu/if_frw_constants=>gc_mode-change ) AND ( /plmi/cl_dir_bo=>MV_NOT_SAVED is INITIAL ).
lv_tcode = ‘CV02’.
The problem is that the static attribute /PLMU/CL_FRW_APPL_CNTRL=>GV_MODE has a value of ‘ ‘ outside the PLM Web UI context, any code depending on the correct mode of operation (Display, Change or Insert) will work incorrectly.
Solution by SAP
I reported the problem to SAP support and it was escalated properly. The official answer from SAP is that the PLM APIs are not released for customer use and customers are responsible for making required changes to their own code. Based on the answer I was provided, SAP doesn’t even consider the issue severe enough to warrant a SAP KBA.
Solution by Yours Truly
If you have implemented any custom functionality, enhanced or modified existing functionality that uses the /PLMI/CL_DIR_BO class, chances are your changes won’t work after the EHP7 upgrade (or whenever the SAP notes mentioned previously are installed in the system).
Regardless whether you are planning an upgrade or not, you should make sure that your custom functionality isn’t using the GET_HEADER or CHANGE_HEADER methods of class /PLMI/CL_DIR_BO, assuming the custom functionality is used from SAP GUI, RFC or background jobs. You should start changing your code to use DMS function modules instead of using the PLM Web UI APIs.
I wonder how long SAP is going to stick to their “not released for customer use hence we can break it whenever we want even if customers suffer“ mantra. It might have worked in the in the 90’s but somehow I don’t believe it will work in the future. Now that all efforts are on HANA, let’s hope they do a better job with APIs there.