SAP Sales and Distribution (SD) · Arazzo Workflow

SAP SD Inquiry to Quotation

Version 1.0.0

Create a sales inquiry, read it, list its items, then create a quotation from it.

1 workflow 3 source APIs 1 provider
View Spec View on GitHub DistributionERPODataS/4HANASalesSAPArazzoWorkflows

Provider

sap-sales-and-distribution-sd

Workflows

inquiry-to-quotation
Convert a sales inquiry into a sales quotation.
Creates a sales inquiry, retrieves it, lists its items, and creates a quotation carrying the inquiry's sold-to party and material forward.
4 steps inputs: csrfToken, distributionChannel, material, organizationDivision, requestedQuantity, salesInquiryType, salesOrganization, salesQuotationType, soldToParty outputs: salesInquiry, salesQuotation
1
createInquiry
Create a sales inquiry header with one deep-inserted item for the sold-to party.
2
getInquiry
Read the created inquiry back to capture its sold-to party.
3
listInquiryItems
List the inquiry items to confirm the inquired lines before quoting.
4
createQuotation
Create a sales quotation carrying the inquiry's sold-to party and material forward.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: SAP SD Inquiry to Quotation
  summary: Create a sales inquiry, read it, list its items, then create a quotation from it.
  description: >-
    Models the earliest presales handoff in SAP Sales and Distribution. The
    workflow creates a sales inquiry with a deep-inserted item, reads the
    inquiry back, lists its items, and then creates a sales quotation carrying
    the inquiry's sold-to party and material forward. Each step inlines its
    OData request so the flow reads and runs without opening the underlying
    OpenAPI descriptions. Both modifying POSTs require an X-CSRF-Token header
    supplied as a workflow input. Adaptation note: the quotation item create
    schema exposes no inquiry-reference field, so the handoff is modeled by
    carrying the inquiry's sold-to party and material forward rather than by an
    OData document reference.
  version: 1.0.0
  x-realizes-capability-ids:
  - BC-410.40
  x-capability-derivation:
    method: 'deterministic join: sourceDescriptions -> per-tag OpenAPI -> tag/capability edge. No classification at this step.'
    min_confidence: 0.7
    sources:
    - capability_id: BC-410.40
      capability_name: Quote & Configuration Management
      spec: sap-sales-and-distribution-sd-sales-quotation-api-openapi.yml
      confidence: 0.8
    model: Turbo EA Capabilities by Vincent Verdet — Turbo EA, https://github.com/vincentmakes/turbo-ea-capabilities, CC BY 4.0
sourceDescriptions:
- name: salesInquiryApi
  url: ../openapi/sap-sales-and-distribution-sd-sales-inquiry-api-openapi.yml
  type: openapi
- name: salesInquiryItemApi
  url: ../openapi/sap-sales-and-distribution-sd-sales-inquiry-item-api-openapi.yml
  type: openapi
- name: salesQuotationApi
  url: ../openapi/sap-sales-and-distribution-sd-sales-quotation-api-openapi.yml
  type: openapi
workflows:
- workflowId: inquiry-to-quotation
  summary: Convert a sales inquiry into a sales quotation.
  description: >-
    Creates a sales inquiry, retrieves it, lists its items, and creates a
    quotation carrying the inquiry's sold-to party and material forward.
  inputs:
    type: object
    required:
    - csrfToken
    - salesInquiryType
    - salesQuotationType
    - salesOrganization
    - distributionChannel
    - organizationDivision
    - soldToParty
    - material
    - requestedQuantity
    properties:
      csrfToken:
        type: string
        description: X-CSRF-Token fetched from the OData service for write operations.
      salesInquiryType:
        type: string
        description: Sales inquiry document type (e.g. AF).
      salesQuotationType:
        type: string
        description: Sales quotation document type (e.g. QT).
      salesOrganization:
        type: string
        description: Sales organization.
      distributionChannel:
        type: string
        description: Distribution channel.
      organizationDivision:
        type: string
        description: Division.
      soldToParty:
        type: string
        description: Sold-to party customer number.
      material:
        type: string
        description: Material being inquired about and quoted.
      requestedQuantity:
        type: string
        description: Quantity for the item.
  steps:
  - stepId: createInquiry
    description: >-
      Create a sales inquiry header with one deep-inserted item for the sold-to
      party.
    operationId: createSalesInquiry
    parameters:
    - name: X-CSRF-Token
      in: header
      value: $inputs.csrfToken
    requestBody:
      contentType: application/json
      payload:
        SalesInquiryType: $inputs.salesInquiryType
        SalesOrganization: $inputs.salesOrganization
        DistributionChannel: $inputs.distributionChannel
        OrganizationDivision: $inputs.organizationDivision
        SoldToParty: $inputs.soldToParty
        to_Item:
          results:
          - Material: $inputs.material
            RequestedQuantity: $inputs.requestedQuantity
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      salesInquiry: $response.body#/d/SalesInquiry
  - stepId: getInquiry
    description: Read the created inquiry back to capture its sold-to party.
    operationId: getSalesInquiry
    parameters:
    - name: SalesInquiry
      in: path
      value: $steps.createInquiry.outputs.salesInquiry
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      salesInquiry: $response.body#/d/SalesInquiry
      soldToParty: $response.body#/d/SoldToParty
  - stepId: listInquiryItems
    description: List the inquiry items to confirm the inquired lines before quoting.
    operationId: listSalesInquiryItems
    parameters:
    - name: SalesInquiry
      in: path
      value: $steps.getInquiry.outputs.salesInquiry
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      items: $response.body#/d/results
  - stepId: createQuotation
    description: >-
      Create a sales quotation carrying the inquiry's sold-to party and
      material forward.
    operationId: createSalesQuotation
    parameters:
    - name: X-CSRF-Token
      in: header
      value: $inputs.csrfToken
    requestBody:
      contentType: application/json
      payload:
        SalesQuotationType: $inputs.salesQuotationType
        SalesOrganization: $inputs.salesOrganization
        DistributionChannel: $inputs.distributionChannel
        OrganizationDivision: $inputs.organizationDivision
        SoldToParty: $steps.getInquiry.outputs.soldToParty
        to_Item:
          results:
          - Material: $inputs.material
            RequestedQuantity: $inputs.requestedQuantity
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      salesQuotation: $response.body#/d/SalesQuotation
  outputs:
    salesInquiry: $steps.getInquiry.outputs.salesInquiry
    salesQuotation: $steps.createQuotation.outputs.salesQuotation

Work with this as data

Every workflow here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This workflow
curl "https://apis.io/api/v1/arazzo/sap-sales-and-distribution-sd-inquiry-to-quotation-workflow"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.