The assembly processing in SAP project system is a great functionality for starting operative projects from sales and distribution documents. Its underlying principle is that a sales quotation or a sales order in SD triggers the creation of a network in PS and the different network activities assigned to that network trigger in turn the creation of a project definition and WBS elements.
This great functionality, nevertheless, misses in customer-exits and BAdIs. Many times it can cover most of the necessities of a company, but the few necessities that it cannot cover are sometimes of utmost importance and as a result the entire functionality is discarded and replaced by thousands of lines of customer codes.
The goal of the current document is to provide links to other more specific documents that dive deeper into different aspects of the assembly processing functionality from a programming perspective and from there try to propose some enhancements in order to leverage the flexibility of this great functionality. These links can be found on “Specific documents” section of the current document.
As the goal of the linked documents is not to explain how the assembly processing functionality works from a functional perspective the following further readings are suggested:
- Chapter 1, sections 1.8.6 and 1.8.7, of Mario Franz’s book “Project Management with SAP Project System”.
- SCN document “Project creation in MTO” .
- SCN document “Assembly Processing in SD and PS”
- SAP Help Portal section on Assembly Processing in the Project System
Most of the codes proposed in the linked documents are to be added inside implicitly enhancement spots, which are usually located before and after standard SAP codes. Even though implicit enhancements are an integral part of the SAP system and are fully supported in version upgrades they are not as stable as explicitly enhancements (i.e. customer exits and BAdIs). Therefore any attempt of implementing any suggested implicitly enhancement should be thoroughly tested.
Furthermore the sample codes provided are not supposed to be blindly copied and pasted. They should rather be understood and eventually adapted to the different specific requirements. Specific error handling should also be eventually added to the codes.
Finally the sample codes provided are for the sake of simplicity written in continuous lines of code. In real implementations they should preferably be wrapped inside an object or a function module.
(more will be added with time)