SmartConnect On-premise utilizes .NET scripting for creating data transformations that are more complex than can be used for the Translation Table, Date Translation or Rolling Column additional columns. However, while it is not capable of creating functions or methods to be used between integrations, calculated fields can be referenced and used within the same map. I will show a few examples of where we can reuse calculated columns.
In this example, we will create a calculated field to parse a date value within a script and use it for the Document Date on a payables map. We will also use that same calculation to define the batch number but instead of writing the logic again, we’ll just reference our original calculation.
Here is a quick reference to our final mapping showing the DOCUMENT_DATE calculation and the BATCH_NUMBER_CALC calculation.
Calculated Field
First, we’ll create a calculated field that gets the date value from a source column. In this case, my source data is as follows. The document date is in a format that is not able to be translated easily by SQL since there is only a single digit for the month and day. We need to create a calculated field to get this column into a date format that can be used by our destination, in this example, Dynamics GP.
VendorID |
Document Date |
Amount |
DocumentNumber |
DocumentType |
|
ACETRAVE0001 |
5219 |
100 |
ACE0001 |
Invoice |
In the destination mapping, click on Additional Columns->Calculated
Name the Calculated Column DOCUMENT_DATE_CALC
We will parse the date string to create and return a formatted date to be mapped to the Document Date field in our destination.
if _DOCUMENTDATE.Length = 4 then
‘Assume one digit month, one digit day, two digit year
Month = substring(_DOCUMENTDATE,0,1)
Day = substring(_DOCUMENTDATE,1,1)
Year = substring(_DOCUMENTDATE,2,2)
else if _DOCUMENTDATE.Length = 5 then
‘ Assume either one digit month, two digit day and two digit year or
‘ two digit month, one digit day and two digit year
Month = substring(_DOCUMENTDATE,0,2)
if Int.Parse(Month) > 12 then
Month = substring(_DOCUMENTDATE,0,1)
Day = substring(DOCUMENTDATE,1,2)
else
Day = substring(_DOCUMENTDATE,2,1)
end if
Year = substring(_DOCUMENTDATE,3,2)
else if _DOCUMENTDATE.Length = 6 then
‘Assume two digit month, two digit day and two digit year
Month = substring(_DOCUMENTDATE,0,2)
Day = substring(_DOCUMENTDATE,2,2)
Year = substring(_DOCUMENTDATE,4,2)
end if
return new DateTime(Year,Month,Day)
Batch Number Calculation
For our Batch Number, we want to use the Document Date value with a string prefix so we need to concatenate the prefix to the date.
Instead of duplicating the code above, we can just call the document date calculation we just created.
The only way to reference a calculated column in script is to make sure the referenced calculation is created first, as we have done.
View Additional Columns
To see if an additional column would be available to be used in a Calculation, you can expand the Additional Columns node to view them.
Either type the displayed column or click and drag it into the Calculation pane.
Reorder Additional Columns
If the columns are not in the correct order, meaning you don’t see the additional column, you can change the order by highlighting the additional column and moving it to the top of the list, bottom of the list, previous or next.
Other Uses for Referencing Additional Column
You can reference Additional Columns within other additional columns that are not necessarily Calculated Columns at the destination mapping level.
Restriction
You can reference any map Calculated columns in a node restriction as well. You can see those calculations available to be used in our restriction script by expanding the Calculated Fields node
Dynamics GP Rolling Column
You can use a Calculated Column as the Document Type or Document Id in a GP Rolling Column
MSSQL Lookup
You can use a Calculated Column or Translation Table or Date Calculation Column as the Source for an MSSQL Lookup when comparing it to the target field.
Date Calculation
You can use a Calculated Column or Translation Table as the Source for a Date Calculation Column
Entity Lookups
You can use other additional columns for comparison within Entity Lookups/Page Lookups for integrating to Dynamics BC, Dynamics NAV, Dynamics BC and Salesforce.com.
Additional Columns in Tasks
You are not able to reuse Additional Columns at the Task level. Those items are executed within a different context, so the Additional columns are not available to be referenced.
If you find you are writing the same pieces of .NET logic multiple time or need similar logic in multiple maps, consider using script templates for quicker implementation of the duplicate logic.
https://www.eonesolutions.com/tech-tuesday-creating-and-using-smartconnect-script-templates/