The procedural way of loading an SDT (like the one needed in the TabbedView Web Component) is:
Event Start
...
&Tabs = new()
&TabsItem = new()
&TabsItem.Code = 'General'
&TabsItem.Description = 'General info'
&TabsItem.Link = link(ViewCustomer, CustomerId, 'General'
&TabsItem.WebComponent = create(CustomerGeneral, CustomerId)
&Tabs.add(&TabsItem)
&TabsItem = new()
&TabsItem.Code = 'Invoices'
&TabsItem.Description = 'Invoices'
&TabsItem.Link = link(ViewCustomer, CustomerId, 'Invoices'
&TabsItem.WebComponent = create(CustomerInvoices, CustomerId)
&Tabs.add(&TabsItem)
...
TabWC.Object = Create(TabbedView, &Tabs)
EndEvent
Using Data Providers, the declarative way is:
LoadCustomerTabs
Tabs
{
TabOptionsItem
{
Code = 'General'
Description = 'General info'
Link = link(ViewCustomer, CustomerId, 'General'
WebComponent = create(CustomerGeneral, CustomerId)
}
TabOptionsItem
{
Code = 'Invoices'
Description = 'Invoices'
Link = link(ViewCustomer, CustomerId, 'Invoices'
WebComponent = create(CustomerInvoices, CustomerId)
}
}
So the Event Start becomes:
Event Start
&Tabs = LoadCustomerTabs()
TabWC.Object = Create(TabbedView, &Tabs)
Endevent