Wednesday, January 28, 2015

OAF Questions and Answers

 1.  What is an EO?

    Map to a database table or other data source
    Each entity object instance represents a single row
    Contains attributes representing database columns
    Fundamental BC4J object through which all inserts/updates/deletes interact with the database
    Central point for business logic and validation related to a table
    Encapsulates attribute-level and entity-level validation logic
    Can contain custom business methods


2. What is a VO?

    Represent a query result
    Are used for joining, filtering, projecting, and sorting your business data
    Can be based on any number of entity objects
    Can also be constructed from a SQL statement


3. What are the methods in controller?
ProcessRequest, ProcessformData and processformrequest

    ProcessRequest : is called when the page is requested for the first time from the server.
    ProcessFormRequest : is called when some event occurs on the page
    ProcessformData(not visible) : Used to capture Data from the form fields which the user has entered and post it into Model Layer.

4. What is a Controller?
Controller is the java file and can be associated to a complete OAF page or to a specific region.
There are several tasks you will do routinely in your code.

    Handle button press and other events
    Automatic queries
    Dynamic WHERE clauses
    Commits
    JSP Forwards


The logic for accomplishing all these tasks is written in controller.


5. When is the processRequest method called?

PR method is called when the page is getting rendered onto the screen.


6. When is processFormRequest method called?

PFR method is called when we perform some action on the screen like click of submit button or click on lov.


7. What is extension?

Extension is when you take an already existing component ex an OAF page or a region and then add some more functionality to it without disturbing the original functionality.


8. What is personalization?

Oracle Apps Framework has an OA Personalization Framework associated with it so that you can personalize any OAF page in an Oracle E-business Suite application without changing the basic or underlying code of that OA Framework page, Oracle Application Framework makes it very easy to personalize the appearance of the page or even the personalization of data displayed on to an OA Framework page.


9. What are levels of personalization?

    1. Function Level
    2. Localization Level
    3. Site Level
    4. Organization Level
    5. Responsibility Level
    6. Admin-Seeded User Level
    7. Portlet Level
    8. User Level
   
10. What is BC4J?
Business Components for Java is JDeveloper’s programming framework for building multitier database applications from reusable business components. These applications typically consist of:
    • A client-side user interface written in Java and/or HTML.
    • One or more business logic tier components that provide business logic and views of business objects.
    • Tables on the database server that store the underlying data.


11.What are all the components of BC4J?

Following are the components of BC4J:
Entity Object - EO encapsulates the business logic and rules. EO’s are used for Inserting, Updating and Deleting data from the database table. E0 is also used for validating the records across the applications.
View Object – View object encapsulates the database query. It is used for selecting data. It provides iteration over a query result set. VO’s are primarily based on EO’s. It can be used on multiple EO’s if the UI is for update.
Application Module – Application Modules serve as containers for related BC4J components. The pages are related by participating in the same task. It also defines the logical data model and business methods needed.


12) What is an EO?

EO encapsulates the business logic and rules.EO’s are used for Inserting, Updating and Deleting data. This is used for validating across the applications. We can also link to other EO’s and create a Association object.
  
13) What is an VO?
View object encapsulates the database query. It is used for selecting data. It provides iteration over a query result set.VO’s are primarily based on Eo’s. It can be used on multiple EO’s if the UI is for update. It provides a single point of contact for getting and setting entity object values. It can be linked together to form View Links.


14) What is an AO?

An association object is created where we link EO’s. For example take the search page where we link the same EO to form a association between the manager and employee. Every employee should have a manager associated. But if it President then no there is no manager associated. This is a perfect example to understand the AO.


15) What is an VL?

A view link is an active link between view links. A view link can be created by providing the source and destination views and source and destination attributes. There are two modes of View link operation that can be performed. A document and Master/Detail operation.

 16. What is UIX?
UIX is an extensible, J2EE-based framework for building web applications. It is based on the Model-View-Controller (MVC) design pattern, which provides the foundation for building scalable enterprise web applications.

17. Where the VO is located in the MVC architecture?

VO is located in the View Layer in MVC which is responsible for presenting the data to the user.


18. Which package should include EO and AO?

The EO and AO will be present in the schema.server package.


19. What is the difference between inline lov and external lov?

Inline lov is a lov which is used only for that particular page for which it was created and cannot be used by any other page.
External lov is a common lov which can be used by any page. It is a common component for any page to use it. It can be used by giving the full path of the lov in the properties section “External LOV” of the item.


20. what is a Java bean?

Java Beans is an object-oriented programming interface that lets you build re-useable applications or program building blocks called components that can be deployed in a network on any major operating system platform.


21. What is query Bean?

Query Bean is used to execute and return the results of a query on behalf of the Query Portlet application.


22. what is the difference between auto customization criteria and result based search?

Results based search generates search items automatically based on the columns on the results table.
In Auto customization search we need to set what all fields are required to display as a search criteria.


23. what is MDS?

MDS is Meta Data Service. When a web page is broken into small units like buttons,fields etc they are stored in a database. These are not stored as binary files but as data in tables. The data are present in JDR tables. MDS provides service to store & return page definitions. MDS collects those definitions in components/fields in a meaningful manner to build a page.


24. What is XML?

XML is a markup language for documents containing structured information.
Structured information contains both content (words, pictures, etc.) and some indication of what role that content plays (for example, content in a section heading has a different meaning from content in a footnote, which means something different than content in a figure caption or content in a database table, etc.).


25. What is the difference between customization and extension?

Customization is under direct user control. The user explicitly selects between certain options. Using customization a user can:

    Altering the functionality of an application
    Altering existing UI
    Altering existing business logic

Extension is about extending the functionality of an application beyond what can be done through personalization. Using extension we can:

    Add new functional flows
    Extend or override existing business logic
    Create New application/module
    Create New page
    Create New attribute
    Extend/Override defaults & validations


26. What is Personalization?
Personalization enables you to declaratively tailor the UI look-and-feel, layout or visibility of page content to suit a business need or a user preference. Using Personalization we can:
    • Tailor the order in which table columns are displayed.
    • Tailor a query result.
    • Tailor the color scheme of the UI.
    • Folder Forms
    • Do Forms Personalization
 
27. Can you extend every possible Application Module?
No..Root AM cannot be extended.


28. What is root AM?

The application module which is associated with the top-level page region (the pageLayout region) is root application module.


29. Why can’t Root AM be extended?

The root AM is loaded first and after that the MDS Substitutions are parsed.
Hence ROOT AM gets loaded even before the time the substitutions definition from MDS layer get worked out.
Obviously, the root am cant substitute itself, hence it can’t be extended


30. What are the various profile options in OAF?

FND Diagnostics: required for ABOUT THIS PAGE and Diagnostic link on page.
Personalize Self Service Definitions: To enable Personalize page link on the page.
FND Personalization Region Link Enabled: used to enable Region Personalization links at every region.
FND Migrate to JRAD: By default set to Yes. Page would run from MDS if Yes, else it will run from AK.
FND Document root path: required for personalization migration. It is set to path of the MDS folder on the respective servers.
FND Branding image:
FND Banding Size: these profiles options are used for changing standard image (Oracle) on the page.

31. Steps for VO substitution?

    About this Page-> VO, AM, EO, Path of Page
    Export Commad (in cmd Prompt)
    New .jpr =Open page
    Look for AM and VO or EO.
    Copy the class files of VO,AM or EO
    Decompile into Java and store it into MyProjects (with respective directory structure)
    Open VO.xml in a new jpr
    Create a new BC4J based on your Original VO.
    Create a new VO and extends original VO
    Change the query
    Rebuild the project
    Go to .jpx(double click)
    Go to Substitutions
    Substitute Vo
    Rebuild your Project .jpr
    Transfer New VO class and xml to respective directory structure
    FTP .jpx into $JAVA _TOP
    unix command promrt CD$ JAVA_TOP
    jpx importer command
    Bounce Apache Server


32. What are different methods for passing parameters?
Tokens:
eg. vname={@AttributeName}
Hash Maps:
eg. HashMap variablename=nre HashMap();
variablename.add(“ParameterName”,ParameterValue);
ThroughSession:
eg. pageContext.putSessionvalue(“ParamterName”,ParameterValue)

33. setForwardURL list?
There are many parameters, here is the complete list of it:-
public void setForwardURL(String functionName,
byte menuContextAction,
String menuName,
com.sun.java.util.collections.HashMap parameters,
boolean retainAM,
String addBreadCrumb,
byte messagingLevel)

Parameters:
functionName – This is the function name representing the page you want to forward to. If its null, an IllegalArgumentException will be thrown.
Also if the function is not under the current HOMEPAGE a OAException will be thrown.

menuContextAction – Determines the behavior of the MenuContext after forwarding to the new page. It accepts the following values:
OAWebBeanConstants.KEEP_MENU_CONTEXT: Keeps the menu context as is.
OAWebBeanConstants.KEEP_NO_DISPLAY_MENU_CONTEXT: Keeps the menu context as is, but will not display all menus including global buttons.
OAWebBeanConstants.KEEP_NO_DISPLAY_MENU_CONTEXT_RETAIN_GLOBAL_BUTTONS: Keeps the menu context as is, but will not display all menus excluding global buttons.
OAWebBeanConstants.REMOVE_MENU_CONTEXT: Removes the menu context
OAWebBeanConstants.GUESS_MENU_CONTEXT: Selects the given functionName function if it exists in the current menu.
 If not it will try to make a guess by moving up the menu tree until it finds it. An exception will be thrown if the function could not be located.
OAWebBeanConstants.RESET_MENU_CONTEXT: Reset the menu context to the given functionName and menuName.

menuName – The name of the HOMEPAGE menu to reset the Menu context to when the menuContextAction is OAWebBeanConstants.RESET_MENU_CONTEXT.
If the menuName is not of type HOMEPAGE a OAException will be thrown. You can pass null otherwise.

parameters -
HashMap of parameter name/value pairs to append to the forward URL. The final forward URL parameters are in the following sequence:
It will first get the function’s corresponding URL call by querying the function information from the database. If the user is not authorized to execute this function, a security OAException will be thrown.
It will then append all parameters passed in the parameters HashMap. First parameter added to the HashMap will be first added to the URL. Also the framework will encode all parameter values before appending them to the URL.
It will remove all parameters if they have null values in the passed parameters HashMap. This provides an easy way for developers to set a certain parameter’s value to null if they want to remove it.
It will remove any OA Framework internal URL parameters such as bcrumb, retainAM, and so on..

retainAM – If true, all the cached application modules will be retained. If false, all the cached application modules will be released.
Developers must use this parameter to control the release behavior of the cached appplication modules.
This method will ignore any retainAM=true or retainAM=false as a URL parameter or as part of parameters.

34. Code to copy rows in VO?
public void copy()
 {
 SuppliersVOImpl pervo = getSuppliersVO1();
 Row row[] = pervo.getFilteredRows("SelectFlag","Y");
 for (int i=0;i<row.length;i++)
 {
 SuppliersVORowImpl rowi = (SuppliersVORowImpl)row;
 OADBTransaction trx = (OADBTransaction)getTransaction();
 Number b = trx.getSequenceValue("FWK_TBX_SUPPLIERS_S");
 AttributeList a = (AttributeList)rowi;
 SuppliersVORowImpl r =(SuppliersVORowImpl)pervo.createAndInitRow(a);
 //Set here your unique attribute values, I'm setting here Supplier Id as for every new row it should be different.
 r.setSupplierId(b);
 pervo.insertRow(r);
 }
 }

35. what for isPreparedForExecution() and executeQuery() methods used?
isPreparedForExecution function will check whether all parameters are assigned properly and query is ready for execution.
On multiple navigations to the page this query will not be executed multiple times.
While executeQuery function is used for executing the VO query so that it can fetch the data from database into VO cache.

36. What is the pattern used in developing any OAF component?
MVC (Model, View, Controller)
Lists the components in the MVC architecture
Model: Application Module, View Objects, View Links, Entity Objects, Entity Associations etc.
View: Page, Region, Attributesets etc.
Controller: Controller class files

37. Which is the component responsible for user actions?
Controller is the object. The code present in ProcessFormRequest gets executed up on the user action.

38. If we have to initialize something during the page loading, which is the right place?
ProcessRequest() method of the Controller file is the right place.

39. What is the significance of ProcessFormData()?
For a ‘POST’ request the data on the page is binded to the view object in this method

40. Does ‘GET’ request result in calling ProcessFormData()?
No, only POST request calls that.

41. What is the main Controller component in OAF?
OAController is the main class and our controller will become subclass of it.

42. How does page structure get created at runtime?
OAPageBean is responsible for creating the bean hierarchy structure at runtime after calling ProcessRequest() of each of the beans in the hierarchy.

43. Where does the client BC4J objects get placed in the server?
They are located in the oracle.apps.<product>.<application>.server

44. Where does the server BC4J objects get placed in the server?
They are located in the oracle.apps.<product>.<application>.schema.server

45. Where does the Page and Controller related files get placed?
They are located in oracle.apps.<product>.<application>.webui

46. What are Validation View Objects?
They are the VVO’s used in validation of attributes, they are the BC4J components and have their AM ie VAM Validation Application Module

47. What is the version of Jdeveloper to be used in 11i or R12?
For 11i, Jdeveloper 9i will be used and for R12 Jdeveloper 10g will be used.

48. What is a Database Connectivity File?
It is a .dbc file which is specified in the project properties. The location of this file on the server is $FND_TOP/secure

49.  What is a View Object?
It is a BC4J(Business Component for Java) object which encapsulates the query results. View objects will support the display of the content to user in the Page.

50.  How do you create a view object?
View objects can be created in the Business components package, can be based on entity objects or an sql query. View objects based on sql query are read only view objects

51.  What is an entity object?
Entity object is created based on a database table, it is responsible for insertion/updation/validation of the table data. They are stored in the oracle.apps.<prod>.<application>.schema.server package directory

52.  What is an Application Module(AM)?
Application module holds the related objects pertaining to an application ie. View objects, Entity Objects etc. The application module helps in getting the required database connection, maintains the page session or transaction context

53.   What is the object passed to every page request?
OAPageContext object is passed to every request, using this object the controller initializes the application module object and will call the required methods.

54.  Where is the view object(VO) initialization or query filtering done?
It is done with view object implementation class Ex. EmpVOImpl.java

55.  What is the property to set for an AM so that the transaction state is maintained across pages?
RETENTION_LEVEL property is set to value MANAGE_STATE for an AM.

56.What is the Personalization?
Personalization means changes to the existing ‘Page’ according to the customer requirement

57.Give some examples of Page Personalization?
Addition of new columns to a table results, adding of fields, changing the order of regions, columns etc. Apart from this validation of certain fields, display of Descriptive flex fields etc can also be achieved

58.  What is extension?
Extension is the changing of the existing components for adding more features or customer required features. View Objects, Controller, Application Module can be extended.

59.   What is substitution?
When view objects are extended, we need to tell the applications that our extended view object should be used or substituted during runtime, substitution will serve this purpose

60.   How to do register a new OA Framework page in Oracle Applications?
oracle.jrad.tools.XMLImporter utility will be used. After successfully importing the page data will be stored in metadata repository tables of the database

61. How do you move personalization from one machine to another?
Using the functional administrator responsibility the xml file can be downloaded, this file contains the required personalization done on a particular page. The same can be used to upload in a different instance. Here XMLImporter utility can be also used.

62.  How is the applications security maintained during the OA Framework components development or how is the required security obtained?
The Database connectivity file ( .dbc file) has the applications username and password along with the responsibility to be used for connecting to the applications at page run time.

63. What are the different layers of onion reuse object model in OAF?
The hierarchy is as :
Controller (XXCO.java)
                   |__
                       Application Module   (XXAMImpl.java, XXAM.xml)
                                   |__
                                       View Objects(XXVOImpl.java, XXVORowImpl.java, XXVO.xml)
                                                 |__
                                                    Entity Objects(XXEOImpl.java, XXEO.xml)
                                                             |_ Database           


64. What is ‘Partial Page Rendering’ PPR?
PPR is a mechanism where in only the required part of the page is refreshed as against the whole page. The page objects fire the ‘events’ and accordingly the request is handled in the controller file

65. What are the search region options available?
Simple Search – ResultBasedSearch is the construction mode for the region
Advanced or autocustomization search – Autocustomization is the mode here
None – User has the develop the page, regions, controller etc here

66. What is the bean used for supporting transactions across pages visually to the user?
OATrainBean is used to link the pages across the transaction. AM supports the transaction context or state here across the pages.

67.  How does personalization takes its effect at runtime?
After the page structure or bean hierarchy is formed with, the personalization layers get applied on top of it to come up with the final structure. Remember that is the reason why personalization is upgrade safe.

68. Name some components requiring extension?
View Objects, Controller, Application Module. Yes nested application module concept is allowed.
After you modify a class file and move it to the server what is the immediate step that will be followed?
The services of the instance ie. Apache server etc. have to be bounced so that the new code in the class file takes effect.

69. Where does the two categories of files in OAF be placed in the server?
All the xml files of the page/region will be placed in the respective TOP’s mds directory. All the class files irrespective of TOP will be placed under $JAVA_TOP which can be $COMMON_TOP/java

70.   When do you create additional business components package?
Apart from B4CJ client business components package and B4CJ server business components package we create additional business components package when we develop any sharable thing such as ‘LOV’ (List of Values), ‘Poplist’ etc which will be used in multiple pages

71. How do you map the LOV created to your base page?
One of the items in the page has to be MessageLOVInput which extends the new LOV region, apart from this LOV mappings between base page and LOV region have to be created.

72. What is the default top region of any new page that you create?
PageLayout is the top level default region

73.At what level region controller for a page can be set?
It can be under a Main region under PageLayoutRegion or any region as per the business need. Provision of defining multiple controllers for a page also exist.

74.   PPR follows GET or POST flow?
POST flow

75.   What is the extension to the tool for developing OA F components?
Jdeveloper OA Extension class support the OA F development

76. What are the methods in controller?
ProcessRequest and processformrequest

77. What is a Controller?
Controller is the java file and can be associated to a complete OAF page or to a specific region.
There are several tasks you will do routinely in your code.

    Handle button press and other events
    Automatic queries
    Dynamic WHERE clauses
    Commits
    JSP Forwards

The logic for accomplishing all these tasks is written in controller

78. When is the processRequest method called?
PR method is called when the page is getting rendered onto the screen

79. When is processFormRequest method called?
PFR method is called when we perform some action on the screen like click of submit button or click on lov

80. What are levels of personalization?
1. Function Level
2. Localization Level
3. Site Level
4. Organization Level
5. Responsibility Level
6. Admin-Seeded User Level
7. Portlet Level
8. User Level

81. What is the difference between inline lov and external lov?
Inline lov is a lov which is used only for that particular page for which it was created and cannot be used by any other page.
External lov is a common lov which can be used by any page. It is a common component for any page to use it. It can be used by giving the full path of the lov in the properties section “External LOV” of the item.

82. what is a Java bean?
Java Beans is an object-oriented programming interface that lets you build re-useable applications or program building blocks called components that can be deployed in a network on any major operating system platform.

83. What is query Bean?
QueryBean is used to execute and return the results of a query on behalf of the QueryPortlet application.

84. what is the difference between autocustomization criteria and result based search?
Results based search generates search items automatically based on the columns on the results table.
In Autocustomization search we need to set what all fields are required to display as a search criteria.

85. what is MDS?
MDS is MetaData Service. When a web page is broken into small units like buttons,fields etc they are stored in a database. These are not stored as binary files but as data in tables. The data are present in JDR tables. MDS provides service to store & return page definitions. MDS collects those definitions in components/fields in a meaningful manner to build a page.

86. What is XML?
XML is a markup language for documents containing structured information.
Structured information contains both content (words, pictures, etc.) and some indication of what role that content plays (for example, content in a section heading has a different meaning from content in a footnote, which means something different than content in a figure caption or content in a database table, etc.).

87. What is the difference between customization and extension?
Customization is under direct user control. The user explicitly selects between certain options. Using customization a user can:
Altering the functionality of an application
Altering existing UI
Altering existing business logic
Extension is about extending the functionality of an application beyond what can be done through personalization. Using extension we can:
Add new functional flows
Extend or override existing business logic
Create New application/module
Create New page
Create New attribute
Extend/Override defaults & validations

88. What is Personalization?
Personalization enables you to declaratively tailor the UI look-and-feel, layout or visibility of page content to suit a business need or a user preference. Using Personalization we can:
• Tailor the order in which table columns are displayed.
• Tailor a query result.
• Tailor the color scheme of the UI.
• Folder Forms
• Do Forms Personalization

89. What is rootAM?
The application module which is associated with the top-level page region (the pageLayout region) is root application module.

90. Why can’t Root AM be extended?
The root AM is loaded first and after that the MDS Substitutions are parsed.
Hence ROOT AM gets loaded even before the time the substitutions definition from MDS layer get worked out.
Obviously, the root am cant substitute itself, hence it can’t be extended

91. what is MVC Architecture?
MVC Architecture is a Model View Controller Architecture. The controller responds to user actions and directs application flow. The model encapsulates underlying data and business logic of the application. The view formats and presents data from a model to the user.

92. which is the MVC layer VO located?
VO is located in the View Layer which is responsible for presenting the data to the user.

93. Which package should include EO and AO?
The EO and AO will be present in the schema.server package.

94. What is the difference between inline lov and external lov?
Inline lov is a lov which is used only for that particular page for which it was created and cannot be used by any other page.External lov is a common lov which can be used by any page. It is a common component for any page to use it. It can be used by giving the full path of the lov in the properties section “External LOV” of the item.

95. what is a Java bean?
JavaBeans is an object-oriented programming interface that lets you build re-useable applications or program building blocks called components that can be deployed in a network on any major operating system platform.

96. What is query Bean?
QueryBean is used to execute and return the results of a query on behalf of the QueryPortlet application.

97. what is MDS?
MDS is MetaData Service. When a web page is broken into small units like buttons,fields etc they are stored in a database. These are not stored as binary files but as data in tables. The data are present in JDR tables. MDS provides service to store & return page definitions. MDS collects those definitions in components/fields in a meaningful manner to build a page.

98. Why Should we give retainAM=Y?
The AM should be retained whenever you are navigating away from a page and when you know that there is a possibility to come back to the page again and data is to be retained. Example : Any navigation link that opens in a new page or any navigation which has a back button to come back to the initial page.
The AM should not be retained for two independent pages, especially if they have common VOs which fetch different result sets. In such cases, retaining the AM may not remove the cache of VOs and so the result may not be as expected.

99. What is the significance of addBreadCrumb=Y?
The basic intention of the breadcrumb is to let the user know of the navigation path he took to reach the current page.

100. How do you find right jdev patch for your oracle application version?
Search in oracle.metalink.com as Jdev with OA Extension.

101. What are the tools you had used for decompiling java class?
Jad is one of the tool for decompiling the java class.

102. What will setmaxFetchSize(0) will do?
setmaxFetchSize just determines how much data to be sent at a time.

103. Can we use dynamically created VO in OAF?What is the pros and cons?
Want to answer this section? use the comment section.

104. What is advanced table in table?
Want to answer this section? use the comment section.

105. What is a HGrid?
A HGrid, otherwise known as a hierarchy grid, allows users to browse through complex sets of hierarchical data.

106. Tell me the OAF components required for a simple search page?
VO,AM,Page

107. What is a switcher in oAF and when it is used?
A switcher is a control, that allows the selective display of information.For example if you want to display a image for update enabled and update disabled you can use switcher.

108. What are all the methods in CO?
processForRequest
processRequest

109. When a page renders which method in CO fires?
processRequest

110. How do you handle back button navigation in OAF based application?
Want to answer this section? use the comment section.

111. Where will you write your business logic?
EO.

112. What will vo.createRow() do?
createRow creates a row in the VO.

113. How do you catch the button event on ProcessFormRequest Method?
if (“update1?.equals(pageContext.getParameter(OAWebBeanConstants.EVENT_PARAM)))
Here update1 is the event.

114. What is pageButton bar?
When you want to display buttons on top and bottom of the page then you create a region as pageButtonbar and create buttons within this region.

115. How do you add a link to OAF Page?
Create a new item with style as link and give its destination uri property which is the url where you want to navigate to.

116. Which is the top most region in OAF page?
PageLayoutRN

117. What are all the several ways to debug an OAF based application?
We can use the debugger option .Set breakpoints and run the page in debug mode.

118. How do you call an pl/sql api from OAF page?
To call a PL/SQL API from OAF, we use OracleCallableStatement or CallableStatement

119. Should a search page have an EO?
Not necessary. If you are creating a record then we need a EO

120. What will happen when you set DisableClientSideValidation property to True?
If you set the property to True it shows that there will no validation that will occur on the web tier as part of the form submit.

121. What is SPEL?
It is an expression that will either return TRUE or FALSE.

122. Where is a SPEL used?
SPEL is used in places where you want to show or hide an item programatically.

123. What is PPR?
PPR is Partial Page rendering. Which means that only a particular part of the page is refreshed and not the entire page.
Examples of PPR scenarios:
[*]Hiding/Showing Objects[/*]
[*]Required/Optional[/*]
[*]Disabled/Enabled[/*]
[*]Read only/Updatable[/*]

124. How do you generate stack of exception and display the list of error messages in OAF page?
Create an arrayList of exceptions then do a raiseBundledException.

125. What is the significance of ProcessFormData method?
Fires when page submit happens..

126. Describe the steps for VO Extension?

    Identify VO to be extended.And Copy to your machine from server.
    Create new Vo in xx.oracle.apps package and extend parent VO.
    Create substitution in jdev.
    Deploy extended VO to $JAVA_TOP.
    Load jpx file to database using jpximporter..


127. How to enable personlization?

    Login to the application.
    Click on Functional Administrator responsibility.
    Click on Core Services Tab.
    Click on Profiles.
    Enter Pers%Self% in Name and click Go.
    In the results you will see Personalise Self-Service Defn.Update it and enter Yes in the Site Value


128. When we should bounce the page?
Want to answer this section? use the comment section.

129. What is the command used to import an oaf page and region?
java oracle.jrad.tools.xml.importer.XMLImporter $JAVA_TOP/ -username <>-password <>-dbconnection “(DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=[LINK=http://cpa51d.cpa.bdoutsource.com/][/LINK])(PORT=1558)) (CONNECT_DATA= (SID=<>) ) )” -rootdir . ;

130. Where to locate the definition of standard OAF Pages and regions?
 : $APPL_TOP/icx/11.5.0/mds/por/ — for purchasing

131. What is Passivation?
passivation is the process of saving application state to a secondary medium (the database) at specific event points so it can be restored (activated) when needed.

132.How do you get the value from the database sequence?
OADBTransaction transaction = getOADBTransaction();
Number employeeId = transaction.getSequenceValue(“SEQ Name”);
setEmployeeId(employeeId);

133. How do you perform your validation in OAF?
All OAF validations are done in the Entity Object.

134. How do you copy rows from one vo to another?
To copy multiple rows you can add the multipleSelection item for the table.Check which row is selected and write code for implementing this.

135.What is a transaction unit in OAF?
With the transaction unit identifier, you can indicate when a specific UI task begins and ends, and if the user navigates in an unexpected manner such as using the browser Back button. You can check the transaction unit status and react to ensure that inappropriate actions are not performed and unwanted data in the BC4J cache is not committed.

136. How to implement a dependent poplist?
Dependent poplist can be implemented by enabling firePartialAction and capturing the event for the source poplist and passing the value selected in the source to the method where we set the where clause and execute the query for the destination poplist.

137.How do we pass parameters between pages?
pageContext.forwardImmediately(“OA.jsp?page=/xxch/oracle/apps/fnd/test/webui/DetailsPG&fname=”+fname.
Here fname is the variable we are passing to the DetailsPG.

138. How do we synchronize a EO and Table in the database?
Right click on the EO and click Synchronise.

139. How to set currency formatting in an OAF advance table region?
pageContext.getOANLSServcies().formatCurrency(num,”USD”);

140. How to call Concurrent Program in OAF?
public int submitRequest( String ProgramApplication ,String ProgramName ,String ProgramDescription ,String StartTime,boolean SubRequest,Vector Parameters ) throws RequestSubmissionException.

ProgramApplication -Application Short name of application under which the program is registered.
ProgramName – Concurrent Program Name for which the request has to be submitted.
ProgramDescription – Concurrent Program Description.
StartTime – Time at which the request should start running.
SubRequest – Set to TRUE if the request is submitted from another running request and has to be treated as a sub request.
Parameters – Parameters of the concurrent Request.

Example:
public int submitCPRequest(OAPageContext oapagecontext,OAWebBean oawebbean,Number headerId)
   {
OAApplicationModule am = oapagecontext.getApplicationModule(oawebbean);
   try {
   OADBTransaction tx = (OADBTransaction)am.getOADBTransaction();
   java.sql.Connection pConncection = tx.getJdbcConnection();
   ConcurrentRequest cr = new ConcurrentRequest(pConncection);
   String applnName = "PO"; //Application that contains the concurrent program
   String cpName = "POXXXX"; //Concurrent program name
   String cpDesc = "Concurrent Program Description"; // concurrent Program description
   Vector cpArgs = new Vector();     // Pass the Arguments using vector
   cpArgs.addElement((String)headerId);
   int requestId = cr.submitRequest(applnName, cpName, cpDesc, null, false, cpArgs);   // Calling the Concurrent Program
   tx.commit();
   return requestId;
   }
   catch (RequestSubmissionException e)
   {
   OAException oe = new OAException(e.getMessage());
   oe.setApplicationModule(am);
   throw oe;   }
   }

141. How to Extend a VO which is having View Link?
VO extension will take of viewlink by itself So we can extend this VO as usual VO Extension.

142.What is the Purpose of Serializable in OAF?
To Pass Multiple parameters of different type as a single

143. How to Synchronize an Entity Object (EO) with Data Base?
Step 1 : Right click on Entity Object(EO) and click on “Synchronize with DataBase..”
Step 2 : Double Click on the EO, Click on Attributes in the left Panel and then Click on “New from Table….”

144. What are the methods in controller?
Controller is having three type of methods they are
1. ProcessRequest
2.ProcessFormRequest
3. ProcessFormData

145. How do you catch the button event on ProcessFormRequest Method?
if (pageContext.getParameter(.EVENT_PARAM). equals(“update”)) Here update is the event.

146. How to create a Dynamic VO?
OAApplicationModule am = oapagecontext.getApplicationModule(oawebbean);
String DynamicVOQuery = “select a.scheduled_start_date,a.wip_entity_id,b.wip_entity_name from                                                   WIP_DISCRETE_JOBS a,WIP_ENTITIES b “;
DynamicVOQuery = DynamicVOQuery + "where a.wip_entity_id=b.wip_entity_id and wip_entity_name = :1 ";
         OAViewObject DynamicViewObject =(OAViewObject) am.findViewObject("DynamicVO");
         if(DynamicViewObject == null) {
         DynamicViewObject =(OAViewObject) am.createViewObjectFromQueryStmt("DynamicVO ", DynamicVOQuery);
         DynamicViewObject.setWhereClauseParams(null);
         DynamicViewObject.executeQuery();         oracle.jbo.Row row1 =DynamicViewObject.first();
         if(row1 != null)
         {         String mFndUserDescription = row1.getAttribute(0).toString();         }
         DynamicViewObject.remove();         }


147. When is processFormRequest method called?
ProcessFormRequest(PFR)t method is called when we perform some action on the screen like click of submit button or click on Go or any action perform on the page the result is displayed is called PFR.

148. Which package should include EO and AO?
The EO and AO will be present in the schema.server package.

149.What is Activation and Passivation in OAF?
Passivation is the process of saving application state to a secondary medium (the database) at specific event points so it can be restored (activated) when needed. This restoration of data is called Activation. Passivation in OAF is done implicitly when the appropriate profile options are enabled.

150. What is Validation View Object(VVO), Validation Application Module , Root Application Module , View Link , Entity Expert , Association Object , Attribute Set?
Validation View Object – A view object created exclusively for the purpose of performing light-weight SQL validation on behalf of entity objects or their experts.

Validation Application Module – An application module created exclusively for the purpose of grouping and providing transaction context to related validation view objects. Typically, a standalone entity object or the top-level entity object in a composition would have an associated validation application module.

Root Application Module – Each pageLayout region in an OA Framework application is associated with a “root” application module which groups related services and establishes the transaction context.
This transaction context can be shared by multiple pages if they all reference the same root application module, and instruct the framework to retain this application module (not return it to the pool) when navigating from page to page within the transaction task.

View Link – Establishes a master/detail relationship between two view objects
Entity Expert – A special singleton class registered with an entity object (EO) that performs operations on behalf of the EO.

Association Object – BC4J association objects implement the relationships between entity objects. For example, a purchase order header can reference a supplier, or it can own its order lines.

Attribute Set – Bundles of region or item properties that can be reused either as is or with modifications. For example, all buttons sharing the same attribute set would have the same label and Alt text.

Sunday, January 18, 2015

Sub Ledger Accounting SLA (Complete Functional Information)

SubLegder Accounting in R12
SLA Part -1
In these article, we will explore the very basics of SLA and why it exists.
Firstly, what exactly does SLA do?
SLA is a module which now sits between the SubLedgers like AP/AR etc and the General Ledger. Have a look at this diagram below.  As you will notice, SLA can act as a mediator between the subledgers and Oracle General Ledger.


Before we progress, some terminologies of R12 must be revisited. In 11i we had set of books, and in R12 we call them Ledgers. Likewise in R12 we also have secondary ledgers and reporting ledgers. Hence from 11i perspective think of Ledger as Set of Books. As for Subledger, a Subledger is nothing but a module like AP/AR/PO/Inventory etc.

In the diagram below, the second scenario is explained whereby let's say that payables module generates a charge account segment combination for an invoice distribution line as A.B.C.D. In such case, if SLA module is not customized, then the very same A.B.C.D combination will be passed to Oracle General Ledger via the SLA. And before you wonder... Yes, SLA module has its own set of tables to capture these accounting entries.
Please see the image below.


In the image above, SLA passes to GL whatever value is fed by the Subledger, in this case A.B.C.D


There are cases where SLA module can alter or massage the CCID or code combination that is generated in Subledger before transferring the same to Oracle General Leger. This scenario is explained whereby let's say that payables module generates a charge account segment combination for an invoice distribution line as A.B.C.D. In such case, if SLA module is customized, then the A.B.C.D code combination of Payables can be passed to Oracle General Ledger via the SLA as A.B1.C1.D instead.


The most important application however of the SLA is its ability to create shadow journals that contain different values or differing credit/debit entries for the transactions. This is the main reason why SLA module was invented/designed.  Let us take an example. For company "Apps2Fusion UK", it might have operations in France, which is "Apps2Fusion France". With UK being the parent company, the French company has to do accounting journals in formats that can be reported as per French legislation and also as per UK legislation. For example, in France an inventory item is accounted as expense, whereas in UK the inventory item is accounted as an asset. In the example below, A.B.C.D is never passed to the GL. Instead to GL A.B1.C1.D is passed to the Primary Ledger FRANCE and A2.B2.C.D is passed to the Secondary Ledger UK. The picture below shows the role that SLA plays in such scenario.
Therefore in this article you have learnt the different usages of Subledger accounting
SLA PART 2 : Entities - Event Classes - Event Types
 
In this article you understand some of the basics fabrics/terminology used in SLA, i.e. Entities, Event Classes and Event Types. It is important for you to understand the variables within SLA engine which influence whether an accounting entry needs to be generated for a specific event within subledger like Payables or Receivables. For example in Procurement, there may be a need to generate accounting whenever a Purchase Order is encumbered. In case of SLA, the activity of "Encumbrance" against a Purchase Order is known as Event Type.
Likewise when a Payables Invoice is Validated, then you may want to create an accounting entry. In this case the "Invoice Validation" is an "Event Type". And your accounting rules for Invoice Validation will be attached against this specific "Event Type".

For Payables, an INVOICE transaction and a PAYMENT transactions are known as Entities within SLA.
Entities can be subdivided into various "Event Classes", for example Credit Memo, Debit Memo, Expense Reports, Invoices etc.
Further to this, against the Event classes we define Event Types, for example, whenever your Invoice is validated or cancelled or adjusted, you may want some specific accounts in the General Ledger to be impacted. Event types are therefore the types/list of events against transactions which you wish to account for in General Ledger.

This is explained in the diagram below.







Each entity is identified by unique identifier or primary key from the underlying tables.



SLA PART 3 : (Journal Line Definition) :

The  Journal Line Definition "defines" how the entire journal is built. To create any journal, one of the key things is to get the CCID or the code combination of segments. SLA needs to know where this CCID will be coming from.  You also need to know whether this CCID will be debit or this CCID will go into credit. Therefore you not just require the CCID, but you also need to decide whether a specific CCID will be debited or credited. In SLA, the "Journal Line Type" will specify whether the accounting entry is credit or debit. Also, you can then "attach something called an ADR to this Journal Line Type". The ADR returns the final code combination. Therefore Journal Line type will leverage the JLT+ADR to know which CCID is crediting and which CCID is debiting in the journal.


For each and every application there is a combination of event class and event type. Depending upon the combination of event class and event type the accounting gets triggered. The standard SLA out of the box from Oracle meets your requirement by 90%. For example you can fetch the standard accounting from payables or receivables options. However where these standard seeded accounting do not suffice, you can go and modify SLA to meet your business needs.

There is something called as Journal Entry Description. When a transaction is transferred as a journal, then every journal has credit/debit and description. The journal has description at header and also at line level. The JED allows you to generate the description of the Journal at both header and line level. For example you may want Customer Name or Customer Number in the journal description for a journal that is initiated from Oracle Receivables module. Using JED in SLA you can build header or line level descriptions.

The image below describes the end result journal that is produced by SLA





In JLT Journal Line Type, you can specify whether the entry is for credit or debit side. The Journal Line Type also provides options to do accounting for Gain/Loss of Foreign currency transactions. Further to that you can specify if SLA should merge the journal lines that have same CCID.





ADR - We specify how the account combination must be generated. We tell the system how we want the CCID should be built and transferred to the general ledger. You can either transfer the standard account as calculated within Subledger(AP or AR or PA etc) or the account generated from Subledger can be modified or replaced via ADR configuration within SLA.

Further to this, when defining ADR, you can specify the conditions under which a specific segment or CCID is returned. These conditions are like IF Conditions.


It is good to remember that the "Journal Line Definition=JED+JLT+ADR"

This is visible from the screenshot as shown below



You will notice that two "Journal Line Types" have been attached to this Journal Line Definition. The first journal line type assignment creates a credit line in the journal and the second journal line  type assignment creates a debit line in the journal.


By now you would have understood the significance of Journal Line Definition. However you might be wondering how this Journal Line Definition gets associated with a Subledger transaction. For example, how does Oracle E-Business Suite decide which specific Journal Line Definition should be used when a specific event takes place against an invoice in Oracle Payables. In other words, how will SLA decide how the Journal will be constructed when an invoice is validated within Payables. We will learn this via AAD in next part of the article using Application Accounting Definitions.
SLA PART 4 : (Application Accounting Definitions)
In the SLA Part 2 article you Entities, Event Class and Event Types. In the SLA Part 3 you learnt the high level basics of Journal Line Definitions.
In this Part 4, you will see how the "Journal that gets constructed using Journal Line Definition" is associated with an underlying transaction in the respective module.




As seen in the image above, the Application Accounting Definitions [AAD] is attached to one or more Journal Line definition [JLD].

Effectively it means that AAD = JLD  for an Event Class+ Event Type combination = ADR+JED+JLT for an Event Class+ Event Type combination

As a thumb rule, you must remember that each Application Accounting Definition [AAD] belongs to a module. Therefore if you have one Ledger implemented [ 11i Set Of Books] and two modules implemented like AP and AR, then you will have 2 AAD's defined, i.e. one for Payables and another for Receivables.


In the above picture only one Event Class of Invoice is used in AAD. However in reality you will have more than one event classes like Invoices, Payments etc associated with a AAD for Payables module.

Seeded Application Accounting Definitions are provided for each module out of the box by Oracle. However if the existing definitions do not meet your business requirements, then you can copy the existing AAD's to a custom AAD, and then make alterations to the custom AAD, which means creating custom JLT, custom JED and custom ADR as appropriate. It is important to remember that you must create a custom copy of an existing SLA component before making modifications.

In the next article you will see Subledger Accounting Method.
SLA PART 5 : (SubLedger Accounting Methods)
 
As we have seen in the Part 4 of SLA, the Application Accounting definition is used to decide two things
a. When a specific event within Subledger example Payables or Receivables becomes eligible for Accounting
b. How the journal is constructed.


However, each Primary Ledger[ 11i equivalent of primary set of book] and also each secondary ledger should be able to generate Journals as per their respective legislator requirements for all the modules implemented. This is where "Subledger Accounting Method" [SLAM] comes into the play. If you recollect from previous article, Application Accounting Definition is connected to only one module like Payables or Receivables etc. However a Ledger[11i SOB equivalent] needs accounting entries to be processed across many modules. Hence SLAM provides an umbrella to join accounting entries from various modules so that they can be channelled through to Oracle General Ledger. In other words a SLAM is a collection of accounting definitions for various modules in Oracle Apps. A SLAM is then attached to the Ledger[11i equivalent of Set Of Books].

Therefore the flow of accounting entries appears as shown below





The flow represented in simple equation appears as below
Ledger Defined in GL-->SLAM-->AAD--> [Event Class and Event Type]-->Liability Lines-->[JED+JLT+ADR]
Ledger Defined in GL-->SLAM-->AAD--> [Event Class and Event Type]-->Expense Lines-->[JED+JLT+ADR]


In order to assign the SLAM to a ledger, go to the General Ledger Super User responsibility and click on menu as shown below.






Click on update against the ledger



Attach the SLAM to this ledger





You can also modify the SLA accounting options using the two screenshots as shown below



SLA PART 6 : (Overall SLA Diagram)
 
The overall flow of the SLA can therefore be depicted as shown in image below.



Overall, when you create new definitions in SLA, you can follow the bottom up model.

The parallel flow on top, as shown in image below is to ensure both a Credit and Debit line gets created for a Journal.

SLA PART 7 : (Creating Journal Line Definition) :


In this article we will create a Journal Line Definition. You will basically apply the steps learnt thus far into practical implementation.

However to create a Journal Line Definition, we need to create the following
1. Journal Entry Description for journal line description2. Journal Line Type to mainly define credit or debit3. Account Derivation Rules for CCID used in journal line
Therefore typically, two set of JED,JLT and ADR’s are required, with one set each for Credit line, and the other set for the debit line.

In this article, we will create these three components.



Go to a subledger like Payables and within the SLA menu as shown below, you can open the Journal Enty Description screen. Click on New to create a new JED.




Create a new Journal Entry Description named ANIL_JED. We will use this for generating the Journal Line Description for both the credit and the debit lines.




The journal line description can be constructed by clicking on Details button. The description of the journal line can be a static text or dynamic text based on database sources within SLA or the combination of the two.


Here we are using the Supplier Name to construct the journal line description.



In addition to the dynamic journal line text, SLA allows you to put conditions.
For example
IF CONDITION1=TRUE, then Journal Line Description should be abcd
ELSE IF CONDITION2=TRUE, then Journal Line Description should be defg

Click on condition button to define the condition

After defining the Journal Entry description, now we can create Journal Line Type named ANIL_JLT_CREDIT for the credit line of the journal.






Specify the Transfer to GL in Summary or Detail mode. Also specify Merge, as explain in image below



Use the Payables setup option as source to build condition for JLT


In this example, we want to build a condition for “Journal Line Type” eligibility depending upon whether in the Payables Options Screen has Automatic Offset Method is set to None or Balancing or Account. In the above condition, we have placed an OR condition.




You can for example also build a condition based on Invoice Distribution type as shown below.


Next we need to define the Account Derivation Rule


Here we are creating an account derivation rule for the credit line.

An ADR can either return a full CCID or a specific segment. The values can be sourced either statically or from existing seeded dynamic sources in SLA. These seeded sources are mapped to database tables.

We are stating that this specific ADR named ANIL_LIABILITY_ADR will return a constant value in company segment


In the above image you will see that the value for Company segment can be derived from the corresponding value set.

As below, it is also possible for the specific ADR to return a full segment combination. In fact you can specify conditions within an ADR. When CONDITION1=TRUE then segment combonation a.b.c.d is returned or when CONDITION2=TRUE then d.e.f.g combination is returned for your account.


For the debit side, we are saying that the Account segment must always be 7450

The conditions can be defined. But conditions as evaluated as per the priority.



Finally we create a Journal Line Definition.



Here everything hangs together, JLTJLD,ADR=Journal Line Defnition

As shown below, we are saying that the CCID for the Credit Line of the journal will be calculated from ANIL_LIABILITY_ADR


And the CCID for the debit line will be calculated by the CCID value in Invoice Distribution line, with the specific segment from Account segment being replaced as per ANIL_EXPENSE_ADR.

For example, if the CCID in AP_INVOICE_DISTRIBUTION equates A.B.C.D.E.F then your journal line debit entry will be A.B.7450.D.E.F



SLA PART 8 : (Creating Application Accounting Definition AAD)
In the previous part of this SLA article, you have learnt creation of the Journal Line Definition. Now it is time to create AAD, which is "Application Accounting Definition".
The purpose of AAD in SLA is to dictate which "Journal Line Definition" must be used when a specific event takes place against a specific type of transaction in a specific module like Payables or Receivables. If you recollect, the "Journal Line Definition" definition creates a Credit Line and the Debit Line of a Journal.

Oracle ships out of the box an AAD for every simply module/application that uses SLA.
Hence for each application like AP,AR,PA,PO etc there will exist an existing AAD in the Subledger Modules. However, for this example we will create a new AAD for Payables.

In the previous article you created a Journal Line Definition that is responsible for constructing a Journal. However, in AAD screen you will specify when the Journal Line Definition will be used. In this case, as per the image below, we are stating that journal line definition ANIL_JLD should be used for creating journal whenever any event occurs against an Invoice in Payables.



You can also click on "Header Assignment" button in AAD to attached "Journal Entry Description" [JED] which dictates how the Journal Header description will be constructed. If you recollect, in Journal Entry Description, we concatenate static text and dynamic content from SLA Sources[mapped to DB columns or pl/sql functions] so as to construct a description for Journal Line or Journal header.


In this article we have seen that AAD is created for each module. However, in any implementation there is a need to perform accounting for all the modules. "APPS2FUSION UK" might be running Payables and Receivables and also Project Accounting. Hence we need to create a SLAM-Subledger Accounting Method.

Using AAD we specify the Journal creation rules per module. In SLAM we specify how the Journals must be built for the entire organization "APPS2FUSION UK" across Payables and Receivables and Project Accounting. The company "APPS2FUSION UK" will have a legal entity in UK, and hence the SLAM will be attached to the UK Legal Entity.

SLA PART 9 : Create SLAM(Sub Ledger Accounting Method)

In previous article we have seen that in SLA, the "Application Accounting Definition" is created for each module in EBusiness Suite. However, in any implementation there is a need to perform accounting across various different modules. For example, a company named "APPS2FUSION UK" might be running Payables and Receivables and also Project Accounting. Hence we need to create a SLAM [Subledger Accounting Method] that will take care of generating the Accounting journal lines for each of the module.  Hence a SLAM is nothing but a grouping of all the AAD's possibly for a given chart of account.  

Using AAD we specify the Journal creation rules per module. In SLAM we specify the applications/modules for which the Journals must be built for the entire organization such as "APPS2FUSION UK" across Payables and Receivables and Project Accounting. The decision of whether the journal must be created is delegated to the AAD. As for how the journal is constructed and how the accounts are derived is delegated to the Journal Line Definition.

The company such as "APPS2FUSION UK" will have a legal entity in UK, and hence the SLAM will be attached to the UK Legal Entity.

In the image below we are creating a SLAM named ANIL_SLAM, and attaching the AAD named ANIL_PAYABLES. This is a simplistic example, because in reality you will have the AAD's of other applications like Receivables , Project Accounting, Fixed Assets etc attached to the SLAM as well.



In the above image, click on Accounting Setups, and here you can attach the SLAM to a Ledger. To remind you, in R12, the Ledger is equivalent of set of books in 11i.



SLA PART 10 : (Testing and Explanation of SLA Concept)
In the SLA articles Part 1 to Part 6, we understood the basic concepts of Subledger Accounting.
In the SLA articles Part 7 to Part 9, we configured SLA for Payables as an example.

In this article, we will test the configuration to see the results of the configuration performed in Part 7 to Part 9 of the SLA articles. We will also explain the results of the test.

Our SLA setup was done for Payables, hence we will create an Invoice in Payables and check the accounting entries to reconcile those against our SLA setup.


If you recollect, we created an AAD named ANIL_PAYBLES which is attached to Oracle Payables module. This AAD will invoke JLD named ANIL_JLD to build the journal lines when an event takes place against the Payables invoice.

In the image below we are creating an Invoice from Payables responsibility and ensuring its invoice line distribution account is 01-110-6100-0000-000.
Next we click on Actions button and validate the invoice and create accounting entries.



Now check the accounting generated by clicking on menu title Reports||View Accounting as shown in the image below.





You will notice that the Debit entry of 1000 is charged to 01-110-7450-0000-000 instead of being charged to 01-110-6100-0000-000 in the Invoice Distribution Line of Payables. Please note that the third segments value of 6100 from Invoice Distribution has been replaced by 7450 from ADR named ANIL_EXPENSE_ADR as shown below.  

The complete logic is described after this image.


Now, let us revisit how the credit line in the journal has been built. Typically Code Combination for the credit/liability accounting entry of the invoice line is picked from Payables Options setup of the operating unit. However in this case, in SLA we have hard coded the credit account to be 01.000.2220.0000.000. This was done by defining ANIL_LIABILIY_ADR as shown below. In this case the ADR returns the complete CCID because the Output Type radio button is set to Flexfield.

Hence, the SLA has generated the same Credit entry CCID for the invoice, as shown in image below
Needless to say that the ANIL_LIABILITY_ADR was attached to the Journal Line Type=ANIL_JLT_CREDIT.