arazzo: 1.0.1 info: title: SAP SD Material Onboarding summary: Create a product, read it back, list its plants, and read its sales/delivery view. description: >- Onboards a new material into SAP Sales and Distribution and verifies its sales-relevant master data. The workflow creates a product, reads the product back, lists the plants it is extended to, and reads the product's sales and delivery view for a sales organization and distribution channel. Each step inlines its OData request so the flow reads and runs without opening the underlying OpenAPI descriptions. The product creation POST requires an X-CSRF-Token header supplied as a workflow input. version: 1.0.0 sourceDescriptions: - name: materialMasterApi url: ../openapi/sap-sd-material-master-openapi.yml type: openapi workflows: - workflowId: material-onboarding summary: Create a product and verify its sales and plant master data. description: >- Creates a product, retrieves it, lists its plant assignments, and reads its sales/delivery view for the given sales organization and distribution channel. inputs: type: object required: - csrfToken - product - productType - productSalesOrg - productDistributionChnl properties: csrfToken: type: string description: X-CSRF-Token fetched from the OData service for write operations. product: type: string description: Product (material) number to create. productType: type: string description: Product type (e.g. FERT for finished goods). productGroup: type: string description: Product group classification. baseUnit: type: string description: Base unit of measure. productSalesOrg: type: string description: Sales organization for the sales/delivery view. productDistributionChnl: type: string description: Distribution channel for the sales/delivery view. steps: - stepId: createProduct description: Create a new product master record. operationId: createProduct parameters: - name: X-CSRF-Token in: header value: $inputs.csrfToken requestBody: contentType: application/json payload: Product: $inputs.product ProductType: $inputs.productType ProductGroup: $inputs.productGroup BaseUnit: $inputs.baseUnit successCriteria: - condition: $statusCode == 201 outputs: product: $response.body#/d/Product - stepId: getProduct description: Read the created product back to confirm it persisted. operationId: getProduct parameters: - name: Product in: path value: $steps.createProduct.outputs.product successCriteria: - condition: $statusCode == 200 outputs: product: $response.body#/d/Product - stepId: listPlants description: List the plants the product has been extended to. operationId: listProductPlants parameters: - name: Product in: path value: $steps.getProduct.outputs.product successCriteria: - condition: $statusCode == 200 outputs: plants: $response.body#/d/results - stepId: getSalesDelivery description: >- Read the product's sales and delivery view for the sales organization and distribution channel to confirm it can be sold. operationId: getProductSalesDelivery parameters: - name: Product in: path value: $steps.getProduct.outputs.product - name: ProductSalesOrg in: path value: $inputs.productSalesOrg - name: ProductDistributionChnl in: path value: $inputs.productDistributionChnl successCriteria: - condition: $statusCode == 200 outputs: product: $response.body#/d/Product outputs: product: $steps.getProduct.outputs.product plants: $steps.listPlants.outputs.plants