Skip to main content
I love Salesforce (CloudF) ha fatto una domanda in #Apex
Hello, I am Getting 'DML not allowed Error'.I am bulk approving my records through list button.I am calling my vf page through button and add logic in my apex controller. below is my apex controller. Thanks for any help in advance.

Apex controller

public class Claim_Approval{ 

    

    public ApexPages.StandardSetController setController;

    public List < Claim__c > selectedListViewRecords {get;set;}

    public set<Id> ids = new set<Id>();

    

    public Claim_Approval(ApexPages.StandardSetController setcontroller) {

     

       this.setcontroller = setcontroller;

       List<Claim__c> selectedListViewRecords =(List<Claim__c>) setcontroller.getSelected();

       Set<Id> ids = new Set<Id>();     

       for(Claim__c rec: selectedListViewRecords){     

              ids.add(rec.id);  

       }    

        List<Approval.ProcessWorkitemRequest> requests = new List<Approval.ProcessWorkitemRequest>();      

        List<ProcessInstanceWorkitem> workItems;             

                     

        workItems = [SELECT Id, ProcessInstanceId FROM ProcessInstanceWorkitem WHERE ProcessInstance.TargetObjectId IN :ids];  

        for(ProcessInstanceWorkitem workItem : workItems){                   

            Approval.ProcessWorkitemRequest req = new Approval.ProcessWorkitemRequest();              

            req.setWorkitemId(workItem.Id);                       

            req.setAction('Approve');                 

            req.setComments('No Comment.');              

            requests.add(req);  

             system.debug('requests'+requests); 

          

       }    

        Approval.ProcessResult[] processResults = Approval.process(requests,false);     

    }

}
2 risposte
  1. 12 ago 2022, 04:29
    Hi,

    JUST SIMPLE:- 

    You need to set the allowDML attribute of your component to true for DML to be allowed by your component. just example:-

    <apex:component controller="MyComponentController" allowDML="true">

    <apex:form>

    <apex:commandButton value="Execute DML" action="{!executeDML}"/>

    </apex:form>

    </apex:component>

    if you need any assistanse, Please let me know!!

    Kindly mark my solution as the best answer if it helps you.

    Thanks

    Mukesh
0/9000