AX nos deja expandir, o explotar, una línea de lista de materiales (L.MAT, o BOM en inglés) de manera que podamos manejar sus elementos al mismo nivel que el artículo L.MAT. La funcionalidad se llama Expandir L.MAT y la podemos ver, por ejemplo, en las líneas de un pedido:
Esta función nos presenta un formulario para elegir las líneas que queremos “Explotar” fuera de la lista de materiales para su tratamiento:
El código que este formulario ejecuta para realizar la expansión de la L.MAT se encuentra, en el caso de líneas de pedido de venta, en la tabla SalesLine) concretamente en el método: SalesLine.expandBOM(), por tanto para simular esta funcionalidad en X++, el mínimo código que podemos utilizar es el siguiente:
static void expandirLineaLMAT(Args _args) { TmpFrmVirtual tmpFrmVirtual; // Línea de la LMAT que se quiere expandir BOM tmpBOM = BOM::findRecId(5637146401, false); // Línea de venta desde la que expandir SalesLine auxSalesLine = SalesLine::find('00000003_050', 3, true); ; // Registro temporal que marca la línea a expandir tmpFrmVirtual.TableNum = tablenum(BOM); tmpFrmVirtual.RecordNo = tmpBOM.RecId; tmpFrmVirtual.write(); // Expande la LMAT y genera la línea de venta nueva (función estándar) auxSalesLine.expandBOM(tmpFrmVirtual, tmpBOM); // la nueva línea de venta puede necesitar modificaciones despues de este proceso }
y digo mímino porque la línea se insertará con la mayoría de sus opciones por defecto, por lo que es seguro que habra que añadir código extra para completar los datos necesarios según las necesidades.
Descarga