We implemented automated intercompany profit elimination reporting that reduced our month-end close by 3 days. Previously, our team spent 40+ hours manually calculating elimination entries across 12 legal entities.
Our solution leverages CDS views to handle the elimination logic directly at the database layer. The core CDS view joins intercompany transaction tables with profit margin master data, calculating unrealized profits in real-time. We built a Fiori analytical app on top that provides drill-down capabilities by company code, profit center, and material group.
The key was designing the CDS view with proper associations to maintain audit trails:
define view Z_IC_PROFIT_ELIM as select from
I_IntercompanyTransaction as IC
association [1] to I_ProfitMargin as PM
on IC.Material = PM.Material
where IC.TransactionType = 'INTERCO'
and IC.FiscalPeriod = $parameters.period
The Fiori app automatically generates audit-ready reports with complete lineage back to source transactions. Finance team can now validate eliminations in under 2 hours versus the previous 2-day process.
How did you structure the authorization model for the Fiori app? Intercompany elimination data is sensitive since it reveals profit margins between entities. We’re considering a similar implementation but concerned about ensuring proper segregation - regional controllers should only see their entity combinations, while group controllers need full visibility across all intercompany relationships.
Great question. We use time-dependent associations in the CDS view that reference the profit margin valid on the IC transaction posting date. The association includes validity date conditions to ensure we’re always using the correct historical margin percentage. This prevents recalculation discrepancies during audits.
Currency conversion happens within the CDS view using standard SAP currency conversion functions. We convert all amounts to group reporting currency using the rate valid on the transaction posting date. The view includes both original currency amounts and converted amounts in separate fields, which is critical for audit trails. For period-end adjustments due to rate changes, we run a separate reconciliation report that identifies translation differences requiring manual journal entries.
This implementation demonstrates best practices for modern financial close automation in S/4HANA. Let me summarize the key architectural decisions and their benefits:
CDS View Design for Elimination Logic:
The foundation is a well-structured CDS view that handles complex elimination calculations at the database layer. Using time-dependent associations ensures historical accuracy - profit margins are referenced based on transaction posting dates, not current values. This prevents recalculation discrepancies during audits and maintains data integrity across fiscal periods. The view incorporates currency conversion functions directly, converting all amounts to group reporting currency while preserving original currency data for audit trails. Including proper associations to master data tables (profit margins, company codes, profit centers) enables efficient query execution and maintains referential integrity.
Fiori Analytical App Implementation:
The Fiori app leverages the CDS view as its data source, providing intuitive drill-down capabilities by company code, profit center, and material group. This eliminates the need for data extraction and Excel-based analysis. The UI automatically reflects authorization restrictions defined at the CDS layer, ensuring proper data segregation without additional coding. Real-time analytics enable finance teams to identify issues during the close process rather than discovering them during final reconciliation.
Audit-Ready Reporting Architecture:
The solution maintains complete lineage from elimination entries back to source intercompany transactions. This is achieved through proper association chains in the CDS view and comprehensive field selection including document numbers, posting dates, and transaction references. The separation of original and converted currency amounts provides transparency for auditors reviewing foreign exchange impacts. Time-dependent margin associations ensure that elimination calculations can be reproduced exactly as they appeared in any historical period.
Performance and Scalability Considerations:
Executing elimination logic at the database layer through CDS views significantly outperforms traditional extraction-transformation-loading approaches. The view uses appropriate indexes and associations to optimize query performance even with large transaction volumes across multiple entities. The 40-hour to 2-hour reduction in processing time demonstrates the efficiency gains from this architecture.
Authorization and Data Security:
CDS access controls with company code restrictions provide granular security at the data level. Regional controllers see only their relevant entity combinations, while group controllers have full visibility. Field-level restrictions on sensitive data like profit margin percentages add an additional security layer. This role-based approach scales well as organizations add legal entities or restructure reporting hierarchies.
For organizations implementing similar solutions, I recommend starting with a pilot covering 2-3 high-volume intercompany relationships. Validate the CDS view logic against manual calculations for at least one full quarter before expanding scope. Pay special attention to edge cases like mid-period organizational changes, material reclassifications, and retroactive transaction postings. Document the association chains clearly as these become critical during external audits. Consider implementing automated reconciliation controls that compare CDS-generated eliminations against prior period patterns to catch potential logic errors early.
This is excellent work. How are you handling the scenario where profit margins change mid-period? We’ve seen cases where material master updates create timing differences between the original IC sale and the elimination calculation. Does your CDS view use time-dependent associations or do you snapshot the margin data at transaction time?