# List of Services

These standard formats are available for lists of services: [SAP IDoc BOMMAT07](#sap-idoc) as the output file (default) and [GAEB DA XML X94](#gaeb-x94), which your system can have generated through the API. You can also retrieve header data, positions and suggested articles as JSON through the [Document API](/en/docs/api-documentation/document-api.md). Workist builds your own layouts in JSON, CSV, TXT or XLSX on request, e.g. with one row per suggested article, see [Custom formats on request](/en/docs/output-formats.md#custom-formats).

---

## SAP IDoc BOMMAT07 {#sap-idoc}

**File extension:** `.xml`  
**File name:** `BOM_<IDoc number>.xml`

The default format for lists of services: an SAP bill-of-materials IDoc (basic type `BOMMAT07`). Workist writes a BOM header and, for every article of a relevant position, a BOM item with text. Workist leaves out pre-texts, positions marked as not relevant and positions without an article number.

The format has a fixed structure. Your channel's field selection does not change it.

### Full example

In the example the list of services has a pre-text, two relevant positions and one position that is not relevant. Only the two relevant positions appear.

```xml
<?xml version="1.0" encoding="utf-8"?>
<BOMMAT07>
  <IDOC BEGIN="1">
    <EDI_DC40 SEGMENT="1">
      <TABNAM>EDI_DC40</TABNAM>
      <MANDT>050</MANDT>
      <DOCNUM>0000000000004711</DOCNUM>
      <STATUS>30</STATUS>
      <DIRECT>1</DIRECT>
      <OUTMOD>2</OUTMOD>
      <IDOCTYP>BOMMAT07</IDOCTYP>
      <MESTYP>BOMMAT</MESTYP>
      <STD>0</STD>
      <STDMES>BOMMAT</STDMES>
      <SNDPOR>SAPC11</SNDPOR>
      <SNDPRT>LS</SNDPRT>
      <SNDPRN>WORKIST</SNDPRN>
      <RCVPOR>XML_WKI</RCVPOR>
      <RCVPRT>LS</RCVPRT>
      <RCVPRN>WORKIST</RCVPRN>
      <CREDAT>20250315</CREDAT>
      <CRETIM>143025</CRETIM>
    </EDI_DC40>
    <E1CSUMHDR SEGMENT="1">
      <MATNR>OBJ-2025-17</MATNR>
      <WERKS>CUST-12345</WERKS>
      <STLAL>01</STLAL>
      <STLNR>0000000001</STLNR>
      <STLAN>1</STLAN>
      <STLST>01</STLST>
      <BASEQ />
      <BASEU />
      <DATUV />
      <DATUB />
      <BOM_STATUS>1</BOM_STATUS>
      <AUTH_GROUP>0001</AUTH_GROUP>
      <CHANGE_NO>0000000000001</CHANGE_NO>
      <ITEM_CAT>L</ITEM_CAT>
    </E1CSUMHDR>
    <E1STPOM SEGMENT="1">
      <POSNR>01.01.0010</POSNR>
      <IDNRK>ART-001-A</IDNRK>
      <MENGE>12</MENGE>
      <MEINS>Stk</MEINS>
      <SORTF>0001</SORTF>
      <POSTP>L</POSTP>
      <DATUV />
      <DATUB />
    </E1STPOM>
    <E1STKOM SEGMENT="1">
      <IDNRK>ART-001-A</IDNRK>
      <POSNR>01.01.0010</POSNR>
      <TEXT1>Industrial Sensor Module Type A</TEXT1>
      <POSTP>L</POSTP>
      <ALPGR>01</ALPGR>
      <SORTF>0001</SORTF>
    </E1STKOM>
    <E1STPOM SEGMENT="1">
      <POSNR>01.01.0020</POSNR>
      <IDNRK>ART-002-B</IDNRK>
      <MENGE>250</MENGE>
      <MEINS>m</MEINS>
      <SORTF>0001</SORTF>
      <POSTP>L</POSTP>
      <DATUV />
      <DATUB />
    </E1STPOM>
    <E1STKOM SEGMENT="1">
      <IDNRK>ART-002-B</IDNRK>
      <POSNR>01.01.0020</POSNR>
      <TEXT1>Cable duct 60x40</TEXT1>
      <POSTP>L</POSTP>
      <ALPGR>01</ALPGR>
      <SORTF>0001</SORTF>
    </E1STKOM>
  </IDOC>
</BOMMAT07>
```

### Segments

| Element | Content |
|---|---|
| `EDI_DC40` | Control record. Fixed: `TABNAM`, `MANDT` (`050`), `STATUS` (`30`), `DIRECT` (`1`), `OUTMOD` (`2`), `IDOCTYP` (`BOMMAT07`), `MESTYP` and `STDMES` (`BOMMAT`), `STD` (`0`), `SNDPOR` (`SAPC11`), `SNDPRT` (`LS`), `SNDPRN` (`WORKIST`). `DOCNUM` = sequential 16-digit IDoc number, `CREDAT`/`CRETIM` = creation time (UTC). Workist sets `RCVPOR`, `RCVPRT` and `RCVPRN` for you (defaults `XML_WKI`, `LS`, `WORKIST`). |
| `E1CSUMHDR` | BOM header: `MATNR` = object number of the list of services, `WERKS` = customer number. Fixed: `STLAL` (`01`), `STLNR`, `STLAN` (`1`), `STLST` (`01`), `BOM_STATUS` (`1`), `AUTH_GROUP` (`0001`), `CHANGE_NO`, `ITEM_CAT` (`L`). `BASEQ`, `BASEU`, `DATUV` and `DATUB` stay empty. |
| `E1STPOM` | One BOM item per article of a relevant position: `POSNR` = position number from the list of services, `IDNRK` = article number (max. 35 characters), `MENGE` = quantity (max. 10 characters), `MEINS` = unit of measure. Fixed: `SORTF` (`0001`), `POSTP` (`L`); `DATUV` and `DATUB` stay empty. |
| `E1STKOM` | Text for the BOM item: `IDNRK` and `POSNR` as above, `TEXT1` = article description. Fixed: `POSTP` (`L`), `ALPGR` (`01`), `SORTF` (`0001`). |

### Settings

Workist sets these values during setup to match your SAP system. Longer values are cut off.

| Field | Default | Max. characters |
|---|---|---|
| `RCVPOR` | `XML_WKI` | 10 |
| `RCVPRT` | `LS` | 2 |
| `RCVPRN` | `WORKIST` | 10 |

---

## GAEB DA XML X94 {#gaeb-x94}

**File extension:** `.xml`

If the list of services arrived as a GAEB X83 file (GAEB DA XML 3.3), your system can have Workist generate a quote in X94 format through the Workist API. See the [Document API](/en/docs/api-documentation/document-api.md) for how to call it.

How it works:

1. For every position it wants to quote, your system sends the position's GAEB ID and your quote data: article number, position type (normal, alternative or contingency position), quantity, unit, net price, quote price, price basis and billing unit, VAT, EAN and long text.
2. It also sends your supplier data: supplier number, address, tax number and registration number.
3. Workist builds an X94 file from the original X83 file and your data, validates it against the GAEB schema and returns it.

Workist rejects the request if a GAEB ID does not belong to any position of the list of services, if the list of services did not arrive as an X83 file, or if the generated X94 file does not conform to the schema.
