Olá,
Abaixo um trecho de código onde atualizamos a inventdim, como vocês já devem saber, não deve-se atualizar a inventdim usando o método tradicional, isso porque cada ID é uma combinação de vários valores.

No exemplo abaixo, o usuário pediu para atualizar o número do lote de um relatório de conclusão utilizando alguns dados da própria OP.

public void modified()
{
    InventDim               myInventDim;
    ;
 
    super();
 
    myInventDim.data(InventDim); //InventDim é o meu DS do formulário, caso não tivesse um Buffer ativo eu usaria: myInventDim = InventDim::find(ProdParmReportFinished.InventDimId);
    myInventDim.inventBatchId = inventBatch.inventBatchId; //Aqui eu passo n novo lote
    myInventDim = InventDim::findOrCreate(myInventDim); //Aqui eu procuro por uma entrada igual a que eu preciso ou crio uma nova e atribuo o valor dela a myInventDim
 
    ProdParmReportFinished.selectForUpdate(true);
    ProdParmReportFinished.InventDimId = myInventDim.inventDimId;
    ProdParmReportFinished.update();
    ttsCommit;
}

[]s
Pichler