F4 Help in Custom Pre-Conditions for Flexible Workflow / Manage Workflow for Purchase Requisition


Starting from S4 Hana 1909, you can add custom pre-conditions to the Manage Workflow App for Purchasing. Like Purchase Requisition. (https://blogs.sap.com/2019/12/03/sap-s-4hana-cloud-flexible-workflow-with-new-custom-pre-condition-for-purchase-requisition/)

A common requirement in such cases would be to add an F4 help for the new field. Found a few blogs that explain how to put the preconditions but none explain how to attach an F4 help to it.

So here is a solution for all such needs.


  • Add a new precondition to the Purchase Requisition Manage Workflow App in S4HANA 1909 (Follow the blog in the Introduction Section to add this )
  • Add an F4 help to the new precondition



  • You have a parameter CT_PARAMETERS(refer blog in the introduction) to insert the condition.
  • This method parameter has 3 fields for F4 help addition,
    • service_path – the service path of your OData Service
    • entity – the Value Help entity of your OData Service
    • property –  the field/property in your OData Service for your field value.
  • In my case, I had a requirement of adding value help for Inspection Type from table QMAT.
  • I found standard CDS views I_InspectionLotType and I_InspectionLotTypeText that helped in creating a value help CDS view. To make life easier did a bit more debugging and found out SAP’s given CDS view for the Standard Value Helps (S_MMPURWorkflowVH) and created mine similar to it.
  • Code excerpts below for the CDS
    • Composite View to create the Value help for Inspection Lot and Text – ZI_InspectionLotType
    • Value Help exposed view/Published View-  ZC_InspectionlotVH
@AbapCatalog.sqlViewName: 'ZINSCOMPTY'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Composite View for Inspection Lot'

@Search.searchable: true
@ObjectModel.representativeKey: 'InspectionLotType'

@ObjectModel.usageType.serviceQuality: #A
@ObjectModel.usageType.sizeCategory: #S
@ObjectModel.usageType.dataClass: #MASTER
define view ZI_InspectionLotType as select from I_InspectionLotType as InspectionType
    association to I_InspectionLotTypeText as _Instext
    on _Instext.InspectionLotType = $projection.InspectionLotType //and _text.Language = 'E'
    @Search.defaultSearchElement: true
    key InspectionLotType as InspectionLotType,

      @EndUserText.label: 'Inspection Lot Text'    
        _Instext.InspectionLotTypeText             as InspectionLotTypeText
} where _Instext.Language = 'E';    
@AbapCatalog.sqlViewName: 'ZCINSPLOTVH'
@AbapCatalog.preserveKey: true
@EndUserText.label: 'Inspection Lot VH'
@AbapCatalog.compiler.compareFilter: true
@ObjectModel.usageType.dataClass: #CUSTOMIZING
@ObjectModel.usageType.serviceQuality: #A
@ObjectModel.usageType.sizeCategory: #M
@AccessControl.authorizationCheck: #NOT_REQUIRED
@OData.publish: true
@ObjectModel.createEnabled: true

define view ZC_InspectionlotVH
  as select from tsproc_wf_vh as Document
  association [0..1] to ZI_InspectionLotType as _InspectionType on _InspectionType.InspectionLotType = $projection.InspectionLotType //and _text.Language = 'E'
  key ''                  as MMPURWorkflow,
      @Consumption.valueHelp: '_InspectionType'
      cast( '' as qpart ) as InspectionLotType,
      //expose assoc



  • Now after the CDS is created, Publish the Odata and register the service.
  • Now in the CFL app, we will pass the 3 fields that we discussed earlier as below. (code attached).
 ct_parameter = VALUE #(
      ( id = 1 name = 'Inspection' xsd_type = if_swf_flex_ifs_condition_def=>cs_xstype-string mandatory = abap_false
        service_path = '/sap/opu/odata/sap/ZC_INSPECTIONLOTVH_CDS/' entity = 'ZC_InspectionlotVH' property = 'InspectionLotType'


  • That’s it, the F4 help will now come up on the Manage workflow App new precondition field (Screenshot Below)


Original Article:

Related blogs


Please enter your comment!
Please enter your name here