<?xml version="1.0" encoding="utf-8"?>
<ManualTopic ID="/baanerp/tt/onlinemanual/100122" xml:lang="en">
	<Header>
		<Title xmlns:HTML="http://www.w3.org/TR/REC-html40">Multi Main Table sessions</Title>
		<Keyword ContextSensitive="No"><Level1>Multi Main Table</Level1>
		</Keyword>
		<Keyword ContextSensitive="No"><Level1>MMT</Level1>
		</Keyword>
		<Keyword ContextSensitive="No"><Level1>Parent-Child sessions</Level1>
		</Keyword>
	</Header>
	<GeneralSection ID=""><SectionTitle>Introduction</SectionTitle>
		<Paragraph class="Default">A Multi Main Table (MMT) session is a combination of multiple sessions, each having their own main table.</Paragraph>
		<List><ListIntro>MMT sessions are especially designed to present data with a typical parent-child structure, for instance:</ListIntro>
			<ListItem>Sales Order and the related Sales Order Lines</ListItem>
			<ListItem>Financial Business Partner group and the related Ledger accounts and Control accounts</ListItem>
			<ListItem>Work Order and the related Work Order activity lines, Work Order material resources, Work Order other resources, Work Order measurements, Work Order Hours accounting</ListItem>
		</List>
		<Paragraph class="Default">Although this data is distributed among several main-tables in the system, it can all be presented and edited from within a single parent-child session.</Paragraph>
		<Paragraph class="Default">This enables users to enter their data fast and to keep a good overview in their work.</Paragraph>
		<Paragraph class="Default">A typical parent-child session has two areas: the upper part contains information and functionality about the parent. The lower part contains one or more lists that show data about the various types of children. Both parent data and child data may be edited inside the session, which makes the sessions extremely powerful for data entry. Apart from that, a parent-child session also gives the user a complete overview of all important data related to the object. The figure below shows an example of a parent-child session.</Paragraph>
		<Figure space-and-orientation="indented-estimated"><HTML:IMG height="465" width="688" SRC="../images/nt_screen_mmt_session.gif" path="/enterpriseserver/tools/tt/onlinemanual" btb-count="1" btb-count2="1" btb-image-name="nt_screen_mmt_session.gif" btb-source-path="C:\SVN\docnl\Technology\EnterpriseServer~8.5\EnterpriseServer" btb-image-path="/enterpriseserver/tools/tt/images/nt_screen_mmt_session.gif" ID="IDAZ1WBC" alt="[...]" xmlns:HTML="http://www.w3.org/TR/REC-html40"/></Figure>
	</GeneralSection>
	<GeneralSection><SectionTitle>Sample parent-child sessions</SectionTitle>
		<Paragraph class="Default">Parent-child MMT sessions are available in various ERP LN packages, for example:</Paragraph>
		<TABLE width="75%" border="2" borderstyle="default" space-and-orientation="indented-estimated"><THEAD><TR><TD width="151" rowspan="1" colspan="1">Package</TD>
					<TD width="391" rowspan="1" colspan="1">Session</TD>
				</TR>
			</THEAD>
			<TBODY><TR><TD width="151" rowspan="1" colspan="1">Manufacturing</TD>
					<TD width="391" rowspan="1" colspan="1">Production Order</TD>
				</TR>
				<TR><TD width="151" rowspan="1" colspan="1">Manufacturing</TD>
					<TD width="391" rowspan="1" colspan="1">Generic Item – Structure</TD>
				</TR>
				<TR><TD width="151" rowspan="1" colspan="1">Order Management</TD>
					<TD width="391" rowspan="1" colspan="1">Sales Order – Lines</TD>
				</TR>
				<TR><TD width="151" rowspan="1" colspan="1">Order Management</TD>
					<TD width="391" rowspan="1" colspan="1">Sales Order Line – Deliveries</TD>
				</TR>
				<TR><TD width="151" rowspan="1" colspan="1">Service</TD>
					<TD width="391" rowspan="1" colspan="1">Service Order – Lines</TD>
				</TR>
				<TR><TD width="151" rowspan="1" colspan="1">Service</TD>
					<TD width="391" rowspan="1" colspan="1">Service Order Activity – Lines</TD>
				</TR>
				<TR><TD width="151" rowspan="1" colspan="1">Service</TD>
					<TD width="391" rowspan="1" colspan="1">Maintenance Sales Order</TD>
				</TR>
				<TR><TD width="151" rowspan="1" colspan="1">Service</TD>
					<TD width="391" rowspan="1" colspan="1">Work Order – Lines</TD>
				</TR>
				<TR><TD width="151" rowspan="1" colspan="1">Finance</TD>
					<TD width="391" rowspan="1" colspan="1">Mapping Scheme</TD>
				</TR>
				<TR><TD width="151" rowspan="1" colspan="1">Finance</TD>
					<TD width="391" rowspan="1" colspan="1">Ledger Mapping</TD>
				</TR>
				<TR><TD width="151" rowspan="1" colspan="1">Finance</TD>
					<TD width="391" rowspan="1" colspan="1">Dimension Mapping</TD>
				</TR>
				<TR><TD width="151" rowspan="1" colspan="1">Finance</TD>
					<TD width="391" rowspan="1" colspan="1">Financial Business Partner Group (Accounts Receivable)</TD>
				</TR>
				<TR><TD width="151" rowspan="1" colspan="1">Finance</TD>
					<TD width="391" rowspan="1" colspan="1">Financial Business Partner Group (Accounts Payable)</TD>
				</TR>
				<TR><TD width="151" rowspan="1" colspan="1">Finance</TD>
					<TD width="391" rowspan="1" colspan="1">Invoice-Source Relation</TD>
				</TR>
				<TR><TD width="151" rowspan="1" colspan="1">Quality Management</TD>
					<TD width="391" rowspan="1" colspan="1">Inspection Orders – Easy Entry</TD>
				</TR>
				<TR><TD width="151" rowspan="1" colspan="1">Quality Management</TD>
					<TD width="391" rowspan="1" colspan="1">Item – Storage Inspection</TD>
				</TR>
				<TR><TD width="151" rowspan="1" colspan="1">Object Data Management</TD>
					<TD width="391" rowspan="1" colspan="1">Document Revisions – Easy Entry</TD>
				</TR>
				<TR><TD width="151" rowspan="1" colspan="1">Object Data Management</TD>
					<TD width="391" rowspan="1" colspan="1">Change Proposal – Easy Entry</TD>
				</TR>
				<TR><TD width="151" rowspan="1" colspan="1">Tools</TD>
					<TD width="391" rowspan="1" colspan="1">Table Definitions</TD>
				</TR>
				<TR><TD width="151" rowspan="1" colspan="1">Tools</TD>
					<TD width="391" rowspan="1" colspan="1">Business Objects</TD>
				</TR>
			</TBODY>
		</TABLE>
	</GeneralSection>
	<GeneralSection><SectionTitle>Header and satellites</SectionTitle>
		<List><ListIntro>A parent-child MMT session is actually an integration of multiple sessions into one single session. It consists of:</ListIntro>
			<ListItem>A header session: this is the upper part of the MMT session window. It contains information and functionality about the parent (e.g. about the Service Order, see the previous figure). The header is a single occurrence session.</ListItem>
			<ListItem>One or more satellites (displayed as tabs) containing data and functionality for the various types of children, (e.g. for the activities, estimated materials and estimated labor). Each satellite is a separate session that is linked to the MMT header session. All satellites are multi occurrence sessions.</ListItem>
		</List>
		<Paragraph class="Default">The header and satellites can also run stand-alone.</Paragraph>
		<Figure space-and-orientation="indented-estimated"><HTML:IMG height="379" width="578" SRC="../images/tr_graph_mmt_header_satellite.gif" path="/enterpriseserver/tools/tt/onlinemanual" btb-count="1" btb-count2="1" btb-image-name="tr_graph_mmt_header_satellite.gif" btb-source-path="C:\SVN\docnl\Technology\EnterpriseServer~8.5\EnterpriseServer" btb-image-path="/enterpriseserver/tools/tt/images/tr_graph_mmt_header_satellite.gif" ID="IDAUDYBC" alt="[...]" xmlns:HTML="http://www.w3.org/TR/REC-html40"/><FigCaption>Header and satellites</FigCaption>
		</Figure>
		<Paragraph class="Default">The header and lines in an MMT session are automatically synchronized: when you select a particular record in the header area, automatically the corresponding lines are displayed in the satellites. There is no synchronization between the satellites themselves.</Paragraph>
		<Paragraph class="Default">A satellite tab only contains a grid. Additional fields outside the grid, (‘view fields’) are only displayed when the satellite runs stand-alone.</Paragraph>
		<ExampleSection><SectionTitle>
                                 Example
                              </SectionTitle>
			<Paragraph class="Default">When the Order Lines session runs stand-alone, the Order Number is displayed as a view field above the grid. However, when the session runs as a satellite in the Order MMT session, the satellite tab only displays the grid.</Paragraph>
		</ExampleSection>
	</GeneralSection>
	<GeneralSection><SectionTitle>Developer guidelines</SectionTitle>
		<Paragraph class="Default">This section describes the prerequisites, possible issues and the procedure for creating an initial MMT header-lines session.</Paragraph>
		<GeneralSection><SectionTitle>Prerequisites</SectionTitle>
			<List><ListIntro>You can only create an MMT header-lines session if:</ListIntro>
				<ListItem>There is a clear header-lines relation. Infor Enterprise Server only supports synchronization if each satellite is directly related to its header. For example: Sales Order Lines are directly related to the Sales Order Header through the Order Number field.</ListItem>
				<ListItem>No synchronization is required between the satellites themselves.</ListItem>
				<ListItem>The header has a single-occurrence representation. If it has not, it should be created first.</ListItem>
				<ListItem>All satellite sessions you want to define have multi-occurrence representations. If they do not, they should be created first.</ListItem>
			</List>
		</GeneralSection>
		<GeneralSection><SectionTitle>Possible issues</SectionTitle>
			<Paragraph class="Default">Before you start creating an MMT header-lines session, identify possible issues and development effort required to solve these.</Paragraph>
			<List><ListIntro>Possible issues are:</ListIntro>
				<ListItemHead>Deep copy/delete</ListItemHead>
				<ListItem>The header of the header-lines session contains the <GUIRef href="" role="manual">Duplicate</GUIRef> and <GUIRef href="" role="manual">Delete</GUIRef> standard commands. In an initial MMT session, these actions only execute on the header. Functionality to automatically copy or remove the corresponding lines when a header is copied or removed, must be programmed separately. You can re-use already existing code to do this.</ListItem>
				<ListItemHead>Implicit saves</ListItemHead>
				<ListItem>An implicit save means that a session and its contents are saved without a user action. An explicit save means that the user performs a (manual) "Save" action, e.g. by clicking <GUIRef href="" role="manual">Save</GUIRef> on the tool bar or by selecting the <GUIRef href="" role="manual">Save</GUIRef> menu item. In an MMT header-lines session, all data within each separate session is saved implicitly on each focus change from satellite to satellite, from header to satellite, or the other way around. For example, if a sales order is inserted and you switch the focus from the header to one of the satellites, the header is saved implicitly. To indicate that a save is being executed, a save icon appears in the lower right part of the session window. When you close the session while you modified data after the last implicit or explicit save, you will be prompted whether the changes must be saved. If you select <GUIRef href="" role="manual">No</GUIRef>, this only undoes the changes after the last implicit or explicit save. While programming, be aware of this behavior. It can cause unreferenced data in the database, e.g. an order header without lines. You might consider programming either a way to remove this data directly when it is generated, or to build a session that cleans the database of these unreferenced entries.</ListItem>
			</List>
		</GeneralSection>
		<ProcedureSection><SectionTitle>To create an initial MMT session</SectionTitle>
			<Steps><Step><StepTitle>Create MMT header session</StepTitle>
					<Paragraph class="Default">Start the <GUIRef href="/baanerp/tt/adv/ttadv2500m000" role="session">Sessions (ttadv2500m000)</GUIRef> session and create an MMT header session.</Paragraph>
					<List><ListIntro>Points of attention are:</ListIntro>
						<ListItem>Select the <GUIRef href="" role="manual">Multi Main Table</GUIRef> Window Type.</ListItem>
						<ListItem>Specify a details session as <GUIRef href="/baanerp/tt/adv/ttadv2100s000#ttadv300.zj_sync" role="manual">Synchronized Dialog</GUIRef> for the MMT header session. For example, specify the Order Header details session as synchronized dialog for the Order MMT header session. Users can start this session through the <GUIRef href="" role="manual">Details</GUIRef> command in the MMT header session.</ListItem>
						<ListItem>In the <GUIRef href="/baanerp/tt/adv/ttadv2100s000#ttadv300.zl_objl" role="manual">Label of Object</GUIRef> field, select the label that must be used in the header session's menu items. Refer to <Link href="#label_of_object" role="internal">Label of Object</Link> for details.</ListItem>
					</List>
				</Step>
				<Step><StepTitle>Customize the MMT header session</StepTitle>
					<List><ListItem>Edit the form of the MMT header session. Only include those fields, which are most probably needed for entering a new record. All other relevant properties will be specified in the Synchronized Dialog. The synchronized dialog will be shown in a separate window.</ListItem>
						<ListItem>Make sure that the MMT session will fit into WebTop. WebTop supports 1024x768, but since the sessions are hosted within WebTop, they should be a bit smaller. Try your session in WebTop to see if it fits. To maximize a ERP session within WebTop, press ALT+F11. That way you will see the session full screen.</ListItem>
						<ListItem>The fields specified in the dynamic form of the MMT header session are displayed in the upper part of the MMT session, above the satellite tabs. By default these fields should be read-only. They should only be accessible when a new record is inserted in the header session. To achieve this, use 'add.set' in the program script.</ListItem>
					</List>
					<Paragraph class="Default">For details on form editing, refer to <Link href="/baanerp/tt/onlinemanual/100125" role="manual">Dynamic sessions and dynamic forms</Link>. For details on program scripts, refer to <Link href="/baanerp/tt/onlinemanual/100129" role="manual">Program Scripts Overview</Link> and to the <DocRef>ERP LN 6.1 Programmer's Guide</DocRef> ( <Code>progguide.chm</Code> Help file), which is stored in the <Code>help</Code> folder in the installation folder of your Infor BW Client.</Paragraph>
					<Paragraph class="Default">Note: the <Code>progguide.chm</Code> Help file is delivered with the Dynamic Form Editor ( DFE ). If the file is not present on your PC, you must first install the DFE from the ERP LN installation CD.</Paragraph>
				</Step>
				<Step><StepTitle>Define Label of Object for each satellite</StepTitle>
					<Paragraph class="Default">Edit the properties of each satellite session in the <GUIRef href="/baanerp/tt/adv/ttadv2100s000" role="session">Sessions (ttadv2100s000)</GUIRef> details session. In the <GUIRef href="/baanerp/tt/adv/ttadv2100s000#ttadv300.zl_objl" role="manual">Label of Object</GUIRef> field, select the label that must be used in the satellite's tab description and menu items. Refer to <Link href="#label_of_object" role="internal">Label of Object</Link> for details.</Paragraph>
				</Step>
				<Step><StepTitle>Link satellites to MMT Header session</StepTitle>
					<List><ListIntro>Link the desired satellites to the new MMT header session:</ListIntro>
						<ListItem>Select the MMT header session in the <GUIRef href="/baanerp/tt/adv/ttadv2500m000" role="session">Sessions (ttadv2500m000)</GUIRef> session, and subsequently, on the <GUIRef href="" role="menu">Specific</GUIRef> menu, click <GUIRef href="/baanerp/tt/adv/ttadv2500m000#start.satellite.session" role="command">MMT Satellite Sessions</GUIRef>.</ListItem>
						<ListItem>The <GUIRef href="/baanerp/tt/adv/ttadv3110m000" role="session">Satellite Sessions (ttadv3110m000)</GUIRef> session is started. Specify the satellites that must be linked. Per satellite, you must enter the field relations that are used to synchronize the MMT header session with the satellite session: <List><ListItem>For each variable to be synchronized, specify the name of the relevant field in the header's main table, followed by the name of the corresponding field in the main table of the satellite. For example: specify the Order Number field from the Order Headers table and the Order Number field from the Order Lines table.</ListItem>
								<ListItem>You can use the <GUIRef href="/baanerp/tt/adv/ttadv3110m000#generate.default.mapping" role="command">Generate Field Mapping</GUIRef> command to define a default field mapping, based on field names and domains. This generated field mapping is not always correct and complete!</ListItem>
							</List>
						</ListItem>
					</List>
				</Step>
				<Step><StepTitle>Create/modify program scripts and DAL scripts</StepTitle>
					<Paragraph class="Default">The MMT header session and the satellite sessions are separate sessions. Therefore you have to define a program script (UI script) for each of them, and optionally modify the DAL scripts of the corresponding tables. Other session components, such as Reports, Text fields and Indices must also be defined per session.</Paragraph>
					<Paragraph class="Default">When a satellite tab is activated the first time, the corresponding session is started and its startup-sections (before.program, after.form.read, init.group.1) are called as usually.</Paragraph>
					<List><ListIntro>The program script of the satellite session can run in two modes:</ListIntro>
						<ListItemHead>Stand-alone mode</ListItemHead>
						<ListItem>This is the ‘normal’ mode; used when the session is executed as stand-alone session.</ListItem>
						<ListItemHead>Satellite mode</ListItemHead>
						<ListItem>This is the special MMT mode. Use the <GUIRef href="" role="manual">is.mmt.satellite()</GUIRef> statement to check whether a session is running as an MMT satellite session. You can program different behavior for the satellite mode if required.</ListItem>
					</List>
					<List><ListIntro>In the <Emphasis>satellite mode</Emphasis> you can perform the following actions:</ListIntro>
						<ListItemHead>Hide fields</ListItemHead>
						<ListItem>Hide certain form fields since they are not relevant in the satellite mode. Note however that there is only one form for both modes and that you must define all fields, that you want to use in either one of them, in the form.</ListItem>
						<ListItemHead>Enable/disable satellite</ListItemHead>
						<ListItem>Enable or disable a satellite within an MMT session in a particular case. The tab of a disabled satellite is still visible in the MMT session, but cannot be selected or accessed. To disable a satellite, use the <GUIRef href="" role="manual">disable.satellite()</GUIRef> function, to enable it use <GUIRef href="" role="manual">enable.satellite()</GUIRef>. You must call these functions from the global <GUIRef href="" role="manual">after.form.read</GUIRef> section in the header session's program script.</ListItem>
						<ListItemHead>Hide/unhide satellite</ListItemHead>
						<ListItem>Hide a particular satellite using the <GUIRef href="" role="manual">satellite.invisible()</GUIRef> function. Advantage of this method is that you can still make the satellite visible at runtime (e.g. you can check authorizations and subsequently hide/unhide satellites for specific users). You cannot hide/unhide satellites dynamically based on the availability of data in a satellite.</ListItem>
					</List>
					<Paragraph class="Default">For details on program scripts and DAL, refer to <Link href="/baanerp/tt/onlinemanual/100129" role="manual">Program Scripts Overview</Link>, <Link href="/baanerp/tt/onlinemanual/100123" role="manual">DAL 1 Overview</Link>, <Link href="/baanerp/tt/onlinemanual/100124" role="manual">DAL 2 Overview</Link> and to the <DocRef>ERP LN 6.1 Programmer's Guide</DocRef> ( <Code>progguide.chm</Code> Help file).</Paragraph>
				</Step>
			</Steps>
		</ProcedureSection>
		<GeneralSection ID="label_of_object"><SectionTitle>Label of Object</SectionTitle>
			<Paragraph class="Default">For both, MMT header sessions and satellite sessions, you must define the so called <GUIRef href="" role="manual">Label of Object</GUIRef>. This label contains a generic description of the object within the session.</Paragraph>
			<ProcedureList><ListIntro>To define a <GUIRef href="" role="manual">Label of Object</GUIRef> for a session:</ListIntro>
				<ListItem>create a label in the <GUIRef href="/baanerp/tt/adv/ttadv1140m000" role="session">Labels (ttadv1140m000)</GUIRef> session</ListItem>
				<ListItem>link the label to the session: specify the label in the <GUIRef href="/baanerp/tt/adv/ttadv2100s000#ttadv300.zl_objl" role="manual">Label of Object</GUIRef> field in the <GUIRef href="/baanerp/tt/adv/ttadv2100s000" role="session">Sessions (ttadv2100s000)</GUIRef> details session.</ListItem>
			</ProcedureList>
			<GeneralSection><SectionTitle>Label for Header session</SectionTitle>
				<List><ListIntro>For a Header session, you must define a single label. Points of attention:</ListIntro>
					<ListItem>The text should be a singular noun, e.g. "Purchase Order" (for the Purchase Order MMT header session).</ListItem>
					<ListItem>The <GUIRef href="/baanerp/tt/adv/ttadv1140m000#ttadv140.zc_cont" role="manual">Context of Label</GUIRef> must be <GUIRef href="" role="manual">Session, Table or Report Description</GUIRef>.</ListItem>
				</List>
				<Paragraph class="Default">The <GUIRef href="" role="manual">Label of Object</GUIRef> is used in the Header session's menu-items to make explicitly clear on what object the menu-item-command executes. For example: the menu-item for inserting a new record in the Purchase Order MMT header session will be called <GUIRef href="" role="manual">New Purchase Order</GUIRef> instead of only <GUIRef href="" role="manual">New</GUIRef>.</Paragraph>
			</GeneralSection>
			<GeneralSection><SectionTitle>Labels for satellite sessions</SectionTitle>
				<Paragraph class="Default">For a satellite session, you can create 2 labels with the same label code. One label is used in the satellite's menus, the other is used as the satellite's tab description.</Paragraph>
				<Paragraph class="Default"><GUIRef href="" role="manual">Menu items</GUIRef>
				</Paragraph>
				<List><ListIntro>Points of attention for the label that is used in the satellite's menu-items:</ListIntro>
					<ListItem>The text must be a singular noun, e.g. "Order Line" (for the Purchase Order Lines satellite session).</ListItem>
					<ListItem>The <GUIRef href="/baanerp/tt/adv/ttadv1140m000#ttadv140.zc_cont" role="manual">Context of Label</GUIRef> must be <GUIRef href="" role="manual">Session, Table or Report Description</GUIRef>.</ListItem>
				</List>
				<Paragraph class="Default">This label makes explicitly clear on what object the menu-item-command executes. For example: the menu-item for inserting a new record in the Purchase Order Lines satellite session will be called <GUIRef href="" role="manual">New Order Line</GUIRef> instead of only <GUIRef href="" role="manual">New</GUIRef> ).</Paragraph>
				<Paragraph class="Default"><GUIRef href="" role="manual">Tab description</GUIRef>
				</Paragraph>
				<List><ListIntro>By default the session-description of the satellite is shown on the tab. When this description is not suitable, you must create a new label with the following properties:</ListIntro>
					<ListItem>The label code must be identical to the code of the other <GUIRef href="" role="manual">Label of Object</GUIRef>.</ListItem>
					<ListItem>The text must be a plural noun, e.g. "Order Lines" (for the Purchase Order Lines satellite session).</ListItem>
					<ListItem>The <GUIRef href="/baanerp/tt/adv/ttadv1140m000#ttadv140.zc_cont" role="manual">Context of Label</GUIRef> must be <GUIRef href="" role="manual">General Use</GUIRef>.</ListItem>
				</List>
			</GeneralSection>
		</GeneralSection>
	</GeneralSection>
	<RelatedTopics><SectionTitle>
                              Related topics
                           </SectionTitle>
		<RelTopic><Link href="/baanerp/tt/onlinemanual/100121" role="manual">Session Synchronization</Link>
		</RelTopic>
		<RelTopic><Link href="/baanerp/tt/onlinemanual/100125" role="manual">Dynamic sessions and dynamic forms</Link>
		</RelTopic>
	</RelatedTopics>
</ManualTopic>
