Inserting Multiple Records

The business service method handles multiple records for an insert database operation; however, the generated code inserts one record at a time.

This code sample shows the business service method handling multiple records:

public static E1MessageList insertAddressBookStaging(IContext context,
                         IConnection connection, 
                         InternalInsertAddressBookStaging internalVO){
    //Call start internal method, passing the context (which was passed 
    //from published business service).
       startInternalMethod(context, "insertAddressBookZTable", 
internalVO);
       //Create new message list for business service processing.
       E1MessageList messages = new E1MessageList();
       long numRowsInserted = 0;
       if (internalVO.getInsertFields()!=null) {
           for (int i = 0; i < internalVO.getInsertFields().size(); i++)
 {
               //call method (created by the wizard), which then 
               //executes Business Function or Database operation
               E1MessageList insertMessages = 
                   InsertToF0101Z2(context, connection, 
                                   internalVO.getInsertFields(i));
               //add messages returned from E1 processing to business 
               //service message list.
               messages.addMessages(insertMessages);
               //if no errors occur while inserting, add to counter.
               if (!insertMessages.hasErrors()) {
                   numRowsInserted++;
               }
           }
           internalVO.setNumberRowsInserted(numRowsInserted);
       }
       //Call finish internal method passing context.
       finishInternalMethod(context, "insertAddressBookZTable");
       //Return E1MessageList containing errors and warnings that 
       //occurred during processing business service.
       return messages;

This code sample shows the generated code for the database insert:

private static E1MessageList InsertToF0101Z2(IContext context, 
IConnection connection, InternalInsertAddressBookStagingFields 
internalVO) {
       //create return object
       E1MessageList returnMessages = new E1MessageList();
       //specify columns to insert
       BSSVDBField[] insertFields = 
       {new BSSVDBField("F0101Z2.EDUS"), // String – EdiUserId
        new BSSVDBField("F0101Z2.EDBT"), // String – EdiBatchNumber
        new BSSVDBField("F0101Z2.EDTN"), // String – EdiTransactNumber
        new BSSVDBField("F0101Z2.EDLN"), // Numeric – EdiLineNumber
        new BSSVDBField("F0101Z2.AN8"),  // Numeric – AddressNumber
        new BSSVDBField("F0101Z2.ALKY"), // String – AlternateAddressKey
        new BSSVDBField("F0101Z2.TAX"),  // String – TaxId
        new BSSVDBField("F0101Z2.ALPH"), // String – NameAlpha
        new BSSVDBField("F0101Z2.DC"),   // String – DescripCompressed
        new BSSVDBField("F0101Z2.MCU")   // String – CostCenter
        };
       //specify insert values
       Object[] insertValues = 
       {internalVO.getF0101Z2_EDUS(),
        internalVO.getF0101Z2_EDBT(),
        internalVO.getF0101Z2_EDTN(),
        internalVO.getF0101Z2_EDLN(),
        internalVO.getF0101Z2_AN8(),
        internalVO.getF0101Z2_ALKY(),
        internalVO.getF0101Z2_TAX(),
        internalVO.getF0101Z2_ALPH(),
        internalVO.getF0101Z2_DC(),
        internalVO.getF0101Z2_MCU()
        };
       try {
           //get dbService from context
           IDBService dbService = context.getDBService();
           //execute db insert operation
           long numRecordsInserted = 
               dbService.BSSVDBInsert(context, connection, "F0101Z2", 
IDBService.DB_TABLE, insertFields, insertValues); 
       } catch (DBServiceException e) {
           //take some action in response to the database exception
           returnMessages.addMessage(new E1Message(context, "005FIS", 
TABLE_NAME + E1Message.sLineSeparator+e.getMessage()));
       }
       return returnMessages;
   }