How to modify a field value in a line when generating the EFT file?

Viswanathan Neelakantan - Click for blog homepageI am a motivated and detail conscious graduate who is a certified Microsoft Dynamics GP consultant. I display considerable strength across a wide range of technical as well as functional skills in particular development, customization together with problem solving. I enjoy working within a team environment together with the challenge of carrying through individual tasks which has been experienced throughout my professional career in Dynamics GP, which spans six years. This is my first article in this blog and I am proud to be able to blog with the Dynamics GP gurus.

In this post we will discuss how we can use Dexterity to customize the EFT file generation process to modify a field value in the EFT file. There would be cases where we might need to perform a calculation and show it in the EFT file. If the calculation can’t be mapped to any of the existing fields in the EFT Format Setup window, the only option left is to customize the EFT file generation process.

The field values in the EFT line can be modified by writing a trigger on the function “GenerateEFT_Line_GetFieldString” on the form cmEFTFormatSetup. In the trigger processing function, the value returned by the original function can be modified to the calculated value and returned to the calling script.

Trigger Registration Code Example

{Name: Startup}
This script is used to register the trigger on function GenerateEFT_Line_GetFieldString of form cmEFTFormatSetup.

Revision History
No. User   Date  Description

local long l_result;

l_result = Trigger_RegisterFunction(function GenerateEFT_Line_GetFieldString of form cmEFTFormatSetup,TRIGGER_AFTER_ORIGINAL,function Modify_EFT_Line_Field_Value);

if l_result <> SY_NOERR then
 warning “Trigger Registration failed for Modify_EFT_Line_Field_Value” + str(l_result);
end if;

Custom function to update field value in EFT File

{Name:  Modify_EFT_Line_Field_Value}

{This script is used to modify the value of the EFT field passed in.

Revision History
No. User   Date  Description

function returns string sFieldString;
in integer inLineType;
in integer iNationalBankSeq;
in boolean fIsCredit;
in boolean fIsPrenote;
in boolean iOpen;  
in date  dSettlementDate;
in date  dSystemDate;
in time  tSystemTime;
in string sPad;
in integer iJustify;
inout string   sXMLOpen[10];
inout string   sXMLClose[10];
inout text   sXMLText[10];
inout boolean   isData[10];
inout EFTCalculations  EFTCalculations;
inout integer   ioFileNumber;
inout integer   ioBankFileNumber;
inout table AddressEFT,    
if inLineType = <xxxx > then
 if ‘EFT Format ID’ of table cmEFTFormatDtl = <yyyy> then
  if Description of table cmEFTFormatDtl = <zzzz> then
   sFieldString = <calculation> 
  end if;  
 end if; 
end if;

xxxx – The integer value representing the Line Type where the field whose value need to be modified exists. For e.g. 1 for Header Label 1, 2 for Header Label 2 so on.
yyyy – EFT Format ID value which needs to be customized.
zzzz – Description of the field on the Line type whose value need to be modified.

For example: There is a requirement to show a field named Payment Date in the format YYYY-MM-DD. The Payment Date field in the Detail Line Type is mapped to Document Date field in the PM Paid Transaction History File having the date format as YYYYMMDD. When the EFT file is generated the Payment Date field value can be modified to the format YYYY-MM-DD by customizing the EFT file generation process. The screen shot below shows the Payment Date field in the EFT Format ID named TEST


Example: Custom function to modify the field value

if inLineType = 5 then {Line Type Detail}
 if ‘EFT Format ID’ of table cmEFTFormatDtl = “TEST” then {EFT Format ID}
  if Description of table cmEFTFormatDtl = “Payment Date” then {Field Description}
   l_date = mkdate(   integer  (substring(sFieldString,5,2))
                     ,integer  (substring(sFieldString,7,2))
                     ,integer  (substring(sFieldString,1,4)));
   l_modified_date = string(year(l_date)) + “-”
                   + string(month(l_date)) + “-“
                   + string(day(l_date)); 
   sFieldString = string (l_modified_date);
  end if;  
 end if; 
end if;


In the screen shot below the modified Payment Date field is highlighted

That’s all for now.


Comments (5)

  1. David Musgrave says:

    Posting from Mark Polino at…/how-to-modify-field-value-in-line-when.html

  2. Sean says:

    Viswa –

    I take it this can only be done through Modifier correct?



  3. Patrick Roth [MSFT] says:


    This was done via Dexterity – nothing to do with Modifier or VBA.

    But I think perhaps that you might be able to use GP Visual Studio Tools for GP 2010 for this as well.

  4. jhons says:

    awesome post..But when i am using the trigger my trigger in startup is not registering.

    I am getting SY_INVALID_SCRIPT . same exact script i used. any solutions.

  5. Arunkumar says:

    Hi siva, thanks for the article. It was really useful. but when i registering the trigger, it is not able to find the function. Im using GP2015 R2? What could be the reason?