Interview Questions

Friday, June 20, 2014

Latest Interview Questions with Answers for AX Technical Consultant

Classes, Tables, Forms and Methods used to post the sales orders

SalesTableType and SaleslineType classes will get called while creating the orders.
SalesFormLetter* classes will be used to post the sales order at various document status(packing,invoice etc).
SalesParm* tables are used to prepare the data for posting
----------------------------------------------------------------------------------------------------------------
Tables Name :-
CustConfirmJour, CustConfirmTrans - when a sales order gets confirmed
CustPackingSlipJour, CustPackingSlipTrans - when a packing slip is posted.
CustInvoiceTable,CustInvoiceTrans - when an invoice is posted.
These are some of the mainly used tables.
******************************************************************************************************************
Difference between perspectives and table collection :- Perspectives  can organize information for a report model  in the Application Object Tree (AOT).A perspective is a collection of tables. You use a report model to create reports.Table collection is a collection of table, which sharing across all the virtual companies.
******************************************************************************************************************
From which table u can get the user permissions stored in Ax :-  AccessRightList table.

******************************************************************************************************************
Difference b/w Abstract class and Interfaces

 

An abstract class may contain complete or incomplete methods. Interfaces can contain only the signature of a method but no body. Thus an abstract class can implement methods but an interface cannot implement methods.
An abstract class can contain fields, constructors, or destructors and implement properties. An interface cannot contain fields, constructors, or destructors and it has only the property's signature but no implementation.
An abstract class cannot support multiple inheritance, but an interface can support multiple inheritance. Thus a class may inherit several interfaces but only one abstract class.
A class implementing an interface has to implement all the methods of the interface, but the same is not required in the case of an abstract Class. Various access modifiers such as abstract, protected, internal, public, virtual, etc. are useful in abstract Classes but not in interfaces. Abstract classes are faster than interfaces.

******************************************************************************************************************

AX 2012 purchase order posting class
confirmation-        purchpurchorderjouranlcreate
reciptlist-                purchreciptlistjournalpost
packingslip-          purchpackingslipjournalpost
invoice-                  purchinvoicejournalpost

*******************************************************************************************************************

How to show current Date in AX 2009

info(date2str(systemdateget(),123,2,1,2,1,4));

*******************************************************************************************************************

AX2012 Create SSRS Report using Data Provides Classes
RDP implements the standard MVC(Model View Controller) design pattern.
·                     Model-view-controller (MVC) is a pattern used to isolate business logic from the user interface.
·                     Model: Responsible for retrieving data and for business logic, this can included queries, data methods, or other classes that are designed to retrieve data.
·                     View: Responsible for the User Interface, this can also be thought of as the design for the report.
·                     Controller: Orchestrates the flow between Model and View

* Create the Contract  Class first,
This class is used to create parm methods for the reports, So if you have any parameters that you want to pass to report then create parm methods for those as data members.

* Create Controller class which extends SrsReportRunController

* SrsReportRunController : Through this class we just create the Main method where you have to define the reportname and design and this was the method which will calls the report to execute. Starting point of the report.

* prePromptModifyContract :- If you want to pass the values for the report before prompting to user for input you can override this method

* Create DataProvider class which extends SrsReportDataProviderPreProcess.

* override the method ProcessReport where you will write the business logic to fill into thetmp table

* Override the postbuild function to bind the lookups for the fields.

**********************************************************************************************
Report data provider class – processes business logic based on parameters and a query, and then returns the tables as a dataset for the report.
***********************************************************************
SRSReportQueryAttribute attribute to specify the query to use to get the data for the report.
***********************************************************************
SRSReportParameterAttribute attribute to specify the data contract class that defines the report parameters for the report.
*****************************************************************************************************************
User Interface (UI) Builder Class is used to define the layout of the parameter dialog box that opens before a report is run in Microsoft Dynamics AX. It is used to add the customization as well as additional fields in the dialog.
Following are the scenarios where UI Builder Class can be used:
1.                      Grouping dialog fields
2.                      Overriding dialog field events
3.                      Adding a customized lookup to a dialog field
4.                      Binding dialog fields with Report contract parameters
5.                      Changing the layout of the dialog
6.                      Adding custom controls to the dialog
To create a UI builder class, extend it with SrsReportDataContractUIBuilder.
SysOperationContractProcessingAttribute(classStr(SSRSDemoUIBuilder))
· it will link the UI Builder Class with the contract class.

 **************************************************************

RDP Class Reports

IMPORTANT CONCEPTS

1.                Report Data Provider (RDP) Class

Report Data Provider Class is an X++ class that is used to access and process data for a SSRS report. The RDP class processes the business logic based on a specified parameter and/or query and returns a dataset to the reporting services. In order to create a RDP class in AX, you have to extend that class withSRSReportDataProviderBase. This tells AX that this class will be used by reporting services to process the data.
Two important attributes are used in RDP classes:
1.       SRSReportQueryAttribute: specifies which AOT query will be used in this report. If the RDP class uses an AOT query to process data, define this attribute at the beginning of the class.
2.       SRSReportParameterAttribute: defines the data contract class that will be used by this report to prompt for parameter values. If the RDP class contains any parameters this define this attribute at the beginning of the class.
Both the attributes are optional. If the report does not use any query or does not want any parameter to filter report data, these attributes do not need to be used.

2.                Data Contract Class

A data contract class is an X++ class which contains parm methods with the DataMemberAttribute defined at the beginning of the method. This class is used to define one or more parameters that will be used in a SSRS report.

3.                Table

An AX table is used as the dataset to store data for the report. The RDP class processes the data and stores it in the table which is then used by a SSRS report to render data.
A table can be a temporary table (InMemory or TempDB) or a regular table, but it is Microsoft best practice to use a temporary table.
The type of temporary table is based upon the performance considerations. InMemory temporary table is used when the data set is small, while TempDB is normally used for larger datasets to improve performance.
*********************************************************************************

List page interaction class and methods

Interaction class of list pages extends SysListPageInteractionBase class. Some handful methods of this class are as follows:

. initializing: Called when the form is initializing – Similar to the form init method
. intializeQuery: Also called when the form is initializing – Similar to the datasource init method
. selectionChanged: Called when the active record changes – Similar to the datasource active method.
. setButtonEnabled: Should be overridden to dynamically enable/disable buttons based on the current selection. This is called from the selectionChanged method.
. setButtonVisibility: Should be overridden to show/hide buttons when the form first opens. This is used more to do a one-off layout adjustment based on system configuration/parameters, as well as the menu-item used to open the form.
*********************************************************************************

What is the Difference between Overriding and overloading?

Overloading is defining functions that have similar signatures, yet have different parameters. 

Overriding is only pertinent to derived classes, where the parent class has defined a method and the derived class wishes to override that function.

Overriding
Overloading
Methods name and signatures must be same.
Having same method name with different
Signatures.
Overriding is the concept of runtime polymorphism
Overloading is the concept of compile time polymorphism
When a function of base class is re-defined in the derived class called as Overriding
Two functions having same name and return type, but with different type and/or number of arguments is called as Overloading
It needs inheritance.
It doesn't need inheritance.
Method should have same data type.
Method can have different data types
Method should be public.
Method can be different access specifies

******************************************************************************

Difference between "Element and This" keyword in AX

Element and This points to the same object in some cases and different in other cases.
In a form method element and this are same and will point to fromRun object, but in the formDataSource method element still points to the formRun object and this points to the formDataSource object.  You cannot use element to refer table or class object.
********************************************************************************************

Difference between formDataSource.query() and formDataSource.queryRun().query()

Any form has 2 instances of the query object - one is the original datasource query (stored in formDataSource.query()), and the other is the currently used query with any user filters applied (stored informDataSource.queryRun().query()). 
When the research method is called, a new instance of the queryRun is created, using theformDataSource.queryRun().query() as the basis. Therefore, if the user has set up some filters on the displayed data, those will be preserved.


This is useful, for example, when multiple users work with a certain form, each user has his own filters set up for displaying only relevant data, and rows get inserted into the underlying table externally (for example, through AIF).
Calling executeQuery, on the other hand, will use the original query as the basis, therefore removing any user filters.
*********************************************************************************************

Dynamics Ax 2009 Layers

Dynamics AX 2009 consists of sixteen application object layers that contain all the
elements you see in the AOT.
These layers can be looked at as an onion with multiple layers. In the middle is the
core application in the SYS layer and the outermost layer is the user layer USR.
Therefore, when any application element is being executed the system will look at
the outermost code layer first to see if there is any code for that element; if not, it peels a layer off the onion, and tries the next layer. When it hits a layer where the element exists, it will use the code from this layer, and will not continue to peel off layers to find code for that element in the innermost layers. 

Layers with their description

SYS The standard application is implemented at the lowest level, 
the SYS layer.The application objects in the standard 
application can never be deleted.

GLS Country/region specific changes will be developed in GLS 
Layer.For e.g as you all know that Tax structure differs 
from country to country.So such localization functionality 
can be developed in GLS layer.

HFX HFX is an application object patch layer reserved by 
Microsoft for future patching or other updates.

SL1, SL2,or SL3 A layer where the distributor can implement 
vertical partner solutions. 

BUS When a business partner creates their own generic solution, 
their modifications are saved in the BUS layer and the top-
level application objects are used.

VAR Value Added Resellers (VAR) can make modifications or new 
developments to the VAR layer as specified by the customers 
or as a strategy of creating an industry-specific solution. 
Such modifications are saved in the VAR layer.

CUS The supervisor or administrator of an end user installation 
might want to make modifications that are generic to the 
company. Such modifications are saved in the CUS (CUStomer) 
layer.

USR End users might want to make their own modifications, such 
as in their reports.These modifications are saved in the USR 
layer.
**********************************************************************************************

How we can use multiple datasets in a tablix?         

SQL Server Reporting Services 2008 R2 has introduced a new function called “LOOKUP”. LOOKUP function is used to retrieve the value from multiple datasets based on 1 to 1 mapping. For example if we have two datasets and both the datasets have EmpID so based on the EmpID mapping, we can retrieve the data from both the datasets


ITERATORS VS. ENUMERATORS05MAY

We can traverse our collections by using either an enumerator or an iterator.But there is no clarity why sometimes iterator fails while on other occasions it is flawless.Simply what we do is that just replace iterator with the enumerator.
First theoretically what happens behind the scenes is as follows:
When collection classes were first introduced in DAX, the iterator was the only option.Butbecause of a few unwarranted drawbacks that appear as hard-to-find errors, enumerators were added, and iterators were kept for the backward compatibility.
******************************************************************************

Debug::assert

This method allows to check if some Boolean condition evaluates to true and if it doesn't - stop further execution and show stack trace. Debug::assert() should be used to validate some assumptions made in the code which should never happen if nothing is broken in the application. It means that wrong user input should not be asserted but rather validated by normal if statement and exception should be thrown if the input is wrong. However, if the code relies, for example, on query data source name, which can be broken only in development time - that is a good place to add assert to.
*************************************************************************************************************

1.  Difference between following:
·                     condel :- Use condel to delete one or more items from a container.
·                     confind :- Use confind to locate a sequence of items in a container. 
·                     conins :- Use conins to insert some items into a container.
·                     conlen :- Use conlen to find out how many items there are in a container.
·                     connull :- Use connull to explicitly dispose of the contents of a container.
·                     conpeek :- Use conpeek to extract an item from a container, and to convert it into another data type  
·                     conpoke :- Use conpoke to replace (poke) an item in a container.

2. Difference between edit and display method?
·                     Display Indicates that the method's return value is to be displayed on a form or a report.
·                     The value cannot be altered in the form or report
·                     Edit Indicates that the method's return type is to be used to provide information for a field that is used in  In a form. The value in the field can be edited.     

3. Difference between perspectives and table collection
      Perspectives  can organize information for a report model  in 
the ApplicationObject Tree (AOT).A perspective is a collection of tables. You use a report model to create reports.Table collection is a collection of table, which sharing across all the virtual companies.

 4.What are the 4 types of files we need to copy to the standard folder?
           *.aod, *.ahd, *.ald, *.add, *.khd
 5.  Why we use virtual companies?
     Virtual company accounts contain data in certain tables that are shared by any number of company accounts. This allows users to post information in one company that will be available to another company.
6. How can we restrict a class to be further extended?
        using Final Keyword for ex: public final class <ClassName>
7.Which are classes are used for data import export?
        SysDataImport and SysDataExport
8. From which table u can get the user permissions stored in Ax?
       AccessRightList table.
9.What should we do if we need last record to be active when a form is opened?
      In properties of datasource table set the StartPosition property as last.
10. What is the sequence of events while a report is generated?
      Init, Run, Prompt, Fetch, 
Print
11. Name few X++ classes/Coreclasses related to Queries?
     Query, QueryRun, QueryBuildRange, QueryBuildDataSource, QueryBuildLink
12. What is an index?
   An index is a table-specific database structure that speeds the retrieval of rows from the table. Indexes are used to improve the performance of data retrieval and sometimes to ensure the existence of unique records
**************************************************************************************************************
1. X++ Maps: it can be used as a temp data store for the given scope of a process. This takes us less over head, and is much quicker than a TempTable. For Further reading
2. AOT Maps: A map can unify the access to similar columns and methods that are present in multiple tables. You associate a map field with a field in one or more tables. This enables you to use the same field name to access fields with different names in different tables. Methods on maps enable you to create or modify methods that act on the table fields that the map references.