Custom ABAP Development Methodology
Introduction
Almost all SAP implementations require to certain degree a custom ABAP development.
Some custom development projects are very small and involve one or two ABAP programmers implementing user exits or enhancements. Some are very large and include custom development of complete, complex bolt-on subsystems by a large onsite and/or offshore development teams.
No matter whether your custom ABAP development is small, medium or large in size, it always pays off to approach it in well organized manner with potential future expansion in mind. When doing any software development, it is important to focus on source code reusability by building libraries of well defined, tested and documented components.
Developing software libraries might increase initial development time for small projects but it would pay off quickly when undertaking additional assignments that would reuse those libraries. For medium and large size projects, the development and usage of software component libraries would have a positive effect on the development timeline and better quality of the source code. The library of reusable components might be useful in any project and could start with the development of widely used components for error handling, string manipulation, file i/o and alerts to name few areas.
The road to success is not only in the development of reusable components but also in superior documentation that fully describes them, shows their signatures, examples of using them as well as provide a comprehensive search capabilities. Only then, the programmers will be fully aware of them and will appreciate and use them to the full extend rather than write similar ABAP code over and over again.
Usually, the development process starts with preparing Blueprint, Functional Specification and Technical Specification documents. Once Technical Specification for custom development is ready and approved, the ABAP programmers start writing ABAP code implementing user requirements.
The Technical Specification document describes how to implement a specific requirement described in the Functional Specification document. Usually, it is one to one relation. In real life, the process described in Technical Specification could be divided into number of separate components. Many of those components could be used when implementing objects described in more than one Functional Specification document.
Adding Component Documentation Step
The standard project documentation ends with Technical Specification document that is a basis for ABAP programming. It misses n:n relation between Technical Specification and Development Components where one Technical Specification may utilize many Development Components and one Development Component may be utilized by many Technical Specifications.
The following diagram emphasizes the importance of the Development Components in building libraries of well documented and tested reusable programming objects:
Figure 1 – Custom ABAP Development Methodology
The traditional approach with one Functional Specification document followed by one Technical Specification document and its ABAP Programming misses the reusability advantage that might streamline many projects. The above diagram adds the additional step – the Development Component Documentation – shown as Apps & Libs with Inline Documentation. Often, the Technical Specification object may be divided into one or more Development Components that form libraries of reusable ABAP components; e.g., function modules, ABAP forms, ABAP object classes and methods, ABAP macros, … etc.
The Technical Specification document is usually prepared in MS Word format and saved with other documentation in Solution Manager. The Development Component Documentation should be as close as possible to the development system. Since it would be mainly used by programmers it should be an integral part of ABAP components’ programs as Java documentation is a part of Java programs.
To make ABAP Component Documentation easy to find and benefit from it during the development process, the Java Docs concept should be used to handle it. The generation program is needed to convert inline component documentation to online documentation and presentation program is needed to display it.
The bottom layer on the preceding diagram shows components’ inline documentation in HTML format presented with help of ABAP Docs system.
The entire custom development process is shown in more detail on the following diagram:
Figure 2 – Custom Development Process with ABAP Docs
Beside standard development process flow with Functional Specification, Technical Specification and Development steps, notice splitting the Technical Specification object into Development Components, creating their documentation with ABAP Docs as well as Development and Testing of those components.
Those additional steps to the standard development process would allow for greater usability of ABAP code. Especially important step is documenting components to be developed with ABAP Docs so the functionality of the new and already available components could be available for reference online to the entire development team.
Team Lead and Programmer Roles in Component Development
The creation of the Development Component documentation should be delegated to team lead or chief architect/developer. The process consists of the following tasks:
- Defining component scope that could be useful for this and future use
- Selection of component name
- Selection of component location; e.g., ABAP include where it will be implemented
- Definition of component signature
- Writing component inline documentation including code examples
- Generation of component online documentation
The component implementation should be delegated to a programmer in the development team. The process consists of the following tasks:
- Development of component ABAP code
- Writing of component test program
- Preparing component test cases
- Performing component unit testing
- Updating component inline documentation
- Generation of component online documentation
ABAP Docs
To help architects/developers/programmers with documenting Development Components and finding information about them, the ABAP Docs system was implemented.
The ABAP Docs is a premier ABAP software documentation system intended for software developers. It is based on assumption that the documentation is the last thing that programmers want to do unless they can really benefit from it. It is why ABAP Docs, with its superior search capabilities, has developers in mind and gives them instantaneous access to software components’ online documentation, making the development process faster and easier. The software documentation created and generated with ABAP Docs provides very useful information on software components’ signatures, functional and technical description, example of their use, links to related components’ documentation as well as status information on the components’ development process. It can be also easily incorporated into MS Word based documents.
ABAP Docs is not the artificial intelligence system and it does not write documentation for you. It only helps to write it and use it providing useful documentation templates, HTML generator and documentation cockpit. You are responsible for writing documentation. The documentation will be as good as written by architects, team leads and/or programmers. Once you start using it, you will quickly appreciate its benefits and write documentation that would be very helpful for the entire development team and speedup the implementation process.
The complete free ABAP Docs source code and documentation is available through the link to the “Upgrade to ABAP Docs 2.0 …” whitepaper – the latest version of ABAP Docs that introduces its many new exciting features:
Upgrade to ABAP Docs 2.0 and Contribute to Its Development in Google™ Code Community Project
The ABAP Docs 2.0 system was also installed on the internal SAP Consultant’s E60 system; i.e., Application Server: tsphl815, System Number: 02, System Id: E60
I have long been used to JavaDoc and PHPDoc type comment blocks and am looking forward to having the same type of functionality within ABAP.
I have scanned through the documentation and I look forward to trying it out in a sandpit.
Inline documentation is much better that separate word docs as it is easier to write and easier to read.
I am looking forward to see where the community takes this. Could it spell the end of the dreaded 'No documentation available in language EN'?
Many Thanks,
Nigel
Thank you, Adam - keep up the good work!
Peter
It will make a difference in developer´s tasks.
Best regards.
- anto
nice tool!
In my eyes it makes sense to make this a community project in order to get a broader audience similar to SAPLink and the downport of the new ABAP editor.
Midterm goal could be a better integration into the ABAP editor.
What about creating a project at code.google.com?
Thanks,
Stephan
Please, find below a link to my latest SDN blog/whitepaper on ABAP Docs:
Upgrade to ABAP Docs 2.0 and Contribute to Its Development in Google™ Code Community Project
I just released greatly improved ABAP Docs 2.0 that I would like to share with you.
Best regards,
Adam
Having a component based development approach along with inline documentation would really help the development and support of the custom ABAP.
Thanks for sharing the tool.I would try the tool and look forward to implementing in my next implementation project.
Highly appreciate your contribution.
I welcome your blog spot and I agree with requirement of some Custom ABAP Development Methodology. I know realization/delivery/providing of customer development is sometimes made ineffectively with impact on increased costs and unnecessarily too much utilized project team members. From your blog spot I understand that you are focused mainly on developer’s work. In other words “everything is in ABAP code and code must be well documented”. OK..
I agree with process steps illustrated in Figure 2 (Custom Development Process) and as a most important I see Meeting with Functional Lead, Functional Consultant, Development Lead and Developer to reviewing Technical Specification in contrast to customer requirement and prepared Functional Specification. Then the Fuctional Consultant with Fuctional Lead should sign off Technical Specification. Naturally. May be a question what should be contained/described in the technical specification because Fuctional Consultant with Fuctional Lead aren’t strong in technical issues.
By the way your blog spot is oriented to promotion of ABAP Docs mainly. And you mean ABAP Docs like a tool for helpful online documentation generator based on inline comments in ABAP code. And this is what I can’t support in my professional ABAP developer’s practice (and with 6+ years of experience) because I often write technical specification via using UML schemes (in my object-oriented reality) what are used like a nice documentation after development process. That’s why I see ABAP Docs activity like back way.
And as you know most of objects of ABAP Workbench and ABAP Dictionary are invested with well-known documentation possibility. For example on Function Modules, Programs, Global Classes, Transparent tables, Transport requests,.. etc. and from general experience this documentation aren’t maintained/updated in most of cases (and by SAP developers “occasionally” as well) on real projects.
Finally it’s hardly to say how we can use your tool in WebDynpro, Persistent Classes, PDF-based Interactive Forms, Web Services (ABAP&J2EE collaboration) and other new frameworks. That’s why I don’t see ABAP Docs tool like helpful and I don’t prefer inline comment systems in modern development platform.
Best regards,
Ondrej
Thank you for your comments.
In my blog I differentiate between a technical specification document and a development component document. The technical specification describes requirements defined in functional specification from technical point of view and usually it tries to follow the business process structure so it can be understood and approved by functional consultants. However, without dividing technical specification into set well defined entities; e.g., function modules, ABAP forms, macros, etc., it is difficult to talk about reusability.
When you look closer at it you will find out that many technical specification documents describe combination of new functionality and some functionality that was already developed and described in earlier functional/technical specification documents. Often, that already developed functionality was not encapsulated in a separate component so it cannot be easily reused.
The concept of the development component is to divide the technical specification document into set of well defined programming components. When doing it, you will find out that some of those components were already defined. It would be easier to notice it, if those components are well documented and documentation is easy to access.
The ABAP Docs system allows maintenance of that documentation inline where it is easily available to the programmer for quick update if necessary.
As I understand your usage of UML for writing technical specification does not contradict the concept of the development component. You use UML to describe business process in technical document. The usage of development components; e.g., function module, class method, ABAP form, …, etc., divides it into separate entities that are well described with ABAP Docs providing information about signature, functional description, usage examples and references to similar components.
Keeping component documentation inline with the source code is not a new concept. It is used for many years in Java development and Java documentation can be generated and accessed using JavaDocs.
You are right that SAP provides tools for documenting function modules, classes, programs and other objects. As you know those tools are not used very often. One of the reasons is that they are not very convenient to use. Additionally, there is no tool that could display on one list information about; e.g., function modules, class methods, macros and ABAP forms. The ABAP Docs allows you to do this so you can have all type of objects on the same list.
At the moment ABAP Docs supports function modules, ABAP forms, macros, ABAP types. It will be extended to support global and local class methods, constants and simple types.
Of course there are limitations to ABAP Docs use. It does not support directly PDF-based interactive forms, WebDynpro, WebServices, BAdIs and some other component types. However, if appropriate, you can encapsulate programming logic of those components into function modules or subroutine pool ABAP forms. Then their functionality can be documented with ABAP Docs and reused in other places; e.g, function module called in BAdI could be reused in WebDynpo.
Best regards,
Adam
Very good contribution! thank you!
We will use it in our company...
I also like the discussion about building library of components so we could reuse them in the future.
Please, find below a link to my latest SDN blog/whitepaper on ABAP Docs:
Upgrade to ABAP Docs 2.0 and Contribute to Its Development in Google™ Code Community Project
I just released greatly improved ABAP Docs 2.0 that I would like to share with you.
Best regards,
Adam
https://sapmats-de.sap-ag.de/download/download.cgi?id=ZNFY86GNBQUGD2T30RMC3NXZDY8D27XKNHOZDWHX5S2YMZD7TH
Your blog is a good one and threw light in many area which are also vital for quality.
In our development process, the developer details the components as well as main program logic in the TS. I am not very clear on what differentiates DC from TS.
I also notice that, you suggest for splitting the TS into DCs after the TS is signed off by the FC. In this case technically the TS is distorted after sign-off. I may be confused here since I dont understand the difference between TS and DC.
It would be useful if you take a simple case and eloborate your methodology right from FS, TS, DC, inline documentation and developed object.
Regards
Suresh Radhakrishnan
Thank you for your comments.
As you know the Functional Consultant signs off on the Technical Specification. For Functional Consultant to be comfortable with signing off the Technical Specification, he/she has to be comfortable with its content. Therefore, the Technical Specification should follow the structure of Functional Specification. It should be one to one relation between FS and TS. The Technical Specification should present information like function modules to be used, database tables to retrieve data from, configuration parameters considered, …, technology used; e.g., WebDynpro, standard ABAP or SAP Controls. With information like that and a little effort to verify it, the Functional Consultant should be able to understand the Technical Specification and eventually sign off on it.
The Development Component Documentation is all about packaging the content of FS and TS into reusable, mostly custom components that Functional Consultant is usually not aware of. By dividing Technical Specification into one or more Development Components, some already developed, the development process could be better organized and benefit from code already developed and tested.
Best regards,
Adam
It was clear & descent , for Programmers it is helpfull to know the big picture of Any Impelmentation , as you told it will enjoyable work , if everyone Knows about each level of work beginning from Blue Print to Coding...
Many of Projects are not following , ebcs of running Out of time , so the work gets distracted .
finally likage will be there @ every level .
if we try to follow your Methodalogy it will great .
Girish
I am not finding the object ZABAP_DOCS_LIST in the nugget, I am sure I am missing something. It is supossed to be part of ZABAP_DOCS_LIST_REC structure. Kindly let me know what I need look into.
Thanks
Please, follow closely instructions in the Installation Manual.
How to handle ZABAP_DOCS_LIST table is described on page 36. I had a several problems with SAPlink and was not able to download that table. You have to create it manually by copying and pasting information from manual.
Some other objects are also not included in NUGG files; e.g., Development Classes/Packeage, Message Classes.
I hope that this helps.
Best regards,
Adam
Before i would like to say thanks for this blog and I was fortunate to work with you in my recent project.
But as a developer I am not comfortable with Component Development. This methodology is killing freedom of choice for a developer.
Technical architect should propose component development before the Realization phase.There should be discussion sessions between technical architect and developers.
But this is a great methodology to optimize development efforts
Best regards,
Pradeepvonti.
ZFLC is already defined as structure or table
But there is no structure/table defined with this name.
What could be done for that?
Thank you for your comment.
I have developed ABAP Docs on one system and then I used SAPlink to download it to NUGG files and upload it to another system - just to make sure that it will work. While doing this I was writing the Installation Manual. As you can see there, the process was not smooth. I had a few problems and many times I had to force activation of objects that did not compile. Once everything was activated the recompilation worked without any problem.
Please, follow closely the Installation Manual - the order of steps might matter. I am not sure whether your problem could be fixed by forced activation of code that does not compile. If not, please, try to reinstalled everything selecting SAPlink option to delete/overwrite existing code.
You might also try to create ZFLC type group before installing ZFLC nugget. I will try again to reinstall ABAP Docs on another system and verify Installation Manual.
I hope that you would be able to install it and use it.
Best regards,
Adam
Generation errors in program
-------------------------------------------------------------------------
Source code %_CZFLC Line 0
Program %_CZFLC does not exist.
I don't know what to do, because if a reimport the nugget again there will be no change.
Please, look at comment on 2008-09-04 20:41:20 Eswar Rao Boddeti. He had similar problems and found out how to go around them. It looks that the Installation Manual does not describe well how to install ABAP Docs.
Best regards,
Adam
I just want to question about the development procedure. I dont see any Functional spec sign off, do we normally do that as well in the project?
Thanks,
Lim...
a remarkable tool indeed.
And the HUGE effort to build this is well understood!
My doubt is: can such a methodology be deployed in real life projects? It takes 3 meetings per development according to your example.
I would find it very hard to convince a client pay all these manhours. Maybe in the long run it is in favour of the budget for custom developments. But this has to be proven first.
So it would be nice to have some kind of ROI study (or generic case study) for deploying such a methodology.
Best Regards
Spyros
Regards,
Worawit R.
Please, find below a link to my latest SDN blog/whitepaper on ABAP Docs:
Upgrade to ABAP Docs 2.0 and Contribute to Its Development in Google™ Code Community Project
I just released greatly improved ABAP Docs 2.0 that I would like to share with you.
Best regards,
Adam
Thanks for the blog.
Have some basic doubts, which I would appreciate if you could clarify.
Lets say for eg that we are developing a custom report in which we call a custom function module (newly developed for the custom report that we are developing).
What you are saying is that we should have seperate documentation for the FM using ABAP DOCS. Should we not have the details of the FM documented in the technical specification (TS) of the custom report?
Also if we document details of the FM in the TS and seperately using ABAP DOCS, then arent we duplicating effort?
Regards,
Mick
Great way to start blogging with such a nice tool.
ABAP Docs is an informative tool and helps us developers provide inline documenation with quick and easy reference.
To know that the tool is one man's effort is simply amazing.
However i would like to add few points to avoid the installation errors and please feel free to make your comments.
1. Change the approach for installation as:
i) Create Type Groups
ii) Create Dictionary Object: ZABAP_DOCS_LIST.
iii) Extract each nugget individually starting the session afresh for each nugget
iv) Ensure that all local and transportable objects are active
v) Create Message Classes and Transactions
2. Add a condition in function module: ZADOC_HELP_P1LIST_DPARM_HSCLCK,Line No: 78 to check for positive offset. This is avoid short dump for negative offset while drilling the report output to ABAP Internal Types like 'C'.
Eg.,
if li_pos > 0.
lc_suffix = lc_obj_name+li_pos.
endif.
Waiting for more informative blogs and utilities from you.
Warmest Regards,
Eswar
Thank you for explaining how to go around the installation problems. I think that it should help others with installing the system. Obviously, the installation manual did not describe the process correctly.
Thank you again for your help.
Best regards,
Adam
Please, find below a link to my latest SDN blog/whitepaper on ABAP Docs:
Upgrade to ABAP Docs 2.0 and Contribute to Its Development in Google™ Code Community Project
I just released greatly improved ABAP Docs 2.0 that I would like to share with you.
Best regards,
Adam
The blog is really good one.
I would look forward to use it soon, in near future.
Thanks & Regards,
Wajid Hussain P.
Seems to be a nice tool. But I have the one or other question:
1. Are customer namespaces supported also like e.g. "/acme/myreport"?
2. Will this tool become part of SAP standard software delivery (as part of SAP_ABA or SAP_BASIS?
3. If not what about upgrade stability?
Thanx for this blog, the toolset and for answering my questions.
Regards,
Volker
Thank you for you comments. Here are the answers for your questions:
1. I did not test it but I cannot see why not. I guess / character in component name should not cause any problem. Please, try and let me know. If you want, you can also use it to document standard SAP components; e.g., function modules, using explicit enhancements.
2. I do not think that SAP has plans to include it in standard SAP. It was developed by me as Z* project after regular consulting hours.
3. I do not use anything specific in my code and as long as SAP Controls are supported, ABAP Docs should work fine
Best regards,
Adam
4. What about BSPs?
5. What about WebDynpro ABAP?
6. What about Enhancements?
Regards,
Volker
Thank you for you comments. Here are the answers for your questions:
4. No BSPs at the moment - ABAP Docs is extendable software. At the moment, it supports ABAP Forms, ABAP Macros, ABAP Types, Function Modules. There is also there some code to support ABAP Classes and ABAP programs. However, it is not fully implemented. You can add more component types if you wish on your own. To do this, you would need to develop component editor template, component HTML template and component parser subroutine and integrate it with ABAP Docs engine. I am also considering to make out of ABAP Docs a community project on http://www.code.google.com – if this would happen then possible many programmers could contribute developing functionality for new components, additional sections for existing components and completely new functionality
5. No ABAP WebDynpro at the moment
6. No Enhancements at the moment
Even so components you mentioned are not supported by ABAP Docs, you might consider wrapping business or technical functionality that you implement in those components into function modules that you could document with ABAP Docs. When doing this you would be able to reuse those function modules in multiple components; e.g., BSPs and ABAP WebDynpros
Best regards,
Adam
how can i fix the installation problem when defining the type group ZFLC. I had first imported the ZFLC-nugg-file. Have i to delete all objects of the nugg file? Is there any hidden object. I can't understand the sap error message when creating type group ZFLC, because there is no equal named ddic object.
Thanx for help
Ullrich Burghoff
Thank you for you comments.
When writing ABAP Docs Installation Manual I mixed the order of steps needed to install ABAP Docs cleanly. Please, look at [2008-09-04 20:41:20 Eswar Rao Boddeti]
comment to my blog. He explains how to go through the installation avoiding those problems.
Best regards,
Adam
As a workaround to avoid unisntalling/deleting the ZFLC nugget, you can do as below:
1. Place a break-point in program: LSD31F01, Line No: 166. --> SUBRC check after selection from table DDTYPES.
2. Now try to create ZFLC type group via SE11.
When you reach the break-point, change the SUBRC value, since the select statement checks for the pattern name on a global perpesctive rather than the object kind.
Hope that helps 🙂
Regards
Eswar
I am having trouble installing the ZFLC package. I created all the four packages, ZFLC, ZCXF, ZADOC and ZABAP_DOCS, as suggested in the installation document. After this I tried installing ZFLC nugget, I am running into these errors.
Can some shed some light, I am missing some thing ...
Thanks,
Shaik
- There is no installed SAPlink plugin for object type FUGR
- There is no installed SAPlink plugin for object type TABL
I don't think that you can expect widespread adoption / use of the ABAP Docs tool - without it being a part of the SAP standard solution. As the effort taken to start tagging comments in all custom development is a significant one - and one that an SAP customer is unlikely to take without a guarantee of ongoing support for the toolset. Is there any chance of you pursuing this further within SAP?
Thank you for you comments. At the moments are no plans to incorporate ABAP Docs into standard SAP ABAP Workbench.
However, ABAP Docs as custom development is independent of standard SAP and you should not have any problems with upgrades to new SAP releases or installation of support packs.
You are also free to make your own enhancements and if you would send them back to me I might incorporate them into next release.
I plan to continue ABAP Docs development on my own and consider organizing community project on http://www.code.google.com to get a broader audience.
I am thinking about adding the following new features in the next release of ABAP Docs:
• Support for ZMETH component for local and global classes
• Automatic support for related components defined in the same ABAP include without listing them in component’s documentation
• Support for ZCLAS component for local classes
• Fixing problems with Installation Manual
• Fixing some bugs
Best regards,
Adam
I am having trouble installing the ZFLC package. I created all the four packages, ZFLC, ZCXF, ZADOC and ZABAP_DOCS, as suggested in the installation document. After this I tried installing ZFLC nugget, I am running into these errors.
Can some one shed some light, I am missing some thing ...
- There is no installed SAPlink plugin for object type FUGR
- There is no installed SAPlink plugin for object type TABL
Thanks in advance,
Shaik
Please, read comment s to blog, especially Eswar Bodetti comments. Yhey might help you with the installation problems.
Best regards,
Adam
I have exactly the same problem trying to install the ZFCL nugget:
There is no installed SAPlink plugin for object type FUGR
There is no installed SAPlink plugin for object type TABL
So, I tried the proposal of Eswar Bodetti and I:
- created the type groups (but without details because for ex. the inlcude zflc_tg was not found)
- Created the table ZABAP_DOCS_LIST
and when I try to import the nugget again, i have the same error as before.
Please help
Herbert
In one of the comments to blog there is link https://sapmats-de.sap-ag.de/download/download.cgi?id=ZNFY86GNBQUGD2T30RMC3NXZDY8D27XKNHOZDWHX5S2YMZD7TH
that allows you downloading SAPlink including TABL & FUGR plugin.
Please, follow Eswar explanation on how to deal with installation problems
In next two weeks or so ABAP DOcs 2.0 is coming
Best regards,
Adam
Please, find below a link to my latest SDN blog/whitepaper on ABAP Docs:
Upgrade to ABAP Docs 2.0 and Contribute to Its Development in Google™ Code Community Project
I just released greatly improved ABAP Docs 2.0 that I would like to share with you.
Best regards,
Adam
This is a good tool. Actually we have a plan to include this tool and customize it for our purpose. But while installing the tool, i found some issues. So, i seek some clarifications from you.
Is the tool only applicable for Ecc 6.0 and above?
Because while executing "ABAP Docs 2.1 Cockpit" transaction, it goes for a short dump, stating that SAP_BOOL (data type used in public section of class ZFLC_ALV_GRID_GC) is not available. SAP_BOOL data type doesnot exist in SAP v4.7. But it is available in SAP ECC 6.0. I have checked it.
Since, this is one of the errors i found, i seek your valuable clarification regarding the following:
Is it possible to install the tool in SAP v4.7 or is it only applicable for Ecc 6.0 and above?
What are the pros and concerns to be taken care, when i need to install the tool in SAP v4.7? What are all the issues i will face?
Thanks and Best Regards,
Suresh
Sorry for replying so late. I missed your comment. Even so ABAP Docs was developed on ECC 6.0 you should be able to port it back to SAP 4.7 with minimal effort. Please, let me know how did it go.
Best regards,
Adam Baryla