This post is machine-translated. The original post in german language can be found here.

Reserve/Unreserve a sales order line

The are a lot of examples about how to reserve a sales order line. But i did not find an example, where the result of the reservation has been tested.

So i had to write some code for my own. I am checking the reserved value before executing my code, and afterwards. If the reserved quantity is still the same, my job seems to have failed.

static void reserveSalesLine(Args _args)
    InventTransIdSumSingleStatus inventTransIdSumSingleStatus;
    SalesLine salesLine;
    InventMovement inventMovement;
    InventDim inventDim;
    InventDimParm inventDimParmCriteria;
    InventQtyReservPhysical oldReservedQty;
    InventQtyReservPhysical newReservedQty;
    InventUpd_Reservation inventUpd_Reservation;
    InventQty reserveQty;

    // Inline method to get current reserved quantity for specific inventDim
    InventQtyReservPhysical getReservedQty()

        inventTransIdSumSingleStatus = InventTransIdSumSingleStatus::newTransOriginIdStatus(InventTransOriginSalesLine::findInventTransOriginId(salesLine.DataAreaId, salesLine.InventTransId),

        return inventTransIdSumSingleStatus.reservPhysical();

    // Sales order line
    salesLine = SalesLine::findInventTransId('012431');
    inventMovement = InventTrans::findTransId(salesLine.InventTransId).inventMovement(true);

    // Build inventDim-Record, where the quantity should be reserved
    inventDim.InventSiteId      = "1";
    inventDim.InventLocationId  = "12";
    inventDim.wmsLocationId     = "12";
    inventDim = InventDim::findOrCreate(inventDim);

    // Get current physical reserved Quantity
    oldReservedQty = getReservedQty();

    // Set quanity which should be reserved (negative values to reserve, postive value to unreserve)
    reserveQty = -2;

    inventUpd_Reservation = InventUpd_Reservation::newInventDim(inventMovement,

    // Get new reserved quantity
    newReservedQty = getReservedQty();

    // Compare old and new reserved quantity to identify if reservation failed
    if(oldReservedQty == newReservedQty)
        error("Reservation failed.");
These post applies to following version:
Dynamics AX 2012

Lewis Batcher 11/10/2016 00:31 | #1

Thank you. I was able to get unreserved and then reserve working.

Guest 12/01/2016 23:02 | #2

Very helpful piece of code, thank you.

Francisco 03/19/2021 04:10 | #3

Muchas gracias, resolviste mi problema

Peter 10/18/2021 10:59 | #4

Thanks for your code

Peter 10/18/2021 10:59 | #5

Thanks for your code

Add comment


Posts of the actual month
November 2022
© 2006-2022 Heinz Schweda | Imprint | Contact | German version | Mobile version
In order to provide you with better service, this site uses cookies. By continuing to browse the site, you are agreeing to our use of cookies.