I_ProductSpecification
Product Specification
I_ProductSpecification is a Composite CDS View that provides data about "Product Specification" in SAP S/4HANA. It reads from 2 data sources (I_ProdSpecType, I_Specification) and exposes 29 fields with key fields ProductSpecificationInternalID, ProductSpecificationChgState. It has 12 associations to related views. Part of development package VDM_PLMB_SPC_BAS_OP.
Data Sources (2)
| Source | Alias | Join Type |
|---|---|---|
| I_ProdSpecType | _ProdSpecType | inner |
| I_Specification | _Specification | from |
Associations (12)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [0..1] | I_ChangeMaster | _ChangeMaster | _ChangeMaster.ChangeNumber = $projection.ChangeNumber |
| [1..1] | I_ProdSpecNonHistoric | _ProdSpecNonHistoric | _ProdSpecNonHistoric.ProductSpecificationInternalID = $projection.ProductSpecificationInternalID |
| [0..*] | I_ProdSpecDescription | _ProdSpecDescription | _ProdSpecDescription.ProductSpecificationInternalID = $projection.ProductSpecificationInternalID and _ProdSpecDescription.ProdSpecDescValidityStartDate <= $projection.ProdSpecValidityStartDate and _ProdSpecDescription.ProdSpecDescValidityEndDate >= $projection.ProdSpecValidityEndDate |
| [0..*] | I_ProdSpecStdCmpstnHeader | _ProdSpecStdCmpstnHeader | _ProdSpecStdCmpstnHeader.ProductSpecificationInternalID = $projection.ProductSpecificationInternalID and _ProdSpecStdCmpstnHeader.ProdSpecCmpstnHdrValdtyStrtDte <= $projection.ProdSpecValidityStartDate and _ProdSpecStdCmpstnHeader.ProdSpecCmpstnHdrValdtyEndDte >= $projection.ProdSpecValidityEndDate |
| [0..*] | I_ProdSpecAllergenCmpstnHeader | _ProdSpecAllergenCmpstnHeader | _ProdSpecAllergenCmpstnHeader.ProductSpecificationInternalID = $projection.ProductSpecificationInternalID and _ProdSpecAllergenCmpstnHeader.ProdSpecCmpstnHdrValdtyStrtDte <= $projection.ProdSpecValidityStartDate and _ProdSpecAllergenCmpstnHeader.ProdSpecCmpstnHdrValdtyEndDte >= $projection.ProdSpecValidityEndDate |
| [0..*] | I_ProdSpecNutrientCmpstnHdr | _ProdSpecNutrientCmpstnHdr | _ProdSpecNutrientCmpstnHdr.ProductSpecificationInternalID = $projection.ProductSpecificationInternalID and _ProdSpecNutrientCmpstnHdr.ProdSpecCmpstnHdrValdtyStrtDte <= $projection.ProdSpecValidityStartDate and _ProdSpecNutrientCmpstnHdr.ProdSpecCmpstnHdrValdtyEndDte >= $projection.ProdSpecValidityEndDate |
| [0..*] | I_ProdSpecCmpstnHeader | _ProdSpecCmpstnHeader | _ProdSpecCmpstnHeader.ProductSpecificationInternalID = $projection.ProductSpecificationInternalID and _ProdSpecCmpstnHeader.ProdSpecCmpstnHdrValdtyStrtDte <= $projection.ProdSpecValidityStartDate and _ProdSpecCmpstnHeader.ProdSpecCmpstnHdrValdtyEndDte >= $projection.ProdSpecValidityEndDate |
| [0..*] | I_ProdSpecQtytvCmpstnHeader | _ProdSpecQtytvCmpstnHeader | _ProdSpecQtytvCmpstnHeader.ProductSpecificationInternalID = $projection.ProductSpecificationInternalID and _ProdSpecQtytvCmpstnHeader.ProdSpecCmpstnHdrValdtyStrtDte <= $projection.ProdSpecValidityStartDate and _ProdSpecQtytvCmpstnHeader.ProdSpecCmpstnHdrValdtyEndDte >= $projection.ProdSpecValidityEndDate |
| [0..*] | I_ProdSpecQltatvCmpstnHeader | _ProdSpecQltatvCmpstnHeader | _ProdSpecQltatvCmpstnHeader.ProductSpecificationInternalID = $projection.ProductSpecificationInternalID and _ProdSpecQltatvCmpstnHeader.ProdSpecCmpstnHdrValdtyStrtDte <= $projection.ProdSpecValidityStartDate and _ProdSpecQltatvCmpstnHeader.ProdSpecCmpstnHdrValdtyEndDte >= $projection.ProdSpecValidityEndDate |
| [0..*] | I_ProdSpecListingCmpstnHeader | _ProdSpecListingCmpstnHeader | _ProdSpecListingCmpstnHeader.ProductSpecificationInternalID = $projection.ProductSpecificationInternalID and _ProdSpecListingCmpstnHeader.ProdSpecCmpstnHdrValdtyStrtDte <= $projection.ProdSpecValidityStartDate and _ProdSpecListingCmpstnHeader.ProdSpecCmpstnHdrValdtyEndDte >= $projection.ProdSpecValidityEndDate |
| [0..*] | I_ProdSpecPropertyHeader | _ProdSpecPropertyHeader | _ProdSpecPropertyHeader.ProductSpecificationInternalID = $projection.ProductSpecificationInternalID and _ProdSpecPropertyHeader.ProdSpecPrptyHdrValdtyStrtDte <= $projection.ProdSpecValidityStartDate and _ProdSpecPropertyHeader.ProdSpecPrptyHdrValdtyEndDte >= $projection.ProdSpecValidityEndDate |
| [0..1] | I_SpecificationLastChange | _SpecificationLastChange | $projection.ProductSpecificationInternalID = _SpecificationLastChange.SpecificationInternalID |
Annotations (11)
| Name | Value | Level | Field |
|---|---|---|---|
| AbapCatalog.sqlViewName | IPRODSPEC | view | |
| AbapCatalog.compiler.compareFilter | true | view | |
| AbapCatalog.preserveKey | true | view | |
| AccessControl.authorizationCheck | #CHECK | view | |
| ClientHandling.algorithm | #SESSION_VARIABLE | view | |
| EndUserText.label | Product Specification | view | |
| ObjectModel.usageType.sizeCategory | #L | view | |
| ObjectModel.usageType.serviceQuality | #C | view | |
| ObjectModel.usageType.dataClass | #MASTER | view | |
| VDM.lifecycle.contract.type | #SAP_INTERNAL_API | view | |
| VDM.viewType | #COMPOSITE | view |
Fields (29)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | ProductSpecificationInternalID | Specification | ||
| KEY | ProductSpecificationChgState | GUID number | ||
| ProductSpecification | Specification | |||
| ProdSpecValidityStartDate | SpecificationValidityStartDate | Valid From | ||
| ProdSpecValidityEndDate | SpecificationValidityEndDate | Valid To | ||
| ChangeNumber | SpecificationChangeNumber | |||
| ProdSpecCreatedByUser | SpecificationCreatedByUser | |||
| ProdSpecCreationDate | SpecificationCreationDate | |||
| ProdSpecLastChangedByUser | SpecificationLastChangedByUser | |||
| ProdSpecLastChangeDate | SpecificationLastChangeDate | |||
| ProdSpecNote | SpecificationNote | Note | ||
| ProdSpecIsDeleted | SpecificationIsDeleted | DID | ||
| ProdSpecType | I_ProdSpecType | SpecificationType | ||
| ProdSpecAuthznGroup | SpecificationAuthznGroup | |||
| _ChangeMaster | _ChangeMaster | |||
| _ProdSpecNonHistoric | _ProdSpecNonHistoric | |||
| _ProdSpecDescription | _ProdSpecDescription | |||
| _ProdSpecStdCmpstnHeader | _ProdSpecStdCmpstnHeader | |||
| _ProdSpecAllergenCmpstnHeader | _ProdSpecAllergenCmpstnHeader | |||
| _ProdSpecNutrientCmpstnHdr | _ProdSpecNutrientCmpstnHdr | |||
| _ProdSpecCmpstnHeader | _ProdSpecCmpstnHeader | |||
| _ProdSpecQtytvCmpstnHeader | _ProdSpecQtytvCmpstnHeader | |||
| _ProdSpecQltatvCmpstnHeader | _ProdSpecQltatvCmpstnHeader | |||
| _ProdSpecListingCmpstnHeader | _ProdSpecListingCmpstnHeader | |||
| _ProdSpecPropertyHeader | _ProdSpecPropertyHeader | |||
| _SpecificationLastChange | _SpecificationLastChange | |||
| _LogAccMObjectTypeActive | _LogAccMObjectTypeActive | |||
| _LogAccMObjectUserAuthzn | _LogAccMObjectUserAuthzn | |||
| _LogAccMObjSecureIDAssgmt | _LogAccMObjSecureIDAssgmt |
Derived SQL interpretation, reconstructed from the parsed view metadata (data sources, associations, and field mappings). SAP annotations are omitted and the structure is reformulated as SQL — this is a functional approximation, not the verbatim SAP source.
-- Derived SQL interpretation of CDS view I_ProductSpecification.
-- Reconstructed from parsed metadata (data sources, associations, fields).
-- SAP annotations are omitted and the structure is reformulated as SQL;
-- this is a functional approximation, not the verbatim SAP source. Some join
-- conditions may be unavailable and a few CDS constructs are kept as-is.
-- SQL view name: IPRODSPEC
CREATE VIEW I_ProductSpecification AS
SELECT
cast( SpecificationInternalID as /plmb/spc_prod_int_id preserving type ) AS ProductSpecificationInternalID,
cast( SpecificationChangeState as /plmb/spc_prod_change_state preserving type ) AS ProductSpecificationChgState,
cast( Specification as /plmb/spc_prod_spec_ext_id_api preserving type ) AS ProductSpecification,
SpecificationValidityStartDate AS ProdSpecValidityStartDate,
SpecificationValidityEndDate AS ProdSpecValidityEndDate,
SpecificationChangeNumber AS ChangeNumber,
SpecificationCreatedByUser AS ProdSpecCreatedByUser,
SpecificationCreationDate AS ProdSpecCreationDate,
SpecificationLastChangedByUser AS ProdSpecLastChangedByUser,
SpecificationLastChangeDate AS ProdSpecLastChangeDate,
SpecificationNote AS ProdSpecNote,
SpecificationIsDeleted AS ProdSpecIsDeleted,
_ProdSpecType.SpecificationType AS ProdSpecType,
SpecificationAuthznGroup AS ProdSpecAuthznGroup
FROM I_Specification AS _Specification
INNER JOIN I_ProdSpecType AS _ProdSpecType ON /* join condition not captured in parsed metadata */
LEFT OUTER JOIN I_ChangeMaster AS _ChangeMaster ON _ChangeMaster.ChangeNumber = ChangeNumber -- association [0..1]
LEFT OUTER JOIN I_ProdSpecNonHistoric AS _ProdSpecNonHistoric ON _ProdSpecNonHistoric.ProductSpecificationInternalID = ProductSpecificationInternalID -- association [1..1]
LEFT OUTER JOIN I_ProdSpecDescription AS _ProdSpecDescription ON _ProdSpecDescription.ProductSpecificationInternalID = ProductSpecificationInternalID AND _ProdSpecDescription.ProdSpecDescValidityStartDate <= ProdSpecValidityStartDate AND _ProdSpecDescription.ProdSpecDescValidityEndDate >= ProdSpecValidityEndDate -- association [0..*]
LEFT OUTER JOIN I_ProdSpecStdCmpstnHeader AS _ProdSpecStdCmpstnHeader ON _ProdSpecStdCmpstnHeader.ProductSpecificationInternalID = ProductSpecificationInternalID AND _ProdSpecStdCmpstnHeader.ProdSpecCmpstnHdrValdtyStrtDte <= ProdSpecValidityStartDate AND _ProdSpecStdCmpstnHeader.ProdSpecCmpstnHdrValdtyEndDte >= ProdSpecValidityEndDate -- association [0..*]
LEFT OUTER JOIN I_ProdSpecAllergenCmpstnHeader AS _ProdSpecAllergenCmpstnHeader ON _ProdSpecAllergenCmpstnHeader.ProductSpecificationInternalID = ProductSpecificationInternalID AND _ProdSpecAllergenCmpstnHeader.ProdSpecCmpstnHdrValdtyStrtDte <= ProdSpecValidityStartDate AND _ProdSpecAllergenCmpstnHeader.ProdSpecCmpstnHdrValdtyEndDte >= ProdSpecValidityEndDate -- association [0..*]
LEFT OUTER JOIN I_ProdSpecNutrientCmpstnHdr AS _ProdSpecNutrientCmpstnHdr ON _ProdSpecNutrientCmpstnHdr.ProductSpecificationInternalID = ProductSpecificationInternalID AND _ProdSpecNutrientCmpstnHdr.ProdSpecCmpstnHdrValdtyStrtDte <= ProdSpecValidityStartDate AND _ProdSpecNutrientCmpstnHdr.ProdSpecCmpstnHdrValdtyEndDte >= ProdSpecValidityEndDate -- association [0..*]
LEFT OUTER JOIN I_ProdSpecCmpstnHeader AS _ProdSpecCmpstnHeader ON _ProdSpecCmpstnHeader.ProductSpecificationInternalID = ProductSpecificationInternalID AND _ProdSpecCmpstnHeader.ProdSpecCmpstnHdrValdtyStrtDte <= ProdSpecValidityStartDate AND _ProdSpecCmpstnHeader.ProdSpecCmpstnHdrValdtyEndDte >= ProdSpecValidityEndDate -- association [0..*]
LEFT OUTER JOIN I_ProdSpecQtytvCmpstnHeader AS _ProdSpecQtytvCmpstnHeader ON _ProdSpecQtytvCmpstnHeader.ProductSpecificationInternalID = ProductSpecificationInternalID AND _ProdSpecQtytvCmpstnHeader.ProdSpecCmpstnHdrValdtyStrtDte <= ProdSpecValidityStartDate AND _ProdSpecQtytvCmpstnHeader.ProdSpecCmpstnHdrValdtyEndDte >= ProdSpecValidityEndDate -- association [0..*]
LEFT OUTER JOIN I_ProdSpecQltatvCmpstnHeader AS _ProdSpecQltatvCmpstnHeader ON _ProdSpecQltatvCmpstnHeader.ProductSpecificationInternalID = ProductSpecificationInternalID AND _ProdSpecQltatvCmpstnHeader.ProdSpecCmpstnHdrValdtyStrtDte <= ProdSpecValidityStartDate AND _ProdSpecQltatvCmpstnHeader.ProdSpecCmpstnHdrValdtyEndDte >= ProdSpecValidityEndDate -- association [0..*]
LEFT OUTER JOIN I_ProdSpecListingCmpstnHeader AS _ProdSpecListingCmpstnHeader ON _ProdSpecListingCmpstnHeader.ProductSpecificationInternalID = ProductSpecificationInternalID AND _ProdSpecListingCmpstnHeader.ProdSpecCmpstnHdrValdtyStrtDte <= ProdSpecValidityStartDate AND _ProdSpecListingCmpstnHeader.ProdSpecCmpstnHdrValdtyEndDte >= ProdSpecValidityEndDate -- association [0..*]
LEFT OUTER JOIN I_ProdSpecPropertyHeader AS _ProdSpecPropertyHeader ON _ProdSpecPropertyHeader.ProductSpecificationInternalID = ProductSpecificationInternalID AND _ProdSpecPropertyHeader.ProdSpecPrptyHdrValdtyStrtDte <= ProdSpecValidityStartDate AND _ProdSpecPropertyHeader.ProdSpecPrptyHdrValdtyEndDte >= ProdSpecValidityEndDate -- association [0..*]
LEFT OUTER JOIN I_SpecificationLastChange AS _SpecificationLastChange ON ProductSpecificationInternalID = _SpecificationLastChange.SpecificationInternalID -- association [0..1]
;
Learn More
- VDM (Virtual Data Model) in SAP S/4HANA Explained
- Types of CDS Views: Basic, Composite, Consumption, and Transactional
- CDS View Annotations — A Complete Guide
- What Is a CDS View in SAP S/4HANA?
- SAP Tables vs CDS Views — Key Differences
- Understanding Data Lineage in SAP S/4HANA
- CDS View Field Mapping and Associations
- Understanding the SAP S/4HANA Data Model
- CDS View Extensions and Custom Fields in SAP S/4HANA
- Released APIs and Stability Contracts in SAP S/4HANA
- BSEG to ACDOCA: The Universal Journal Migration
- Business Partner Migration: KNA1/LFA1 to BUT000
- Material Document Migration: MSEG/MKPF to MATDOC
- How to Find the Right CDS View for an SAP Table
- BW Extractor to CDS View Migration Guide
- S/4HANA CDS View Deprecation: What You Need to Know
- ABAP CDS View Tutorial — From Basics to Real-World Examples
- RAP and CDS Views — Building Transactional Apps in SAP S/4HANA
- Sales Document Status Migration: VBUP/VBUK Removal in S/4HANA
- CO Tables in S/4HANA: COEP, COBK, COSS, COSP to ACDOCA