Dynamics AX Blog - Microsoft Dynamics AX (Axapta) - Page 14

In recent years, i spent a lot of time in developing in the environment of Microsoft Dynamics AX (formerly Axapta). During this time i created a lot of code, from which I could imagine, that it might be very useful for other AX developers too. But I will present also tips and tricks round the powerful ERP system.
Subscribe to RSS feed of this categoryUse a specific dimension as a dialogfieldIf you want to use a particular dimension as a dialog field in Dynamics AX 2009 (or earlier versions), you can create your own Extended Data Type (derived from Criterias) as described below. The decisive factors are the relations of this EDT. The example code was taken from a class which extends runBase. |
AX 2012: Building a DefaultDimension/LedgerDimensionBelow you'll find a code example of how to generate a RecId of type DefaultDimension for several dimensions. static void buildDefaultAndLedgerDimension(Args _args) { DimensionAttributeValueSetStorage dimensionAttributeValueSetStorage; DimensionAttribute dimensionAttribute; DimensionAttributeValue dimensionAttributeValue; DimensionDefault dimensionDefault; LedgerDimensionAccount ledgerDimensionAccount; dimensionAttributeValueSetStorage = new DimensionAttributeValueSetStorage(); // BusinessUnit dimensionAttribute = DimensionAttribute::findByName('BusinessUnit'); if(dimensionAttribute) { dimensionAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute, '069', false, true); dimensionAttributeValueSetStorage.addItem(dimensionAttributeValue); } // CostCenter dimensionAttribute = DimensionAttribute::findByName('CostCenter'); if(dimensionAttribute) { dimensionAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute, '010', false, true); dimensionAttributeValueSetStorage.addItem(dimensionAttributeValue); } // Department dimensionAttribute = DimensionAttribute::findByName('Department'); if(dimensionAttribute) { dimensionAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute, '024', false, true); dimensionAttributeValueSetStorage.addItem(dimensionAttributeValue); } dimensionDefault = dimensionAttributeValueSetStorage.save(); // Merge main account and source dimension values and return RecId which can be used as ledgerDimension ledgerDimensionAccount = DimensionDefaultingService::serviceCreateLedgerDimension(DimensionStorage::getDefaultAccountForMainAccountNum("110110"), dimensionDefault); info(strFmt("Default dimension recId: %1", dimensionDefault)); info(strFmt("DefaultDimension (Source RecId): %1 LedgerDimension (Merged RecId): %2", dimensionDefault, ledgerDimensionAccount)); } |
Create a picking list-header for production orderThe following job creates a "header" for a picking list for a production order. static void createProdJournalTable_PickingList_III(Args _args) { ProdJournalCreate prodJournalCreate; prodJournalCreate = new ProdJournalCreate(); prodJournalCreate.parmProdId('P000188'); prodJournalCreate.parmJournalNameId( ProdJournalName::standardJournalName( ProdJournalType::Picklist, prodJournalCreate.parmProdId())); prodJournalCreate.initProdJournalTableData(ProdJournalType::Picklist); prodJournalCreate.usedProdJournalTable().insert(); prodJournalCreate.run(); } |
Post purchase order through codeWith the help of the following lines, I want to show how you can post a purchase order by code. static void postPurchaseOrder(Args _args) { PurchTable purchTable = PurchTable::find("000025"); PurchFormLetter purchFormLetter; purchFormLetter = PurchFormLetter::construct(DocumentStatus::PurchaseOrder); purchFormLetter.update(purchTable, "", systemDateGet(), PurchUpdate::All); } |
Post sales order confirmation through codeWith the help of the following lines, I want to show how you can post a sales order confirmation by code. static void postSalesConfirmation(Args _args) { SalesTable salesTable = SalesTable::find("000747"); SalesFormLetter salesFormLetter; salesFormLetter = SalesFormLetter::construct(DocumentStatus::Confirmation); salesFormLetter.update(salesTable, systemDateGet(), SalesUpdate::All); } |
Post sales packing slip through codeWith the help of the following lines, I want to show how you can post a sales packing slip by code. static void postSalesPackingslip(Args _args) { SalesTable salesTable = SalesTable::find("000747"); SalesFormLetter salesFormLetter; salesFormLetter = SalesFormLetter::construct(DocumentStatus::PackingSlip); salesFormLetter.update(salesTable, systemDateGet(), SalesUpdate::All); } |
|
|
|
|
|
|
Below is a sample of X++ code which can be used to check or post a report as finished journal for a production order. Changing the value of the Enum JournalCheckPostType controls if the journal is checked or checked and posted.