Detail Tab Definition Examples

This pages provides example configurations for detail tab customizings.

The following examples are supported. Other combinations are not supported.

When referencing Product 360 Core repository fields, make sure to specify the field identifier from the custom area but not the field identifier from the types area.

Change Detail Preview Area

The preview area next to the thumbnail can be changed. This example removes the status field and adds the last change user instead.

Example Screen:

images/download/attachments/219125828/product.preview.status.PNG

Definition (product.detailoverview.xml)

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<formDefinitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FormDefinitions.xsd">
<definition position="2147483647" rootEntity="Product2G">
<column>
<fieldGroup displaySectionWidget="true" subEntityId="Product2GMediaAssetDocument">
<field identifier="Product2GMediaAssetDocument.ImageIdentifier"/>
<logicalKey identifier="ArticleMediaAssetMapType.LK.MediaAssetType" value="Standard image"/>
<logicalKey identifier="ArticleMediaAssetDocumentType.LK.Quality" value="Html document"/>
<logicalKey identifier="ArticleMediaAssetDocumentType.LK.Language" value="Language independent"/>
</fieldGroup>
<fieldGroup>
<field identifier="Product2G.ProductNo" readOnly="true"/>
</fieldGroup>
<fieldGroup subEntityId="Product2GLog">
<field identifier="Product2GLog.ModificationUser"/>
</fieldGroup>
</column>
</definition>
</formDefinitions>

Two column layout with language picker

Example screen:

images/download/attachments/219125828/twoColumnLanguagePicker.PNG

Definition (product.detailtab.xml):

<definition debugId="" i18NKey="Text translations selectable" id="sdk.textTranslations.selectable" permissionId="" rootEntity="Product2G" position="11">
<column>
<fieldGroup displaySectionWidget="true" subEntityId="Product2GLang">
<field identifier="Product2GLang.DescriptionShort" readOnly="false"/>
<field identifier="Product2GLang.DescriptionLong" readOnly="false"/>
<field identifier="Product2GLang.Keyword" readOnly="false"/>
<logicalKey displayAllValues="false" identifier="ArticleLangType.LK.Language" selectable="true" value="9"/>
</fieldGroup>
</column>
<column>
<fieldGroup displaySectionWidget="true" subEntityId="Product2GLang">
<field identifier="Product2GLang.DescriptionShort" readOnly="false"/>
<field identifier="Product2GLang.DescriptionLong" readOnly="false"/>
<field identifier="Product2GLang.Keyword" readOnly="false"/>
<logicalKey displayAllValues="false" identifier="ArticleLangType.LK.Language" selectable="true" value="7"/>
</fieldGroup>
</column>
</definition>

Two column layout with fixed language

Example screen:

images/download/attachments/219125828/twoColumnLanguageFixed.PNG

Definition (product.detailtab.xml):

<definition debugId="" i18NKey="Text translations fixed" id="sdk.textTranslations.fixed" permissionId="" rootEntity="Product2G" position="12">
<column>
<fieldGroup displaySectionWidget="true" subEntityId="Product2GLang">
<field identifier="Product2GLang.DescriptionShort" readOnly="false"/>
<field identifier="Product2GLang.DescriptionLong" readOnly="false"/>
<field identifier="Product2GLang.Keyword" readOnly="false"/>
<logicalKey displayAllValues="false" identifier="ArticleLangType.LK.Language" selectable="false" value="9"/>
</fieldGroup>
</column>
<column>
<fieldGroup displaySectionWidget="true" subEntityId="Product2GLang">
<field identifier="Product2GLang.DescriptionShort" readOnly="false"/>
<field identifier="Product2GLang.DescriptionLong" readOnly="false"/>
<field identifier="Product2GLang.Keyword" readOnly="false"/>
<logicalKey displayAllValues="false" identifier="ArticleLangType.LK.Language" selectable="false" value="11"/>
</fieldGroup>
</column>
</definition>

Variables support for detail tabs

${user.language} variable could be used as logical key to specify UI language for details tabs.

Definition (product.detailtab.xml):

<definition debugId="" i18NKey="Text translations fixed" id="sdk.textTranslations.fixed" permissionId="" rootEntity="Product2G" position="12">
<column>
<fieldGroup displaySectionWidget="true" subEntityId="Product2GLang">
<field identifier="Product2GLang.DescriptionShort" readOnly="false"/>
<field identifier="Product2GLang.DescriptionLong" readOnly="false"/>
<field identifier="Product2GLang.Keyword" readOnly="false"/>
<logicalKey displayAllValues="false" identifier="ArticleLangType.LK.Language" selectable="false" value="${user.language}"/>
</fieldGroup>
</column>
<column>
<fieldGroup displaySectionWidget="true" subEntityId="Product2GLang">
<field identifier="Product2GLang.DescriptionShort" readOnly="false"/>
<field identifier="Product2GLang.DescriptionLong" readOnly="false"/>
<field identifier="Product2GLang.Keyword" readOnly="false"/>
<logicalKey displayAllValues="false" identifier="ArticleLangType.LK.Language" selectable="false" value="11"/>
</fieldGroup>
</column>
</definition>

Detail Tab with specific attributes

Instead of showing all attributes you can also add a fixed list of attributes to a tab. You can also mix attributes with normal fields by adding them to different field groups. If the attribute doesn't exist for the selected item or product, the widget is not rendered. That means, that users can create or edit attribute values but cannot create new attributes by themselves.

Example that shows the attributes Width and Height (product.detailtab.xml):

<definition debugId="attr" i18NKey="Custom attributes" permissionId="" position="1" rootEntity="Product2G">
<column>
<enumGrouping caption="%web.client.login.form.language" enumIdentifier="Enum.Language.WithLanguageIndependent" selectable="true" value="9"/>
 
<fieldGroup subEntityId="Product2GAttributeValue" displaySectionWidget="false">
<field identifier="Product2GAttributeValue.Value"/>
<logicalKey identifier="ArticleAttributeValueType.LK.Language" value="9"/>
<logicalKey identifier="ArticleAttributeType.LK.Name" value="Width"/>
</fieldGroup>
<fieldGroup subEntityId="Product2GAttributeValue" displaySectionWidget="false">
<field identifier="Product2GAttributeValue.Value"/>
<logicalKey identifier="ArticleAttributeValueType.LK.Language" value="9"/>
<logicalKey identifier="ArticleAttributeType.LK.Name" value="Height"/>
</fieldGroup>
</column>
</definition>

Detail Tab and editing multi-value attriubte values

There is an an "extra editing mode" for multi attribute values in web, which loads them in an single attribute editor to be able to edit an single value of the list of values identified over an logical key identifier enum. To trigger the new multi attribute in single editor mode, specify an identifier enum with the attributes values identifier logical key, this activates the new mode, if no enum is specified than the standard multi attribute editor in multi mode is used. Don't forget to change the default value of the logical key to an value from the enumeration.

Activating the multi-value attribute editor by specifying an identifier enum in the repository. In the example below the Currency enum was used.

images/download/attachments/219125828/attribute_values.PNG

images/download/attachments/219125828/repository1.PNG

Additionally you need to specify a logical key combination to refer to an attribute value in the webs detail tab definition XML, this can be done by using an enum grouping for the identifier enumeration and set the identifier logical key to selectable="true". Another possible option is to specify each logical key combination as an extra field group.

Using an enum grouping to handle all combination of logical keys by an combobox.

<definition debugId="product_attributes_tab" i18NKey="%web.product.detail.tab.attributes" permissionId="web.product.detail.tabs.attributes" position="60" rootEntity="Product2G">
<column>
<enumGrouping caption="%web.client.login.form.language" enumIdentifier="Enum.Language.WithLanguageIndependent" selectable="true" value="English"/>
<enumGrouping caption="Currency" enumIdentifier="Enum.Currency" selectable="true" value="EUR"/>
<fieldGroup displaySectionWidget="true" subEntityId="Product2GAttributeValue">
<field identifier="Product2GAttributeValue.Value"/>
<logicalKey identifier="ArticleAttributeValueType.LK.Identifier" selectable="true" value="EUR"/>
<logicalKey identifier="ArticleAttributeValueType.LK.Language" selectable="true" value="English"/>
<logicalKey displayAllValues="true" hidden="true" identifier="ArticleAttributeType.LK.Name"/>
</fieldGroup>
</column>
</definition>

Alternatively using extra field group for each combination of logical keys.

images/download/attachments/219125828/web_definition.xml_with_toAttributeInDifferentQualifications.PNG

Logical Keys exploded

Example screen:

images/download/attachments/219125828/singleColumnAllTexts.PNG

Definition (product.detailtab.xml):

<definition debugId="" i18NKey="All Text translations" id="sdk.textTranslations.all" permissionId="" rootEntity="Product2G" position="13">
<column>
<fieldGroup displaySectionWidget="true" subEntityId="Product2GLang">
<field identifier="Product2GLang.DescriptionShort" readOnly="false"/>
<field identifier="Product2GLang.DescriptionLong" readOnly="false"/>
<field identifier="Product2GLang.Keyword" readOnly="false"/>
<logicalKey displayAllValues="true" identifier="ArticleLangType.LK.Language" selectable="false"/>
</fieldGroup>
</column>
</definition>

Logistic Extension Data with multiple Logical Keys

Use Case:

  • Logistic Extension Data has 5 logical keys and can be used to store data to a (sub)set of these keys, e.g. language and customer specific.

Example Screen:

images/download/attachments/219125828/logExtension.PNG

Definition (article.detailtab.xml):

<definition debugId="" i18NKey="Logistic Extensions" id="sdk.item.logisticExtensions" permissionId="" rootEntity="Article" position="14">
<column>
<fieldGroup displaySectionWidget="true" subEntityId="ArticleLogisticExtension">
<field identifier="ArticleLogisticExtension.Code128" readOnly="false"/>
<field identifier="ArticleLogisticExtension.Ean14" readOnly="false"/>
<logicalKey displayAllValues="false" identifier="ArticleLogisticExtensionType.LK.Classifier" value="ArticleLogisticExtension" selectable="false"/>
<logicalKey displayAllValues="false" identifier="ArticleLogisticExtensionType.LK.Territory" value="WORLD" selectable="false"/>
<logicalKey displayAllValues="false" identifier="ArticleLogisticExtensionType.LK.PartyMS" value="3[|]" selectable="true"/>
<logicalKey displayAllValues="false" identifier="ArticleLogisticExtensionType.LK.PackagingUnit" value="134[|]" selectable="true"/>
<logicalKey displayAllValues="false" identifier="ArticleLogisticExtensionType.LK.Language" value="-1" selectable="false"/>
</fieldGroup>
</column>
</definition>

Fullqualified Purchase Prices

Use Case:

Allow viewing and editing of full qualified prices. Note: Listing of all available prices is not possible using XML definitions.

Example Screen:

images/download/attachments/219125828/editingPrices.png

Definition (product.detailtab.xml):

<definition debugId="" i18NKey="Purchase Prices" id="sdk.productprices"
permissionId="" position="12" rootEntity="Product2G">
<column>
<fieldGroup subEntityId="Product2GPriceValueSales"
displaySectionWidget="false">
<field identifier="Product2GPriceValueSales.Amount" caption="Net customer price EUR" />
<logicalKey identifier="ArticlePriceType.LK.Type" value="3" />
<logicalKey identifier="ArticlePriceType.LK.Currency"
value="EUR" />
</fieldGroup>
<fieldGroup subEntityId="Product2GPriceValueSales"
displaySectionWidget="false">
<field identifier="Product2GPriceValueSales.Amount" caption="Non-binding price recom. EUR" />
<logicalKey identifier="ArticlePriceType.LK.Type" value="5" />
<logicalKey identifier="ArticlePriceType.LK.Currency"
value="EUR" />
</fieldGroup>
</column>
<column>
<fieldGroup subEntityId="Product2GPriceValueSales"
displaySectionWidget="false">
<field identifier="Product2GPriceValueSales.Amount" caption="Net customer price USD" />
<logicalKey identifier="ArticlePriceType.LK.Type" value="3" />
<logicalKey identifier="ArticlePriceType.LK.Currency"
value="USD" />
</fieldGroup>
<fieldGroup subEntityId="Product2GPriceValueSales"
displaySectionWidget="false">
<field identifier="Product2GPriceValueSales.Amount" caption="Non-binding price recom. USD" />
<logicalKey identifier="ArticlePriceType.LK.Type" value="5" />
<logicalKey identifier="ArticlePriceType.LK.Currency"
value="USD" />
</fieldGroup>
</column>
</definition>

Editable Item Preview Panel

Use Case:

Allow fast editing of very often needed fields without having to switch tabs, e.g. Status field.

Example Screen:

images/download/attachments/219125828/editPreviewPanel.png

Definition (product.detailoverview.xml):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<formDefinitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FormDefinitions.xsd">
<definition position="2147483647" rootEntity="Product2G">
<column>
<fieldGroup displaySectionWidget="true">
<field identifier="Product2G.ProductNo" readOnly="true"/>
<field identifier="Product2G.CurrentStatus" readOnly="false"/>
</fieldGroup>
</column>
</definition>
</formDefinitions>

Display Structure Group Assignment

Use Case: Display the structure group assignment of a given structure system.

Example Screen:

images/download/attachments/219125828/DisplayStructureSystemAssignment.PNG

Definition (product.detailtab.xml):

<definition debugId="product_head_tab" i18NKey="Head 2" permissionId="com.heiler.ppm.web.app.view.detail.product.tabs.HeadTab" position="10" rootEntity="Product2G">
<column>
<fieldGroup>
<field identifier="Product2G.ProductNo"/>
<field identifier="Product2G.CurrentStatus"/>
<field identifier="Product2G.ManufacturerAID"/>
<field identifier="Product2G.ManufacturerName"/>
<field identifier="Product2GLog.ModificationUser"/>
<field identifier="Product2GLog.ModificationDate"/>
</fieldGroup>
<fieldGroup subEntityId="Product2GStructureMap" displaySectionWidget="false">
<field identifier="Product2GStructureMap.StructureGroup" readOnly="true"/>
<!-- StructureId can be taken from url in Product 360 Web when navigating to structure group. -->
<logicalKey identifier="ArticleStructureMapType.LK.StructureId" value="10000" />
</fieldGroup>
</column>
</definition>

Editable List of Sub Entities

Use Case: Show a list of all available subentities to an entity (e.g. item) and provide CRUD functionality.

Example Screen:

images/download/attachments/219125828/SubentityList.PNG

Definition (article.detailtab.xml)

<definition id="sdk.item.list.subentities.editable" rootEntity="Article" i18NKey="Article Logistic Extensions" position="14">
<column>
<tableGroup>
<actionPanel>
<actionButton action="create"/>
<actionButton action="delete"/>
<actionButton action="edit"/>
<fieldFormGroup>
<field identifier="ArticleLogisticExtension.Party"/>
<field identifier="ArticleLogisticExtension.PackagingUnit"/>
<field identifier="ArticleLogisticExtension.Code39"/>
<field identifier="ArticleLogisticExtension.Ean14"/>
</fieldFormGroup>
</actionPanel>
<tableDefinition rootEntity="ArticleLogisticExtension">
<field identifier="ArticleLogisticExtension.Party"/>
<field identifier="ArticleLogisticExtension.PackagingUnit"/>
<field identifier="ArticleLogisticExtension.Code39"/>
<field identifier="ArticleLogisticExtension.Ean14"/>
</tableDefinition>
</tableGroup>
</column>
</definition>

Editable List of Retail Prices for Items

Please note that only basic editing functionality for prices is supported. As of version 7.1, the following restrictions exist:

  • Price tiers are not handled correctly, ie. price list doesn't automatically show all available price tiers as columns like in Product 360 Desktop. Hence, only a single price tier is supported.

  • Custom fields cannot be edited due to a bug.

Example Screen:

images/download/attachments/219125828/editableListOfRetailPrices.PNG

Definition (article.detailtab.xml):

<definition id="sdk.salesPricesEditable" rootEntity="Article" i18NKey="Article Retail Prices" position="15">
<column>
<tableGroup>
<actionPanel>
<actionButton action="create"/>
<actionButton action="delete"/>
<actionButton action="edit"/>
<fieldFormGroup subEntityId="ArticlePriceValueSales">
<field identifier="ArticlePriceSales.BuyerId"/>
<field identifier="ArticlePriceSales.Currency"/>
<field identifier="ArticlePriceSales.PriceType"/>
<field identifier="ArticlePriceSales.Territory"/>
<field identifier="ArticlePriceValueSales.Amount"/>
</fieldFormGroup>
</actionPanel>
<tableDefinition rootEntity="ArticlePriceSales">
<field identifier="ArticlePriceSales.BuyerId"/>
<field identifier="ArticlePriceSales.Currency"/>
<field identifier="ArticlePriceSales.PriceType"/>
<field identifier="ArticlePriceSales.Territory"/>
<field identifier="ArticlePriceValueSales.Amount" caption="Price"/>
</tableDefinition>
</tableGroup>
</column>
</definition>

Display Transition Fields in Detail Tab Lists, e.g. Short Description for References

Lists within detail tabs also support transition fields. This is especially useful for the list of referenced items.

Example:

images/download/attachments/219125828/referencesWithShortDescription.PNG

This example requires to create two new transition fields in repository (3 in case of 3-tier product paradigm). Please see the screen for details.

images/download/attachments/219125828/referenceTransitionRepository.png

product.references.listmodel.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<tableDefinitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="TableDefinitions.xsd">
<definition rootEntity="Product2GReference">
<field identifier="Product2GReference.Type"/>
<field identifier="Product2GReference.ReferencedEntityId"/>
<field identifier="Product2GReference.ReferencedProductNo"/>
<field identifier="Product2GReference.Quantity"/>
<field identifier="Product2GReference.DisplayOrder"/>
<field identifier="Product2GReference.ReferencedProduct2G" >
<transitionField identifier="Product2GLang.DescriptionShort" >
<logicalKey identifier="ArticleLangType.LK.Language" value="9"/>
</transitionField>
</field>
</definition>
<definition rootEntity="Product2G2ArticleReference">
<field identifier="Product2G2ArticleReference.Type"/>
<field identifier="Product2G2ArticleReference.ReferencedEntityId"/>
<field identifier="Product2G2ArticleReference.ReferencedProductNo"/>
<field identifier="Product2G2ArticleReference.Quantity"/>
<field identifier="Product2G2ArticleReference.DisplayOrder"/>
<field identifier="Product2G2ArticleReference.ReferencedArticle" >
<transitionField identifier="ArticleLang.DescriptionShort" >
<logicalKey identifier="ArticleLangType.LK.Language" value="9"/>
</transitionField>
</field>
</definition>
</tableDefinitions>

Magic around references

Please note that the handling of the listmodel definitions for references a special. In the Product 360 datamodel, links to each entity (Item, Product, Variant) are represented in a separate sub entity. Thus the file *.references.listmodel.xml contains 2 definitions (3 if variants are used, too). At runtime all these definitions are merged into a single table. That means, that the fields of the definitions must be matching (reference the same field type).

If you want to add another field, this needs to be done in all definitions at the same position. See DescriptionShort field in the above example.

Single Logical Key Selector for Multiple Subentities

Use Case:

In some cases, multiple fields from different sub entities should be displayed on a single detail tab. If these fields belong to the same entityType, the user wants to select the logical key only once instead of multiple times. This also makes sense, if different subentities share the same logical key, e.g. a qualification by language.

Per default, logical key selectors are generated per fieldFormGroup. Fields from different subEntities need to be grouped in seperate fieldFormGroups. Using the syntax "enumGrouping" allows to extract the logical key selector from the fieldFormGroup level to the column level.

Example:

Two price values from ArticlePriceValuePurchase and ArticlePriceValueSales subentity with shared Currency selector:

images/download/attachments/219125828/enumGrouping.PNG

article.detailtab.xml:

<definition debugId="sdk.enumGrouping" i18NKey="Grouped Logical Keys" rootEntity="Article" position="11">
<column>
<enumGrouping enumIdentifier="Enum.Currency" selectable="true"/>
<fieldGroup subEntityId="ArticlePriceValuePurchase" displaySectionWidget="true">
<field identifier="ArticlePriceValuePurchase.Amount" caption="Net list Purchase Price" />
<logicalKey identifier="ArticlePriceType.LK.PartyMS" hidden="true" value="&lt;Main supplier&gt;"/>
<logicalKey identifier="ArticlePriceType.LK.Territory" hidden="true" value="Germany"/>
<logicalKey identifier="ArticlePriceType.LK.ValidAt" hidden="true" value="now"/>
<logicalKey identifier="ArticlePriceValueType.LK.LowerBound" hidden="true" value="1"/>
<logicalKey identifier="ArticlePriceType.LK.Type" value="1" hidden="true"/>
<logicalKey identifier="ArticlePriceType.LK.Currency" value="EUR" selectable="true"/>
</fieldGroup>
<fieldGroup subEntityId="ArticlePriceValueSales" displaySectionWidget="true">
<field identifier="ArticlePriceValueSales.Amount" caption="Net Customer Selling Price" />
<logicalKey identifier="ArticlePriceType.LK.PartyMS" hidden="true" value="&lt;Public&gt;"/>
<logicalKey identifier="ArticlePriceType.LK.Territory" hidden="true" value="Germany"/>
<logicalKey identifier="ArticlePriceType.LK.ValidAt" hidden="true" value="now"/>
<logicalKey identifier="ArticlePriceValueType.LK.LowerBound" hidden="true" value="1"/>
<logicalKey identifier="ArticlePriceType.LK.Type" value="3" hidden="true"/>
<logicalKey identifier="ArticlePriceType.LK.Currency" value="EUR" selectable="true"/>
</fieldGroup>
</column>
</definition>

List of all references to items, but not to other entities (with optional filter)

Shows a list of all references to other items together with GTIN and ShortDescription using transition fields.

Example Screen:

images/download/attachments/219125828/article.detail.itemreferences.PNG

article.detailtab.xml:

<definition i18NKey="References to Items" position="11" rootEntity="Article">
<column>
<tableGroup>
<actionPanel>
<actionButton action="create" />
<actionButton action="edit" />
<actionButton action="delete" />
<fieldFormGroup subEntityId="ArticleReference">
<field identifier="ArticleReference.Type"/>
<field identifier="ArticleReference.ReferencedSupplierAid" />
<field identifier="ArticleReference.Quantity" />
<field identifier="ArticleReference.DisplayOrder" />
</fieldFormGroup>
</actionPanel>
<tableDefinition rootEntity="ArticleReference">
<field identifier="ArticleReference.Type"/>
<field identifier="ArticleReference.ReferencedSupplierAid" />
<field identifier="ArticleReference.Quantity" />
<field identifier="ArticleReference.DisplayOrder" />
<field identifier="ArticleReference.ReferencedArticle">
<transitionField identifier="Article.EAN" />
</field>
<field identifier="ArticleReference.ReferencedArticle">
<transitionField identifier="ArticleLang.DescriptionShort" />
</field>
</tableDefinition>
</tableGroup>
</column>
</definition>

List of references to products, that is additionally filtered to show only references of type "accessories":

Example Screen:

images/download/attachments/219125828/product.acessories.PNG

product.detailtab.xml:

<definition i18NKey="Accessories of the product" position="13" rootEntity="Article">
<column>
<tableGroup>
<actionPanel>
<actionButton action="create" />
<actionButton action="edit" />
<actionButton action="delete" />
<fieldFormGroup subEntityId="Article2Product2GReference">
<field identifier="Article2Product2GReference.Type"/>
<field identifier="Article2Product2GReference.ReferencedSupplierAid"/>
<field identifier="Article2Product2GReference.Quantity"/>
<field identifier="Article2Product2GReference.DisplayOrder"/>
</fieldFormGroup>
</actionPanel>
<tableDefinition rootEntity="Article2Product2GReference">
<field identifier="Article2Product2GReference.Type"/>
<field identifier="Article2Product2GReference.ReferencedSupplierAid"/>
<field identifier="Article2Product2GReference.Quantity"/>
<field identifier="Article2Product2GReference.DisplayOrder"/>
<field identifier="ArticleReference.ReferencedArticle">
<transitionField identifier="Article.EAN"/>
</field>
<field identifier="ArticleReference.ReferencedArticle">
<transitionField identifier="ArticleLang.DescriptionShort"/>
</field>
</tableDefinition>
<logicalKey identifier="ArticleReferenceType.LK.ReferenceType" selectable="false" hidden="true" value="accessories"/>
</tableGroup>
</column>
</definition>

Example for combination of <fieldGroup> and <tableGroup> in one custom tab

In the case, that the page length of the defined table will be around 100 and you want to use fieldGroup and tableGroup as a combination in the same custom tab together a fetchSize should be defined for the table that roughly matches the table records. This will allow the table to grow to the max of records stored and up to the defined fetchSize number.

<definition debugId="example1" i18NKey="%example1" position="190" rootEntity="Article">
<column>
<fieldGroup displaySectionWidget="true" subEntityId="ArticleLang">
<field identifier="ArticleLang.DescriptionShort"/>
</fieldGroup>
<tableGroup>
<tableDefinition rootEntity="ArticleReference" fetchSize="100">
<field identifier="ArticleReference.ReferencedArticle" sortable="true">
<logicalKey identifier="ArticleMediaAssetDocumentType.LK.Language" value="${user.language}"/>
<transitionField identifier="ArticleMediaAssetDocument.ImageIdentifier"/>
</field>
<field identifier="ArticleReference.Type" sortable="true"/>
<field identifier="ArticleReference.ReferencedEntityId" sortable="true"/>
<field identifier="ArticleReference.ReferencedSupplierAid" sortable="true"/>
<field identifier="ArticleReference.Quantity" sortable="true"/>
<field identifier="Article2Product2GReference.DisplayOrder" sortable="true"/>
<field identifier="ArticleReference.ReferencedArticle" sortable="true">
<transitionField identifier="Article.EAN"/>
</field>
<field identifier="ArticleReference.ReferencedArticle" sortable="true">
<transitionField identifier="ArticleLang.DescriptionShort"/>
</field>
</tableDefinition>
</tableGroup>
</column>
</definition>

images/download/attachments/219125828/image2019-1-28_11-5-43.png