In the From Functional to Technical blog of this series I had set out the context of this blog series. Now after a gap and some relative downtime fixing defects after a major Go-live its time to reflect and put my thoughts in another blog.
This blog is not going to be about cracking a bug but try answering the basic question. Why do enhancement and how to go about it.
SAP like any other COTS (finally not a TLA but a four letter acronymn) has developed their solutions and applications based on best practices covering most of the industries. But still many clients find white / gray spaces in SAP's porfolio of solutions and go for enhancements. There can be much debate on why and why not to do enhancements this blog will not go into that. Instead we shall see how once its decided to go for enhancement to cover a business requirement how to go about designing one. In a way see where to start from and how to keep the enhancement simple enough to maintain. Not to forget that any enhancement will need to be maintained additionally over and above standard SAP maintenance. So it makes sense to keep it simple and use standard SAP objects as much as possible. This will in a way keep the maintenance costs to a minimum as you piggyback on standard support provided by SAP.
So let's take a scenario and walk through.
At my current client (Oil & Gas Major) there is a requirement to carry out planning for future source changes. Basically the forecast will get generated at current source plant which say in next 3 months will be closed or switched to a new sourcing plant. So it is vital for the forecast to be shifted to the new sourcing plant and then carry out supply planning in advance. This will ensure sufficient stock availability to cover customer orders coming in to the new soucring location in 3 months time.
Now to break any business requirement into an SAP solution one way to look at it would be as follows:
A business requirement essentially means certain transaction data to be created and worked through in the system. To support this you need master data and different behaviors configured in SPRO - Customizing. Most often or not the transaction data will be available but to meet your particular business requirement the master data or the standard configuration does not suffice or the walkarounds available are long and complex to be actually put to use. That's the time to start looking for enhancements. Definitely not before that - much easier said than done though.
Ok so we first looked through the standard functionalities in SAP APO but could not locate anything "relevant". Relevant means nothing standard that will meet the business requirements. So what's next - go to the drawing board (aka whiteboard) and start putting together a process of doing this requirement. As you dig and ask questions to the business users and apply your functional/technical understanding of SAP one can visualise at a high level the enhancements required. With this high level design its time to go one level deeper drawing the detailed design of each of the enhancement, identifying the technical objects etc. The output of this will be the Functional Specification / Technical Specification. Then its handed over for code development and testing.
While doing prototyping as part of detailed design exercise its time for deciding the technical design. This is challenging as you need to decide and design how much standard SAP objects can be used. As a thumbrule try using BADI / User Exits as much as possible. Use standard Function Modules and BAPIs for manipulating data. This is especially important in APO where due to additional liveCache component keeping data consistent between database and liveCache is absolutely important. Another consideration would be use of custom tables to store configurable parameter values instead of hard coding in the custom enhancement.
There is no easy shortcut when designing enhancements for a complex business process but when its finally done and the end-to-end process passes testing it really gives immense satisfaction. That's what I am enjoying right now before taking on another challenge head-on very soon.