<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Sumit Loya</title>
	<atom:link href="http://sumitsaxfactor.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://sumitsaxfactor.wordpress.com</link>
	<description>www.solugenix.com</description>
	<lastBuildDate>Sat, 19 May 2012 15:15:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='sumitsaxfactor.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/2ff050a9146434d27f6a67ab477e366a?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Sumit Loya</title>
		<link>http://sumitsaxfactor.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://sumitsaxfactor.wordpress.com/osd.xml" title="Sumit Loya" />
	<atom:link rel='hub' href='http://sumitsaxfactor.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Create Your First Custom Service [AX 2012]</title>
		<link>http://sumitsaxfactor.wordpress.com/2012/05/19/create-your-first-custom-service-ax-2012/</link>
		<comments>http://sumitsaxfactor.wordpress.com/2012/05/19/create-your-first-custom-service-ax-2012/#comments</comments>
		<pubDate>Sat, 19 May 2012 15:15:00 +0000</pubDate>
		<dc:creator>Sumit Loya</dc:creator>
				<category><![CDATA[AX 2012]]></category>
		<category><![CDATA[Custom Services]]></category>
		<category><![CDATA[Services in AX 2012]]></category>
		<category><![CDATA[WCF Services]]></category>

		<guid isPermaLink="false">https://sumitsaxfactor.wordpress.com/?p=246</guid>
		<description><![CDATA[As AX has advanced, so has its integration with WCF. One of the good concepts that MS has introduced in AX 2012 is custom services. With custom services, anything and everything in AX can be exposed as Windows Communication Framework (WCF) service. This article concentrates on helping you create your first custom service. For creating [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sumitsaxfactor.wordpress.com&#038;blog=18430881&#038;post=246&#038;subd=sumitsaxfactor&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><font size="3" face="Calibri">As AX has advanced, so has its integration with WCF. One of the good concepts that MS has introduced in AX 2012 is custom services.</font></p>
<p><font size="3" face="Calibri">With custom services, anything and everything in AX can be exposed as Windows Communication Framework (WCF) service. This article concentrates on helping you create your first custom service.</font></p>
<p><font size="3" face="Calibri">For creating and exposing custom service, following steps are involved:</font></p>
<ol>
<li><font size="3" face="Calibri">Create a DataContract class (If required. In this example we will skip this step. I will include this in next article)</font>
<li><font size="3" face="Calibri">Create a custom service class that utilizes the DataContract class and contains the required Business Logic</font>
<li><font size="3" face="Calibri">Create a new Service utilizing service class</font>
<li><font size="3" face="Calibri">Add the Service to service group</font>
<li><font size="3" face="Calibri">Deploy the service group</font>
<li><font size="3" face="Calibri">Verify the deployment ports</font>
<li><font size="3" face="Calibri">Consume in Visual Studio (C#)</font></li>
</ol>
<p><font size="3" face="Calibri">Let us see how we can achieve this.</font></p>
<p><font face="Calibri"><font size="3"><strong><u>Simple Scenario: </u></strong>The scenario we will take in this examples is customers. We will write a service to fetch all customers from default company. Add these customers to a list. Now select a subset of customers, pass it back to Ax and get their names. With this we can see how we can set and get an array of values.</font></font></p>
<p><font size="3" face="Calibri"><strong><u>Create Custom Service Class</u></strong></font></p>
<p><font size="3" face="Calibri">Do the following:</font></p>
<ul>
<li><font size="3" face="Calibri">In AOT –&gt; Classes node, right click and create new class</font>
<li><font face="Calibri"><font size="3">Name it as <strong><em>SamCustomServiceTest</em></strong></font></font></li>
</ul>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">/// &lt;summary&gt;</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">/// Custom service class to demonstrate the creation and consumption of WCF services from AX</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">/// &lt;/summary&gt;</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">/// &lt;remarks&gt;</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">/// This is the custom service class for fetching customer ids and customer names</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">/// &lt;/remarks&gt;</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><font face="Consolas"><font size="2"><b><span><font color="#00008b">class</font></span></b><span><font color="#000000"> SamCustomServiceTest</font></span></font></font></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">{</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">}</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font color="#000000" size="2" face="Consolas"></font></span>&nbsp;</p>
<ul>
<li><font size="3" face="Calibri">Add a service operation method to retrieve customer ids as shown below</font></li>
</ul>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">/// &lt;summary&gt;</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">/// Gets a list of customer ids from the specified company</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">/// &lt;/summary&gt;</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">/// &lt;returns&gt;</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">///<span>&nbsp; </span>List of customer Ids</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">/// &lt;/returns&gt;</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">/// &lt;remarks&gt;</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">/// AifCollectionTypeAttribute is used to define strongly typed containers for data</font></font></span></i></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">/// &lt;/remarks&gt;</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000">[AifCollectionTypeAttribute(</font><span><font color="#8b0000">'return'</font></span><font color="#000000">, Types::String), SysEntryPointAttribute(</font><b><span><font color="#00008b">true</font></span></b><font color="#000000">)]</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><font face="Consolas"><font size="2"><b><span><font color="#00008b">public</font></span></b><span><font color="#000000"> List retrieveCustomerIds()</font></span></font></font></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">{</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&nbsp;&nbsp;&nbsp; </span>List resultSet = </font><b><span><font color="#00008b">new</font></span></b><font color="#000000"> List(Types::String);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&nbsp;&nbsp;&nbsp; </span>CustTable<span>&nbsp;&nbsp; </span>custTable;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&nbsp;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&nbsp;&nbsp;&nbsp; </font></span><b><span><font color="#00008b">while</font></span></b><font color="#000000"> </font><b><span><font color="#00008b">select</font></span></b><font color="#000000"> custTable</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&nbsp;&nbsp;&nbsp; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>resultSet.addEnd(custTable.AccountNum);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&nbsp;&nbsp;&nbsp; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&nbsp;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&nbsp;&nbsp;&nbsp; </font></span><b><span><font color="#00008b">return</font></span></b><font color="#000000"> resultSet;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">}</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font color="#000000" face="Consolas"></font></span>&nbsp;</p>
<ul>
<li><font size="3" face="Calibri">Add a service operation method to retrieve a combination of “Customer Ids and names” for the supplied list of customers as shown below</font></li>
</ul>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">/// &lt;summary&gt;</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">/// Gets a list of customer ids from the specified company</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">/// &lt;/summary&gt;</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">/// &lt;param name=&#8221;_custList&#8221;&gt;</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">/// The list of customer ids; Mandatory</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">/// &lt;/param&gt;</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">/// &lt;returns&gt;</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">///<span>&nbsp; </span>List of customer Ids</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">/// &lt;/returns&gt;</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">/// &lt;remarks&gt;</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">/// AifCollectionTypeAttribute is used to define strongly typed containers for data</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000" size="2">/// &lt;/remarks&gt;</font></font></span></i><span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000">[SysEntryPointAttribute(</font><b><span><font color="#00008b">true</font></span></b><font color="#000000">),</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&nbsp;</span>AifCollectionTypeAttribute(</font><span><font color="#8b0000">'return'</font></span><font color="#000000">, Types::String),</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&nbsp;</span>AifCollectionTypeAttribute(</font><span><font color="#8b0000">'_custList'</font></span><font color="#000000">, Types::String)]</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><font face="Consolas"><font size="2"><b><span><font color="#00008b">public</font></span></b><span><font color="#000000"> List retrieveCustomerNames(List _custList)</font></span></font></font></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">{</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&nbsp;&nbsp;&nbsp; </span>ListEnumerator<span>&nbsp; </span>listEnum = _custList.getEnumerator();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&nbsp;&nbsp;&nbsp; </span>List resultSet = </font><b><span><font color="#00008b">new</font></span></b><font color="#000000"> List(Types::String);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&nbsp;&nbsp;&nbsp; </span>CustTable<span>&nbsp;&nbsp; </span>custTable;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&nbsp;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&nbsp;&nbsp;&nbsp; </font></span><b><span><font color="#00008b">while</font></span></b><font color="#000000"> (listEnum.moveNext())</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&nbsp;&nbsp;&nbsp; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><b><span><font color="#00008b">select</font></span></b><font color="#000000"> </font><b><span><font color="#00008b">firstOnly</font></span></b><font color="#000000"> custTable</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><b><span><font color="#00008b">where</font></span></b><font color="#000000"> custTable.AccountNum == listEnum.current();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&nbsp;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><b><span><font color="#00008b">if</font></span></b><font color="#000000"> (custTable)</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>resultSet.addEnd(custTable.AccountNum + </font><span><font color="#8b0000">&#8220;: &#8220;</font></span><font color="#000000">+ custTable.name());</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><b><span><font color="#00008b">else</font></span></b></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>resultSet.addEnd(listEnum.current() + </font><span><font color="#8b0000">&#8220;: Customer not found&#8221;</font></span><font color="#000000">);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&nbsp;&nbsp;&nbsp; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&nbsp;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&nbsp;&nbsp;&nbsp; </font></span><b><span><font color="#00008b">return</font></span></b><font color="#000000"> resultSet;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">}</font></font></span></p>
<p style="line-height:13pt;margin:0 0 10pt;" class="MsoNormal"><font face="Calibri"><font color="#000000">&nbsp;</font></font></p>
<p><a href="http://sumitsaxfactor.files.wordpress.com/2012/05/image.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;float:left;padding-top:0;border-width:0;" title="image" border="0" alt="image" align="left" src="http://sumitsaxfactor.files.wordpress.com/2012/05/image_thumb.png?w=21&h=23" width="21" height="23"></a><font face="Calibri"><font face="Calibri"><font size="3"><em><strong>Note: </strong>There are many metadata attributes specifed here. The first one is the <strong>AifCollectionTypeAttribute</strong>. This class has been developed to create strongly typed collections for data that you need to communicate. Here the return type if List (A collection object). AifCollectionTypeAttribute defines the type of data the list holds. When this service operation is exposed, the return type for the operation will be corresponding data type array (in this case a string array). The <strong>SysEntryPointAttribute</strong> indicates what authorization checks are performed for a method that is called on the server. This attribute must be set for all service operations. <strong>Value ‘true’</strong> indicates authorization checks are performed on the calling user for all tables accessed by the method. <strong>Value ‘false’</strong> indicates authorization checks are not performed on any tables accessed by the method. (You may have noticed that processReport method for any Data Provider class has this value set to false).</em></font></font></font></p>
<p><a href="http://sumitsaxfactor.files.wordpress.com/2012/05/image1.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;float:left;padding-top:0;border-width:0;" title="image" border="0" alt="image" align="left" src="http://sumitsaxfactor.files.wordpress.com/2012/05/image_thumb1.png?w=20&h=16" width="20" height="16"></a><em><font size="3" face="Calibri">The service operations should not be named as create, read, update delete, find etc. These names are exclusively reserved for methods on AIF Service classes. If you use these method names in your custom service, you will face errors while deploying them.</font></em></p>
<p><font face="Calibri"><font face="Calibri"><font size="3"><strong><u>Create Custom Service</u></strong></font></font></font></p>
<ul>
<li><font face="Calibri"><font face="Calibri"><font size="3">In AOT –&gt; Services Right click and add new service</font></font></font>
<li><font face="Calibri"><font face="Calibri"><font size="3">Name the service as SamCustomService, ExternalName = SamCustomService and specify Class = SamCustomServiceTest</font></font></font></li>
</ul>
<p><font face="Calibri"><font size="3"><a href="http://sumitsaxfactor.files.wordpress.com/2012/05/image2.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="image" border="0" alt="image" src="http://sumitsaxfactor.files.wordpress.com/2012/05/image_thumb2.png?w=478&h=356" width="478" height="356"></a><font face="Calibri"><font face="Calibri"><font size="3"></p>
<p></font></font></font>
<ul>
<li>Expand the newly created service node.
<li>Right click on operations and select “Add service operations”
<li>This opens an intermediate form, select both the service operation methods</li>
</ul>
<p><a href="http://sumitsaxfactor.files.wordpress.com/2012/05/image3.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="image" border="0" alt="image" src="http://sumitsaxfactor.files.wordpress.com/2012/05/image_thumb3.png?w=251&h=224" width="251" height="224"></a></p>
<p>Save the service and your service is ready now.</p>
<p><a href="http://sumitsaxfactor.files.wordpress.com/2012/05/image4.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="image" border="0" alt="image" src="http://sumitsaxfactor.files.wordpress.com/2012/05/image_thumb4.png?w=255&h=138" width="255" height="138"></a></p>
<p><strong><u>Create and Deploy Service Group</u></strong></p>
<ul>
<li><font face="Calibri"><font face="Calibri"><font size="3">In AOT –&gt; Service Groups Right click and add new service group</font></font></font>
<li><font face="Calibri"><font face="Calibri"><font size="3">Name the group as SamCustomServiceGroup, Description = “Custom services for test” and AutoDeploy = Yes (Starts this service every time that the AOS is restarted)</font></font></font>
<li>Save the service group and then right click and Select “New Service Node Reference”
<li>Type Name = SamCustomService and Service = SamCustomService
<li>Save the Service group
<li>Right click and select “Deploy Service Group”</li>
</ul>
<p><a href="http://sumitsaxfactor.files.wordpress.com/2012/05/image5.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="image" border="0" alt="image" src="http://sumitsaxfactor.files.wordpress.com/2012/05/image_thumb5.png?w=314&h=95" width="314" height="95"></a></p>
<p><strong><u>Verify the Deployment</u></strong></p>
<ul>
<li>Open the Inbound ports form from <em>System Administration –&gt; Setup –&gt; Services and Application Integration Framework –&gt; Inbound ports</em>.
<li>Ensure that the SamCustomServiceGroup has a green check mark next to it. This means the port is active. If it is not, select SamCustomServiceGroup and then click Activate to activate the basic port.<br /> 
<li>You an use IE to view the WSDL file at the address specified in WSDL URI field of the Inbound ports form.</li>
</ul>
<p><a href="http://sumitsaxfactor.files.wordpress.com/2012/05/image6.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="image" border="0" alt="image" src="http://sumitsaxfactor.files.wordpress.com/2012/05/image_thumb6.png?w=577&h=300" width="577" height="300"></a>&nbsp;</p>
<p><strong><u>Consuming Custom Service in Visual Studio (C#)</u></strong></p>
<p>Now that the custom service is ready, let us go ahead and use that in a .Net Application. For that open your Visual Studio 2008 or 2010 development environment and do the following</p>
<ul>
<li>Create new project of Type “Windows Application” for language Visual C#</li>
</ul>
<p><a href="http://sumitsaxfactor.files.wordpress.com/2012/05/image7.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="image" border="0" alt="image" src="http://sumitsaxfactor.files.wordpress.com/2012/05/image_thumb7.png?w=386&h=238" width="386" height="238"></a></p>
<ul>
<li>Add a new form and then add two buttons and two List boxes as depicted below</li>
</ul>
<p><a href="http://sumitsaxfactor.files.wordpress.com/2012/05/image8.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="image" border="0" alt="image" src="http://sumitsaxfactor.files.wordpress.com/2012/05/image_thumb8.png?w=416&h=348" width="416" height="348"></a></p>
<ul>
<li>In the solution explorer for the new project, select Service References node and right click. Click on “Add Service Reference”</li>
<li>In the subsequent dialog box set following: Address = WSDL URI from inbound port</li>
<li>Click on Go. This will display the available services from the port</li>
<li>Select SamCustomService and set Namespace = SamCustomAXService</li>
<li>Click Ok</li>
</ul>
<p><a href="http://sumitsaxfactor.files.wordpress.com/2012/05/image9.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="image" border="0" alt="image" src="http://sumitsaxfactor.files.wordpress.com/2012/05/image_thumb9.png?w=394&h=330" width="394" height="330"></a></p>
<p><a href="http://sumitsaxfactor.files.wordpress.com/2012/05/image10.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="image" border="0" alt="image" src="http://sumitsaxfactor.files.wordpress.com/2012/05/image_thumb10.png?w=265&h=249" width="265" height="249"></a></p>
<ul>
<li>Now double click on first button “Get Customers” and add following code there</li>
</ul>
<p style="line-height:normal;margin:0;" class="MsoNormal"><font face="Consolas"><font size="2"><span><font color="#0000ff">private</font></span><span><font color="#000000"> </font><span><font color="#0000ff">void</font></span><font color="#000000"> button1_Click(</font><span><font color="#0000ff">object</font></span><font color="#000000"> sender, </font><span><font color="#2b91af">EventArgs</font></span><font color="#000000"> e)</font></span></font></font></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">{</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000">&nbsp;&nbsp;&nbsp; SamCustomAXService.</font><span><font color="#2b91af">SamCustomServiceClient</font></span><font color="#000000"> servClient = </font><span><font color="#0000ff">new</font></span><font color="#000000"> SamCustomAXService.</font><span><font color="#2b91af">SamCustomServiceClient</font></span><font color="#000000">();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&nbsp;&nbsp;&nbsp; </font></span><span><font color="#0000ff">string</font></span><font color="#000000">[] custIds = servClient.retrieveCustomerIds(</font><span><font color="#0000ff">new</font></span><font color="#000000"> SamCustomAXService.</font><span><font color="#2b91af">CallContext</font></span><font color="#000000">());</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&nbsp;&nbsp;&nbsp; listBox1.Items.Clear();</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#0000ff">&nbsp;&nbsp;&nbsp; foreach</font></span><font color="#000000"> (</font><span><font color="#0000ff">string</font></span><font color="#000000"> custId </font><span><font color="#0000ff">in</font></span><font color="#000000"> custIds)</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listBox1.Items.Add(custId);</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">}</font></font></span></p>
<p style="line-height:13pt;margin:0 0 10pt;" class="MsoNormal"><font color="#000000">&nbsp;</font></p>
<ul>
<li>Now double click on second button “Get Select Cust Names” and add following code</li>
</ul>
<p style="line-height:normal;margin:0;" class="MsoNormal"><font face="Consolas"><font size="2"><span><font color="#0000ff">private</font></span><span><font color="#000000"> </font><span><font color="#0000ff">void</font></span><font color="#000000"> button2_Click(</font><span><font color="#0000ff">object</font></span><font color="#000000"> sender, </font><span><font color="#2b91af">EventArgs</font></span><font color="#000000"> e)</font></span></font></font></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">{</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&nbsp;&nbsp;&nbsp; </span>SamCustomAXService.</font><span><font color="#2b91af">SamCustomServiceClient</font></span><font color="#000000"> servClient = </font><span><font color="#0000ff">new</font></span><font color="#000000"> SamCustomAXService.</font><span><font color="#2b91af">SamCustomServiceClient</font></span><font color="#000000">();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&nbsp;&nbsp;&nbsp; </font></span><span><font color="#0000ff">string</font></span><font color="#000000">[] strItem = </font><span><font color="#0000ff">null</font></span><font color="#000000">;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&nbsp;&nbsp;&nbsp; </font></span><span><font color="#0000ff">int</font></span><font color="#000000"> i = 0;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&nbsp;&nbsp;&nbsp; </span>strItem = </font><span><font color="#0000ff">new</font></span><font color="#000000"> </font><span><font color="#0000ff">string</font></span><font color="#000000">[listBox1.SelectedItems.Count];</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&nbsp;&nbsp;&nbsp; </font></span><span><font color="#008000">//Get selected customer ids and prepare a string array</font></span></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&nbsp;&nbsp;&nbsp; </font></span><span><font color="#0000ff">foreach</font></span><font color="#000000"> (</font><span><font color="#2b91af">Object</font></span><font color="#000000"> selecteditem </font><span><font color="#0000ff">in</font></span><font color="#000000"> listBox1.SelectedItems)</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&nbsp;&nbsp;&nbsp; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span><span><font color="#0000ff">string</font></span><font color="#000000"> item<span>&nbsp; </span>= selecteditem </font><span><font color="#0000ff">as</font></span><font color="#000000"> </font><span><font color="#0000ff">string</font></span><font color="#000000">;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>strItem[i++] = item;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&nbsp;&nbsp;&nbsp; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&nbsp;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&nbsp;&nbsp;&nbsp; </font></span><span><font color="#008000">//Use the string array to get the &#8220;Customer Id: Customer Name&#8221; Combo data</font></span></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&nbsp;&nbsp;&nbsp; </font></span><span><font color="#0000ff">string</font></span><font color="#000000">[] custIds = servClient.retrieveCustomerNames(</font><span><font color="#0000ff">new</font></span><font color="#000000"> SamCustomAXService.</font><span><font color="#2b91af">CallContext</font></span><font color="#000000">(), strItem);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><span><font face="Consolas"><font color="#000000" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&nbsp;&nbsp;&nbsp; </span>listBox2.Items.Clear();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&nbsp;&nbsp;&nbsp; </font></span><span><font color="#0000ff">foreach</font></span><font color="#000000"> (</font><span><font color="#0000ff">string</font></span><font color="#000000"> custId </font><span><font color="#0000ff">in</font></span><font color="#000000"> custIds)</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>listBox2.Items.Add(custId);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">}</font></font></span></p>
<p>&nbsp;</p>
<ul>
<li>Now run the application, click first button “Get Customers”. The first list box fills up, then select some customers and click second button “Get Select Cust Names”. The second list box fills up as well</li>
</ul>
<p><a href="http://sumitsaxfactor.files.wordpress.com/2012/05/image11.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="image" border="0" alt="image" src="http://sumitsaxfactor.files.wordpress.com/2012/05/image_thumb11.png?w=261&h=321" width="261" height="321"></a></p>
<p>This concludes the session on creating custom services. To conclude, this is something really cool that MS has introduced in AX. Happy servicing the AX guys <img style="border-style:none;" class="wlEmoticon wlEmoticon-laughingoutloud" alt="Laughing out loud" src="http://sumitsaxfactor.files.wordpress.com/2012/05/wlemoticon-laughingoutloud.png?w=645">. Next stop Data Contracts in Services.</font></font></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sumitsaxfactor.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sumitsaxfactor.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sumitsaxfactor.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sumitsaxfactor.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sumitsaxfactor.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sumitsaxfactor.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sumitsaxfactor.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sumitsaxfactor.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sumitsaxfactor.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sumitsaxfactor.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sumitsaxfactor.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sumitsaxfactor.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sumitsaxfactor.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sumitsaxfactor.wordpress.com/246/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sumitsaxfactor.wordpress.com&#038;blog=18430881&#038;post=246&#038;subd=sumitsaxfactor&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sumitsaxfactor.wordpress.com/2012/05/19/create-your-first-custom-service-ax-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b02515e4e6ca67a70adfb9a35cc3ddb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sumitloya</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2012/05/image_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2012/05/image_thumb1.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2012/05/image_thumb2.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2012/05/image_thumb3.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2012/05/image_thumb4.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2012/05/image_thumb5.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2012/05/image_thumb6.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2012/05/image_thumb7.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2012/05/image_thumb8.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2012/05/image_thumb9.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2012/05/image_thumb10.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2012/05/image_thumb11.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2012/05/wlemoticon-laughingoutloud.png" medium="image">
			<media:title type="html">Laughing out loud</media:title>
		</media:content>
	</item>
		<item>
		<title>AX Mobile Applications&#8211;Solugenix Corporation</title>
		<link>http://sumitsaxfactor.wordpress.com/2012/02/15/ax-mobile-applicationssolugenix-corporation/</link>
		<comments>http://sumitsaxfactor.wordpress.com/2012/02/15/ax-mobile-applicationssolugenix-corporation/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 12:03:37 +0000</pubDate>
		<dc:creator>Sumit Loya</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://sumitsaxfactor.wordpress.com/?p=219</guid>
		<description><![CDATA[Hi Friends, Solugenix Corporation is involved in developing some easy to use mobile applications for AX. For more details, check this link out: http://sandeepchaudhury.wordpress.com/2012/02/11/mobile-applications-from-solugenix-for-microsoft-dynamics-ax/<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sumitsaxfactor.wordpress.com&#038;blog=18430881&#038;post=219&#038;subd=sumitsaxfactor&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><font size="3" face="Calibri">Hi Friends,</font></p>
<p><font size="3" face="Calibri">Solugenix Corporation is involved in developing some easy to use mobile applications for AX. For more details, check this link out:</font></p>
<p><a title="http://sandeepchaudhury.wordpress.com/2012/02/11/mobile-applications-from-solugenix-for-microsoft-dynamics-ax/" href="http://sandeepchaudhury.wordpress.com/2012/02/11/mobile-applications-from-solugenix-for-microsoft-dynamics-ax/"><font size="3" face="Calibri">http://sandeepchaudhury.wordpress.com/2012/02/11/mobile-applications-from-solugenix-for-microsoft-dynamics-ax/</font></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sumitsaxfactor.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sumitsaxfactor.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sumitsaxfactor.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sumitsaxfactor.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sumitsaxfactor.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sumitsaxfactor.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sumitsaxfactor.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sumitsaxfactor.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sumitsaxfactor.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sumitsaxfactor.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sumitsaxfactor.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sumitsaxfactor.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sumitsaxfactor.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sumitsaxfactor.wordpress.com/219/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sumitsaxfactor.wordpress.com&#038;blog=18430881&#038;post=219&#038;subd=sumitsaxfactor&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sumitsaxfactor.wordpress.com/2012/02/15/ax-mobile-applicationssolugenix-corporation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b02515e4e6ca67a70adfb9a35cc3ddb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sumitloya</media:title>
		</media:content>
	</item>
		<item>
		<title>AOT Resources in Image Options [AX 2012]</title>
		<link>http://sumitsaxfactor.wordpress.com/2012/02/10/aot-resources-in-image-options-ax-2012/</link>
		<comments>http://sumitsaxfactor.wordpress.com/2012/02/10/aot-resources-in-image-options-ax-2012/#comments</comments>
		<pubDate>Fri, 10 Feb 2012 12:53:57 +0000</pubDate>
		<dc:creator>Sumit Loya</dc:creator>
				<category><![CDATA[AX 2012]]></category>
		<category><![CDATA[AOT Resources]]></category>
		<category><![CDATA[Images]]></category>
		<category><![CDATA[Menu Images]]></category>
		<category><![CDATA[Resources]]></category>

		<guid isPermaLink="false">https://sumitsaxfactor.wordpress.com/?p=215</guid>
		<description><![CDATA[Till AX 2009 there was only one way for us to use the AOT resources for specifying on menus or menu items or buttons and that was using SysResources class and call while application start to set in various places. But with this small change in Ax 2012, MS has provided a very good small [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sumitsaxfactor.wordpress.com&#038;blog=18430881&#038;post=215&#038;subd=sumitsaxfactor&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><font size="3" face="Calibri">Till AX 2009 there was only one way for us to use the AOT resources for specifying on menus or menu items or buttons and that was using SysResources class and call while application start to set in various places. But with this small change in Ax 2012, MS has provided a very good small change to use AOT resources in these places.</font></p>
<p><font size="3" face="Calibri">MS has provided a drop-down ImageLocation and added an option “AOT Resource”. Once we select this option, we can specify the resource name that needs to be used.</font></p>
<p><font size="3" face="Calibri">Check this out</font></p>
<p><a href="http://sumitsaxfactor.files.wordpress.com/2012/02/image.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="image" border="0" alt="image" src="http://sumitsaxfactor.files.wordpress.com/2012/02/image_thumb.png?w=477&h=216" width="477" height="216" /></a></p>
<p>&#160;</p>
<p><a href="http://sumitsaxfactor.files.wordpress.com/2012/02/image1.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="image" border="0" alt="image" src="http://sumitsaxfactor.files.wordpress.com/2012/02/image_thumb1.png?w=160&h=382" width="160" height="382" /></a></p>
<p><font size="3" face="Calibri">Nice little change MS.</font></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sumitsaxfactor.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sumitsaxfactor.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sumitsaxfactor.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sumitsaxfactor.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sumitsaxfactor.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sumitsaxfactor.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sumitsaxfactor.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sumitsaxfactor.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sumitsaxfactor.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sumitsaxfactor.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sumitsaxfactor.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sumitsaxfactor.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sumitsaxfactor.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sumitsaxfactor.wordpress.com/215/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sumitsaxfactor.wordpress.com&#038;blog=18430881&#038;post=215&#038;subd=sumitsaxfactor&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sumitsaxfactor.wordpress.com/2012/02/10/aot-resources-in-image-options-ax-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b02515e4e6ca67a70adfb9a35cc3ddb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sumitloya</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2012/02/image_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2012/02/image_thumb1.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>Replacing Financial Dimension in Ledger Dimension&#8211;Version 2 [AX 2012]</title>
		<link>http://sumitsaxfactor.wordpress.com/2012/01/30/replacing-financial-dimension-in-ledger-dimensionversion-2-ax-2012/</link>
		<comments>http://sumitsaxfactor.wordpress.com/2012/01/30/replacing-financial-dimension-in-ledger-dimensionversion-2-ax-2012/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 12:32:33 +0000</pubDate>
		<dc:creator>Sumit Loya</dc:creator>
				<category><![CDATA[AX 2012]]></category>
		<category><![CDATA[Financial Dimension]]></category>
		<category><![CDATA[Ledger Dimension]]></category>
		<category><![CDATA[Replace Financial Dimension]]></category>

		<guid isPermaLink="false">https://sumitsaxfactor.wordpress.com/?p=207</guid>
		<description><![CDATA[Friends, I had posted one article on replacing financial dimensions within a ledger dimension sometime back. The job there was big and endless. I did some more research and was able to condense it a bit. Here is the modified job: static void replaceLedgerDimensions1(Args _args) { &#160;&#160;&#160; #LedgerSHA1Hash &#160;&#160;&#160; DimensionSHA1Hash&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; hash; //To store the calculated [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sumitsaxfactor.wordpress.com&#038;blog=18430881&#038;post=207&#038;subd=sumitsaxfactor&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><font size="3" face="Calibri">Friends, I had posted one article on </font><a href="http://sumitsaxfactor.wordpress.com/2012/01/19/replacing-financial-dimension-in-ledger-dimension/"><font size="3" face="Calibri">replacing financial dimensions within a ledger dimension</font></a><font size="3" face="Calibri"> sometime back. The job there was big and endless. I did some more research and was able to condense it a bit.</font></p>
<p><font size="3" face="Calibri">Here is the modified job:</font></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><font face="Consolas"><font size="2"><b><span><font color="#00008b">static</font></span></b><span><font color="#000000"> </font><b><span><font color="#00008b">void</font></span></b><font color="#000000"> replaceLedgerDimensions1(Args _args)</font></span></font></font></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">{</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>#LedgerSHA1Hash</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionSHA1Hash<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>hash; </font><i><span><font color="#008000">//To store the calculated hash for DimensionAttributeValueSet</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>HashKey<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>valueKeyHashArray[]; </font><i><span><font color="#008000">//To store the has key of dimension in question</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>Map<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrIdx, dimAttrRecId; </font><i><span><font color="#008000">//to store the dimension index and backing entity type</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionAttributeSetItem<span>&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrSetItem; </font><i><span><font color="#008000">// Contains the number of dimensions active for a account structure ledger<span>&#160;&#160;&#160; </span></font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionAttribute<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttr; </font><i><span><font color="#008000">// Contains the financial dimensions records</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimAttributeHcmWorker<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrWorker; </font><i><span><font color="#008000">//Backing entity view for Employee type dimension</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionAttributeValue<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValue; </font><i><span><font color="#008000">// Contains used financial dimension values</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionAttributeValueSet<span>&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSet; </font><i><span><font color="#008000">//Contains default dimension records</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionAttributeValueSetItem<span>&#160; </span>dimAttrValueSetItem; </font><i><span><font color="#008000">//Contains individual records for default dimensions</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>LedgerDimensionAccount<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>sourceDimension = </font><b><span><font color="#ff0000">5637145829</font></span></b><font color="#000000">, targetDimension; </font><i><span><font color="#008000">//Record Id DimensionAttributeValueCombination table in which attribute value is to be replaced</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionDefault<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>sourceDefDimension, targetDefDimension; </font><i><span><font color="#008000">//To hold the default dimension combination from a Ledger dimension</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>LedgerDimensionDefaultAccount<span>&#160;&#160; </span>defaultLedgerAccount;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionEnumeration<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimensionSetId; </font><i><span><font color="#008000">//Record id for table that contains active dimensions for current ledger</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><span><font face="Consolas"><font color="#000000" size="2">&#160;&#160;&#160; </font></font></span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">int</font></span></b><font color="#000000"><span>&#160;&#160;&#160;&#160; </span>dimAttrCount, i;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">int</font></span></b><font color="#000000"><span>&#160;&#160;&#160;&#160; </span>emplBackEntityType; </font><i><span><font color="#008000">//Stores the backing entity type for Employee type dimension</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><span><font face="Consolas"><font color="#000000" size="2">&#160;&#160;&#160; </font></font></span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//The employee backing entity will be the view DimAttributeHcmWorker</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>emplBackEntityType = </font><b><span><font color="#00008b">tableNum</font></span></b><font color="#000000">(DimAttributeHcmWorker);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><span><font face="Consolas"><font color="#000000" size="2">&#160;&#160;&#160; </font></font></span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Initialize the map to store the backing entity types</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>dimAttrIdx = </font><b><span><font color="#00008b">new</font></span></b><font color="#000000"> Map(Types::Integer, Types::Integer);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>dimAttrRecId = </font><b><span><font color="#00008b">new</font></span></b><font color="#000000"> Map(Types::Integer, Types::Int64);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Get the record Id (dimension set id) for current ledger to find active dimensions</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>dimensionSetId = DimensionCache::getDimensionAttributeSetForLedger();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Find all the active dimensions for current ledger except main account and store there</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//backing entity type in the map</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">while</font></span></b><font color="#000000"> </font><b><span><font color="#00008b">select</font></span></b><font color="#000000"> * </font><b><span><font color="#00008b">from</font></span></b><font color="#000000"> dimAttr</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">order</font></span></b><font color="#000000"> </font><b><span><font color="#00008b">by</font></span></b><font color="#000000"> Name</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">where</font></span></b><font color="#000000"> dimAttr.Type != DimensionAttributeType::MainAccount</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">join</font></span></b><font color="#000000"> RecId </font><b><span><font color="#00008b">from</font></span></b><font color="#000000"> dimAttrSetItem</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">where</font></span></b><font color="#000000"> dimAttrSetItem.DimensionAttribute == dimAttr.RecId &amp;&amp;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrSetItem.DimensionAttributeSet == dimensionSetId</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrCount++;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrIdx.insert(dimAttr.BackingEntityType, dimAttrCount);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//initialize hash key array to null</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">for</font></span></b><font color="#000000"> (i = </font><b><span><font color="#ff0000">1</font></span></b><font color="#000000">; i&lt;= dimAttrCount; i++)</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>valueKeyHashArray[i] = emptyGuid();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><span><font face="Consolas"><font color="#000000" size="2">&#160;&#160;&#160; </font></font></span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Get the default dimensions from Ledger dimensions</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>sourceDefDimension<span>&#160;&#160;&#160;&#160;&#160; </span>= DimensionStorage::getDefaultDimensionFromLedgerDimension(sourceDimension);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><span><font face="Consolas"><font color="#000000" size="2">&#160;&#160;&#160; </font></font></span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Get the default account from Ledger dimensions</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>defaultLedgerAccount<span>&#160;&#160;&#160; </span>= DimensionStorage::getLedgerDefaultAccountFromLedgerDim(sourceDimension);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><span><font face="Consolas"><font color="#000000" size="2">&#160;&#160;&#160; </font></font></span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Find the Dimension attribute record for the dimension to work on, in our case it is HcmWorker</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>dimAttr.clear();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">select</font></span></b><font color="#000000"> </font><b><span><font color="#00008b">firstOnly</font></span></b><font color="#000000"> dimAttr</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">where</font></span></b><font color="#000000"> dimAttr.BackingEntityType == emplBackEntityType</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>&amp;&amp; dimAttr.Type<span>&#160; </span>!= DimensionAttributeType::DynamicAccount;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Get the backing entity type for the dimension value to process</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">select</font></span></b><font color="#000000"> </font><b><span><font color="#00008b">firstOnly</font></span></b><font color="#000000"> dimAttrWorker</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">where</font></span></b><font color="#000000"> dimAttrWorker.Value == </font><span><font color="#8b0000">&quot;51011&quot;</font></span><font color="#000000">;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><span><font face="Consolas"><font color="#000000" size="2">&#160;&#160;&#160; </font></font></span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Find the required Dimension Attribute Value record</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Create if necessary</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>dimAttrValue = DimensionAttributeValue::findByDimensionAttributeAndEntityInst(dimAttr.RecId, dimAttrWorker.RecId, </font><b><span><font color="#00008b">false</font></span></b><font color="#000000">, </font><b><span><font color="#00008b">true</font></span></b><font color="#000000">);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><span><font face="Consolas"><font color="#000000" size="2">&#160;&#160;&#160; </font></font></span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Store the required combination hash keys</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>valueKeyHashArray[dimAttrIdx.lookup(emplBackEntityType)] = dimAttrValue.HashKey;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Calculate the hash for the current values</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>hash = DimensionAttributeValueSetStorage::getHashFromArray(valueKeyHashArray, dimAttrCount);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Null hash indicates no values exist, which may occur if the user entered an invalid value for one dimension attribute</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">if</font></span></b><font color="#000000"> (hash == </font><b><span><font color="#00008b">conNull</font></span></b><font color="#000000">())</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">throw</font></span></b><font color="#000000"> error(</font><span><font color="#8b0000">&quot;Wrong value for Employee Dimension&quot;</font></span><font color="#000000">);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Search for existing value set</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>dimAttrValueSet = DimensionAttributeValueSet::findByHash(hash);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">// This value set does not exist, so it must be persisted</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">if</font></span></b><font color="#000000"> (!dimAttrValueSet)</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">ttsbegin</font></span></b><font color="#000000">;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Insert the value set with appropriate hash</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSet.Hash = hash;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSet.insert();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Insert Employee dimension set item</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSetItem.clear();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSetItem.DimensionAttributeValueSet = dimAttrValueSet.RecId;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSetItem.DimensionAttributeValue = dimAttrValue.RecId;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSetItem.DisplayValue = dimAttrWorker.Value;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSetItem.insert();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">ttscommit</font></span></b><font color="#000000">;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><span><font face="Consolas"><font color="#000000" size="2">&#160;&#160;&#160; </font></font></span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Replace the value in default dimension</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>targetDefDimension = DimensionDefaultingService::serviceReplaceAttributeValue(sourceDefDimension, dimAttrValueSet.RecId, dimAttr.RecId);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><span><font face="Consolas"><font color="#000000" size="2">&#160;&#160;&#160; </font></font></span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Combine the target default dimension, default ledger account to get the resultant ledger dimension</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>targetDimension = DimensionDefaultingService::serviceCreateLedgerDimension(defaultLedgerAccount, targetDefDimension);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><span><font face="Consolas"><font color="#000000" size="2">&#160;&#160;&#160; </font></font></span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>info(</font><b><span><font color="#00008b">strFmt</font></span></b><font color="#000000">(</font><span><font color="#8b0000">&quot;Before: %1&quot;</font></span><font color="#000000">, DimensionAttributeValueCombination::find(sourceDimension).DisplayValue));</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>info(</font><b><span><font color="#00008b">strFmt</font></span></b><font color="#000000">(</font><span><font color="#8b0000">&quot;Before: %1&quot;</font></span><font color="#000000">, DimensionAttributeValueCombination::find(targetDimension).DisplayValue));</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">}</font></font></span></p>
<p style="line-height:13pt;margin:0 0 10pt;" class="MsoNormal"><font face="Calibri"><font color="#000000">&#160;</font></font></p>
<p><a href="http://sumitsaxfactor.files.wordpress.com/2012/01/image1.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="image" border="0" alt="image" src="http://sumitsaxfactor.files.wordpress.com/2012/01/image_thumb1.png?w=367&h=173" width="367" height="173" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sumitsaxfactor.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sumitsaxfactor.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sumitsaxfactor.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sumitsaxfactor.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sumitsaxfactor.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sumitsaxfactor.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sumitsaxfactor.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sumitsaxfactor.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sumitsaxfactor.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sumitsaxfactor.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sumitsaxfactor.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sumitsaxfactor.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sumitsaxfactor.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sumitsaxfactor.wordpress.com/207/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sumitsaxfactor.wordpress.com&#038;blog=18430881&#038;post=207&#038;subd=sumitsaxfactor&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sumitsaxfactor.wordpress.com/2012/01/30/replacing-financial-dimension-in-ledger-dimensionversion-2-ax-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b02515e4e6ca67a70adfb9a35cc3ddb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sumitloya</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2012/01/image_thumb1.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>Replacing Financial Dimension in Ledger Dimension</title>
		<link>http://sumitsaxfactor.wordpress.com/2012/01/19/replacing-financial-dimension-in-ledger-dimension/</link>
		<comments>http://sumitsaxfactor.wordpress.com/2012/01/19/replacing-financial-dimension-in-ledger-dimension/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 05:58:09 +0000</pubDate>
		<dc:creator>Sumit Loya</dc:creator>
				<category><![CDATA[AX 2012]]></category>
		<category><![CDATA[Financial Dimension]]></category>
		<category><![CDATA[Ledger Dimension]]></category>
		<category><![CDATA[Replace Financial Dimension]]></category>

		<guid isPermaLink="false">https://sumitsaxfactor.wordpress.com/?p=201</guid>
		<description><![CDATA[Replacing a financial dimension in a Ledger dimension is not straight forward as the replacing of a dimension in Default dimensions. For default dimensions, we had a method serviceReplaceAttributeValue to replace one particular dimension. But for a ledger dimension, we need to do the following: Get the target ledger dimension Break it into its component [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sumitsaxfactor.wordpress.com&#038;blog=18430881&#038;post=201&#038;subd=sumitsaxfactor&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><font size="3" face="Calibri">Replacing a financial dimension in a Ledger dimension is not straight forward as the <a href="http://sumitsaxfactor.wordpress.com/2012/01/18/replace-a-financial-dimension-in-default-dimensions-ax-2012/">replacing of a dimension in Default dimensions</a>. For default dimensions, we had a method serviceReplaceAttributeValue to replace one particular dimension. But for a ledger dimension, we need to do the following:</font></p>
<ol>
<li><font size="3" face="Calibri">Get the target ledger dimension</font> </li>
<li><font size="3" face="Calibri">Break it into its component parts (Main account and active dimensions)</font> </li>
<li><font size="3" face="Calibri">Prepare the hash key array for each of them except main account (for only financial dimensions)</font> </li>
<li><font size="3" face="Calibri">In this hash key array replace the hash key of the required financial dimension with the hash key of attribute value to be replaced</font> </li>
<li><font size="3" face="Calibri">Find or create the DimensionAttributeValueSet table</font> </li>
<li><font size="3" face="Calibri">Then use the “serviceCreateLedgerDimension” method of DimensionDefaultingService to get the new ledger dimension and use it</font> </li>
</ol>
<p><font size="3" face="Calibri">If anybody finds a better solution, please share.</font></p>
<p><font size="3" face="Calibri">Here is the job that does the steps explained above:</font></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><font face="Consolas"><font size="2"><b><span><font color="#00008b">static</font></span></b><span><font color="#000000"> </font><b><span><font color="#00008b">void</font></span></b><font color="#000000"> replaceLedgerDimensions(Args _args)</font></span></font></font></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">{</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>#LedgerSHA1Hash</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionSHA1Hash<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>hash; </font><i><span><font color="#008000">//To store the calculated hash for DimensionAttributeValueSet</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>HashKey<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>valueKeyHashArray[]; </font><i><span><font color="#008000">//To store the has key of dimension in question</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>Map<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrIdx, dimAttrRecId; </font><i><span><font color="#008000">//to store the dimension index and backing entity type</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionAttributeSetItem<span>&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrSetItem; </font><i><span><font color="#008000">// Contains the number of dimensions active for a account structure ledger</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionAttribute<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttr; </font><i><span><font color="#008000">// Contains the financial dimensions records</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionAttributeValue<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValue; </font><i><span><font color="#008000">// Contains used financial dimension values</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionAttributeValueSet<span>&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSet; </font><i><span><font color="#008000">//Contains default dimension records</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionAttributeValueSetItem<span>&#160; </span>dimAttrValueSetItem; </font><i><span><font color="#008000">//Contains individual records for default dimensions</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimAttributeHcmWorker<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrWorker; </font><i><span><font color="#008000">//Backing entity view for Employee type dimension</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionEnumeration<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimensionSetId; </font><i><span><font color="#008000">//Record id for table that contains active dimensions for current ledger</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>LedgerDimensionAccount<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>targetDimension = </font><b><span><font color="#ff0000">5637145829</font></span></b><font color="#000000">; </font><i><span><font color="#008000">//Record Id DimensionAttributeValueCombination table in which attribute value is to be replaced</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>LedgerDimensionAccount<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>ledgerDimension; </font><i><span><font color="#008000">// To hold the resultant DimensionAttributeValueCombination record id</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>LedgerDimensionAccount<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>mainAccDimension; </font><i><span><font color="#008000">// Record id for LedgerDimension(DimensionAttributeValueCombination) containing default account for main account RecId</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionStorage<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimensionStorage; </font><i><span><font color="#008000">// Class Dimension storage is used to store and manipulate the values of combination</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionStorageSegment<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>segment; </font><i><span><font color="#008000">// Class DimensionStorageSegment will get specfic segments based on hierarchies</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">int</font></span></b><font color="#000000"><span>&#160;&#160;&#160;&#160; </span>segmentCount, segmentIndex;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">int</font></span></b><font color="#000000"><span>&#160;&#160;&#160;&#160; </span>hierarchyCount, hierarchyIndex;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>SysDim<span>&#160; </span>segmentValue, mainAccountValue;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">int</font></span></b><font color="#000000"><span>&#160;&#160;&#160;&#160; </span>dimAttrCount, i;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">int</font></span></b><font color="#000000"><span>&#160;&#160; </span><span>&#160; </span>emplBackEntityType; </font><i><span><font color="#008000">//Stores the backing entity type for Employee type dimension</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">str</font></span></b><font color="#000000"><span>&#160;&#160;&#160;&#160; </span>valueStrArray[]; </font><i><span><font color="#008000">//To store the dimension attribute values</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">int64</font></span></b><font color="#000000"><span>&#160;&#160; </span>valueKeyArray[]; </font><i><span><font color="#008000">//To store the record ids of DimensionAtrributeValue table</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">int</font></span></b><font color="#000000"><span>&#160;&#160;&#160;&#160; </span>backingEntityInstance;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//The employee backing entity will be the view DimAttributeHcmWorker</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>emplBackEntityType = </font><b><span><font color="#00008b">tableNum</font></span></b><font color="#000000">(DimAttributeHcmWorker);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Initialize the map to store the backing entity types</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>dimAttrIdx = </font><b><span><font color="#00008b">new</font></span></b><font color="#000000"> Map(Types::Integer, Types::Integer);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>dimAttrRecId = </font><b><span><font color="#00008b">new</font></span></b><font color="#000000"> Map(Types::Integer, Types::Int64);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Get the record Id (dimension set id) for current ledger to find active dimensions</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>dimensionSetId = DimensionCache::getDimensionAttributeSetForLedger();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Find all the active dimensions for current ledger except main account and store there</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//backing entity type in the map</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">while</font></span></b><font color="#000000"> </font><b><span><font color="#00008b">select</font></span></b><font color="#000000"> * </font><b><span><font color="#00008b">from</font></span></b><font color="#000000"> dimAttr</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">order</font></span></b><font color="#000000"> </font><b><span><font color="#00008b">by</font></span></b><font color="#000000"> Name</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">where</font></span></b><font color="#000000"> dimAttr.Type != DimensionAttributeType::MainAccount</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">join</font></span></b><font color="#000000"> RecId </font><b><span><font color="#00008b">from</font></span></b><font color="#000000"> dimAttrSetItem</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">where</font></span></b><font color="#000000"> dimAttrSetItem.DimensionAttribute == dimAttr.RecId &amp;&amp;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrSetItem.DimensionAttributeSet == dimensionSetId</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrCount++;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrIdx.insert(dimAttr.BackingEntityType, dimAttrCount);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrRecId.insert(dimAttr.BackingEntityType, dimAttr.RecId);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//initialize hash key array to null</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">for</font></span></b><font color="#000000"> (i = </font><b><span><font color="#ff0000">1</font></span></b><font color="#000000">; i&lt;= dimAttrCount; i++)</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>valueKeyHashArray[i] = emptyGuid();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>valueStrArray[i] = </font><span><font color="#8b0000">&#8221;</font></span><font color="#000000">;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>valueKeyArray[i] = </font><b><span><font color="#ff0000">0</font></span></b><font color="#000000">;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Default hash key array with required dimension value</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Get dimension storage</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>dimensionStorage = DimensionStorage::findById(targetDimension);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">if</font></span></b><font color="#000000"> (dimensionStorage == </font><b><span><font color="#00008b">null</font></span></b><font color="#000000">)</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">throw</font></span></b><font color="#000000"> error(</font><span><font color="#9400d3">&quot;@SYS83964&quot;</font></span><font color="#000000">);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Get hierarchy count</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>hierarchyCount = dimensionStorage.hierarchyCount();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Loop through hierarchies to get individual segments</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">for</font></span></b><font color="#000000">(hierarchyIndex = </font><b><span><font color="#ff0000">1</font></span></b><font color="#000000">; hierarchyIndex &lt;= hierarchyCount; hierarchyIndex++)</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Get segment count for hierarchy</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>segmentCount = dimensionStorage.segmentCountForHierarchy(hierarchyIndex);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Loop through segments and display required values</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">for</font></span></b><font color="#000000"> (segmentIndex = </font><b><span><font color="#ff0000">1</font></span></b><font color="#000000">; segmentIndex &lt;= segmentCount; segmentIndex++)</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Get segment</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>segment = dimensionStorage.getSegmentForHierarchy(hierarchyIndex, segmentIndex);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Get the segment information</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">if</font></span></b><font color="#000000"> (segment.parmDimensionAttributeValueId() != </font><b><span><font color="#ff0000">0</font></span></b><font color="#000000">)</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Get the backing entity type;</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>backingEntityInstance = DimensionAttribute::find(DimensionAttributeValue::find(segment.parmDimensionAttributeValueId()).DimensionAttribute).BackingEntityType;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">if</font></span></b><font color="#000000"> (backingEntityInstance == </font><b><span><font color="#00008b">tableNum</font></span></b><font color="#000000">(DimAttributeMainAccount))</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>mainAccountValue = segment.parmDisplayValue();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Default the required arrays</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">if</font></span></b><font color="#000000"> (dimAttrIdx.exists(backingEntityInstance))</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>i = dimAttrIdx.lookup(backingEntityInstance);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>valueKeyHashArray[i]<span>&#160;&#160;&#160; </span>= segment.parmHashKey();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>valueKeyArray[i]<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>= segment.parmDimensionAttributeValueId();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>valueStrArray[i]<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>= segment.parmDisplayValue();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Find the Dimension attribute record for the dimension to work on, in our case it is HcmWorker</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>dimAttr.clear();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>dimAttr = DimensionAttribute::find(dimAttrRecId.lookup(emplBackEntityType));</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Get the backing entity type for the dimension value to process</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">select</font></span></b><font color="#000000"> </font><b><span><font color="#00008b">firstOnly</font></span></b><font color="#000000"> dimAttrWorker</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">where</font></span></b><font color="#000000"> dimAttrWorker.Value == </font><span><font color="#8b0000">&quot;51011&quot;</font></span><font color="#000000">;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Find the required Dimension Attribute Value record</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Create if necessary</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>dimAttrValue = DimensionAttributeValue::findByDimensionAttributeAndEntityInst(dimAttr.RecId, dimAttrWorker.RecId, </font><b><span><font color="#00008b">false</font></span></b><font color="#000000">, </font><b><span><font color="#00008b">true</font></span></b><font color="#000000">);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Replace the required combination hash keys and other value arrays</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>i = dimAttrIdx.lookup(emplBackEntityType);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>valueKeyHashArray[i]<span>&#160;&#160;&#160; </span>= dimAttrValue.HashKey;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>valueStrArray[i]<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>= dimAttrWorker.Value;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>valueKeyArray[i]<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>= dimAttrValue.RecId;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Calculate the hash for the current values</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>hash = DimensionAttributeValueSetStorage::getHashFromArray(valueKeyHashArray, dimAttrCount);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Null hash indicates no values exist, which may occur if the user entered an invalid value for one dimension attribute</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">if</font></span></b><font color="#000000"> (hash == </font><b><span><font color="#00008b">conNull</font></span></b><font color="#000000">())</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">throw</font></span></b><font color="#000000"> error(</font><span><font color="#8b0000">&quot;Wrong value for Employee Dimension&quot;</font></span><font color="#000000">);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Search for existing value set</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>dimAttrValueSet = DimensionAttributeValueSet::findByHash(hash);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">// This value set does not exist, so it must be persisted</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">if</font></span></b><font color="#000000"> (!dimAttrValueSet)</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">ttsbegin</font></span></b><font color="#000000">;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Insert the value set with appropriate hash</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSet.Hash = hash;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSet.insert();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Insert only specified set items use this</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">for</font></span></b><font color="#000000"> (i = </font><b><span><font color="#ff0000">1</font></span></b><font color="#000000">; i &lt;= dimAttrCount; i++)</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">if</font></span></b><font color="#000000"> (valueKeyArray[i] != </font><b><span><font color="#ff0000">0</font></span></b><font color="#000000">)</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSetItem.clear();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSetItem.DimensionAttributeValueSet = dimAttrValueSet.RecId;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSetItem.DimensionAttributeValue = valueKeyArray[i];</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSetItem.DisplayValue = valueStrArray[i];</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSetItem.insert();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">ttscommit</font></span></b><font color="#000000">;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Get the default account for main account</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>mainAccDimension = DimensionStorage::getDefaultAccountForMainAccountNum(mainAccountValue);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Find or create the LedgerDimension record for required combination</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>ledgerDimension = DimensionDefaultingService::serviceCreateLedgerDimension(</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>mainAccDimension,</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSet.RecId);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>info(</font><b><span><font color="#00008b">strFmt</font></span></b><font color="#000000">(</font><span><font color="#8b0000">&quot;Original %1: %2&quot;</font></span><font color="#000000">, targetDimension, DimensionAttributeValueCombination::find(targetDimension).DisplayValue));</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>info(</font><b><span><font color="#00008b">strFmt</font></span></b><font color="#000000">(</font><span><font color="#8b0000">&quot;Replaced %1: %2&quot;</font></span><font color="#000000">, ledgerDimension, DimensionAttributeValueCombination::find(ledgerDimension).DisplayValue));</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">}</font></font></span></p>
<p style="line-height:13pt;margin:0 0 10pt;" class="MsoNormal">&#160;</p>
<p style="line-height:13pt;margin:0 0 10pt;" class="MsoNormal"><font size="3" face="Calibri">Here is the output:</font></p>
<p><a href="http://sumitsaxfactor.files.wordpress.com/2012/01/image.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="image" border="0" alt="image" src="http://sumitsaxfactor.files.wordpress.com/2012/01/image_thumb.png?w=324&h=332" width="324" height="332" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sumitsaxfactor.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sumitsaxfactor.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sumitsaxfactor.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sumitsaxfactor.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sumitsaxfactor.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sumitsaxfactor.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sumitsaxfactor.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sumitsaxfactor.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sumitsaxfactor.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sumitsaxfactor.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sumitsaxfactor.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sumitsaxfactor.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sumitsaxfactor.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sumitsaxfactor.wordpress.com/201/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sumitsaxfactor.wordpress.com&#038;blog=18430881&#038;post=201&#038;subd=sumitsaxfactor&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sumitsaxfactor.wordpress.com/2012/01/19/replacing-financial-dimension-in-ledger-dimension/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b02515e4e6ca67a70adfb9a35cc3ddb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sumitloya</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2012/01/image_thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>Replace a Financial Dimension in Default Dimensions [AX 2012]</title>
		<link>http://sumitsaxfactor.wordpress.com/2012/01/18/replace-a-financial-dimension-in-default-dimensions-ax-2012/</link>
		<comments>http://sumitsaxfactor.wordpress.com/2012/01/18/replace-a-financial-dimension-in-default-dimensions-ax-2012/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 06:28:52 +0000</pubDate>
		<dc:creator>Sumit Loya</dc:creator>
				<category><![CDATA[AX 2012]]></category>
		<category><![CDATA[DimensionDefaultingService]]></category>
		<category><![CDATA[Financial Dimension]]></category>
		<category><![CDATA[Replace Financial Dimension]]></category>
		<category><![CDATA[serviceReplaceAttributeValue]]></category>

		<guid isPermaLink="false">https://sumitsaxfactor.wordpress.com/?p=196</guid>
		<description><![CDATA[In my earlier post, I had explained how we can set financial dimensions. In this post, I will provide a job by which we can replace one attribute value in a combination of financial dimensions. The class that we can use is the DimensionDefaultingService and method to use is “serviceReplaceAttributeValue”. For this purpose, we will [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sumitsaxfactor.wordpress.com&#038;blog=18430881&#038;post=196&#038;subd=sumitsaxfactor&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><font size="3" face="Calibri">In my earlier post, I had explained how we can </font><a href="http://sumitsaxfactor.wordpress.com/2011/12/28/defaulting-financial-dimensions-ax-2012/"><font size="3" face="Calibri">set financial dimensions</font></a><font size="3" face="Calibri">. In this post, I will provide a job by which we can replace one attribute value in a combination of financial dimensions.</font></p>
<p><font size="3" face="Calibri">The class that we can use is the DimensionDefaultingService and method to use is “serviceReplaceAttributeValue”.</font></p>
<p><font size="3" face="Calibri">For this purpose, we will use the following combination taken from a customer record.</font></p>
<p><a href="http://sumitsaxfactor.files.wordpress.com/2012/01/fin1.png"><font size="3" face="Calibri"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="Fin1" border="0" alt="Fin1" src="http://sumitsaxfactor.files.wordpress.com/2012/01/fin1_thumb.png?w=244&h=155" width="244" height="155" /></font></a></p>
<p><font size="3" face="Calibri">In this financial dimensions, we will replace value if worker from “114” to “51011”.</font></p>
<p><font size="3" face="Calibri">The job below will be helpful for you to see how this can be achieved.</font></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><font face="Consolas"><font size="2"><b><span><font color="#00008b">static</font></span></b><span><font color="#000000"> </font><b><span><font color="#00008b">void</font></span></b><font color="#000000"> replaceDefaultDimensions(Args _args)</font></span></font></font></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">{</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>CustTable<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>custTable = CustTable::find(</font><span><font color="#8b0000">&#8216;CUS-00004&#8242;</font></span><font color="#000000">); </font><i><span><font color="#008000">//Customer Record containing Financial Dimension</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionSHA1Hash<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>hash; </font><i><span><font color="#008000">//To store the calculated hash for DimensionAttributeValueSet</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionAttribute<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttr; </font><i><span><font color="#008000">// Contains the financial dimensions records</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimAttributeHcmWorker<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrWorker; </font><i><span><font color="#008000">//Backing entity view for Employee type dimension</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160; </span><span>&#160;</span>DimensionDefault<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>defaultDimension;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionEnumeration<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimensionSetId; </font><i><span><font color="#008000">//Record id for table that contains active dimensions for current ledger</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionAttributeValue<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValue; </font><i><span><font color="#008000">// Contains used financial dimension values</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionAttributeValueSet<span>&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSet; </font><i><span><font color="#008000">//Contains default dimension records</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionAttributeValueSetItem<span>&#160; </span>dimAttrValueSetItem; </font><i><span><font color="#008000">//Contains individual records for default dimensions</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionAttributeSetItem<span>&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrSetItem; </font><i><span><font color="#008000">// Contains the number of dimensions active for a account structure ledger</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>HashKey valueKeyHashArray[]; </font><i><span><font color="#008000">//To store the has key of dimension in question</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>Map<span>&#160;&#160;&#160;&#160; </span>dimAttrIdx, dimAttrRecId; </font><i><span><font color="#008000">//to store the dimension index and backing entity type</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">int</font></span></b><font color="#000000"><span>&#160;&#160;&#160;&#160; </span>dimAttrCount, i;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">int</font></span></b><font color="#000000"><span>&#160;&#160;&#160;&#160; </span>emplBackEntityType; </font><i><span><font color="#008000">//Stores the backing entity type for Employee type dimension</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//The employee backing entity will be the view DimAttributeHcmWorker</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>emplBackEntityType = </font><b><span><font color="#00008b">tableNum</font></span></b><font color="#000000">(DimAttributeHcmWorker);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Initialize the map to store the backing entity types</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>dimAttrIdx = </font><b><span><font color="#00008b">new</font></span></b><font color="#000000"> Map(Types::Integer, Types::Integer);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>dimAttrRecId = </font><b><span><font color="#00008b">new</font></span></b><font color="#000000"> Map(Types::Integer, Types::Int64);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Get the record Id (dimension set id) for current ledger to find active dimensions</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>dimensionSetId = DimensionCache::getDimensionAttributeSetForLedger();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Find all the active dimensions for current ledger except main account and store there</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//backing entity type in the map</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">while</font></span></b><font color="#000000"> </font><b><span><font color="#00008b">select</font></span></b><font color="#000000"> * </font><b><span><font color="#00008b">from</font></span></b><font color="#000000"> dimAttr</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">order</font></span></b><font color="#000000"> </font><b><span><font color="#00008b">by</font></span></b><font color="#000000"> Name</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">where</font></span></b><font color="#000000"> dimAttr.Type != DimensionAttributeType::MainAccount</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">join</font></span></b><font color="#000000"> RecId </font><b><span><font color="#00008b">from</font></span></b><font color="#000000"> dimAttrSetItem</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">where</font></span></b><font color="#000000"> dimAttrSetItem.DimensionAttribute == dimAttr.RecId &amp;&amp;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrSetItem.DimensionAttributeSet == dimensionSetId</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrCount++;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrIdx.insert(dimAttr.BackingEntityType, dimAttrCount);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrRecId.insert(dimAttr.BackingEntityType, dimAttr.RecId);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Get the backing entity type for the dimension value to process</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">select</font></span></b><font color="#000000"> </font><b><span><font color="#00008b">firstOnly</font></span></b><font color="#000000"> dimAttrWorker</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">where</font></span></b><font color="#000000"> dimAttrWorker.Value == </font><span><font color="#8b0000">&quot;51011&quot;</font></span><font color="#000000">;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//initialize hash key array to null</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">for</font></span></b><font color="#000000"> (i = </font><b><span><font color="#ff0000">1</font></span></b><font color="#000000">; i&lt;= dimAttrCount; i++)</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>valueKeyHashArray[i] = emptyGuid();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Find the Dimension attribute record for the dimension to work on, in our case it is HcmWorker</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>dimAttr.clear();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>dimAttr = DimensionAttribute::find(dimAttrRecId.lookup(emplBackEntityType));</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Get the backing entity type for the dimension value to process</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">select</font></span></b><font color="#000000"> </font><b><span><font color="#00008b">firstOnly</font></span></b><font color="#000000"> dimAttrWorker</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">where</font></span></b><font color="#000000"> dimAttrWorker.Value == </font><span><font color="#8b0000">&quot;51011&quot;</font></span><font color="#000000">;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Find the required Dimension Attribute Value record</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Create if necessary</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>dimAttrValue = DimensionAttributeValue::findByDimensionAttributeAndEntityInst(dimAttr.RecId, dimAttrWorker.RecId, </font><b><span><font color="#00008b">false</font></span></b><font color="#000000">, </font><b><span><font color="#00008b">true</font></span></b><font color="#000000">);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Replace the required combination hash keys and other value arrays</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>i = dimAttrIdx.lookup(emplBackEntityType);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>valueKeyHashArray[i]<span>&#160;&#160;&#160; </span>= dimAttrValue.HashKey;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Calculate the hash for the current values</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>hash = DimensionAttributeValueSetStorage::getHashFromArray(valueKeyHashArray, dimAttrCount);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Null hash indicates no values exist, which may occur if the user entered an invalid value for one dimension attribute</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">if</font></span></b><font color="#000000"> (hash == </font><b><span><font color="#00008b">conNull</font></span></b><font color="#000000">())</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">throw</font></span></b><font color="#000000"> error(</font><span><font color="#8b0000">&quot;Wrong value for Employee Dimension&quot;</font></span><font color="#000000">);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Search for existing value set</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>dimAttrValueSet = DimensionAttributeValueSet::findByHash(hash);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">// This value set does not exist, so it must be persisted</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">if</font></span></b><font color="#000000"> (!dimAttrValueSet)</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">ttsbegin</font></span></b><font color="#000000">;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Insert the value set with appropriate hash</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSet.Hash = hash;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSet.insert();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Insert only specified set items use this</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSetItem.clear();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSetItem.DimensionAttributeValueSet = dimAttrValueSet.RecId;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSetItem.DimensionAttributeValue = dimAttrValue.RecId;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSetItem.DisplayValue = dimAttrWorker.Value;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSetItem.insert();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">ttscommit</font></span></b><font color="#000000">;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>defaultDimension = DimensionDefaultingService::serviceReplaceAttributeValue(custTable.DefaultDimension, dimAttrValueSet.RecId, dimAttr.RecId);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">ttsBegin</font></span></b><font color="#000000">;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>custTable.selectForUpdate(</font><b><span><font color="#00008b">true</font></span></b><font color="#000000">);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>custTable.DefaultDimension = defaultDimension;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>custTable.doUpdate();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">ttsCommit</font></span></b><font color="#000000">;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">}</font></font></span></p>
<p style="line-height:13pt;margin:0 0 10pt;" class="MsoNormal"><font face="Calibri"><font color="#000000">&#160;</font></font></p>
<p><font size="3" face="Calibri">This is the output after running this job.</font></p>
<p><a href="http://sumitsaxfactor.files.wordpress.com/2012/01/fin2.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="Fin2" border="0" alt="Fin2" src="http://sumitsaxfactor.files.wordpress.com/2012/01/fin2_thumb.png?w=235&h=153" width="235" height="153" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sumitsaxfactor.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sumitsaxfactor.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sumitsaxfactor.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sumitsaxfactor.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sumitsaxfactor.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sumitsaxfactor.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sumitsaxfactor.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sumitsaxfactor.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sumitsaxfactor.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sumitsaxfactor.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sumitsaxfactor.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sumitsaxfactor.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sumitsaxfactor.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sumitsaxfactor.wordpress.com/196/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sumitsaxfactor.wordpress.com&#038;blog=18430881&#038;post=196&#038;subd=sumitsaxfactor&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sumitsaxfactor.wordpress.com/2012/01/18/replace-a-financial-dimension-in-default-dimensions-ax-2012/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b02515e4e6ca67a70adfb9a35cc3ddb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sumitloya</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2012/01/fin1_thumb.png" medium="image">
			<media:title type="html">Fin1</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2012/01/fin2_thumb.png" medium="image">
			<media:title type="html">Fin2</media:title>
		</media:content>
	</item>
		<item>
		<title>Defaulting Ledger Dimensions [AX 2012]</title>
		<link>http://sumitsaxfactor.wordpress.com/2011/12/28/defaulting-ledger-dimensions-ax-2012/</link>
		<comments>http://sumitsaxfactor.wordpress.com/2011/12/28/defaulting-ledger-dimensions-ax-2012/#comments</comments>
		<pubDate>Wed, 28 Dec 2011 16:05:30 +0000</pubDate>
		<dc:creator>Sumit Loya</dc:creator>
				<category><![CDATA[AX 2012]]></category>

		<guid isPermaLink="false">https://sumitsaxfactor.wordpress.com/?p=189</guid>
		<description><![CDATA[In my earlier post, I had described a way to default financial dimensions through code. In this post, I will describe about the way we can default Ledger Dimensions (DimensionAttributeValueCombination) through code. We have seen how we can fetch the values from a dimension combination in my post here. But what if we have to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sumitsaxfactor.wordpress.com&#038;blog=18430881&#038;post=189&#038;subd=sumitsaxfactor&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><font size="3" face="Calibri">In my earlier post, I had described a way to default financial dimensions through code. In this post, I will describe about the way we can default Ledger Dimensions (DimensionAttributeValueCombination) through code.</font></p>
<p><font size="3" face="Calibri">We have seen how we can fetch the values from a dimension combination in my post </font><a href="http://sumitsaxfactor.wordpress.com/2011/12/16/getting-individual-dimension-combination-valuesdimension-storage-class-ax-2012/"><font size="3" face="Calibri">here</font></a><font size="3" face="Calibri">. But what if we have to default them using code.</font></p>
<p><font size="3" face="Calibri">Say you are creating a general journal and want to default the Account and Offset account fields. These fields have been changed to segmented controls and now store RecIds for DimensionAttributeValueCombination table.</font></p>
<p><font size="3" face="Calibri">The job below will help you in doing that.</font></p>
<p><font size="3" face="Calibri">Below are the screen shots of dimensions for the two record ids used below:</font></p>
<p><a href="http://sumitsaxfactor.files.wordpress.com/2011/12/image19.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="image" border="0" alt="image" src="http://sumitsaxfactor.files.wordpress.com/2011/12/image_thumb19.png?w=369&h=87" width="369" height="87" /></a></p>
<p><a href="http://sumitsaxfactor.files.wordpress.com/2011/12/image20.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="image" border="0" alt="image" src="http://sumitsaxfactor.files.wordpress.com/2011/12/image_thumb20.png?w=373&h=112" width="373" height="112" /></a></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><font face="Consolas"><font size="2"><b><span><font color="#00008b">static</font></span></b><span><font color="#000000"> </font><b><span><font color="#00008b">void</font></span></b><font color="#000000"> setLedgerDimensions(Args _args)</font></span></font></font></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">{</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>LedgerDimensionAccount<span>&#160; </span>ledgerDimension; </font><i><span><font color="#008000">// Record id for LedgerDimension(DimensionAttributeValueCombination) containing combination of dimensions</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>LedgerDimensionAccount<span>&#160; </span>mainAccDimension; </font><i><span><font color="#008000">// Record id for LedgerDimension(DimensionAttributeValueCombination) containing default account for main account RecId</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><span><font face="Consolas"><font color="#000000" size="2">&#160;&#160;&#160; </font></font></span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>RefRecId<span>&#160;&#160;&#160; </span>emplDimAttrRecId = </font><b><span><font color="#ff0000">5637147951</font></span></b><font color="#000000">; </font><i><span><font color="#008000">// For ex. purpose defaulting it to required DimensionAttributeValueSet RecordId</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>RefRecId<span>&#160;&#160;&#160; </span>dimensionRecId = </font><b><span><font color="#ff0000">5637145941</font></span></b><font color="#000000">; </font><i><span><font color="#008000">// For ex. purpose defaulting it to required DimensionAttributeValueSet RecordId</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">/*</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000"><font size="2"><span>&#160;&#160;&#160;&#160; </span>* For information on finding the record ids for required dimension combinations</font></font></font></span></i></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000"><font size="2"><span>&#160;&#160;&#160;&#160; </span>* Go through the following blog</font></font></font></span></i></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font color="#008000"><font face="Consolas"><font size="2"><span>&#160;&#160;&#160;&#160; </span>* </font></font></font><a style="cursor:auto;" href="http://sumitsaxfactor.wordpress.com/2011/12/28/defaulting-financial-dimensions-ax-2012/"><font color="#0000ff" size="2" face="Consolas"><u>http://sumitsaxfactor.wordpress.com/2011/12/28/defaulting-financial-dimensions-ax-2012/</u></font></a><font face="Consolas"><font color="#008000" size="2"> </font></font></span></i></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><font size="2"><i><span><font face="Consolas"><font color="#008000"><span>&#160;&#160;&#160;&#160; </span>*/</font></font></span></i><span></span></font></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><span><font face="Consolas"><font color="#000000" size="2">&#160;&#160;&#160; </font></font></span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Get the default account for main account 110154</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>mainAccDimension = DimensionStorage::getDefaultAccountForMainAccountNum(</font><span><font color="#8b0000">&quot;110154&quot;</font></span><font color="#000000">);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><span><font face="Consolas"><font color="#000000" size="2">&#160;&#160;&#160; </font></font></span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Find or create the LedgerDimension record for required combination</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Param1 &#8211; Ledger Dimension record id, in our case Default account for main account</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Param2 &#8211; Default Dimension Record Id for 1st Dimension Combination</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Param3 &#8211; Default Dimension Record Id for 2nd Dimension Combination</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Param4 &#8211; Default Dimension Record Id for 3rd Dimension Combination</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>ledgerDimension = DimensionDefaultingService::serviceCreateLedgerDimension(</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>mainAccDimension,</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimensionRecId,</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>emplDimAttrRecId);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>info(</font><b><span><font color="#00008b">strFmt</font></span></b><font color="#000000">(</font><span><font color="#8b0000">&quot;%1: %2&quot;</font></span><font color="#000000">, ledgerDimension, DimensionAttributeValueCombination::find(ledgerDimension).DisplayValue));</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">}</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font color="#000000" size="2" face="Consolas"></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font color="#000000" size="3" face="Calibri">This is the output</font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font color="#000000" size="2" face="Consolas"></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><a href="http://sumitsaxfactor.files.wordpress.com/2011/12/image21.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="image" border="0" alt="image" src="http://sumitsaxfactor.files.wordpress.com/2011/12/image_thumb21.png?w=339&h=335" width="339" height="335" /></a></p>
<p>&#160;</p>
<p><font size="3" face="Calibri">Friends I am updating the post to illustrate how we can default dimensions in case the account is&#160; not a ledger account.</font></p>
<p><font size="3" face="Calibri">In the job above, you can use&#160; the method getDynamicAccount instead of getDefaultAccountForMainAccount and get non-ledger account ledger dimensions. Here is a small job that shows the same.</font></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><font face="Consolas"><font size="2"><b><span><font color="#00008b">static</font></span></b><span><font color="#000000"> </font><b><span><font color="#00008b">void</font></span></b><font color="#000000"> getNonLedgerAccounts(Args _args)</font></span></font></font></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">{</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>LedgerDimensionAccount<span>&#160; </span>ledgerDim;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>ledgerDim = DimensionStorage::getDynamicAccount(</font><span><font color="#8b0000">&#8216;VEN-00273&#8242;</font></span><font color="#000000">, LedgerJournalACType::Vend);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>info(</font><b><span><font color="#00008b">strFmt</font></span></b><font color="#000000">(</font><span><font color="#8b0000">&quot;%1 -%2&quot;</font></span><font color="#000000">, ledgerDim, DimensionAttributeValueCombination::find(ledgerDim).DisplayValue));</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">}</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font color="#000000" face="Consolas"></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font color="#000000" face="Consolas">&#160;</font></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sumitsaxfactor.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sumitsaxfactor.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sumitsaxfactor.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sumitsaxfactor.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sumitsaxfactor.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sumitsaxfactor.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sumitsaxfactor.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sumitsaxfactor.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sumitsaxfactor.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sumitsaxfactor.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sumitsaxfactor.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sumitsaxfactor.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sumitsaxfactor.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sumitsaxfactor.wordpress.com/189/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sumitsaxfactor.wordpress.com&#038;blog=18430881&#038;post=189&#038;subd=sumitsaxfactor&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sumitsaxfactor.wordpress.com/2011/12/28/defaulting-ledger-dimensions-ax-2012/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b02515e4e6ca67a70adfb9a35cc3ddb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sumitloya</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2011/12/image_thumb19.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2011/12/image_thumb20.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2011/12/image_thumb21.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>Defaulting Financial Dimensions [AX 2012]</title>
		<link>http://sumitsaxfactor.wordpress.com/2011/12/28/defaulting-financial-dimensions-ax-2012/</link>
		<comments>http://sumitsaxfactor.wordpress.com/2011/12/28/defaulting-financial-dimensions-ax-2012/#comments</comments>
		<pubDate>Wed, 28 Dec 2011 13:19:03 +0000</pubDate>
		<dc:creator>Sumit Loya</dc:creator>
				<category><![CDATA[AX 2012]]></category>

		<guid isPermaLink="false">https://sumitsaxfactor.wordpress.com/?p=179</guid>
		<description><![CDATA[Next in the series of posts on Ledger dimensions and Financial dimensions is defaulting or setting the financial dimensions for any record. Suppose you have a requirement wherein you need to create a customer via code and default specific dimension (say Employee) to this record. In AX 2012 dimensions are not directly attached but the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sumitsaxfactor.wordpress.com&#038;blog=18430881&#038;post=179&#038;subd=sumitsaxfactor&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><font size="3" face="Calibri">Next in the series of posts on Ledger dimensions and Financial dimensions is defaulting or setting the financial dimensions for any record. Suppose you have a requirement wherein you need to create a customer via code and default specific dimension (say Employee) to this record.</font></p>
<p><font size="3" face="Calibri">In AX 2012 dimensions are not directly attached but the combination Record Id is stored. The name generally is DefaultDimension.</font></p>
<p><font size="3" face="Calibri">This field points to a record in DimensionAttributeValueSet table. This table holds the combination of financial dimensions that a particular record is attached to. The combination is stored in DimensionAttributeValueSetItem table.</font></p>
<p><font size="3" face="Calibri">The job below will help you in defaulting a dimension: I have put in enough comments to make the job self explanatory. This job will help you find / create a dimension combination record and get the record id to set.</font></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><font face="Consolas"><font size="2"><b><span><font color="#00008b">static</font></span></b><span><font color="#000000"> </font><b><span><font color="#00008b">void</font></span></b><font color="#000000"> setDefaultFinancialDimension(Args _args)</font></span></font></font></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">{</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>#LedgerSHA1Hash</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionSHA1Hash<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>hash; </font><i><span><font color="#008000">//To store the calculated hash for DimensionAttributeValueSet</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>HashKey<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>valueKeyHashArray[]; </font><i><span><font color="#008000">//To store the has key of dimension in question</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>Map<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrIdx; </font><i><span><font color="#008000">//to store the dimension index and backing entity type</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionAttributeSetItem<span>&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrSetItem; </font><i><span><font color="#008000">// Contains the number of dimensions active for a account structure ledger</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionAttribute<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttr; </font><i><span><font color="#008000">// Contains the financial dimensions records</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionAttributeValue<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValue; </font><i><span><font color="#008000">// Contains used financial dimension values</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionAttributeValueSet<span>&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSet; </font><i><span><font color="#008000">//Contains default dimension records</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionAttributeValueSetItem<span>&#160; </span>dimAttrValueSetItem; </font><i><span><font color="#008000">//Contains individual records for default dimensions</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimAttributeHcmWorker<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrWorker; </font><i><span><font color="#008000">//Backing entity view for Employee type dimension</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionEnumeration<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimensionSetId; </font><i><span><font color="#008000">//Record id for table that contains active dimensions for current ledger</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">int</font></span></b><font color="#000000"> dimAttrCount, i;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">int</font></span></b><font color="#000000"> emplBackEntityType; </font><i><span><font color="#008000">//Stores the backing entity type for Employee type dimension</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//The employee backing entity will be the view DimAttributeHcmWorker</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>emplBackEntityType = </font><b><span><font color="#00008b">tableNum</font></span></b><font color="#000000">(DimAttributeHcmWorker);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Initialize the map to store the backing entity types</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>dimAttrIdx = </font><b><span><font color="#00008b">new</font></span></b><font color="#000000"> Map(Types::Integer, Types::Integer);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Get the record Id (dimension set id) for current ledger to find active dimensions</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>dimensionSetId = DimensionCache::getDimensionAttributeSetForLedger();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Find all the active dimensions for current ledger except main account and store there</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//backing entity type in the map</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">while</font></span></b><font color="#000000"> </font><b><span><font color="#00008b">select</font></span></b><font color="#000000"> * </font><b><span><font color="#00008b">from</font></span></b><font color="#000000"> dimAttr</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">order</font></span></b><font color="#000000"> </font><b><span><font color="#00008b">by</font></span></b><font color="#000000"> Name</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">where</font></span></b><font color="#000000"> dimAttr.Type != DimensionAttributeType::MainAccount</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">join</font></span></b><font color="#000000"> RecId </font><b><span><font color="#00008b">from</font></span></b><font color="#000000"> dimAttrSetItem</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">where</font></span></b><font color="#000000"> dimAttrSetItem.DimensionAttribute == dimAttr.RecId &amp;&amp;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrSetItem.DimensionAttributeSet == dimensionSetId</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrCount++;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrIdx.insert(dimAttr.BackingEntityType, dimAttrCount);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//initialize hash key array to null</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">for</font></span></b><font color="#000000"> (i = </font><b><span><font color="#ff0000">1</font></span></b><font color="#000000">; i&lt;= dimAttrCount; i++)</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>valueKeyHashArray[i] = emptyGuid();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Find the Dimension attribute record for the dimension to work on</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>dimAttr.clear();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">select</font></span></b><font color="#000000"> </font><b><span><font color="#00008b">firstonly</font></span></b><font color="#000000"> dimAttr</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">where</font></span></b><font color="#000000"> dimAttr.BackingEntityType == emplBackEntityType;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Get the backing entity type for the dimension value to process</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">select</font></span></b><font color="#000000"> </font><b><span><font color="#00008b">firstOnly</font></span></b><font color="#000000"> dimAttrWorker</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">where</font></span></b><font color="#000000"> dimAttrWorker.Value == </font><span><font color="#8b0000">&#8217;000038&#8242;</font></span><font color="#000000">;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Find the required Dimension Attribute Value record</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Create if necessary</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>dimAttrValue = DimensionAttributeValue::findByDimensionAttributeAndEntityInst(dimAttr.RecId, dimAttrWorker.RecId, </font><b><span><font color="#00008b">false</font></span></b><font color="#000000">, </font><b><span><font color="#00008b">true</font></span></b><font color="#000000">);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Store the required combination hash keys</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>valueKeyHashArray[dimAttrIdx.lookup(emplBackEntityType)] = dimAttrValue.HashKey;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Calculate the hash for the current values</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>hash = DimensionAttributeValueSetStorage::getHashFromArray(valueKeyHashArray, dimAttrCount);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Null hash indicates no values exist, which may occur if the user entered an invalid value for one dimension attribute</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">if</font></span></b><font color="#000000"> (hash == </font><b><span><font color="#00008b">conNull</font></span></b><font color="#000000">())</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">throw</font></span></b><font color="#000000"> error(</font><span><font color="#8b0000">&quot;Wrong value for Employee Dimension&quot;</font></span><font color="#000000">);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Search for existing value set</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>dimAttrValueSet = DimensionAttributeValueSet::findByHash(hash);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">// This value set does not exist, so it must be persisted</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">if</font></span></b><font color="#000000"> (!dimAttrValueSet)</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">ttsbegin</font></span></b><font color="#000000">;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Insert the value set with appropriate hash</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSet.Hash = hash;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSet.insert();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><i><span><font color="#008000">/*</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>* This Piece of code is only meant for better understanding hence commented</font></font></font></span></i></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>* Use this code in case you have to handle more than one dimension</font></font></font></span></i></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>* For our example we have only employee type dimension hence we will not use this for loop</font></font></font></span></i></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>* Value key array would be the array of different dimension values</font></font></font></span></i></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><font size="2"><i><span><font face="Consolas"><font color="#008000"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>*/</font></font></span></i><span></span></font></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Insert only specified set items use this</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><i><span><font color="#008000">/*for (i = 1; i &lt;= dimAttrCount; i++)</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>{</font></font></font></span></i></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>if (valueKeyArray[i] != 0)</font></font></font></span></i></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>{</font></font></font></span></i></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160; </span><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSetItem.clear();</font></font></font></span></i></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSetItem.DimensionAttributeValueSet = valueSet.RecId;</font></font></font></span></i></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSetItem.DimensionAttributeValue = valueKeyArray[i];</font></font></font></span></i></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSetItem.DisplayValue = valueStrArray[i];</font></font></font></span></i></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSetItem.insert();</font></font></font></span></i></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><i><span><font face="Consolas"><font color="#008000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>}</font></font></font></span></i></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><font size="2"><i><span><font face="Consolas"><font color="#008000"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>}*/</font></font></span></i><span></span></font></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Insert Employee dimension set item</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSetItem.clear();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSetItem.DimensionAttributeValueSet = dimAttrValueSet.RecId;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSetItem.DimensionAttributeValue = dimAttrValue.RecId;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSetItem.DisplayValue = dimAttrWorker.Value;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimAttrValueSetItem.insert();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">ttscommit</font></span></b><font color="#000000">;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>info(</font><b><span><font color="#00008b">strFmt</font></span></b><font color="#000000">(</font><span><font color="#8b0000">&quot;%1&quot;</font></span><font color="#000000">, dimAttrValueSet.RecId));</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">}</font></font></span></p>
<p><font size="3" face="Calibri">&#160;</font></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sumitsaxfactor.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sumitsaxfactor.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sumitsaxfactor.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sumitsaxfactor.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sumitsaxfactor.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sumitsaxfactor.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sumitsaxfactor.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sumitsaxfactor.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sumitsaxfactor.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sumitsaxfactor.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sumitsaxfactor.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sumitsaxfactor.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sumitsaxfactor.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sumitsaxfactor.wordpress.com/179/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sumitsaxfactor.wordpress.com&#038;blog=18430881&#038;post=179&#038;subd=sumitsaxfactor&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sumitsaxfactor.wordpress.com/2011/12/28/defaulting-financial-dimensions-ax-2012/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b02515e4e6ca67a70adfb9a35cc3ddb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sumitloya</media:title>
		</media:content>
	</item>
		<item>
		<title>Getting Individual Dimension Combination Values&#8211;Dimension Storage class [AX 2012]</title>
		<link>http://sumitsaxfactor.wordpress.com/2011/12/16/getting-individual-dimension-combination-valuesdimension-storage-class-ax-2012/</link>
		<comments>http://sumitsaxfactor.wordpress.com/2011/12/16/getting-individual-dimension-combination-valuesdimension-storage-class-ax-2012/#comments</comments>
		<pubDate>Fri, 16 Dec 2011 08:19:44 +0000</pubDate>
		<dc:creator>Sumit Loya</dc:creator>
				<category><![CDATA[AX 2012]]></category>

		<guid isPermaLink="false">https://sumitsaxfactor.wordpress.com/?p=168</guid>
		<description><![CDATA[In this post, I will be explaining the method to get individual values for each dimension combination that is created and stored. Dimension combinations are stored are DimensionAttributeValueCombination class. But they are stored as a combination ex: (100010-AX-00001- &#8211; - -). How would you know the value in each combination belongs to what dimension? The [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sumitsaxfactor.wordpress.com&#038;blog=18430881&#038;post=168&#038;subd=sumitsaxfactor&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><font size="3" face="Calibri">In this post, I will be explaining the method to get individual values for each dimension combination that is created and stored.</font></p>
<p><font size="3" face="Calibri">Dimension combinations are stored are DimensionAttributeValueCombination class. But they are stored as a combination ex: (100010-AX-00001- &#8211; - -). How would you know the value in each combination belongs to what dimension?</font></p>
<p><font size="3" face="Calibri">The answer is through dimension storage class. This class is used to manipulate these combinations.</font></p>
<p><font size="3" face="Calibri">The job below helps you in finding out the required values. The job has lots of self explanatory comments.</font></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><font face="Consolas"><font size="2"><b><span><font color="#00008b">static</font></span></b><span><font color="#000000"> </font><b><span><font color="#00008b">void</font></span></b><font color="#000000"> getDimensionCombinationValues(Args _args)</font></span></font></font></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">{</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">// DimensionAttributeValueCombination stores the combinations of dimension values</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Any tables that uses dimension<span>&#160; </span>combinations for main account and dimensions</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Has a reference to this table&#8217;s recid</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>DimensionAttributeValueCombination<span>&#160; </span>dimAttrValueComb;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//GeneralJournalAccountEntry is one such tables that refrences DimensionAttributeValueCombination</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>GeneralJournalAccountEntry<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>gjAccEntry;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Class Dimension storage is used to store and manipulate the values of combination</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>DimensionStorage<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>dimensionStorage;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Class DimensionStorageSegment will get specfic segments based on hierarchies</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>DimensionStorageSegment segment;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">int</font></span></b><font color="#000000"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>segmentCount, segmentIndex;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">int</font></span></b><font color="#000000"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>hierarchyCount, hierarchyIndex;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">str</font></span></b><font color="#000000"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>segmentName, segmentDescription;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>SysDim<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>segmentValue;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Get one record for demo purpose</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>gjAccEntry = GeneralJournalAccountEntry::find(</font><b><span><font color="#ff0000">5637765403</font></span></b><font color="#000000">);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">setPrefix</font></span></b><font color="#000000">(</font><span><font color="#8b0000">&quot;Dimension values fetching&quot;</font></span><font color="#000000">);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Fetch the Value combination record</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>dimAttrValueComb = DimensionAttributeValueCombination::find(gjAccEntry.LedgerDimension);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">setPrefix</font></span></b><font color="#000000">(</font><span><font color="#8b0000">&quot;Breakup for &quot;</font></span><font color="#000000"> + dimAttrValueComb.DisplayValue);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Get dimension storage</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>dimensionStorage = DimensionStorage::findById(gjAccEntry.LedgerDimension);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">if</font></span></b><font color="#000000"> (dimensionStorage == </font><b><span><font color="#00008b">null</font></span></b><font color="#000000">)</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">throw</font></span></b><font color="#000000"> error(</font><span><font color="#9400d3">&quot;@SYS83964&quot;</font></span><font color="#000000">);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Get hierarchy count</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>hierarchyCount = dimensionStorage.hierarchyCount();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Loop through hierarchies to get individual segments</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">for</font></span></b><font color="#000000">(hierarchyIndex = </font><b><span><font color="#ff0000">1</font></span></b><font color="#000000">; hierarchyIndex &lt;= hierarchyCount; hierarchyIndex++)</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">setPrefix</font></span></b><font color="#000000">(</font><b><span><font color="#00008b">strFmt</font></span></b><font color="#000000">(</font><span><font color="#8b0000">&quot;Hierarchy: %1&quot;</font></span><font color="#000000">, DimensionHierarchy::find(dimensionStorage.getHierarchyId(hierarchyIndex)).Name));</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Get segment count for hierarchy</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>segmentCount = dimensionStorage.segmentCountForHierarchy(hierarchyIndex);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Loop through segments and display required values</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">for</font></span></b><font color="#000000"> (segmentIndex = </font><b><span><font color="#ff0000">1</font></span></b><font color="#000000">; segmentIndex &lt;= segmentCount; segmentIndex++)</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Get segment</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>segment = dimensionStorage.getSegmentForHierarchy(hierarchyIndex, segmentIndex);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Get the segment information</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><b><span><font color="#00008b">if</font></span></b><font color="#000000"> (segment.parmDimensionAttributeValueId() != </font><b><span><font color="#ff0000">0</font></span></b><font color="#000000">)</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><i><span><font color="#008000">// Get segment name</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>segmentName = DimensionAttribute::find(DimensionAttributeValue::find(segment.parmDimensionAttributeValueId()).DimensionAttribute).Name;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Get segment value (id of the dimension)</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>segmentValue<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>= segment.parmDisplayValue();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </font></span><i><span><font color="#008000">//Get segment value name (Description for dimension)</font></span></i></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>segmentDescription<span>&#160; </span>= segment.getName();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>info(</font><b><span><font color="#00008b">strFmt</font></span></b><font color="#000000">(</font><span><font color="#8b0000">&quot;%1: %2, %3&quot;</font></span><font color="#000000">, segmentName, segmentValue, segmentDescription));</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">}</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><font size="3" face="Calibri">Here is a sample output after running the code:</font></p>
<p><a href="http://sumitsaxfactor.files.wordpress.com/2011/12/image18.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:0 5px;" title="image" border="0" alt="image" src="http://sumitsaxfactor.files.wordpress.com/2011/12/image_thumb18.png?w=393&h=288" width="393" height="288" /></a></p>
<p><strong>Note: </strong>Hiearchies: CEEBD_Dept-CostCenter-Purpose and CorpShared_Dept-CostCenter-Purpose are child hierarchies of “Account structure”.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sumitsaxfactor.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sumitsaxfactor.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sumitsaxfactor.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sumitsaxfactor.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sumitsaxfactor.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sumitsaxfactor.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sumitsaxfactor.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sumitsaxfactor.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sumitsaxfactor.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sumitsaxfactor.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sumitsaxfactor.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sumitsaxfactor.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sumitsaxfactor.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sumitsaxfactor.wordpress.com/168/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sumitsaxfactor.wordpress.com&#038;blog=18430881&#038;post=168&#038;subd=sumitsaxfactor&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sumitsaxfactor.wordpress.com/2011/12/16/getting-individual-dimension-combination-valuesdimension-storage-class-ax-2012/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b02515e4e6ca67a70adfb9a35cc3ddb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sumitloya</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2011/12/image_thumb18.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>Dimension Provider Class and Run-time dimension ranges [AX 2012]</title>
		<link>http://sumitsaxfactor.wordpress.com/2011/12/16/dimension-provider-class-and-run-time-dimension-ranges-ax-2012/</link>
		<comments>http://sumitsaxfactor.wordpress.com/2011/12/16/dimension-provider-class-and-run-time-dimension-ranges-ax-2012/#comments</comments>
		<pubDate>Fri, 16 Dec 2011 06:24:39 +0000</pubDate>
		<dc:creator>Sumit Loya</dc:creator>
				<category><![CDATA[AX 2012]]></category>

		<guid isPermaLink="false">https://sumitsaxfactor.wordpress.com/?p=150</guid>
		<description><![CDATA[While working on a requirement for ledger amounts, I had to find out a way to filter the transactions for a specific dimension value of a specific dimension type; from ledger transactions of a main account. Now had it been Ax 2009, it was pretty simple where you could provide a range on Dimensions[arrayIndex] field. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sumitsaxfactor.wordpress.com&#038;blog=18430881&#038;post=150&#038;subd=sumitsaxfactor&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>While working on a requirement for ledger amounts, I had to find out a way to filter the transactions for a specific dimension value of a specific dimension type; from ledger transactions of a main account.</p>
<p>Now had it been Ax 2009, it was pretty simple where you could provide a range on Dimensions[arrayIndex] field. But in Ax 2012 the dimensions on a transaction are always stored a combination value rather than a separate value.</p>
<p>While running the query, I found a support provided by MS where-in all the dimensions will be added as fields for a table having Ledger dimensions on run-time. Now if we were running a query manually, we will be able to specify the range manually as shown below:</p>
<p>For demo purpose, I am using GeneralJournalAccountEntry table that holds the amounts for transactions posted to a main account</p>
<p><a href="http://sumitsaxfactor.files.wordpress.com/2011/12/image13.png"><img style="background-image:none;padding-left:0;padding-right:0;display:block;float:none;padding-top:0;border-width:0;margin:0 auto;" title="image" border="0" alt="image" src="http://sumitsaxfactor.files.wordpress.com/2011/12/image_thumb13.png?w=441&h=259" width="441" height="259" /></a></p>
<p>Now try and add a range, when you select the drop-down on the Field column, you will notice new fields added to the drop-down</p>
<p><a href="http://sumitsaxfactor.files.wordpress.com/2011/12/image14.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:0 5px;" title="image" border="0" alt="image" src="http://sumitsaxfactor.files.wordpress.com/2011/12/image_thumb14.png?w=437&h=298" width="437" height="298" /></a></p>
<p>The concept behind is that, these fields are added at run-time and when you add a range to any of these fields, a view (DimensionAttributeLevelValueView) will be dynamically added for each field range record you create, as a child DS for GeneralJournalAccountEntry</p>
<p><a href="http://sumitsaxfactor.files.wordpress.com/2011/12/image15.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:0 5px;" title="image" border="0" alt="image" src="http://sumitsaxfactor.files.wordpress.com/2011/12/image_thumb15.png?w=443&h=260" width="443" height="260" /></a>&#160;</p>
<p>This is what the SQL statement looks like at the backend</p>
<p style="line-height:13pt;margin:0 0 10pt;" class="MsoNormal"><font face="Courier New"><font size="2"><span style="line-height:10pt;" lang="EN"><font color="#0000ff">SELECT</font></span><span style="line-height:10pt;" lang="EN"><font color="#000000"> </font></span><span style="line-height:10pt;" lang="EN"><font color="#808080">*</font></span><span style="line-height:10pt;" lang="EN"><font color="#000000"> </font></span><span style="line-height:10pt;" lang="EN"><font color="#0000ff">FROM</font></span><span style="line-height:10pt;" lang="EN"><font color="#000000"> GeneralJournalAccountEntry</font></span><span style="line-height:10pt;" lang="EN"><font color="#808080">(</font></span><span style="line-height:10pt;" lang="EN"><font color="#000000">GeneralJournalAccountEntry_1</font></span><span style="line-height:10pt;" lang="EN"><font color="#808080">)</font></span><span style="line-height:10pt;" lang="EN"><font color="#000000"> </font></span><span style="line-height:10pt;" lang="EN"><font color="#808080">JOIN</font></span><span style="line-height:10pt;" lang="EN"><font color="#000000"> </font></span><span style="line-height:10pt;" lang="EN"><font color="#808080">*</font></span><span style="line-height:10pt;" lang="EN"><font color="#000000"> </font></span><span style="line-height:10pt;" lang="EN"><font color="#0000ff">FROM</font></span><span style="line-height:10pt;" lang="EN"><font color="#000000"> DimensionAttributeLevelValueView</font></span><span style="line-height:10pt;" lang="EN"><font color="#808080">(</font></span><span style="line-height:10pt;" lang="EN"><font color="#000000">DimAttCol_GeneralJournalAccountEntry_1_LedgerDimension_5637145354</font></span><span style="line-height:10pt;" lang="EN"><font color="#808080">)</font></span><span style="line-height:10pt;" lang="EN"><font color="#000000"> </font></span><span style="line-height:10pt;" lang="EN"><font color="#0000ff">ON</font></span><span style="line-height:10pt;" lang="EN"><font color="#000000"> GeneralJournalAccountEntry</font></span><span style="line-height:10pt;" lang="EN"><font color="#808080">.</font></span><span style="line-height:10pt;" lang="EN"><font color="#000000">LedgerDimension </font></span><span style="line-height:10pt;" lang="EN"><font color="#808080">=</font></span><span style="line-height:10pt;" lang="EN"><font color="#000000"> DimensionAttributeLevelValueView</font></span><span style="line-height:10pt;" lang="EN"><font color="#808080">.</font></span><span style="line-height:10pt;" lang="EN"><font color="#000000">ValueCombinationRecId </font></span><span style="line-height:10pt;" lang="EN"><font color="#808080">AND</font></span><span style="line-height:10pt;" lang="EN"><font color="#0000ff"> </font></span><span style="line-height:10pt;" lang="EN"><font color="#808080">((</font></span><span style="line-height:10pt;" lang="EN"><font color="#000000">DimensionAttribute </font></span><span style="line-height:10pt;" lang="EN"><font color="#808080">=</font></span><span style="line-height:10pt;" lang="EN"><font color="#000000"> 5637145354</font></span><span style="line-height:10pt;" lang="EN"><font color="#808080">))</font></span><span style="line-height:10pt;" lang="EN"><font color="#000000"> </font></span><span style="line-height:10pt;" lang="EN"><font color="#808080">AND</font></span><span style="line-height:10pt;" lang="EN"><font color="#0000ff"> </font></span><span style="line-height:10pt;" lang="EN"><font color="#808080">((</font></span><span style="line-height:10pt;" lang="EN"><font color="#000000">DisplayValue </font></span><span style="line-height:10pt;" lang="EN"><font color="#808080">=</font></span><span style="line-height:10pt;" lang="EN"><font color="#000000"> </font></span><span style="line-height:10pt;" lang="EN"><font color="#ff0000">N&#8217;000001&#8242;</font></span><span style="line-height:10pt;" lang="EN"><font color="#808080">))</font></span></font></font></p>
<p>Now when we are running queries manually, we can specify such kind of a range, what if we have to do the same thing while running a query at a backend or through a code?</p>
<p>Here comes the DimensionProvider class to our rescue. This class will help us add such ranges as required. Look at the sample job below for some guidance.</p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><font face="Consolas"><font size="2"><b><span><font color="#00008b">static</font></span></b><span><font color="#000000"> </font><b><span><font color="#00008b">void</font></span></b><font color="#000000"> addDimensionRange(Args _args)</font></span></font></font></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">{</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>Query<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>query = </font><b><span><font color="#00008b">new</font></span></b><font color="#000000"> Query();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>QueryRun<span>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>queryRun;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>QueryBuildDataSource<span>&#160;&#160;&#160; </span>qbds;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>DimensionProvider<span>&#160;&#160;&#160;&#160;&#160;&#160; </span>dimensionProvider = </font><b><span><font color="#00008b">new</font></span></b><font color="#000000"> DimensionProvider();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>GeneralJournalAccountEntry<span>&#160; </span>accEntry;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>DimensionAttribute<span>&#160;&#160;&#160;&#160;&#160; </span>dimAttr;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>Name<span>&#160;&#160;&#160; </span>dimAttrNameEmpl, dimAttrNameCostCenter;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">int</font></span></b><font color="#000000"> i;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">select</font></span></b><font color="#000000"> </font><b><span><font color="#00008b">firstOnly</font></span></b><font color="#000000"> dimAttr </font><b><span><font color="#00008b">where</font></span></b><font color="#000000"> dimAttr.BackingEntityType == </font><b><span><font color="#00008b">tableNum</font></span></b><font color="#000000">(DimAttributeHcmWorker);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>dimAttrNameEmpl = dimAttr.Name;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><span><font face="Consolas"><font color="#000000" size="2">&#160;&#160;&#160; </font></font></span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">select</font></span></b><font color="#000000"> </font><b><span><font color="#00008b">firstOnly</font></span></b><font color="#000000"> dimAttr </font><b><span><font color="#00008b">where</font></span></b><font color="#000000"> dimAttr.BackingEntityType == </font><b><span><font color="#00008b">tableNum</font></span></b><font color="#000000">(DimAttributeOMCostCenter);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>dimAttrNameCostCenter = dimAttr.Name;</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><span><font face="Consolas"><font color="#000000" size="2">&#160;&#160;&#160; </font></font></span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>qbds = query.addDataSource(</font><b><span><font color="#00008b">tableNum</font></span></b><font color="#000000">(GeneralJournalAccountEntry));</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>dimensionProvider.addAttributeRangeToQuery(query, qbds.name(), </font><b><span><font color="#00008b">fieldStr</font></span></b><font color="#000000">(GeneralJournalAccountEntry, LedgerDimension), DimensionComponent::DimensionAttribute, SysQuery::valueNotEmptyString(), dimAttrNameEmpl, </font><b><span><font color="#00008b">true</font></span></b><font color="#000000">);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>dimensionProvider.addAttributeRangeToQuery(query, qbds.name(), </font><b><span><font color="#00008b">fieldStr</font></span></b><font color="#000000">(GeneralJournalAccountEntry, LedgerDimension), DimensionComponent::DimensionAttribute, SysQuery::valueNotEmptyString(), dimAttrNameCostCenter, </font><b><span><font color="#00008b">true</font></span></b><font color="#000000">);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000" size="2">&#160;</font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160; </span>queryRun = </font><b><span><font color="#00008b">new</font></span></b><font color="#000000"> QueryRun(query);</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>queryRun.prompt();</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><span><font face="Consolas"><font color="#000000" size="2">&#160;&#160;&#160; </font></font></span></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><span><font color="#000000">&#160;&#160;&#160; </font></span><b><span><font color="#00008b">while</font></span></b><font color="#000000">(queryRun.next())</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>{</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>accEntry = queryRun.get(</font><b><span><font color="#00008b">tableNum</font></span></b><font color="#000000">(GeneralJournalAccountEntry));</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font size="2"><font color="#000000"><span>&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span>info(</font><b><span><font color="#00008b">strFmt</font></span></b><font color="#000000">(</font><span><font color="#8b0000">&quot;%1 &lt;&#8211;&gt; %2&quot;</font></span><font color="#000000">, DimensionAttributeValueCombination::find(accEntry.LedgerDimension).DisplayValue, accEntry.AccountingCurrencyAmount));</font></font></font></span></p>
<p style="line-height:normal;margin:0;" class="MsoNormal"><span><font face="Consolas"><font color="#000000"><font size="2"><span>&#160;&#160;&#160; </span>}</font></font></font></span></p>
<p> <span style="line-height:9pt;"><font face="Consolas"><font color="#000000" size="2">}</font></font></span>
<p>&#160;</p>
<p>Here is the sample output log</p>
<p><a href="http://sumitsaxfactor.files.wordpress.com/2011/12/image16.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:0 5px;" title="image" border="0" alt="image" src="http://sumitsaxfactor.files.wordpress.com/2011/12/image_thumb16.png?w=408&h=241" width="408" height="241" /></a></p>
<p>This is how the query will be if you prompt the query</p>
<p><a href="http://sumitsaxfactor.files.wordpress.com/2011/12/image17.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:0 5px;" title="image" border="0" alt="image" src="http://sumitsaxfactor.files.wordpress.com/2011/12/image_thumb17.png?w=443&h=258" width="443" height="258" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sumitsaxfactor.wordpress.com/150/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sumitsaxfactor.wordpress.com/150/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sumitsaxfactor.wordpress.com/150/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sumitsaxfactor.wordpress.com/150/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sumitsaxfactor.wordpress.com/150/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sumitsaxfactor.wordpress.com/150/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sumitsaxfactor.wordpress.com/150/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sumitsaxfactor.wordpress.com/150/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sumitsaxfactor.wordpress.com/150/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sumitsaxfactor.wordpress.com/150/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sumitsaxfactor.wordpress.com/150/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sumitsaxfactor.wordpress.com/150/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sumitsaxfactor.wordpress.com/150/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sumitsaxfactor.wordpress.com/150/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sumitsaxfactor.wordpress.com&#038;blog=18430881&#038;post=150&#038;subd=sumitsaxfactor&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sumitsaxfactor.wordpress.com/2011/12/16/dimension-provider-class-and-run-time-dimension-ranges-ax-2012/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b02515e4e6ca67a70adfb9a35cc3ddb3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">sumitloya</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2011/12/image_thumb13.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2011/12/image_thumb14.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2011/12/image_thumb15.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2011/12/image_thumb16.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://sumitsaxfactor.files.wordpress.com/2011/12/image_thumb17.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
	</channel>
</rss>
