SAP-Production-Planning.md

This app template was built for the SAP ECC Production Planning process. This is an end-to-end process that usually starts with the creation of a production order. Then, the production order is released and its operations are executed. After that, the production confirmation is created and the material movements (Post goods issue for material consumption

SAP-Production-Planning.md

Process description

This app template was built for the SAP ECC Production Planning process. This is an end-to-end process that usually starts with the creation of a production order. Then, the production order is released and its operations are executed. After that, the production confirmation is created and the material movements (Post goods issue for material consumption and Post goods receipt of the finished product) are done. Finally, the production order is moved to 'Technically completed' status and the process ends.

This process includes the following types of Production orders:

  • Standard Production Orders
  • Process Orders
  • Re-work Orders

The graphic below briefly shows a standard SAP ECC Production Planning process:

Available tags & due dates

The following tags are available by default.

TagDescription
Long-lasting open orderProduction order items that are actively in 'Released' status for more than the regular time that it should take for that material and plant to process it. That regular time is calculated based on the sum of average time and standard deviation of the release-to-finish throughput time for each combination of material and plant. Orders that are still opened could keep the hold on the raw materials needed for them, besides having other unwanted effects on the overall process. Therefore, it's a good idea to understand why they're still opened and suggest their closure if possible.
Multiple Release statusesHaving the 'Release' status repeated multiple times means that there was some sort of reversal of the following statuses and the order went back to 'Released'. This is clearly a rework done to the order and it should be avoided.
Multiple Technically completed statusesHaving the 'Technically completed' status repeated multiple times means that there was some sort of reversal of the following statuses and the order went back to 'Technically completed'. This is clearly a rework done to the order and it should be avoided.
Order with change activitiesProduction order items that have their attributes changed. Changes to orders are generally frown upon and they are a good indicator of inefficiencies or activities that do not add any value.
Order with rework requiredProduction order items where production rework is required. This tag applies only to the original orders that were reworked (i.e. Re-work orders are filtered out). All rework activities show inefficiencies in the production process.
Production quantity deficitProduction order items where the production order generated less quantity than expected which can be understood as a lack of efficacy. It is worth the effort to understand why this is happening in those cases.
Scrap portion exceededProduction order items which exceeded the portion of scrap estimated for that order. Creating more scrap than estimated means that the consumption of materials during the production process is greater than the standard. It's important to understand their root causes so they can be avoided.
Total order quantity changed after releaseAll changes in quantities done after the release of an order would render all calculations done by the system (e.g. raw materials availability) incorrect. Therefore, these changes could potentially impact the production process as they are bypassing the validations done by SAP during the release of the order.
Zero-quantity confirmationsConfirmations done with zero quantity entered do not usually make sense. Therefore, it requires attention to validate that these activities were correctly done or they are actually showing inefficiencies in the process.
Multiple users for same activityA production order item has the same activity executed multiple times by different users.

The following due dates are available by default.

Due dateDescription
Basic finish dateCompares the date the user defines as the finished date for the production order (basic finish date) with the date it actually finished.
Basic start dateCompares the date the user defines as the start date for the production order (basic start date) with the date it actually started.
Scheduled finished dateThis due date compares the date when the system estimates the production order should finish (scheduled finish date, based on predefined production parameters) with the date it actually ended.
Scheduled release dateThis due date compares the date when the system estimates the production order should be released (scheduled release date, based on predefined production parameters) with the date it actually got released.
Scheduled start dateThis due date compares the date when the system estimates the production order should start (scheduled start date, based on predefined production parameters) with the date it actually started.

System configuration

The SAP ECC Production Planning (PP) module is mandatory.

This app template contains models based on historical information. This information is contained in the following tables:

  • JCDS for status changes of both, orders and operations
  • CDHDR and CDPOS for change logs

The tracking of these changes in SAP ECC PP must be configured. Detailed instructions can be found in the section Instructions for enabling History Tracking in SAP ECC Production Planning.

For this app template, the specific fields which need to be enabled in SAP are the following:

CDPOS tracking

TableFields
AUFKKTEXT
AFKOGAMNG, TERKZ, GLTRP, GSTRP, GLUZP, GSUZP, GASMG, APRIO
AFPOPSMNG, PSAMG, LGORT, DNREL, INSMK
AFVCLTXA1

JCDS tracking of status

Select all desired types of Production orders.

The data extraction is developed for SAP and is using Theobald Xtract Universal. In general, you should follow the steps as described in Loading Data Using Theobald Xtract Universal (Automation Cloud) to set up data loading using Theobald Xtract Universal. Note: If you are using Automation Suite, make sure to select AUTOMATION SUITE as the DELIVERY option on the documentation page. In addition, select the Automation Suite version you are using to open the appropriate Loading Data Using Theobald Xtract Universal page.

  • Download the XU_template_extractions.zip file with template extractions for Automation Cloud or the XU_template_extractions_as.zip file with template extractions for Automation Suite.
  • This file contains the folders destinations, extractions, and sources. Copy the folders from the downloaded zip file to the config folder of Xtract Universal. The location of this folder is [XU_installation_path]/config.
  • Open Xtract Universal Designer and click on the refresh button to load all extractions.
  • Download the extract_theobald.zip file to load data for Automation Cloud or extract_theobald_as.zip to load data for Automation Suite.
  • This file contains the extract_theobald.ps1 script and the config.json file. Unzip the content on the server where Theobald Xtract Universal is installed.
  • Configure the variables for the script.
  • Input data

    Input types

    The following table provides an overview of the different field types and their default format settings.

    Field typeDescription
    booleantrue, false, 1, 0
    dateyyyy-mm-dd
    datetimeyyyy-mm-dd hh:mm:ss[.ms], where [.ms] is optional
    doubleDecimal separator: . (dot); thousand separator: none
    integerThousand separator: none
    textN/A

    Input tables & fields

    Transactional DataMaster Data
    AFKOADCP
    AFPOADRP
    AFRUMARC
    AFVCMARM
    AUFKMBEW
    CDHDRT001L
    CDPOST001W
    JCDST001
    JESTT003P
    MSEGT006A
    T156T
    T156
    TCA02
    TCURF
    TCURR
    TCURX
    TGSBT
    TJ02T
    TKA01
    TTZCU
    TTZDF
    TTZDV
    TTZD
    TTZR
    TTZZ
    USR02
    USR21

    Transactional tables

    AFKO

    Header input table for Order data.

    FieldTypeDescription
    MANDTtextClient Identifier (Primary Key).
    AUFNRtextProduction order number (Primary Key).
    GASMGdoubleExpected scrap quantity
    GETRIdateIndicates the actual finish date for the order.
    GEUZItimeIndicates the actual finish time for the order.
    FTRMIdateIndicates the actual release date for the order.
    GSTRPdateIndicates the basic start date for the order.
    GSUZPtimeIndicates the basic start time for the order.
    GLTRPdateIndicates the basic finish date for the order.
    GLUZPtimeIndicates the basic finish time for the order.
    AUFPLtextRouting number of operations in the order.
    GSTRSdateIndicates the scheduled start date for the order.
    GSUZStimeIndicates the scheduled start time for the order.
    GLTRSdateIndicates the scheduled finish date for the order.
    GLUZStimeIndicates the scheduled finish time for the order.
    FTRMSdateIndicates the scheduled release date for the order.
    IASMGdoubleConfirmed scrap quantity
    RMNGAintegerIndicates the number of confirmed rework quantity in the order.

    Filtering: This table doesn't have any date field that can be used for filtering purposes. Therefore, it was joined with AUFK table to bring the filter by date when loaded from source.

    AFPO

    Item input table for Order data.

    FieldTypeDescription
    MANDTtextClient Identifier (Primary Key).
    POSNRtextProduction order item number (Primary Key).
    AUFNRtextProduction order number (Primary Key).
    AMEINtextForeign key identifying the base unit of measure in-house.
    GSBERtextForeign key identifying the business area.
    UMRENdoubleDenominator to convert into base unit of measure.
    WEMNGdoubleIndicates the goods received quantity.
    MATNRtextForeign key identifying the material number.
    MEINStextForeign key identifying the base unit of measure.
    UMREZdoubleNumerator to convert into base unit of measure.
    OBJNPtextObject number for the order item.
    DAUTYtextForeign key identifying the order category.
    PSMNGdoubleIndicates the production order item quantity.
    DAUATtextForeign key identifying the order type.
    PLNUMtextPlanned production order number.
    DWERKtextForeign key identifying the order item's plant.
    PSAMGdoubleIndicates the production order item scrap quantity.
    LGORTtextForeign key identifying the storage location.

    Filtering: This table doesn't have any date field that can be used for filtering purposes. Therefore, it was joined with AUFK table to bring the filter by date when loaded from source.

    AFRU

    Input table for Order confirmations.

    FieldTypeDescription
    MANDTtextClient Identifier (Primary Key).
    RUECKtextCompletion confirmation number for the operation (Primary Key).
    RMZHLtextConfirmation counter for the operation (Primary Key).
    GMEINtextForeign key identifying the base unit of measure.
    STZHLintegerCancelled confirmation indicator.
    LTXA1textDescription for the confirmation.
    IEDDdateConfirmed date for the operation's execution finish.
    ISDDdateConfirmed date for the operation's execution start.
    ERSDAdateConfirmation entry date.
    ERZETtimeConfirmation entry time.
    MEINHtextForeign key identifying the unit of measure for the confirmation.
    IEDZtimeConfirmed time for the operation's execution finish.
    ISDZtimeConfirmed time for the operation's execution start.
    APLZLtextGeneral counter for order.
    AUFNRtextForeign key identifying the production order number.
    AUERUtextPartial-final confirmation indicator.
    GMNGAdoubleIndicates the quantity confirmed.
    STOKZtextReverse indicator.
    AUFPLtextRouting number of operations in the order.
    XMNGAdoubleIndicates the scrap confirmed.
    ERNAMtextName of the person who created the record.

    Filtering: This table doesn't have any date field that can be used for filtering purposes. Therefore, it was joined with AUFK table to bring the filter by date when loaded from source.

    AFVC

    Input table for Operations within an order.

    FieldTypeDescription
    MANDTtextClient Identifier (Primary Key).
    APLZLtextGeneral counter for order (Primary Key).
    AUFPLtextRouting number of operations in the order (Primary Key).
    OBJNRtextObject number for the operation.
    LTXA1textIndicates the operation name.
    PLNTYtextForeign key identifying the operation type.

    Filtering: This table doesn't have any date field that can be used for filtering purposes. Therefore, it was joined with AFKO table to bring the filter by date when loaded from source.

    AUFK

    Input table for Order data.

    FieldTypeDescription
    MANDTtextClient Identifier (Primary Key).
    AUFNRtextProduction order number (Primary Key).
    BUKRStextForeign key identifying the company code.
    KOKRStextForeign key identifying the controlling area.
    ERDATdateDate on which the record was created.
    ERFZEITtimeTime on which the record was created.
    OBJNRtextObject number for the order.
    AUTYPtextIndicates the order category.
    AUARTtextIndicates the order type.
    ERNAMtextName of the person who created the record.

    Filtering: Date: ERDAT and AUTYP in ('10', '40').

    CDHDR

    Header input table for object changes.

    FieldTypeDescription
    MANDANTtextClient Identifier (Primary Key).
    CHANGENRtextChange record identifier (Primary Key).
    OBJECTCLAStextObject class category (Primary Key).
    OBJECTIDtextObject value (Primary Key).
    UDATEdateDate the change was executed.
    UTIMEtimeTime the change was executed.
    USERNAMEtextUser who executed the change.

    Filtering: Date: UDATE.

    CDPOS

    Log table for field change events for Work Orders, Operations and Notifications.

    FieldTypeDescription
    TABKEYtextChange table record identifier (Primary Key).
    CHNGINDtextIdentifies the type of change made (insertion, update) (Primary Key).
    MANDANTtextClient Identifier (Primary Key).
    CHANGENRtextChange record identifier (Primary Key).
    FNAMEtextField which was updated (Primary Key).
    OBJECTCLAStextObject class category (Primary Key).
    OBJECTIDtextObject value (Primary Key).
    TABNAMEtextTable name where the change was executed (Primary Key).
    VALUE_NEWtextValue which was updated into the table.
    VALUE_OLDtextValue which was updated out of the table.

    Filtering:

    • This table doesn't have any date field that can be used for filtering purposes. Therefore, it was joined with CDHDR table to bring the filter by date when loaded from source.
    • FNAME != 'KEY', TABNAME in ('AUFK', 'AFKO', 'AFPO', 'AFVC', 'AFRU').
    JCDS

    Input table containing all status changes for Production orders.

    FieldTypeDescription
    CHGNRtextChange record identifier (Primary Key).
    MANDTtextClient Identifier (Primary Key).
    OBJNRtextObject number (Primary Key).
    STATtextStatus to which the object was updated (Primary Key).
    UDATEdateDate when the change was executed.
    UTIMEtimeTime when the change was executed.
    USNAMtextName of the person who executed the change.
    INACTtextIndicates if the status is active.

    Filtering: Date: UDATE and INACT = '' or is null.

    JEST

    Table that keeps track of all current statuses for an order.

    FieldTypeDescription
    MANDTtextClient Identifier (Primary Key).
    OBJNRtextObject number (Primary Key).
    STATtextActive status of the object (Primary Key).
    INACTtextIndicates if the status is active.

    Filtering:

    • This table doesn't have any date field that can be used for filtering purposes. Therefore, it was joined with AUFK table to bring the filter by date when loaded from source.
    • INACT = '' or is null.
    MSEG

    Input table for Material Document Items.

    FieldTypeDescription
    MANDTtextClient Identifier (Primary Key).
    ZEILEtextMaterial document item number (Primary Key).
    MBLNRtextMaterial document item (Primary Key).
    MJAHRtextMaterial Document Year Identifier (Primary Key).
    CPUDT_MKPFdateDate the accounting document was entered.
    CPUTM_MKPFtimeTime the accounting document was entered.
    KZVBRtextIndicates the consumption posting.
    MATNRtextForeign key identifying the material number.
    KZBEWtextMovement indicator.
    BWARTtextForeign key identifying the movement type.
    AUFPStextIndicates the order item number.
    AUFNRtextIndicates the order number.
    KZZUGtextReceipt indicator.
    SOBKZtextSpecial stock indicator.
    USNAM_MKPFtextIndicates the user name.

    Filtering: Date: CPUDT_MKPF and AUFNR != ''.

    Master data tables

    ADCP

    Input table for Person/Address Assignment (Business Address Services) data.

    FieldTypeDescription
    ADDRNUMBERtextAddress Number of the Business (Primary Key).
    CLIENTtextClient Identifier (Primary Key).
    DATE_FROMdateDate from which record applies (Primary Key).
    NATIONtextIdentifier for international addresses.
    PERSNUMBERtextIdentifier of the person/user (Primary Key).
    DATE_TOdateDate to which record applies.
    DEPARTMENTtextDepartment the user is assigned to.
    FUNCTIONtextFunction or role of the user.

    Filtering: NATION = '' or NATION = 'I'.

    ADRP

    Input table for Persons (Business Address Services) data.

    FieldTypeDescription
    CLIENTtextClient Identifier (Primary Key).
    DATE_FROMdateDate from which record applies (Primary Key).
    NATIONtextIdentifier for International Addresses (Primary Key).
    PERSNUMBERtextIdentifier of the person/user (Primary Key).
    DATE_TOdateDate to which record applies.
    NAME_FIRSTtextName of the User.
    NAME_LASTtextLast name of the User.

    Filtering: NATION = '' or NATION = 'I'.

    MARC

    Input table for Plant data for Material data.

    FieldTypeDescription
    MANDTtextClient Identifier (Primary Key).
    MATNRtextMaterial Number Identifier (Primary Key).
    WERKStextPlant (Primary Key).
    KZKUPtextIndicator: Material can be co-product.
    MARM

    Input table for Units of Measure for Material data.

    FieldTypeDescription
    MANDTtextClient Identifier (Primary Key).
    MATNRtextMaterial Number Identifier (Primary Key).
    MEINHtextAlternative Unit of Measure for Stock keeping Unit (Primary Key).
    UMRENdoubleDenominator for conversion to base units of measure.
    UMREZdoubleNumerator for Conversion to Base Units of Measure.
    MBEW

    Input table for Material Valuation data.

    FieldTypeDescription
    MANDTtextClient Identifier (Primary Key).
    MATNRtextMaterial Number Identifier (Primary Key).
    BWKEYtextValuation Area (Primary Key).
    BWTARtextValuation Type (Primary Key).
    VERPRdoubleMoving average price/Periodic unit price.
    PEINHdoubleUnit price.
    STPRSdoubleStandard price.
    T001

    Input table for Company Codes data.

    FieldTypeDescription
    MANDTtextClient Identifier (Primary Key).
    BUKRStextCompany Code (Primary Key).
    BUTXTtextIdentifies the company name.
    WAERStextForeign key identifying the currency key.
    T001L

    Input table for Storage Locations data.

    FieldTypeDescription
    MANDTtextClient Identifier (Primary Key).
    WERKStextPlant (Primary Key).
    LGORTtextStorage Location (Primary Key).
    LGOBEtextDescription of storage location.
    T001W

    Input table for Plants/Branches data.

    FieldTypeDescription
    MANDTtextClient Identifier (Primary Key).
    WERKStextPlant Code identifier (Primary Key).
    NAME1textPlant name.
    BWKEYtextValuation Area.
    T003P

    Input table for Order Type Descriptions data.

    FieldTypeDescription
    CLIENTtextClient Identifier (Primary Key).
    SPRAStextLanguage Key (Primary Key).
    AUARTtextOrder Type (Primary Key).
    TXTtextOrder Type description.

    Filtering: SPRAS = var("language").

    T006A

    Input table for Measurement unit data.

    FieldTypeDescription
    MANDTtextClient Identifier (Primary Key).
    SPRAStextLanguage key identifier (Primary Key).
    MSEHItextMeasurement unit (Primary Key).
    MSEHTtextMeasurement unit description.

    Filtering: SPRAS = var("language").

    T156

    Input table for Movement Type data.

    FieldTypeDescription
    MANDTtextClient Identifier (Primary Key).
    BWARTtextMovement Type Identifier (Primary Key).
    SHKZGtextDebit/Credit indicator.
    XSTBWtextReversal movement type.
    T156T

    Input table for Movement Type descriptions data.

    FieldTypeDescription
    MANDTtextClient Identifier (Primary Key).
    KZVBRtextConsumption Posting (Primary Key).
    SPRAStextLanguage key identifier (Primary Key).
    KZBEWtextMovement indicator (Primary Key).
    BWARTtextMovement Type Identifier (Primary Key).
    KZZUGtextReceipt indicator (Primary Key).
    SOBKZtextSpecial stock indicator (Primary Key).
    BTEXTtextMovement Type description.

    Filtering: SPRAS = var("language").

    TCA02

    Input table for Language-dependent texts for TCA01: Task list types data.

    FieldTypeDescription
    MANDTtextClient Identifier (Primary Key).
    SPRAStextLanguage key identifier (Primary Key).
    PLNTYtextTask List Type (Primary Key).
    TXTtextDescription of the task list type.

    Filtering: SPRAS = var("language").

    TCURF

    Input table for Conversion Factors data.

    FieldTypeDescription
    MANDTtextClient Identifier (Primary Key).
    KURSTtextExchange rate type used for the conversion (Primary Key).
    FCURRtextOriginal currency (Primary Key).
    GDATUdateDate in which the record was created (Primary Key).
    TCURRtextDestination currency of the exchange rate (Primary Key).
    FFACTdoubleRatio for the "From" Currency Units.
    TFACTdoubleRatio for the "To" Currency Units.

    Filtering: KURST = var("exchange_rate_type").

    TCURR

    Input table for Exchange Rates data.

    FieldTypeDescription
    MANDTtextClient Identifier (Primary Key).
    KURSTtextExchange rate type used for the conversion (Primary Key).
    FCURRtextOriginal currency (Primary Key).
    TCURRtextDestination currency of the exchange rate (Primary Key).
    GDATUdateDate on which the exchange rate is valid (Primary Key).
    UKURStextThe absolute exchange rate on the specific date.

    Filtering: KURST = var("exchange_rate_type").

    TCURX

    Input table for Decimal Places in Currencies.

    FieldTypeDescription
    CURRKEYtextCurrency identifier (Primary Key).
    CURRDECintegerNumber of decimal places.
    TGSBT

    Input table for Business Area Names data.

    FieldTypeDescription
    GSBERtextBusiness Area (Primary Key).
    MANDTtextClient Identifier (Primary Key).
    SPRAStextLanguage Key (Primary Key).
    GTEXTtextBusiness Area description.

    Filtering: SPRAS = var("language").

    TJ02T

    Input table for System status descriptions data.

    FieldTypeDescription
    SPRAStextLanguage Key (Primary Key).
    ISTATtextSystem status (Primary Key).
    TXT04textIndividual status of an object (short form).
    TXT30textObject status.

    Filtering: SPRAS = var("language").

    TKA01

    Input table for Controlling area descriptions data.

    FieldTypeDescription
    MANDTtextClient Identifier (Primary Key).
    KOKRStextControlling Area (Primary Key).
    BEZEItextName of the controlling area.
    TTZCU

    Input table for Customizing time zones.

    FieldTypeDescription
    CLIENTtextClient Identifier (Primary Key).
    FLAGACTIVEtextIndicates active records.
    TZONESYStextForeign key identifying the system time zone.
    TZONEDEFtextForeign key identifying the default time zone for user.

    Filtering: FLAGACTIVE = 'X'.

    TTZD

    Input table for Summer time rules.

    FieldTypeDescription
    CLIENTtextClient Identifier (Primary Key).
    DSTRULEtextDaylight saving time rule (Primary Key).
    FLAGACTIVEtextIndicates active records.
    DSTDIFFtextIndicates the difference between daylight saving time and winter time.

    Filtering: FLAGACTIVE = 'X'.

    TTZDF

    Input table for Summer time rules (fixed annual dates).

    FieldTypeDescription
    CLIENTtextClient Identifier (Primary Key).
    DSTRULEtextDaylight saving time rule (Primary Key).
    YEARACTintegerValid for year (Primary Key).
    DATEFROMdateStarting date for the daylight saving time.
    TIMEFROMtimeStarting time for the daylight saving time.
    DATETOdateEnding date for the daylight saving time.
    TIMETOtimeEnding time for the daylight saving time.
    TTZDV

    Input table for Summer time rules (variable dates).

    FieldTypeDescription
    CLIENTtextClient Identifier (Primary Key).
    DSTRULEtextDaylight saving time rule (Primary Key).
    YEARFROMintegerValid from year (Primary Key).
    MONTHFROMtextStarting month for the daylight saving time.
    WEEKDFROMtextStarting day of the week for the daylight saving time.
    WEEKDCFROMtextStarting weekday in month (occurrence number) for the daylight saving time.
    TIMEFROMtimeStarting time for the daylight saving time.
    MONTHTOtextEnding month for the daylight saving time.
    WEEKDTOtextEnding day of the week for the daylight saving time.
    WEEKDCTOtextEnding weekday in month (occurrence number) for the daylight saving time.
    TIMETOtimeEnding time for the daylight saving time.
    TTZR

    Input table for Time zone rules.

    FieldTypeDescription
    CLIENTtextClient Identifier (Primary Key).
    ZONERULEtextTime zone rule (Primary Key).
    FLAGACTIVEtextIndicates active records.
    UTCDIFFtextIndicates the difference of time zone from UTC.
    UTCSIGNtextIndicates the sign of the difference from UTC.

    Filtering: FLAGACTIVE = 'X'.

    TTZZ

    Input table for Time zones.

    FieldTypeDescription
    CLIENTtextClient Identifier (Primary Key).
    TZONEtextTime zone (Primary Key).
    FLAGACTIVEtextIndicates active records.
    ZONERULEtextIndicates the time zone rule.
    DSTRULEtextIndicates the daylight saving time rule.

    Filtering: FLAGACTIVE = 'X'.

    USR02

    Input table for User type data.

    FieldTypeDescription
    MANDTtextClient Identifier (Primary Key).
    BNAMEtextUser key identifier (Primary Key).
    TZONEtextTime Zone.
    USTYPtextClassification of the user.
    USR21

    Input table for User Name/Address Key Assignment data.

    FieldTypeDescription
    MANDTtextClient Identifier (Primary Key).
    BNAMEtextUser key identifier (Primary Key).
    ADDRNUMBERtextAddress Number of the Business.
    KOSTLtextUser's cost center.
    PERSNUMBERtextIdentifier of the person/user.

    Configuring transformations

    Seed files

    Automation_estimates_raw

    This seed file is used to add automation-related properties to each activity, used for the automation potential dashboard. For more information, see Simulating Automation Potential.

    FieldTypeDescription
    ActivityTextDisplay name for the activity
    Event_costDoubleCost associated with the activity
    Event_processing_timeIntegerProcessing time associated with the activity (in milliseconds)

    Due_dates_configuration_raw

    This seed file is used to define properties for the due dates. For more information, see Due Dates.

    FieldTypeDescription
    Due_dateTextThe name of the due date
    Due_date_typeTextThe Due date type
    Fixed_costsBooleanAn indication whether costs are fixed or time based
    CostDoubleFixed costs: The amount of costs. Variable costs: The amount of costs per Time and Time_type
    TimeIntegerA number indicating the amount of time in case of time-based costs
    Time_typeTextType of time period for cost calculations. This can be any of the following values: day, hour, minute, second or millisecond

    Activity_configuration_raw

    This seed file is used to set properties of activities.

    FieldTypeDescription
    ActivityTextName of the activity
    Activity_orderIntegerHow the activities are ordered
    Activity_typeTextType of the activity
    AutomatedBooleanWhether the activity is automated or not

    User_type_raw

    This seed file is used to set properties for domain fixed values of User_type codes.

    FieldTypeDescription
    User_typeTextUser type code
    User_type_descriptionTextDescription of the user type
    AutomatedBooleanWhether the user type is automated or not

    Order_status_configuration_raw

    This seed file is used to set the relevant statuses for production orders.

    FieldTypeDescription
    Order_status_codeTextThe code of the order status
    Order_status_descriptionTextDescription of the order status
    Status_orderIntegerDefines hierarchy of most relevant statuses

    Production Orders can go through multiple statuses at the same time, and some of them may not be useful for a clear analysis of the process. The seed file Order status configuration is used to filter order statuses used in the transformations, break ties when more than one status is active (based on the standard process flow) and add the descriptions of the statuses. Specific logics where created to select only one current status (the 'main' one) for each Production order, using the order predefined. Also, to select the listed statuses in the change-status models. These logics are further explained in the Design Details section. For your reference, all the Order_status_codes and their descriptions to populate this seed file can be found in the TJ02T (System status texts) SAP ECC table.

    Note: Please consider not adding status code I0001 as it refers to the creation of either orders or operations. This activities are already being generated based on the transactional information, thus, adding this status will just duplicate them.

    Production_order_category_raw

    This seed file is used to set descriptions for production order categories.

    FieldTypeDescription
    Order_categoryTextThe order category
    Category_descriptionTextDescription of the order category

    In SAP, the order category codes and their descriptions are customizable. Production order category is used to set the order categories desired to be present in the transformations. For your reference, all the Order_category_codes and their descriptions to populate this seed file can be found in the DD07T (DD: Texts for Domain Fixed Values (Language-Dependent)) table. This is a big table so it is recommended to filter the table by 'Domain' = AUFTYP' and the Language value desired (e.g. 'E' for english) to bring only the Production order category values.

    Dbt variables

    VariableTypeDescription
    date_formatstringSpecifies the format variable for converting to date depending on the destination.
    languagestringThis variable specifies the system language, set accordingly to the default SAP system language. Default value is E (English).
    exchange_rate_typestringDefines the exchange rate to be applied on client currency in order to convert it into a single currency. Default value is M.
    display_currencystringThis variable defines the currency to be displayed. Default value is USD.
    use_operation_eventsbooleanDetermines if the Operation events are to be displayed or not. Default value is 'true'.
    jcds_tracking_activatedbooleanWhen JCDS table tracking is activated and the variable is enabled, specific models for status-change activities will be created. Default value is 'true'.
    production_deficit_percentageintegerThis variable is needed for setting up the 'Quantity deficit' tag. This should be populated as a percentage that represents the maximum admissible value of the ratio Goods_received_quantity / Order_item_quantity. (e.g. 5 would mean 5%). If there is no threshold for deficit, then set variable to zero (0).

    Design specifications

    Objects

    The following diagram shows all objects that are used for the process.

    Process objects

    ObjectInput Data
    Material Document ItemsMSEG
    OperationsAFVC
    Production order ItemsAFPO, AUFK
    Production ordersAFPO, AUFK

    Activities

    ActivityObjectDescription
    Post goods issueMaterial document itemsMovement of consumption of raw material needed for the Production order.
    Post goods receiptMaterial document itemsMovement of reception of finished product derived from the Production order.
    Reverse goods receiptMaterial document itemsReception reversal of finished products coming from the Production order.
    Reverse goods issueMaterial document itemsConsumption reversal of raw material needed for the Production order.
    Change operation descriptionOperationsA change in the description of an operation within the Production order. This activity will only be displayed if the variable 'use_operation_events' is set as 'true'.
    Cancel operation confirmationOperationsCancel an operation previously confirmed. This activity will only be displayed if the variable 'use_operation_events' is set as 'true'.
    Create partial operation confirmationOperationsPartial confirmation done at operation level.
    Create final operation confirmationOperationsFinal confirmation done at operation level. This activity will only be displayed if the variable 'use_operation_events' is set as 'true'.
    Execute operation (Partial/Final)OperationsThis activity represents the time frame an operation took place. It contains Event_start and Event_end attributes. Basically, these fields are taken from the Confirmations (AFRU) table, where the actual execution times should be entered. This activity will be repeated as many times as confirmations are available in AFRU table. The name of the activity depends on the Final_indicator (AFRU."AUERU"). If the Final_indicator field classifies the confirmation record as a final confirmation, then the activity ni the model will be 'Execute operation (Final)', otherwise it will be named as 'Execute operation (Partial)'. This activity will only be displayed if the variable 'use_operation_events' is set as 'true'.
    Execute all operationsOperationsThis activity represents the time frame where all operations within a Production order took place. Basically, it looks (in AFRU table) for the first actual start execution date-time, which will be the Event_start, and the last actual finish execution date-time, which will be the Event_end, in all the operations of the same Production order. This activity will only be displayed if the variable 'use_operation_events' is set as 'false'. This activity summarizes all operations executions when the analyst does not want to have it broken down into each operation.
    Change operation status to valueOperationsIn the PP process, an operation can move across many statuses. Usually these statuses are related to the Production order status. This activity will only be displayed if the variable 'jcds_tracking_activated' is set as 'true' and the 'use_operation_events' is set as 'true'.
    Change order descriptionProduction ordersChanging the entered description of a production order.
    Change total order quantityProduction ordersChange in the production order total target quantity.
    Change order scheduling typeProduction ordersChange in the type of scheduling set in the production order.
    Change order basic finish dateProduction ordersChange in the date the user estimates a production order will finish.
    Change order basic start dateProduction ordersChange in the date the user estimates a production order will start.
    Change order basic start timeProduction ordersChange in the time the user estimates a production order will start.
    Change order basic finish timeProduction ordersChange in the time the user estimates a production order will finish.
    Change order total scrap quantityProduction ordersThe scrap quantity entered in the Production order has increased/decreased.
    Change order priorityProduction ordersThe priority entered in the Production order has increased/decreased.
    Cancel production order confirmationProduction ordersCancel a production order, that was previously confirmed.
    Create partial production order confirmationProduction ordersPartial confirmation done at Production order level.
    Create final production order confirmationProduction ordersFinal confirmation done at Production order level.
    Create production orderProduction ordersCreation of a Production order at header level.
    Execute production order (Partial/Final)Production ordersThis activity represents the time frame in which a Production order took place. It contains Event_start and Event_end. Basically, these fields are taken from the Confirmation (AFRU) table, where the actual execution times should be entered. If many confirmations exist, then many activities of execution will be generated, one for each confirmation record. The name of the activity depends on the Final_indicator (AFRU."AUERU"). If the Final_indicator field classifies the confirmation record as a final confirmation, then the activity ni the model will be 'Execute production order (Final)', otherwise it will be named as 'Execute production order (Partial)'.
    Change production order status to ReleasedProduction ordersThe Release of a Production order. The release is a main step of the SAP ECC PP process. When the variable 'jcds_tracking_activated' is set to 'false', this activity is generated with a specific logic. Otherwise, when the variable is set to 'true' this activity will still be generated by JDCS related models.
    Change production order status to valueProduction ordersIn the PP process, a Production order move across many statuses. This activity will track all the statuses for which the Production order went through. It will only be displayed if the variable 'jcds_tracking_activated' is set as 'true'.
    Change storage locationProduction order itemsChange in the production order item total storage location.
    Change indicator: order item not relevant for MRPProduction order itemsMRP in SAP ECC PP means 'Material requirements planning'. When this field is flagged, it means the item is not relevant for planning requirements anymore. A new change in this field may affect the planned material requirements for the Production order.
    Change stock typeProduction order itemsChange in what type of stock the production order item is.
    Create production order itemProduction order itemsCreation of a Production order at item level.

    Design details

    Activity design

    The app template follows 2 approaches for naming activities:

    • Activities that can be named based on transactional tables
    • Activities that can be named based on historical tables Each approach follows a different logic in the transformations.

    Approach 1: Activities that can be named based on transactional tables.

    These activities have specific models where they were created and the name of the model derives from the activity name.

    Example: Production_order_creation_events

    Approach 2: Activities that can be named based on historical tables.

    These activities have specific models and they are based on SAP ECC PP historical tables:

    • Approach 2.1: JCDS for status change events

      All the activity names in the status change event models were created in the following way:

       'Change' + [Object_name] + ' status to ' + [Status_description] Example: Change production order status to Released 

      In these models, the Order_status_configuration seed file is used to filter only the statuses desired to be tracked and their descriptions.

    • Approach 2.2: CDHDR and CDPOS for change log events

      All the activity names in the change log event models were created in the following way:

       'Change' + [Field_name] Example: Change total order quantity 

      In these models, the Field_name comes from the selection of fields enabled to be tracked in CDHDR and CDPOS table.

    Relevant considerations for both approaches:

  • To enable the creation of the models based on JCDS table, the variable 'jcds_tracking_activated' needs to be set to 'true' in advance.

  • If the variable is set as 'true', JCDS table needs to be enabled in SAP. Otherwise all models related to JCDS will produce no records. Also, for tracking change log events, CDHDR and CDPOS need to be properly set. Detailed instructions can be found in the section Instructions for enabling History Tracking in SAP ECC Production Planning.

  • Ìf neither of the aforementioned tables are activated in the Client, the transformations will still work properly.

  • Instructions for enabling History Tracking in SAP ECC Production Planning

    These instructions are intended to help analyst to enable the SAP ECC PP historical tracking of:

    • Status changes of both, orders and operations based on JCDS table
    • Change logs based on CDHDR and CDPOS tables

    Instructions:

  • Run spro t-code and click on 'SAP Reference IMG' option.
  • Follow the path shown below: 'Plant maintenance and Customer Service'> 'Maintenance and Service Processing'> 'Functions and Settings for Order types'
  • Scroll down and click on the clock icon of the option 'Define Change Docs., Collective Purc. Req. Indicator, Operation No. Interval'
  • Search the Plant for which the changes need to be enabled and select the following items for the required order types (Production Orders, Process Orders and Rework Orders):
    • OrdStChngDc
    • Change document
    • OpstatChangeDoc

    These checks will enable JCDS (historical table of statuses) and CDPOS tables.

  • Save the changes and exit the transaction.

  • Go to the transaction aut01 and select the table needed to be tracked (e.g. AFKO table, GAMNG field) and check the 'Logging' option.

  • Enable also the 'Logging' of the Data Element needed for that field.
  • Repeat the previous two steps for all the specific fields needed.
  • For this app template, the specific fields which need to be enabled in SAP are the following:

    TableFields
    AUFKKTEXT
    AFKOGAMNG, TERKZ, GLTRP, GSTRP, GLUZP, GSUZP, GASMG, APRIO
    AFPOPSMNG, PSAMG, LGORT, DNREL, INSMK
    AFVCLTXA1
  • Save the changes and exit the transaction.
  • Note regarding time zone conversions

    In SAP ECC, there are specific date/time fields that are recorded in user’s time zone instead of server’s. These fields are being used for all activities related to execution events:

    • Execute production order (Partial/Final)
    • Execute operation (Partial/Final)
    • Execute all operations

    Specific logics in supporting models were created to convert these timestamps into server’s time zone to avoid discrepancies between timestamps of the activities (activities happening in an order that is impossible).

    These logics adjust the following:

  • Time zone difference (in minutes) between each user and the SAP server
  • Summertime rule applied to the user (as this will affect the time zone difference calculated before)
  • Summertime rule applied to the server (as this will also affect the time zone difference calculated before)
  • 1. Time zone difference (in minutes) between each user and the SAP server

    This logic works by calculating the UTC time for both, the user and server. After that, it brings the difference between both in minutes. Finally, this difference is applied to the corresponding SAP fields that are stored in the user’s timezone.

    Example 1: Consider the following scenario. 1. User1 is in Chile (GMT-4) and creates the order at 8:30:00 AM CH 2. The server is in Brazil (GMT-3), so the creation time is recorded as 9:30:00 AM BR 3. User1 enters the start_time for the execution of an order at 09:00:00 AM CH 4. The record is created without any changes as it is stored in user’s time zone (09:00:00 AM CH) If the logic is not applied, then the activities would be order as follows: 1. Execute production order (9:00 AM CH) 2. Create production order (9:30 AM BR) This cannot ever happen in a system as it is impossible to execute an order that was not created yet. The supporting model will adjust the records to the server’s timezone, adding or subtracting the corresponding difference (in this case, it is needed to add 1 hour to the Execute event): 1. Create production order (9:30 AM BR) 2. Execute production order (10:00 AM BR) 

    2 & 3. Summertime rules applied to the user and to the server

    These two summertime rule logics are also applied to consider those cases where the original time zone was modified in summertime.

    They work as follows:

    First, convert the record in user’s time to server’s (see bullet 1). Then, adjust the record with the user summertime rule, if applicable. Finally, adjust the record with the server summertime rule, if applicable.

    Example 2: Consider the following scenario. 1. User1 is in Chile (GMT-4) and summertime rule does not apply (then, still in GMT-4) 2. The server is in Brazil (GMT-3) and summertime rule applies (then, GMT-2) 3. User1 executes an operation at 8:30:00 AM chilean local time The correct value for the execution time should be 10:30:00 AM, brazilian local time. The conversion process will apply all 3 logics as follows: 1. For time zone conversion: the logic adds 60’ (GMT-4 vs GMT-3) 2. For summertime rule applied to the user, the logic subtracts 0’ (summertime rule is not active in Chile) 3. For summertime rule applied to the server, the logic adds 60’ (GMT-3 vs GMT-2) As a result, the total addition is 120’. 

    Known limitations

    • Release timestamp: when the JCDS table is not being used, the activity for the release gets populated based on a date only (as there is no time stored in the system). The logics where created to reconstruct the timestamp but it won't be as precise as when using the JCDS table.
    • Execution time frames: Usually most of the manufacturing activities may not be logged automatically in the system, and their execution time is always set manually. These times are used to create all "Execution" activities. This means that if the user that is uploading this info makes a mistake, that mistake will be transferred to the model. If this is the case, we recommend suggesting this as an insight for improving the process.
    • User timezone changed multiple times: There are specific date/time fields that are recorded in the user timezone. Specific logic was created to convert these fields into the server timezone, to avoid discrepancies between timestamps of the activities. However, if the user has changed multiple times their timezone, as there is no Master Data historical information, this logic will only take the current record for that specific user. This may still cause some discrepancies in timestamps for specific activities performed. This should be very rare as users involved in production activities scarcely move to different timezones.

    Troubleshooting

    • Change status and Change log records have to be configured: In the SAP ECC PP environment, in order to be tracked, they need to be enabled. These configurations are not retroactive to previously registered records. To enable the tracking of Order status changes and change logs of specific fields please follow the Instructions for enabling History Tracking in SAP ECC Production Planning.
    • Data not recorded in CDHDR/CDPOS objects: Change events have to be configured in the environment in order to be tracked; these configurations are not retroactive to previously registered records.

    ncG1vNJzZmiZoKXBprnPpZitnaOZvKS%2FjZujqJpemLyzsY2woKecn6zAb7rErWadp5Oquqa605qroqeeZMKqvMCtn4mIg3adcJ%2BgiWSJqp%2BZwqTAyKilZoiclruvtc2gZaGsnaE%3D

     Share!