What is Solution Order in SAP?
SOLUTION ORDER supports mixed items selling as items put together in a solution order and also as sets of items added as one bundle (called solution bundle). You can use solution orders to sell to your customers any combination of different products, such as physical goods, one-time services, long-running service contracts, subscription-based services, and project-based services.
To manage solution orders, you can use the Manage Solution Orders app, where one can release solution order items and trigger orchestration, creating follow-up documents having their own lifecycle and system checks. It is also possible to print out a solution order confirmation and send it to a customer.
Customer Requirement
The need is to maintain consistency of the solution sold for the customers in all external communications with them. Hence, it is needed that output generation for customers be controlled to be sent as and when needed from solution order and the follow up documents created from it.
For this blog, the example is to send an order confirmation from SOLUTION ORDER only. It should also be sent only when solution order is created and released successfully and the follow up documents of SALES ORDER, SERVICE CONTRACT AND SERVICE ORDER, are created without any errors. Errors considered here are credit check block for all follow-up service transactions and and incompletion check for the sales order document specifically.
Once the SOLUTION ORDER is released, the system creates SERVICE ORDER, SERVICE CONTRACT AND SALES ORDER all with a credit check block. Additionally, Incompletion Status is triggered for the Sales Order based on the customer-defined incompletion procedure. Until these blocks are removed, no customer output or order confirmation should be generated or sent for the solution order. After the credit check block is removed from all follow-up documents via documented credit decisions and incompletion status is removed for the sales order, the system should automatically allow to print and send order confirmation to a customer, which will be normally happening via the scheduled application job.
1) Solution Design I_BUSINESSSOLUTIONORDERTP and create a custom filed yy1_documentprint. By default, this field will be blank and not visible to user it will be only set and used by print configuration to check eligibility of Solution Order To decide Print Or Not To Print
If the custom field needs to be extended to the application UI, then enable its usage for C_BUSSOLUTIONORDER.
2) Consume Local Event Create and Change for Sales Order, Service Order and Service Contract I_SalesOrderTP , I_ServiceOrderTP and I_ServiceContractTP
for details, please refer to Business Object Consumption | SAP Help Portal . These events are consumed to identify when a relevant business object is created or changed, so that the next processing step can execute the required custom logic. Based on this logic, the custom field YY1_DocumentPrint can be checked with value X to determine whether the document is eligible for further print processing.
3) Create a Utility Class in that class design solution like below and use in local event
3.1) first check SOLUTION ORDER items and collect all SALES ORDER, SERVICE ORDER and SERVICE CONTRACT using CDS view I_BusinessSolutionOrderItem.
3.2) For SALES ORDERS, use I_SalesOrder and I_SalesOrderItem to verify that the order is eligible for further processing. Check TotalCreditCheckStatus in I_SalesOrder to ensure that the Sales Order has successfully passed the credit check, and check ItemGeneralIncompletionStatus in I_SalesOrderItem to confirm that there are no incomplete mandatory item-level data entries. If both conditions are satisfied, proceed to the next step of the process; otherwise, exit the process.
3.3) Use I_ServiceDocumentItem to verify whether the Service Order Item is eligible for invoice order confirmation printing. Check the SrvcDocItemCreditStatus field to ensure that the required credit validation has been successfully completed. If the condition is satisfied, proceed to the next step; otherwise, exit the process and prevent the Solution Order from printing the Invoice Order Confirmation. Additional validation conditions may be incorporated based on customer-specific requirements and the availability of relevant data.3.4 If both conditions pass, use I_BusinessSolutionOrderTP and update Custom yy1_documentprint.
For example:
MODIFY ENTITIES OF i_businesssolutionordertp
ENTITY businesssolutionorder
UPDATE FIELDS ( yy1_documentprint_srh )
WITH VALUE #( (
businesssolutionorder = ls_salesOrder-BusinessSolutionOrder
yy1_documentprint_srh = abap_true
) )
FAILED DATA(lt_failed_modify)
REPORTED DATA(lt_reported_modify).
This is to be done this way because, once item is released in Solution Order any field in the item including the custom fields cannot be modified. Hence, the custom field to control the output generation is created at solution order header
Configuring Output Parameter Determination
Solution order output availability will be controlled via the standard framework of Output Parameter Determination (OPD). To be specific, output will be blocked until the value of the custom field yy1_documentprint_srh is set to “X” via the technical implementation based on events described above. There are several steps required to set up OPD.
Firstly, it is needed to make the custom field “Document Print” available for usage in the Output Parameter Determination app:
Launch the Output Parameter Determination app and select the Business Solution Order object, for which we are going to enable the custom field yy1_documentprint_srh. Right-click on the dropdown box Show Rules for and click on Refresh Condition Parameters of Application. Confirm data binding refresh and wait until it finishes.
Secondly, this custom field yy1_documentprint_srh need to be added to the Condition Table of the Output Relevance determination step. This will enable the check of the custom field value and make the output item relevant – and consequently allow printing out or sending an email:
Select Output Relevance in the Determination Step dropdown box. Then, click Edit and Table Settings. Click on Insert Column and then From Context Data Objects..
Search for the custom field Document Print, mark it with a checkbox and click OK.
As a result, the field will be added to the Condition Columns section. You can identify it by the prefix yy1, indicating that it is a custom field.
Now observe a new column added to the Table Contents. Click on the three dots in the Document Print column, enter the value “X” with an operator is equal to and click OK. Finally, click Activate to apply changes.
Test Case
Now let’s test how the development and output parameter determination will be blocking solution order confirmation output during the lifecycle.
Create a solution order entering in the Sold-To field a customer with credit check activated and credit exposure exceeding the limit in order to achieve credit check block in the follow-up documents.
Enter sales item, service item and service contract item without releasing them and save the solution order. This will result into the solution order with the status Open at header and items level. Consequently, since the status is still open, you can also observe that the custom field Document Print at the solution order header is empty, because it has not been affected by the custom logic we’ve developed.
Try printing out the solution order confirmation by selecting the output item and clicking Send Output. There will be an error that item is not relevant for output – because Document Print value is not equal to “X”, which is an Output Parameter Determination condition for Output Relevance.
As a next step, let’s release solution order items to trigger follow-up documents creation. Since the Sold-To of the solution order has the exceeded Credit Exposure, those documents will be blocked and the Solution Order Progress application will highlight them in red.
You can double check the reason for blocks in the documents to confirm that it happens due to credit check.
Service order:
Service contract:
For the sales order, let’s also cause document incompletion by deleting Incoterms data in the sales order header and Net/Gross Weight in the item:
Let’s remove credit check error in the follow-up documents by releasing them via the Manage Documented Credit Decisions application.
This will lead to the following state of the solution order progress: service order and service contract are no longer blocking the output, however, sales order is incomplete, therefore the custom field Document Print in the solution order header is still not impacted and order confirmation cannot be sent.
After entering Incoterms and Net/Gross Weight in the sales order header and item respectively, incompletion status of the sales order is removed, which is getting captured by our development and custom logic changes the value of the Document Print field to “X”.
Finally, Output Item can be sent or printed successfully.
Summary
This blog demonstrates an approach to control solution order confirmation output based on certain conditions. Technically, this is achieved by:
- Creation of a custom field at a solution order header level
- Implementation of custom logic in a utility class, capturing events in solution order and follow-up documents and changing the value of the custom field (custom logic fulfil certain business conditions is written here to control the output)
- Extension of solution order output parameter determination with the custom field



