Disclaimer: I am only talking about a piece of SAP software based on ABAP.
Disclaimer 2, PATRYs: HR response is slightly different from the rest of the SAP / ABAP world. I feel competent enough as a general-purpose ABAP developer, but programming on personal computers is so far from my personal beacon that I did not even try to understand what they were doing there. % - |
In my opinion, they provide a number of industry solutions.
They do - but be careful when comparing your own programs with these solutions. For example, IS-H (SAP for Healthcare) began as an extension of the SD (Sales and Distribution) system, but has since become much larger. Although you can technically use all the methods that they use for your IP, you really should ask a competent technical consultant before you do this - there are so many holes that should be avoided.
The concept seems very interesting, and I'm working on something similar for the banking industry.
Note that SAP for banking already exists. See http://help.sap.com/content/documentation/industry/index.htm for documentation.
The biggest problem we face is how to adapt our products to different customers.
I would rather rephrase it as "The biggest problem is to know where the product is likely to be adapted and to prepare the product structurally for adaptation." Adaptation methods are well studied and easily used when you know where the client can deviate from the idea of ββan ideal solution.
How much effort does it take to adapt a product so that it meets the specific needs of customers?
This, of course, depends on the deviation of customer needs from the standard path, but it will not help you. When using an SAP-based system, you always have three options. You can try to configure the system within your limits. Setting up basically means setting up the settings (see Tables of configuration, tens of thousands of them) and adding material (program fragments, forms ...) in the places that are intended for this. Technology - see below.
Sometimes customization is not enough - you can develop things additionally. A very frequent requirement is some additional reporting tool. In the SAP system, you get the whole development environment - the same tools with which all standard applications were written. Your programs can coexist peacefully with standard programs and even use common procedures and data. Sure, you can really hurt things, but show me a real programming environment where you cannot.
The third option is to change the standard implementations. Modifications are like a really sharp double-sided kitchen knife - you could cook really cool things in half the time required by others, but you can do a lot of harm to yourself if you don't know what you are doing. Even if you are not really going to change the standard programs, it is very nice to know that you can and you have full access to the encoding.
(Note that this is only about application programs - you have no chance to configure the kernel, but, fortunately, this is rarely necessary.)
What are the mechanisms used (configuration, programming, etc.)?
Configurations mainly relate to configuration tables with more or less complex dialog applications. For the programming part, there is an extension infrastructure in the configuration - for more details see http://help.sap.com/saphelp_nw70ehp1/helpdata/en/35/f9934257a5c86ae10000000a155106/frameset.htm . This is basically a controlled version of dependency injection. As a solution developer, you must anticipate extension points, define the interface that should be implemented by the client code, and then embed the call in your code. As a project developer, you need to create an implementation that adheres to the interface and activate it. The basic runtime system takes care of gluing the two programs together; you have nothing to worry about.
How can this be compared to developing a custom solution from scratch?
IMHO it depends on which part of the solution is the same for all customers and how much it should be adapted. It is very difficult to be more specific without knowing more about what you want to do.