Skip to main content

Posts

Showing posts with the label ERP

ERP implementation benchmark: Comparing SAP, Oracle, and Microsoft

Summary: Recent research compares important dimensions of IT project success and failure on ERP systems from SAP, Oracle, and Microsoft Dynamics. By Michael Krigsman for IT Project Failures | July 16, 2012 -- 18:45 GMT (11:45 PDT) 4 Comments 2 Votes in Share more + Email Print Google+ Del.icio.us Digg StumbleUpon Reddit Technorati Pinterest Slashdot A recent survey (PDF download) by Panorama Consulting Solutions compares important dimensions of IT project success and failure with respect to ERP systems from SAP, Oracle, and Microsoft Dynamics. Photo credit: "Choosing the colors of ERP" by Michael Krigsman According to the report, the data set consists of over 2000 respondents from 61 countries who have selected or implemented SAP, Oracle or Microsoft Dynamics ERP solutions between February 2006 and May 2012. Also Read: Study: 68 percent of IT projects fail CRM failure rates: 2001-2009 Who's accountable for IT failure? (part one) Who's accountable...

Twenty must know tips before ERP Implementation

Twenty must know tips before ERP Implementation

Recently i was reading through one of the ERP reports from Panorama Consulting. I found these twenty points an interesting read for anybody working with ERP. Give it a quick read and you might also like it. To access the entire report click here http://panorama-consulting.com/Documents/2011-Guide-to-ERP-Systems-and-Vendors.pdf

how to remove reserv

// Code is added to InventJournalTable methods void removeAllJournalLinesReservation() { InventUpd_Reservation res; InventMovement inventmovement; Inventtrans inventtrans; InventJournalTrans inventJournalTrans ; if(this.Posted) return; while select inventJournalTrans index hint LineIdx where inventJournalTrans.JournalId == this.JournalId { while select inventTrans index hint TransIdIdx where inventTrans.InventTransId == inventJournalTrans.InventTransId && (inventTrans.StatusIssue == statusIssue::ReservOrdered || inventTrans.StatusIssue == statusIssue::ReservPhysical) { inventmovement = inventTrans.inventmovement(true); res = InventUpd_Reservation::newInventDim(inventmovement,inventTrans.inventDim(),abs(inventTrans.Qty),true); res.updatenow(); } } }

How to check the number of marked records on the Forms

Scenario 1: User is checking the rows in the grid to mark them for deletion, I want to get the number of checked records to do some thing Solution Use the buffer_Ds.recordsMarked().lastIndex() to check the number of the records that are marked for deletion. Scenario 2: User has marked the multiple records for deletion on the Form, now I want to do some manipulation on the deletion and refresh the Grid or the Form. What should I do Solution: Never write the research code in the delete method because the delete method on the Form is called per row and calling research would break this behavior, since research calls the executeQuery(). DeleteMarked() is the good place to write the research code since it is called once if there are multiple records, you should write the research code just after the super() call. Note: The deleteMarked() method is not called when there is a single record for the deletion.

Dynamics AX Event IDs

http://blogs.msdn.com/b/axinthefield/archive/2011/03/01/dynamics-ax-event-ids.aspx Recently a fellow PFE compiled a list of the AX Event IDs with their description and a possible action. This post is intended to give end users a better idea of the messages generated by the AOS service within the Application Event Log within the Windows Event Viewer. If you are receiving messages, it may be necessary to contact the Dynamics AX Support Team at Microsoft for more assistance as this may be an indication of more serious troubles in the system. Error and Warning Messages The messages in the following table can be informational only, but often are a result of an issue within the Dynamics AX application. They do may require user action. ID Message text Description Action 103 Microsoft Dynamics AX 2009 – The control handler not installed The Microsoft Dynamics AX Server Manager could not initialize the control handler. Can be caused by failed system setup. The registration of the AOS ...

Generation of CodePage using X++

Case Study: In this demo scenario, we are going to build Windows Code page using X++ class. For this project, I have build a generation class which basically returns the list of available codePage. private void buildCodePage() { System.Text.EncodingInfo[] encodingInfoArray; System.Text.EncodingInfo encodingObject; RecordInsertList recordInsertList = new RecordInsertList(tableNum(CodePageTable)); System.Exception ex; InteropPermission permission = new InteropPermission(InteropKind::ClrInterop); ; // Clear always the codePage data is available delete_from codePage; try { permission.assert(); encodingInfoArray = System.Text.Encoding::GetEncodings(); // BP Deviation Documented. for (i = 0; i CLRInterop::getAnyTypeForObject( encodingInfoArray.get_Length()) - 1; ...

Comparing AX and Active Directory User Accounts

metod 1 I was recently working with an AX 2009 customer who wanted to compare the user accounts configured in AX with the user accounts in Active Directory. The basic goals were: 1.Find all AX user accounts that no longer exist in Active Directory. 2.Find all accounts that are disabled in Active Directory but not in AX. It would be great if AX would flag these scenarios for you, but unfortunately it doesn't. If you’re interested in knowing if you have any orphaned accounts or accounts that should probably be disabled in AX, here’s a quick way to do just that. 1.Export AD users to a CSV file. I used a PowerShell command for this step. The command I used requires the Active Directory Module for Windows PowerShell. This is installed by default on domain controllers, but it is also available via the Remote Server Administration Tools for Windows 7 if you want to run it from a workstation instead. http://www.microsoft.com/download/en/details.aspx?id=7887 2.Create a table for the AD ...

AOS crashed due corrupted node in the AOT

Warning: this post is only informative, do not try to replicate the problem described here in a production environment. !!!! The problem: The problem occurred when we created a 'View' with one circular reference. After that, every time we tried to click over "Data Dictionary\Tables" or "Data Dictionary\Views", the AOS crashes. How to reproduce the problem: Warning: this post is only informative, do not try to replicate the problem described here in a production environment. !!!! 0. Make a backup. Also, make a copy of the AxCus.AOD file. 1. Create a simple view (ex. View1). 2. Add a new DataSource manually. Then, open DataSource's properties dialog and specify in the table field the name of the view you have created (ex. View1). 3. STOP at this point if you dont want to crash the AOS !!!. 4. Expand the DataSource node. Drag the field CreatedBy to the view's fields. It will create the CreatedBy1 field. 5. Save it if you are sure you want to continue. A...

Go To Main Table Functionality in Axapta

We all know about “Go To Main Table” Option in our Axapta Forms and Tables. Here I wrote one sample for how to get that functionality in our forms or table. This is done by three ways: 1) By EDT Relations 2) By using JumpRef method 3) By using FormRef property in Table EDT Relations: If you use an EDT in tables which have relation with some other table fileds, that time you can able to navigate the main table or main form. FormRef Property: Select the Table and go to properties and select the required form in the FormRef property. JumpRef method: If you are not having that option, simply write a override the JumpRef method in a field of DataSource or in a Form Control. Here i show you a sample jumpRef method code: public void jumpRef() { Args args; MenuFunction menuFunction; ; args = new Args(); menuFunction = new MenuFunction(menuitemDisplayStr(“FormName”), MenuItemType::Display); args = new Args(menuFunction.object()); args.caller(element); args.recor...

Argument Passing between Forms in Dynamics Ax 2009

Here a sample code to pass argument to one form to another form and using of Args() class. Steps: 1) Create two Forms named FormA and FormB 2)Use the EmplTable as the Datasource of both forms 3)Design FormA with one Grid and add 4 data fields to the Grid(EmplId,DEL_Name,Grade,EmplStatus…..) 4)Assign the datasource for the grid and the data fields 5)Add a Button in FormA 6)Override the Clicked() method and write the below code: void Clicked() { Args _args; FormRun _formRun; EmplId _empId; ; _empId = EmplTable.EmplId; // Selected employee id in the Grid is assigned to the variable which is pass to the next form _args = new Args(); // creating a object for args class _args.name(formstr(VA_FormB)); // Form Menuitem _args.caller(this); // Form Caller(Current Form is mentioned as this ) _args.parm(_empId); // Employee Number is passed to next form[but parm() is not a best practise] _args.record(EmplTable); // Table name is passed _formRun = ClassFactory.formRunClass(_args); //new Fo...

How to transfer new fields from LedgerjournalTrans to LedgerTrans when posting

We added some new fields to both ledgerJournalTrans and LedgerTrans tables. I would like to copy those fields when posting, but i can't seem to find where i can put the code. I don't know where the data from LedgerJournaltrans is transferred to LedgerTrans. Solved: this is done in LedgerVoucherTransObject class. I added parm methods for new fields and corrected newTransLedgerJournal method to include their transfer to LedgerTrans. LedgerJournalCheckPost Classdelaration DTAccruedExpensesContractId xxContractId; public DTAccruedExpensesContractId parmContractId(DTAccruedExpensesContractId _xxContractId) { ; xxContractId = _xxContractId; return xxContractId; }

Update all records shown in a form

If you want to update, or do something else, with all records shown on a form (i e only the records shown by the filter), you can use the following code. In the example below, CustTable is used as example. void updateRecords() { CustTable custTableLocal; QueryRun queryRun; ; queryRun = new QueryRun(CustTable_DS.queryRun().query()); while (queryRun.next()) { if (queryRun.changed(tableNum(CustTable))) { custTableLocal = queryRun.get(tableNum(CustTable)); // DO STUFF } } }

how to create new account to vendtable

void ismailCreateVend() {     VendTable                   vendTable;     EmplTable                   emplTable;     NumberSeq                   numberSeq;     str                         accnum;     ;     ttsbegin;     numberSeq = NumberSeq::newGetNumFromCode(VendParameters::numRefVendAccount().NumberSequence);     vendTable.AccountNum   = numberseq.num();     accnum               ...