Skip to main content

Celonis Product Documentation

Prerequisites for the case-centric Unshipped Orders app

Before you set up the Unshipped Orders app, you’ll need to complete these prerequisite steps:

  1. Install and configure a Data Connection between Celonis and your source system.

    If you’ve already set up a Data Connection to this source system, you can reuse it. If not, you'll need to install the Celonis components in your source system, set up the extractor server, and configure a Data Connection in the Celonis platform. Data Connections has the instructions to do this.

  2. Install and configure the newest version of the Order to Cash SAP ECC Process Connector.

    This is the one shown on the app’s Celonis Marketplace listing page as the required connector. The Data Model “SAP ECC - Order to Cash Data Model” that you’ll use with the app comes with the Process Connector. The easiest way to get the connector is through the Process Connector library - Process Connector Installation tells you how to do this.  If you’ve already set up this Process Connector for a different app, you can reuse it.

  3. Load the Data Model “SAP ECC - Order to Cash Data Model” with your data.

    Required tables and columns lists the tables and columns you’ll need from SAP ECC.

    Important

    The VBAP and LIPS tables, which contain sales order items and delivery items, must have fewer than 30 million rows for the Unshipped Orders app’s augmentation functionality to work. If yours are larger, see Reducing the VBAP or LIPS table size for how to work around this.

When the Data Connection and Process Connector are in place and you’ve loaded the Data Model, follow the steps in Installing the case-centric Unshipped Orders app.

If you need to get help with any of the app’s prerequisites or setup steps, Support tells you how.

Required tables and columns

Here’s the reference list of the SAP ECC tables and columns that the Unshipped Orders app needs data from:

Table

Columns

LIKP

MANDT, VBELN, KUNNR, ERNAM, LIFSK, TS_WADAT, TS_ERDAT, INCO1

LIPS

MANDT, VBELN, POSNR, LFIMG, TS_ERDAT, MATNR, WERKS, VGPOS, VGBEL

VBUP_DELIVERY

MANDT, VBELN, POSNR, WBSTA, KOSTA, PKSTA, CMPPI, CMPPJ, GBSTA

KNA1

KUNNR, MANDT, NAME1, VBUND, ORT01, LAND01

VBAK

AUART, AUART_TEXT, BUKRS_TEXT, BUKRS_VF, ERNAM, KUNNR, MANDT, VBELN, VKGRP, VKGRP_TEXT, VKORG, VKORG_TEXT, VTWEG, VTWEG_TEXT, WAERK, LIFSK, KVGR1, INCO1

VBAP

ABGRU, MANDT, MATKL, MATKL_TEXT, MATNR, MATNR_TEXT, NETWR, NETWR_CONVERTED, POSNR, VBELN, WERKS, WERKS_TEXT

VBUK

MANDT, VBELN, CMGST

VBFA

MANDT, VBELN, POSNN, VBELV, POSNV

VBEP

MANDT, VBELN, POSNR, ETENR, BMENG

ACTIVITY TABLE

The activity table needs to have an activity column, a case column and a timestamp column.

Reducing the VBAP or LIPS table size

If the VBAP or LIPS tables, which contain sales order items and delivery items, exceed 30 million rows, you’ll need to reduce their sizes so that the app can create augmented attributes. The Unshipped Orders app doesn’t need to look at shipped sales order items or delivery items, so you can safely exclude these.

Here’s how to create and use reduced versions of the tables:

  1. Create a copy of the Data Model for the Unshipped Orders app. Duplicate the original “Order-to-Cash for SAP ECC” Data Model, where you’ll be replacing the VBAP and LIPS tables with your reduced tables.

    Tip

    If you want to reduce the reload time for your Data Model copy for the Unshipped Orders app, you can remove tables that aren’t required for the Unshipped Orders use case.

  2. In the Data Pool that the Unshipped Orders app is using, create a new transformation in a new or existing data job. In the transformation, paste in the following statements to create a reduced version of the VBAP table named O2C_VBAP_OPS, that excludes sales order items that have been shipped.

    DROP TABLE IF EXISTS O2C_VBAP_OPS; 
    
    CREATE TABLE O2C_VBAP_OPS AS
    (
        SELECT  DISTINCT
        VBAP.*
        FROM O2C_VBAP AS VBAP
        JOIN O2C_VBUP AS VBUP ON 1=1
            AND VBAP.MANDT = VBUP.MANDT
            AND VBAP.VBELN = VBUP.VBELN
            AND VBAP.POSNR = VBUP.POSNR
    
        LEFT JOIN "O2C_VBFA_V" AS "VBFA" ON 1=1
            AND VBAP.POSNR = VBFA.POSNV
            AND VBAP.VBELN = VBFA.VBELV
            AND VBAP.MANDT = VBFA.MANDT
    
        LEFT JOIN "O2C_LIPS" AS "LIPS" ON 1=1
            AND "VBFA"."MANDT" = "LIPS"."MANDT"
            AND "VBFA"."VBELN" = "LIPS"."VBELN"
            AND "VBFA"."POSNN" = "LIPS"."POSNR"
    
        LEFT JOIN VBUP AS VBUP_DEL ON 1=1
            AND "VBUP_DEL"."MANDT" = "LIPS"."MANDT"
            AND "VBUP_DEL"."VBELN" = "LIPS"."VBELN"
            AND "VBUP_DEL"."POSNR" = "LIPS"."POSNR"
    WHERE   
       (-- 0) Make sure to use your brackets correctly
         (-- 1) order item is not yet completed nor rejected
            VBUP.GBSTA IS NOT NULL AND
            VBUP.GBSTA !='C'       AND
            VBUP.ABSTA != 'C'     
            )
        OR
         -- 2) order item is completed, but DN item is not yet completed
    nor rejected but not irrelevant (i.e. not null)
         -- 2.1) it exists    
         -- 2.2) open DN item
         -- 2.3) which is not rejected 
         -- Use COALESCE() to replace with '' if not existent yet, as NULL
    included would lead condition to not being applied
            (
             VBUP_DEL.GBSTA IS NOT NULL AND          -- 2.1)
             VBUP_DEL.GBSTA != 'C' AND               -- 2.2)
             COALESCE("VBUP_DEL"."ABSTA",'') != 'C'  -- 2.3)
            )
        )
    );
  3. Create another  transformation in the same way, and paste in the following statements to create a reduced version of the LIPS table named O2C_LIPS_OPS, that excludes delivery items that have been shipped.

    DROP TABLE IF EXISTS O2C_LIPS_OPS;
    
    CREATE TABLE O2C_LIPS_OPS AS
    (
        SELECT  DISTINCT
        LIPS.*
        FROM O2C_LIPS AS LIPS
        JOIN O2C_VBUP_DELIVERY AS VBUP ON 1=1
            AND LIPS.MANDT = VBUP.MANDT
            AND LIPS.VBELN = VBUP.VBELN
            AND LIPS.POSNR = VBUP.POSNR
    WHERE
        -- delivery item is not yet completed nor rejected
          VBUP.GBSTA IS NOT NULL AND
          VBUP.GBSTA !='C'       AND
          VBUP.ABSTA != 'C'
    );
  4. In your Data Model copy for the Unshipped Orders app, replace the current VBAP table with the O2C_VBAP_OPS table you just created. Check that the alias name specified in the Alias field is VBAP - this is the default, so it’ll be there unless you changed it previously. Do the same with the O2C_LIPS_OPS table, with the alias LIPS.

  5. Load your Data Model copy for the Unshipped Orders app to verify that the number of rows in the VBAP table and in the LIPS table is now below 30 million.