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.
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.
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.
Great job!
ReplyDeleteThanks for sharing this type of material.
Itnis very helpful.
Welcome and thanks for submitting your feedback.
Deleteverry useful.thanks
ReplyDeleteWelcome and thanks for submitting your feedback
Deletevery useful
ReplyDeleteWelcome and thanks for submitting your feedback.
DeleteThank you.
ReplyDeleteWelcome and thanks for submitting your feedback.
DeleteWelcome and thanks for submitting your feedback.
ReplyDeleteNice and really very useful ..thanks
ReplyDeleteUseful thanks...
ReplyDelete