Classification data not updating in change records after regulatory attribute modifications

We’re facing a compliance risk issue in SAP PLM 2021. When regulatory attributes are modified in the classification system (transaction CL20N), the associated change records don’t reflect these updates. The classification data synchronization appears broken - we update attributes like RoHS compliance status, REACH registration numbers, or material declarations, but the ECO/ECN records remain stale.

This creates a serious compliance problem because our audit trail doesn’t show the actual regulatory changes. We’ve verified the classification updates are saving correctly, but they’re not triggering updates to the linked change masters. Has anyone successfully implemented BAdI enhancements to ensure regulatory attribute changes propagate to change documentation? We need the change records to capture what was changed, when, and by whom for regulatory reporting.

Let me provide a complete solution addressing all three focus areas:

Classification Data Synchronization: The root cause is that SAP’s classification system (CL* transactions) and change management system (EC* transactions) operate independently. To bridge this gap, implement a custom synchronization framework:

  1. Create a change document object in transaction SCDO:

    • Object: ZCLASSREG (Classification Regulatory Changes)
    • Tables: AUSP (characteristic values), INOB (object links)
    • Include fields: ATINN, ATWRT, AEDAT, AENAM
  2. Implement function modules for change document writing:

    • ZCLASSREG_WRITE_DOCUMENT (called when classification saves)
    • Read old values from AUSP before update
    • Write delta to CDHDR/CDPOS tables
    • Link to material/BOM via OBJEK field
  3. Configure table logging in transaction SE13:

    • Enable change documents for table AUSP
    • Set logging class to ‘1’ (Log all changes)
    • Filter by class type ‘023’ (regulatory compliance classes)

Regulatory Attribute Change Triggers: Implement BAdI BADI_CLASSIFICATION_DATA with method IF_EX_CLASSIFICATION_DATA~AFTER_SAVE:

  1. Filter for regulatory characteristic changes:

    • Read table CAWN to identify characteristics with regulatory flags
    • Compare IS_AUSP_OLD vs IS_AUSP_NEW structures
    • Build internal table IT_CHANGES with deltas
  2. Automatic ECN creation logic:

    • Check if material is under change control (table AENR)
    • If yes, create ECN using BAPI_ENGINEERING_CHANGE_CREATE
    • If no, create change proposal for review
    • Populate ECN description with characteristic names and value changes
  3. Value formatting for audit trail:

    • For date fields: Convert ATWRT using conversion exit
    • For text fields: Retrieve from table CAWNT (characteristic value texts)
    • For numeric fields: Format with proper units from CAWN-ATFOR
    • Build description string: “[Characteristic]: [Old Value] → [New Value]”

BAdI Enhancement Usage: Complete BAdI implementation structure:

  1. Enhancement Implementation (transaction SE19):

    • Enhancement: SCLASS_ENHANCE_001
    • BAdI Definition: BADI_CLASSIFICATION_DATA
    • Implementing Class: ZCL_REGULATORY_SYNC
  2. Method IF_EX_CLASSIFICATION_DATA~AFTER_SAVE implementation:

    • Input: IS_KLAH (class header), IT_AUSP_NEW (new values), IT_AUSP_OLD (old values)

    • Logic flow: a) Loop through IT_AUSP_NEW comparing with IT_AUSP_OLD

      b) Filter for regulatory characteristics (check CAWN-ATFOR = ‘REG’)

      c) For each delta, populate structure for ECN creation

      d) Call function module ‘ENGINEERING_CHANGE_CREATE’

      e) Write audit log to custom Z-table ZREG_AUDIT_LOG

  3. Batch update handling:

    • Collect all changes in session using GUID from KLAH-CLINT
    • Use function module ‘BAPI_TRANSACTION_COMMIT’ only after all characteristics processed
    • Create single ECN with table control in description (use SAVE_TEXT with text format '* ')
    • Example text format:
      
      Regulatory Compliance Update - Annual Review 2025
      * RoHS Status: Compliant → Non-Compliant (Lead content)
      * REACH Registration: REG-2024-001 → REG-2025-003
      * Material Declaration: MD-Rev3 → MD-Rev4
      
  4. User context preservation:

    • Read SY-UNAME at time of classification save
    • Pass to ECN creation as originator (field AENNR-USNAM)
    • Log to Z-table with timestamp SY-DATUM and SY-UZEIT

Critical Configuration Steps:

  1. Transaction SPRO → Cross-Application Components → Classification System → Master Data → Define regulatory characteristic types (create custom flag field in CAWN)
  2. Transaction SPRO → Logistics General → Engineering Change Management → Change Master → Define change type ‘REG’ for regulatory updates
  3. Create authorization object Z_REG_CHG to control who can trigger automatic ECN creation from classification changes
  4. Implement workflow event linkage (SWETYPV) to notify compliance team when regulatory ECNs are created

Monitoring and Validation: Create custom report (transaction SE38) to reconcile:

  • Classification changes in AUSP/CDPOS (last 30 days)
  • Corresponding ECN records in AENR
  • Identify orphaned classification changes without change records
  • Schedule daily via SM36 with email alerts for discrepancies

This comprehensive solution ensures every regulatory attribute change creates a proper audit trail through the change management system, addresses the synchronization gap, implements proper triggers, and leverages BAdI enhancement points effectively. The batch update handling prevents ECN explosion while maintaining complete traceability for compliance audits.


This draft is based on general SAP PLM knowledge. It has not been verified against your specific version and environment. Practitioners: verify the steps and share your experience below.

This is a known gap in standard SAP PLM functionality. Classification changes don’t automatically create change documents because they’re stored in different tables (AUSP/INOB vs. CDHDR/CDPOS). You need to implement custom logic. Check if you have any BAdI implementations for BADI_CLASSIFICATION_DATA or BADI_ECM_CHECK_DATA_CHANGE. These are the hook points where you can intercept classification updates and create corresponding change master entries.

Tested this on ECC 6.0 EHP8 and creating the ZCLASSREG change document object in SCDO with AUSP and INOB table entries successfully captured regulatory attribute modifications in our change records.

Maria’s right about the table structure issue. We solved this by implementing a custom change document object specifically for classification data. Use transaction SCDO to create a new object type, then implement the write functions to capture AUSP table changes. Link this to your change master workflow using event linkage in SWETYPV. The tricky part is ensuring the classification change timestamp matches the change master creation time - you need to read the AUSP-AEDAT field and pass it through to the change document.

I want to emphasize the regulatory attribute change triggers aspect. In our implementation, we used BAdI BADI_MATERIAL_CHECK with method CHECK_DATA_SAVE to intercept classification updates. The key is to compare old vs. new values for regulatory-specific characteristics (we filtered by class type ‘023’ for material compliance). When changes are detected, we automatically create an ECN using function module ‘ENGINEERING_CHANGE_CREATE’ with the classification delta in the description field. This ensures every regulatory change has a formal change record.

Thanks everyone. Susan, your approach sounds promising. Are you capturing the actual attribute values in the ECN description, or just flagging that a change occurred? We need to show the before/after values for audit purposes. Also, does your solution work for batch updates when multiple regulatory attributes change simultaneously? We often update 10-15 compliance fields at once during annual regulatory reviews.

For capturing before/after values, you’ll need to read from table CAWN (characteristic values) and AUSP (characteristic value assignments) in your BAdI implementation. Build a comparison structure that stores ATINN (characteristic internal number), ATWRT (old value), and ATWRT_NEW (new value). Then format this into the ECN long text using function module ‘SAVE_TEXT’. For batch updates, wrap the logic in a BAPI transaction - collect all changes in an internal table, then create a single ECN with multiple line items in the description. This avoids creating 15 separate ECNs for one regulatory review session.

From an audit perspective, make sure your solution also logs WHO made the classification change. The standard AUSP table has AENAM (changed by) but it’s not always populated correctly if changes come through interfaces. We added custom logging to a Z-table with fields: OBJEK (object key), ATINN (characteristic), OLD_VALUE, NEW_VALUE, CHANGE_USER, CHANGE_TIMESTAMP, ECN_NUMBER. This creates an immutable audit trail that links classification changes to change masters. It’s saved us multiple times during FDA and ISO audits.