D365F&O - X++ - Create Batch job using SysOperationServiceBase in X++

 1- Create Contract class if you want to create any parameters.

[DataContractAttribute]
class SysOperationsBatchContract
{
    TransDate asofDate;

    [DataMember,
    SysOperationLabel(literalStr("As of Date")),
    SysOperationHelpText(literalStr("Show records As of Date.")),
    SysOperationDisplayOrder('1')]
    public TrandDate parmAsOfDate(TrandDate _asofDate = asofDate)
    {
        asofDate = _asofDate;
        return asofDate;
    }
}

2- Create new Controller class.

public class SalesOrderRefundBatchController extends SysOperationServiceController
{
    /// <summary>
    /// Default class contsructor
    /// </summary>
    protected void new()
    {
        super(classStr(SalesOrderRefundBatchService),
               methodStr(SalesOrderRefundBatchService, process),
                SysOperationExecutionMode::Synchronous);
    }

    /// <summary>
    /// Class Caption
    /// </summary>
    /// <returns></returns>
    public ClassDescription defaultCaption()
    {
        return "Sales refund processing";
    }

    /// <summary>
    /// Contruct method
    /// </summary>
    /// <param name = "_executionMode"></param>
    /// <returns></returns>
    public static SalesOrderRefundBatchController construct(SysOperationExecutionMode
         _executionMode = SysOperationExecutionMode::Synchronous)
    {
        SalesOrderRefundBatchController controller;
        controller = new VSI_SalesOrderRefundBatchController();
        controller.parmExecutionMode(_executionMode);
        return controller;
    }

    /// <summary>
    /// A class entry point
    /// </summary>
    /// <param name = "_args">An instance of <c>Args</c> which
    /// contains calling arguments</param>
    public static void main(Args _args)
    {
        SalesOrderRefundBatchController   controller;
        controller = SalesOrderRefundBatchController::construct();
        controller.parmArgs(_args);
        controller.startOperation();
    }

}

3- Cretae Batch Service class.

public class SalesOrderRefundBatch  extends SysOperationServiceBase
{
    public void process(SysOperationsBatchContract _contract)
    {
        TransDate asofDate = _contract.parmAsOfDate();

        // Your logic here
    }
}


Comments

Popular posts from this blog

D365F&O - X++ - Best Practice Warning BP Rule: [BPErrorUnknownLabel]: Path:

D365F&O - X++ - How to Enable/Disable button on form based on a condition in D365F&O using Event handlers.

D365FO - X++ - Generate CAR (Customized Analysis Report) report of custom model