You need to sign in to do that
Don't have an account?

First error: You have uncommitted work pending. Please commit or rollback before calling out
Hello All,
Any way to fix this. Thanks
Any way to fix this. Thanks
global class TEstLog implements Database.Batchable<sobject> { global Database.QueryLocator start(Database.BatchableContext bc){ return Database.getQueryLocator('Select Id,Document_Process_Date__c,Workspace__c,CreatedBy.Name,Folder_Name__c,CreatedDate,CreatedById from FileImporter__c where CreatedDate = today and Doc_Status__c != null'); } global void execute(Database.BatchableContext BC, list<Sobject> obj){ List<File_Importer_Log_Entry__c> lstLogEntry = new List<File_Importer_Log_Entry__c>(); system.debug('lstFileImpor******' + obj); for(Sobject o : obj){ FileImporter__c M = (FileImporter__c ) o; File_Importer_Log_Entry__c ML = new File_Importer_Log_Entry__c(); ML.created_by__c = M.CreatedBy.Name; ML.Document_Process_Date__c = M.Document_Process_Date__c; ML.WorkspaceId__c = M.Workspace__c; ML.Workspace_Name__c = M.Folder_Name__c; ML.Created_Date__c = M.CreatedDate; lstLogEntry.add(ML); } system.debug('lstLogEntry*******' + lstLogEntry); try{ insert lstLogEntry; //List<blob> lstBody; Blob body; for(File_Importer_Log_Entry__c objLog : lstLogEntry){ body = Blob.valueOf('Created By:'+objLog.created_by__c+'/n'+'Document Process Date :'+objLog.Document_Process_Date__c+'/n'+'WorkspaceId :'+objLog.WorkspaceId__c+'/n'+'Workspace Name'+objLog.Workspace_Name__c+'/n'+'Created Date :'+objLog.Created_Date__c); //lstBody.add(body); } system.debug('******body :' + body); String loginToken = MSOP_iManage_Service.getLoginToken(); String targetUrl = 'https://test.com/api/v1/folders/folderName/documents'; HttpRequest req = new HttpRequest(); req.setEndpoint(targetUrl); req.setHeader('x-auth-token', loginToken); req.setHeader('Content-Type', 'application/json'); req.setMethod('POST'); req.setBodyAsBlob(Body); //req.setBody(Body); Http http = new Http(); HttpResponse res = http.send(req); system.debug('**********res : ' + res); }catch(DmlException e){ system.debug('***Error while inserting log entry - BatchName:FileImpoLog :' + e.getMessage()); } } global void finish(Database.BatchableContext BC){ } }
All Answers
Greetings to you!
The issue occurs when you first perform DML and thn call out in the same transaction. Please refer to below Salesforce Knowledge Article for mor information.
https://help.salesforce.com/articleView?id=000079772&type=1
https://help.salesforce.com/articleView?id=000003701&type=1
All the DML operations should be invoked only after you are done with callouts. So, make a callout first and then save the request.
I hope it helps you.
Kindly let me know if it helps you and close your query by marking it as solved so that it can help others in the future. It will help to keep this community clean.
Thanks and Regards,
Khan Anas
Thanks for reply, Yes already I have gone thru this but not able to fix this, it is possible if you would modify the code.