project QadFinancials > class BBankAccountFormat > method ApiSynchronise

Description

This method is used to initialize design-time Bank Account Format data.


Parameters


olUpdatesDoneoutputlogicalThis output parameter will return true if the database updating was done within the method
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BSystem.ApiSynchroniseCustom2


program code (program9/bbankaccountformat.p)

/* =================== */
/* Clear the instance  */
/* =================== */
<M-1 run ClearData
   (output viFcReturnSuper (oiReturnStatus)) in BBankAccountFormat>
if viFcReturnSuper <> 0 
then assign oiReturnStatus = viFcReturnSuper.
if oiReturnStatus < 0 
then return.

/* ====================================== */
/* Load the existing Bank Account Formats */
/* ====================================== */
<M-2 run DataLoad
   (input  '':U (icRowids), 
    input  '':U (icPkeys), 
    input  '':U (icObjectIds), 
    input  '':U (icFreeform), 
    input  false (ilKeepPrevious), 
    output viFcReturnSuper (oiReturnStatus)) in BBankAccountFormat>

 if viFcReturnSuper = -4 /* Nothing was read - empty table */
 then assign viFcReturnSuper = 0.

if viFcReturnSuper <> 0 
then assign oiReturnStatus = viFcReturnSuper.
if oiReturnStatus < 0 
then return.

/* ===================================================================== */
/* Go through the list of preprocessors defined for Bank Account Formats */ 
/* Just use the even entry ones because we only want the untranslated    */
/* values */
/* ===================================================================== */
assign vcBankNumberFormat = {&BANKACCOUNTFORMATCODES}
       viMaxCounter       = num-entries(vcBankNumberFormat,chr(2)).

/* The following character strings hold the bank account format data for each country */
/* Order is Sequence, Length, Leading Zeros, Mandatory, Label, Section Delimiter and then repeat for each section */
assign vcATFormatData = "1,5,yes,yes,Branch Code, ,2,11,yes,yes,Bank Account, "
       vcAUFormatData = "1,6,no,yes,Bank/State/Branch, ,2,9,no,yes,Bank Account, "
       vcBEFormatData = "1,3,yes,yes,Bank Code,-,2,7,yes,yes,Bank Account,-,3,2,no,yes,Check Digits, "
       vcCZFormatData = "1,6,yes,yes,Prefix,-,2,10,yes,yes,Bank Account,/,3,4,no,yes,Bank Code, "
       vcDEFormatData = "1,8,yes,yes,Branch Code, ,2,10,yes,yes,Bank Account, "
       vcESFormatData = "1,4,yes,yes,Bank Code, ,2,4,yes,yes,Branch Code, ,3,2,yes,yes,Check Digits, ,4,10,yes,yes,Bank Account, "
       vcFRFormatData = "1,5,no,yes,Bank Code, ,2,5,no,yes,Branch Code, ,3,11,no,yes,Bank Account,,4,2,no,yes,Check Digits, "
       vcITFormatData = "1,1,no,yes,Check Digits, ,2,5,yes,yes,Bank Code, ,3,5,yes,yes,Branch Code,,4,12,no,yes,Bank Account, "
       vcNLFormatData = "1,10,yes,yes,Bank Account, "
       vcIBANFormatData = "1,40,no,yes,Bank Account, "
       vcXXFormatData = "1,40,no,yes,Bank Account, ".   

do viCounter = viMaxCounter to 2 by -2:

   find tBankAccFormat where
        tBankAccFormat.BankAccFormatCode = entry(viCounter,vcBankNumberFormat,chr(2))
        no-error.
 
   if not available tBankAccFormat
   then do:
      /* Use AddDetailLine instead of DataNew so as not to wipe out any existing records */
      <M-7 run AddDetailLine
         (input  'BankAccFormat':U (icTable), 
          input  '':U (icParentRowid), 
          output viFcReturnSuper (oiReturnStatus)) in BBankAccountFormat>

      if viFcReturnSuper <> 0 
      then assign oiReturnStatus = viFcReturnSuper.
      if oiReturnStatus < 0 then return.

      assign tBankAccFormat.BankAccFormatCode = entry(viCounter,vcBankNumberFormat,chr(2))
             tBankAccFormat.BankAccFormatIsSystDefined = true 
             viCounter2 = 1
             olUpdatesDone = true.

      CASE tBankAccFormat.BankAccFormatCode:

         /* Australia */
         when "AU" then do:
            tBankAccFormat.BankAccFormatDescription = #T-46'Australian Bank Account Format':40(60850)T-46#. 
            do viSectCounter = 1 to num-entries(vcAUFormatData) / 6:
               /* Add a new record in BankAccFormatSect */
               <M-35 run AddDetailLine
                  (input  'BankAccFormatSect':U (icTable), 
                   input  tBankAccFormat.tc_Rowid (icParentRowid), 
                   output viFcReturnSuper (oiReturnStatus)) in BBankAccountFormat>
               if viFcReturnSuper <> 0 then
                  assign oiReturnStatus = viFcReturnSuper.
               if oiReturnStatus < 0 then return.
               assign
                  tBankAccFormatSect.BankAccFormatSectSequence = int(entry(viCounter2,vcAUFormatData))
                  tBankAccFormatSect.BankAccFormatSectLength   = int(entry((viCounter2 + 1),vcAUFormatData))
                  tBankAccFormatSect.BankAccFormatSectIsLdZero = logical(entry((viCounter2 + 2),vcAUFormatData))
                  tBankAccFormatSect.BankAccFormatSectIsMandat = logical(entry((viCounter2 + 3),vcAUFormatData))
                  tBankAccFormatSect.BankAccFormatSectDelimiter = entry((viCounter2 + 5),vcAUFormatData).
               CASE entry((viCounter2 + 4),vcAUFormatData):
                  when "Bank Account" then
                     tBankAccFormatSect.BankAccFormatSectLabel = #T-36'Bank Account':20(59337)T-36#.
                  when "Bank/State/Branch" then
                     tBankAccFormatSect.BankAccFormatSectLabel = #T-37'Bank/State/Branch':40(60848)T-37#.
                  otherwise
                     tBankAccFormatSect.BankAccFormatSectLabel = entry((viCounter2 + 4),vcAUFormatData).
               END CASE.
               viCounter2 = viCounter2 + 6.
            end.
         end.

         /* Austria */
         when "AT" then do:
            tBankAccFormat.BankAccFormatDescription = #T-47'Austrian Bank Account Format':40(60851)T-47#. 
            do viSectCounter = 1 to num-entries(vcATFormatData) / 6:
               /* Add a new record in BankAccFormatSect */
               <M-8 run AddDetailLine
                  (input  'BankAccFormatSect':U (icTable), 
                   input  tBankAccFormat.tc_Rowid (icParentRowid), 
                   output viFcReturnSuper (oiReturnStatus)) in BBankAccountFormat>
               if viFcReturnSuper <> 0 then
                  assign oiReturnStatus = viFcReturnSuper.
               if oiReturnStatus < 0 then return.
               assign
                  tBankAccFormatSect.BankAccFormatSectSequence = int(entry(viCounter2,vcATFormatData))
                  tBankAccFormatSect.BankAccFormatSectLength   = int(entry((viCounter2 + 1),vcATFormatData))
                  tBankAccFormatSect.BankAccFormatSectIsLdZero = logical(entry((viCounter2 + 2),vcATFormatData))
                  tBankAccFormatSect.BankAccFormatSectIsMandat = logical(entry((viCounter2 + 3),vcATFormatData))
                  tBankAccFormatSect.BankAccFormatSectDelimiter = entry((viCounter2 + 5),vcATFormatData).
               CASE entry((viCounter2 + 4),vcATFormatData):
                  when "Bank Account" then
                     tBankAccFormatSect.BankAccFormatSectLabel = #T-9'Bank Account':20(59337)T-9#.
                  when "Branch Code" then
                     tBankAccFormatSect.BankAccFormatSectLabel = #T-10'Branch Code':20(59338)T-10#.
                  otherwise
                     tBankAccFormatSect.BankAccFormatSectLabel = entry((viCounter2 + 4),vcATFormatData).
               END CASE.
               viCounter2 = viCounter2 + 6.
            end.
         end.
         /* Belgium */
         when "BE" then do:
            tBankAccFormat.BankAccFormatDescription = #T-48'Belgian Bank Account Format':40(60852)T-48#. 
            do viSectCounter = 1 to num-entries(vcBEFormatData) / 6:
               /* Add a new record in BankAccFormatSect */
               <M-25 run AddDetailLine
                  (input  'BankAccFormatSect':U (icTable), 
                   input  tBankAccFormat.tc_Rowid (icParentRowid), 
                   output viFcReturnSuper (oiReturnStatus)) in BBankAccountFormat>
               if viFcReturnSuper <> 0 then
                  assign oiReturnStatus = viFcReturnSuper.
               if oiReturnStatus < 0 then return.
               assign
                  tBankAccFormatSect.BankAccFormatSectSequence = int(entry(viCounter2,vcBEFormatData))
                  tBankAccFormatSect.BankAccFormatSectLength   = int(entry((viCounter2 + 1),vcBEFormatData))
                  tBankAccFormatSect.BankAccFormatSectIsLdZero = logical(entry((viCounter2 + 2),vcBEFormatData))
                  tBankAccFormatSect.BankAccFormatSectIsMandat = logical(entry((viCounter2 + 3),vcBEFormatData))
                  tBankAccFormatSect.BankAccFormatSectDelimiter = entry((viCounter2 + 5),vcBEFormatData)
                  .
               CASE entry((viCounter2 + 4),vcBEFormatData):
                  when "Bank Account" then
                     tBankAccFormatSect.BankAccFormatSectLabel = #T-42'Bank Account':20(59337)T-42#.
                  when "Bank Code" then
                     tBankAccFormatSect.BankAccFormatSectLabel = #T-44'Bank Code':20(59339)T-44#.
                  when "Check Digits" then
                     tBankAccFormatSect.BankAccFormatSectLabel = #T-45'Check Digits':20(59340)T-45#.
                  otherwise
                     tBankAccFormatSect.BankAccFormatSectLabel = entry((viCounter2 + 4),vcBEFormatData).
               END CASE.
               viCounter2 = viCounter2 + 6.
            end.
         end.
         /* Czech Republic */
         when "CZ" then do:
            tBankAccFormat.BankAccFormatDescription = #T-49'Czech Republic Bank Account Format':40(60853)T-49#. 
            do viSectCounter = 1 to num-entries(vcCZFormatData) / 6:
               /* Add a new record in BankAccFormatSect */
               <M-38 run AddDetailLine
                  (input  'BankAccFormatSect':U (icTable), 
                   input  tBankAccFormat.tc_Rowid (icParentRowid), 
                   output viFcReturnSuper (oiReturnStatus)) in BBankAccountFormat>
               if viFcReturnSuper <> 0 then
                  assign oiReturnStatus = viFcReturnSuper.
               if oiReturnStatus < 0 then return.
               assign
                  tBankAccFormatSect.BankAccFormatSectSequence = int(entry(viCounter2,vcCZFormatData))
                  tBankAccFormatSect.BankAccFormatSectLength   = int(entry((viCounter2 + 1),vcCZFormatData))
                  tBankAccFormatSect.BankAccFormatSectIsLdZero = logical(entry((viCounter2 + 2),vcCZFormatData))
                  tBankAccFormatSect.BankAccFormatSectIsMandat = logical(entry((viCounter2 + 3),vcCZFormatData))
                  tBankAccFormatSect.BankAccFormatSectDelimiter = entry((viCounter2 + 5),vcCZFormatData).                  
               CASE entry((viCounter2 + 4),vcCZFormatData):
                  when "Bank Account" then
                     tBankAccFormatSect.BankAccFormatSectLabel = #T-39'Bank Account':20(59337)T-39#.
                  when "Bank Code" then
                     tBankAccFormatSect.BankAccFormatSectLabel = #T-40'Bank Code':16(32909)T-40#.
                  when "Prefix" then
                     tBankAccFormatSect.BankAccFormatSectLabel = #T-41'Prefix':20(60849)T-41#.
                  otherwise
                     tBankAccFormatSect.BankAccFormatSectLabel = entry((viCounter2 + 4),vcCZFormatData).
               END CASE.
               viCounter2 = viCounter2 + 6.
            end.
         end.

         /* Germany */
         when "DE" then do:
            tBankAccFormat.BankAccFormatDescription = #T-50'German Bank Account Format':40(60854)T-50#. 
            do viSectCounter = 1 to num-entries(vcDEFormatData) / 6:
               /* Add a new record in BankAccFormatSect */
               <M-32 run AddDetailLine
                  (input  'BankAccFormatSect':U (icTable), 
                   input  tBankAccFormat.tc_Rowid (icParentRowid), 
                   output viFcReturnSuper (oiReturnStatus)) in BBankAccountFormat>
               if viFcReturnSuper <> 0 then
                  assign oiReturnStatus = viFcReturnSuper.
               if oiReturnStatus < 0 then return.
               assign
                  tBankAccFormatSect.BankAccFormatSectSequence = int(entry(viCounter2,vcDEFormatData))
                  tBankAccFormatSect.BankAccFormatSectLength   = int(entry((viCounter2 + 1),vcDEFormatData))
                  tBankAccFormatSect.BankAccFormatSectIsLdZero = logical(entry((viCounter2 + 2),vcDEFormatData))
                  tBankAccFormatSect.BankAccFormatSectIsMandat = logical(entry((viCounter2 + 3),vcDEFormatData))
                  tBankAccFormatSect.BankAccFormatSectDelimiter = entry((viCounter2 + 5),vcDEFormatData).
               CASE entry((viCounter2 + 4),vcDEFormatData):
                  when "Bank Account" then
                     tBankAccFormatSect.BankAccFormatSectLabel = #T-33'Bank Account':20(59337)T-33#.
                  when "Branch Code" then
                     tBankAccFormatSect.BankAccFormatSectLabel = #T-34'Branch Code':20(59338)T-34#.
                  otherwise
                     tBankAccFormatSect.BankAccFormatSectLabel = entry((viCounter2 + 4),vcDEFormatData).
               END CASE.
               viCounter2 = viCounter2 + 6.
            end.
         end.

         /* Spain */
         when "ES" then do:
            tBankAccFormat.BankAccFormatDescription = #T-51'Spanish Bank Account Format':40(60855)T-51#. 
            do viSectCounter = 1 to num-entries(vcESFormatData) / 6:
               /* Add a new record in BankAccFormatSect */
               <M-13 run AddDetailLine
                  (input  'BankAccFormatSect':U (icTable), 
                   input  tBankAccFormat.tc_Rowid (icParentRowid), 
                   output viFcReturnSuper (oiReturnStatus)) in BBankAccountFormat>
               if viFcReturnSuper <> 0 then
                  assign oiReturnStatus = viFcReturnSuper.
               if oiReturnStatus < 0 then return.
               assign
                  tBankAccFormatSect.BankAccFormatSectSequence = int(entry(viCounter2,vcESFormatData))
                  tBankAccFormatSect.BankAccFormatSectLength   = int(entry((viCounter2 + 1),vcESFormatData))
                  tBankAccFormatSect.BankAccFormatSectIsLdZero = logical(entry((viCounter2 + 2),vcESFormatData))
                  tBankAccFormatSect.BankAccFormatSectIsMandat = logical(entry((viCounter2 + 3),vcESFormatData))
                  tBankAccFormatSect.BankAccFormatSectDelimiter = entry((viCounter2 + 5),vcESFormatData).
               CASE entry((viCounter2 + 4),vcESFormatData):
                  when "Bank Account" then
                     tBankAccFormatSect.BankAccFormatSectLabel = #T-14'Bank Account':20(59337)T-14#.
                  when "Branch Code" then
                     tBankAccFormatSect.BankAccFormatSectLabel = #T-16'Branch Code':20(59338)T-16#.
                  when "Bank Code" then
                     tBankAccFormatSect.BankAccFormatSectLabel = #T-15'Bank Code':20(59339)T-15#.
                  when "Check Digits" then
                     tBankAccFormatSect.BankAccFormatSectLabel = #T-17'Check Digits':20(59340)T-17#.
                  otherwise
                     tBankAccFormatSect.BankAccFormatSectLabel = entry((viCounter2 + 4),vcESFormatData).
               END CASE.
               viCounter2 = viCounter2 + 6.
            end.
         end.
         /* France */
         when "FR" then do:
            tBankAccFormat.BankAccFormatDescription = #T-52'French Bank Account Format':40(60856)T-52#. 
             do viSectCounter = 1 to num-entries(vcFRFormatData) / 6:
                /* Add a new record in BankAccFormatSect */
                <M-27 run AddDetailLine
                   (input  'BankAccFormatSect':U (icTable), 
                    input  tBankAccFormat.tc_Rowid (icParentRowid), 
                    output viFcReturnSuper (oiReturnStatus)) in BBankAccountFormat>
               if viFcReturnSuper <> 0 then
                  assign oiReturnStatus = viFcReturnSuper.
               if oiReturnStatus < 0 then return.
               assign
                  tBankAccFormatSect.BankAccFormatSectSequence = int(entry(viCounter2,vcFRFormatData))
                  tBankAccFormatSect.BankAccFormatSectLength   = int(entry((viCounter2 + 1),vcFRFormatData))
                  tBankAccFormatSect.BankAccFormatSectIsLdZero = logical(entry((viCounter2 + 2),vcFRFormatData))
                  tBankAccFormatSect.BankAccFormatSectIsMandat = logical(entry((viCounter2 + 3),vcFRFormatData))
                  tBankAccFormatSect.BankAccFormatSectDelimiter = entry((viCounter2 + 5),vcFRFormatData).
               CASE entry((viCounter2 + 4),vcFRFormatData):
                  when "Bank Account" then
                     tBankAccFormatSect.BankAccFormatSectLabel = #T-28'Bank Account':20(59337)T-28#.
                  when "Branch Code" then
                     tBankAccFormatSect.BankAccFormatSectLabel = #T-29'Branch Code':20(59338)T-29#.
                  when "Bank Code" then
                     tBankAccFormatSect.BankAccFormatSectLabel = #T-30'Bank Code':20(59339)T-30#.
                  when "Check Digits" then
                     tBankAccFormatSect.BankAccFormatSectLabel = #T-31'Check Digits':20(59340)T-31#.
                  otherwise
                     tBankAccFormatSect.BankAccFormatSectLabel = entry((viCounter2 + 4),vcFRFormatData).
               END CASE.
               viCounter2 = viCounter2 + 6.
            end.
         end.

         /* IBAN - International Bank Account Number */
         when "IBAN" then do:
            tBankAccFormat.BankAccFormatDescription = #T-53'International Bank Account Number Format':40(60882)T-53#. 
            do viSectCounter = 1 to num-entries(vcIBANFormatData) / 6:
               /* Add a new record in BankAccFormatSect */
               <M-23 run AddDetailLine
                  (input  'BankAccFormatSect':U (icTable), 
                   input  tBankAccFormat.tc_Rowid (icParentRowid), 
                   output viFcReturnSuper (oiReturnStatus)) in BBankAccountFormat>
               if viFcReturnSuper <> 0 then
                  assign oiReturnStatus = viFcReturnSuper.
               if oiReturnStatus < 0 then return.
               assign
                  tBankAccFormatSect.BankAccFormatSectSequence = int(entry(viCounter2,vcIBANFormatData))
                  tBankAccFormatSect.BankAccFormatSectLength   = int(entry((viCounter2 + 1),vcIBANFormatData))
                  tBankAccFormatSect.BankAccFormatSectIsLdZero = logical(entry((viCounter2 + 2),vcIBANFormatData))
                  tBankAccFormatSect.BankAccFormatSectIsMandat = logical(entry((viCounter2 + 3),vcIBANFormatData))
                  tBankAccFormatSect.BankAccFormatSectDelimiter = entry((viCounter2 + 5),vcIBANFormatData)
                  tBankAccFormatSect.BankAccFormatSectLabel = #T-24'Bank Account':20(59337)T-24#.
               viCounter2 = viCounter2 + 6.
            end.
         end.

         /* Italy */
         when "IT" then do:
            tBankAccFormat.BankAccFormatDescription = #T-54'Italian Bank Account Format':40(60860)T-54#. 
            do viSectCounter = 1 to num-entries(vcITFormatData) / 6:
               /* Add a new record in BankAccFormatSect */
               <M-18 run AddDetailLine
                  (input  'BankAccFormatSect':U (icTable), 
                   input  tBankAccFormat.tc_Rowid (icParentRowid), 
                   output viFcReturnSuper (oiReturnStatus)) in BBankAccountFormat>
               if viFcReturnSuper <> 0 then
                  assign oiReturnStatus = viFcReturnSuper.
               if oiReturnStatus < 0 then return.

               assign
                  tBankAccFormatSect.BankAccFormatSectSequence = int(entry(viCounter2,vcITFormatData))
                  tBankAccFormatSect.BankAccFormatSectLength   = int(entry((viCounter2 + 1),vcITFormatData))
                  tBankAccFormatSect.BankAccFormatSectIsLdZero = logical(entry((viCounter2 + 2),vcITFormatData))
                  tBankAccFormatSect.BankAccFormatSectIsMandat = logical(entry((viCounter2 + 3),vcITFormatData))
                  tBankAccFormatSect.BankAccFormatSectDelimiter = entry((viCounter2 + 5),vcITFormatData).
               CASE entry((viCounter2 + 4),vcITFormatData):
                  when "Bank Account" then
                     tBankAccFormatSect.BankAccFormatSectLabel = #T-19'Bank Account':20(59337)T-19#.
                  when "Bank Code" then
                     tBankAccFormatSect.BankAccFormatSectLabel = #T-20'Bank Code':20(59339)T-20#.
                  when "Branch Code" then
                     tBankAccFormatSect.BankAccFormatSectLabel = #T-21'Branch Code':20(59338)T-21#.
                  when "Check Digits" then
                     tBankAccFormatSect.BankAccFormatSectLabel = #T-22'Check Digits':20(59340)T-22#.
                  otherwise
                     tBankAccFormatSect.BankAccFormatSectLabel = entry((viCounter2 + 4),vcITFormatData).
               END CASE.
               viCounter2 = viCounter2 + 6.
            end.
         end.
         
         /* Netherlands */
         when "NL" then do:
            tBankAccFormat.BankAccFormatDescription = #T-55'Dutch Bank Account Format':40(60859)T-55#. 
            do viSectCounter = 1 to num-entries(vcNLFormatData) / 6:
               /* Add a new record in BankAccFormatSect */
               <M-11 run AddDetailLine
                  (input  'BankAccFormatSect':U (icTable), 
                   input  tBankAccFormat.tc_Rowid (icParentRowid), 
                   output viFcReturnSuper (oiReturnStatus)) in BBankAccountFormat>
               if viFcReturnSuper <> 0 then
                  assign oiReturnStatus = viFcReturnSuper.
               if oiReturnStatus < 0 then return.
               assign
                  tBankAccFormatSect.BankAccFormatSectSequence = int(entry(viCounter2,vcNLFormatData))
                  tBankAccFormatSect.BankAccFormatSectLength   = int(entry((viCounter2 + 1),vcNLFormatData))
                  tBankAccFormatSect.BankAccFormatSectIsLdZero = logical(entry((viCounter2 + 2),vcNLFormatData))
                  tBankAccFormatSect.BankAccFormatSectIsMandat = logical(entry((viCounter2 + 3),vcNLFormatData))
                  tBankAccFormatSect.BankAccFormatSectDelimiter = entry((viCounter2 + 5),vcNLFormatData)
                  tBankAccFormatSect.BankAccFormatSectLabel = #T-12'Bank Account':20(59337)T-12#.
               viCounter2 = viCounter2 + 6.
            end.
         end.
         /* No Format/No Validation */
         when "XX" then do:
            tBankAccFormat.BankAccFormatDescription = #T-57'No validation':40(59499)T-57#. 
            do viSectCounter = 1 to num-entries(vcXXFormatData) / 6:
               /* Add a new record in BankAccFormatSect */
               <M-56 run AddDetailLine
                  (input  'BankAccFormatSect':U (icTable), 
                   input  tBankAccFormat.tc_Rowid (icParentRowid), 
                   output viFcReturnSuper (oiReturnStatus)) in BBankAccountFormat>
               if viFcReturnSuper <> 0 then
                  assign oiReturnStatus = viFcReturnSuper.
               if oiReturnStatus < 0 then return.
               assign
                  tBankAccFormatSect.BankAccFormatSectSequence = int(entry(viCounter2,vcXXFormatData))
                  tBankAccFormatSect.BankAccFormatSectLength   = int(entry((viCounter2 + 1),vcXXFormatData))
                  tBankAccFormatSect.BankAccFormatSectIsLdZero = logical(entry((viCounter2 + 2),vcXXFormatData))
                  tBankAccFormatSect.BankAccFormatSectIsMandat = logical(entry((viCounter2 + 3),vcXXFormatData))
                  tBankAccFormatSect.BankAccFormatSectDelimiter = entry((viCounter2 + 5),vcXXFormatData)
                  tBankAccFormatSect.BankAccFormatSectLabel = #T-58'Bank Account':20(59337)T-58#.
               viCounter2 = viCounter2 + 6.
            end.
         end.


         otherwise return. /* What to do here? Is this even needed? */

      END CASE.

   end. /* if not available tBankAccFormat */
end. /* do */


/* ======================================= */
/* Validate, Additional Updates and Save   */
/* ======================================= */

<M-3 run ValidateBC
   (output viFcReturnSuper (oiReturnStatus)) in BBankAccountFormat>
if viFcReturnSuper <> 0 then
   assign oiReturnStatus = viFcReturnSuper.
if oiReturnStatus < 0 then return.
<M-4 run AdditionalUpdates
   (output viFcReturnSuper (oiReturnStatus)) in BBankAccountFormat>
if viFcReturnSuper <> 0 then
   assign oiReturnStatus = viFcReturnSuper.
if oiReturnStatus < 0 then return.
<M-5 run DataSave
   (output viFcReturnSuper (oiReturnStatus)) in BBankAccountFormat>
if viFcReturnSuper <> 0 then
   assign oiReturnStatus = viFcReturnSuper.
if oiReturnStatus < 0 then return.


Sample code: how to call this method through RPCRequestService (QXtend Inbound)

define temp-table ttContext no-undo
    field propertyQualifier as character
    field propertyName as character
    field propertyValue as character
    index entityContext is primary unique
        propertyQualifier
        propertyName
    index propertyQualifier
        propertyQualifier.

define dataset dsContext for ttContext.

define variable vhContextDS as handle no-undo.
define variable vhExceptionDS as handle no-undo.
define variable vhServer as handle no-undo.
define variable vhInputDS as handle no-undo.
define variable vhInputOutputDS as handle no-undo.
define variable vhOutputDS as handle no-undo.
define variable vhParameter as handle no-undo.

/* Create context */
create ttContext.
assign ttContext.propertyName = "programName"
       ttContext.propertyValue = "BBankAccountFormat".
create ttContext.
assign ttContext.propertyName = "methodName"
       ttContext.propertyValue = "ApiSynchronise".
create ttContext.
assign ttContext.propertyName = "applicationId"
       ttContext.propertyValue = "fin".
create ttContext.
assign ttContext.propertyName = "entity"
       ttContext.propertyValue = "1000".
create ttContext.
assign ttContext.propertyName = "userName"
       ttContext.propertyValue = "mfg".
create ttContext.
assign ttContext.propertyName = "password"
       ttContext.propertyValue = "".

/* Connect the AppServer */
create server vhServer.
vhServer:connect("-URL <appserver-url>").

if not vhServer:connected()
then do:
    message "Could not connect AppServer" view-as alert-box error title "Error".
    return.
end.

/* Run */
assign vhContextDS = dataset dsContext:handle.

run program/rpcrequestservice.p on vhServer
    (input-output dataset-handle vhContextDS by-reference,
           output dataset-handle vhExceptionDS,
     input        dataset-handle vhInputDS by-reference,
     input-output dataset-handle vhInputOutputDS by-reference,
           output dataset-handle vhOutputDS).

/* Handle output however you want, in this example, we dump it to xml */
if valid-handle(vhExceptionDS)
then vhExceptionDS:write-xml("file", "Exceptions.xml", true).

if valid-handle(vhOutputDS)
then vhOutputDS:write-xml("file", "Output.xml", true).

/* Cleanup */
vhServer:disconnect().
assign vhServer = ?.

if valid-handle(vhInputDS)
then delete object vhInputDS.

if valid-handle(vhOutputDS)
then delete object vhOutputDS.

if valid-handle(vhExceptionDS)
then delete object vhExceptionDS.