In Working with ABAP, I revised the circumstances outcroping when working with ABAP. Some additional aspects should be listed here, the first two being relevant in general and not dependent on ABAP. The latter could be interesting for Java as well as Java will make its way into SAP-world sooner or later.
Technical documentation should be self-evident. The huger the system the more one takes it as granted to find adequate technical documentation. How can several technical problems be solved? This is far beyond the scope of finding a single function module or a corresponding table or field in a table. In a project the development staff and the people doing concepts are dependent on existing technical documentation for a system to be extended. This documentation in most cases is very important because the system to be extended most probably has some special mechanisms one has to cope with.
My impression is that the technical documentation for WebAS/Java is a bit more helpful than that for ABAP, but that’s just a personal opinion without having evidence for that.
The same aspects as above hold true for the business side, where business concepts need to be developed as a template and a term of reference for the development. No documentation there indicating business models transcending the business concepts already obvious to experts in a certain matter. I am talking of documentation geared to the particularities of a SAP system serving a special business purpose.
We need documentation that lies inbetween a very top and a very narrow view. Kind of a model for business experts. Well, the availability of such documentation would not only help a customer needing to extend the system but also in gaining a higher quality in development for the vendor.
Table Controls and Step Loops
After talking about documentation, I want to change the layer to a more technical one.
Table Controls and Step Loops are used quite often. My understanding is that it is necessary for the programmer to supply a persistence mechanism manually. That means synchronizing entries from the database with newly entered ones by the user, taking deletion and modification of existent entries into account. It would help the developer if there were some exemplary documentation or implementation available on this issue (perhaps there is but I have not found). In my recent weblog entry about ABAP there has been a comment that suggests to use persistence classes. Although only available with newer releases this could be an option, not in general but perhaps for some special cases.
A table can be “modified without being modified” by using append structures. That is OK. If I remember correctly then the renaming of an append structure was an extraordinarily difficult task. It wasn’t possible thru default means. Therefor the original had to be copied, then deleted and the copy had to be adapted. Working with tables being central and involved in many processes means waiting long for each “modification” to be finished.
For that, a good preparation and modelling is helpful when modifying database elements.
ABAP is a language tailor-made for implementing business logic within the framework provided by the SAP Basis. It will come to light soon how well ABAP (or in general: the SAP legacy systems) is playing together with the “new basis” founded by the SAP WebAS. It has to be proven how well ABAP and Java integrate.
On the other hand many customers will have to rely on ABAP in the future in legacy landscapes. Therefor it is essential that the customers will be supported in their difficult task by several procedures. They can be as simple as providing adequate doucmentation. This would be simple because it does not influence current software releases. Of course it cannot be done without effort! Other tasks could affect the general working with ABAP, if only by providing certain tools, wizards (as the table control wizard) or even reports to make life easier. In case you need support with ABAP or SAP SRM, please feel free using professional services.
The customer itself can provide himself with such an infrastructure. He can bring the development staff into a position to do so (providing ideal conditions, sometimes forces, giving support). Development should be targetted to reusable software entities which are maintainable with little effort and can be understood quite easily.