Baan Questions

  1. What are the major advantages of a dll

(a)   It improves the performance of a program using it.

(b)   It helps to save memory as the functions in Dlls are shared among several programs running concurrently.

(c)   Functions in Dlls can be upgraded without having to recompile all the applications using it.

(d)   All of the above.

Ans – (b), (c)

  1. A variable declared as extern in program script

(a)   Can be used in other objects of the same session like forms, reports etc.

(b)   Can be used in other programs called from this program.

(c)   Cannot be used in functions of the same program script.

(d)   Cannot be used in event sections of the same program script.

Ans – (a), (b)

  1. Write the order of execution of the following event sections.       (Medium)

(a)   When.field.changes

(b)   On.input

(c)   Check.input

(d)   After.field


Ans – (c ), (b), (a), (d)

  1. When a Display Session is invoked, which of the following sections of a form field get executed.                                                                   (Simple)

(a)   init.field

(b)   before.field

(c)   before.display

(d)   check.input

(e)   on.input

Ans – (a), (b), (c )



  1. db.insert()     2. db.update()   3. db.delete()    4.      5. dal.update()
  2. dal.destroy()  7. abort.transaction()     8. commit.transaction()  9. A Select query


  1. Which of the above starts a database transaction in Baan.            (Simple)

(a)   1,2,3

(b)   1,2,3,4,5,6

(c)   1,2,3,4,5,6,9

(d)   All


Ans – (b)

  1. Which of the above ends a database transaction in Baan.       (Simple)

(a)   1,2,3,4,5,6,7,8

(b)   7,8

(c)   Only 8

(d)   7,8,9


  1. Database transactions are allowed only in                         (Difficult)

(a)   The DAL

(b)   The UI choice sections of user options

(c)   The UI choice standard options of ‘cont.process’ and ‘’.

(d)   All the sections of a UI script.

Ans – (a), (b), (c)


  1. The ‘for update’ keyword is used in SQL query                 (Simple)

(a)   while updating a record.

(b)   while deleting a record.

(c)   while inserting a new record.

(d)   to lock a record to prevent more than one process to update the same record simultaneously.

Ans – (a), (b), (d)

  1. Which of the following is true regarding ‘retry points’ in Baan V.

(a)   Retry points enable Baan V to re-execute a transaction after an abort transaction is produced by the database.

(b)   Retry points should always be positioned at the start of a transaction.

(c)   Only one retry point should be defined per transaction.

(d)   None of the above.

Ans – (a), (b), (c)


  1. Which of the following are true with respect to DAL                (Simple)

(a)   A DAL is implemented as a DLL to enforce the logical integrity rules for a particular table.

(b)   A DAL can enforce the logical integrity rules for two related tables.

(c)   A DAL doesn’t necessarily be linked to any table.

(d)   All the above.

Ans – (a)


  1. Which of the following are not advantages of DAL.

(a)   Enforcement of logical integrity rules for a table, irrespective of from where it is accessed.

(b)   Code reuse – Integrity rules do not have to be replicated in each session that uses a table.

(c)   Modularity – Separation of user interface actions (handled in UI script) and database actions (handled in DAL).

(d)   Performance improvement – DAL significantly improves performance of transactions on a table.


Ans – (d)


  1. A business method in a DAL can be called from                             (Simple)

(a)   a UI script.

(b)   a Dll

(c)   another DAL

(d)   None of the above.


Ans – (a), (b), (c)


  1. A UI script contains ‘check.input’ event section for a field of the main table and for a non-database form field.  DAL for this table contains a property hook for the table field. User changes the value of both the fields on the form.

(a)   check.input event section will get executed for the main table field.

(b)   check.input event section will get executed for the non-database field.

(c)   Property hook will get executed for the table field.

(d)   All of the above.

Ans – (b), (c)


  1. When a DAL exists for the main table of a session, then in the UI script

(a)   The ‘check.input’ sections for fields of the main table are not executed.

(b)   The ‘check.input’ sections for non-database form fields are not executed.

(c)   The ‘when.field.changes’ sections for fields of the main table are not executed.

(d)   The ‘when.field.changes’ sections for non-database form fields are not executed.

Ans – (a)






  1. Write a query to find the 5th highest salary figure being offered to the employees.     (difficult)
  2. Write a query to find all the employees whose salary is greater than the average salary of their respective departments.                                             (Medium)
  3. Write a query to find all the employees whose salary is greater than the average salary of all.                                                                     (simple)
  4. Write a query to find the department with the highest average salary.



Tables and Domains


  1. Every table in Baan must have at least 1 index                         (simple)

(a)   Yes

(b)   No, an index is not a must. It is just required to improve the performance of a query.

Ans – (a)

  1. A Baan table is having 2 indices (Simple)

(a)   Duplicate records are allowed for index 1.

(b)   Duplicate records are allowed for both indices.

(c)   Duplicate records are not allowed for any of them.

(d)   Duplicate records are not allowed for index 1, but allowed for index 2.

Ans – (d)


  1. Domains can be linked to

(a)   Table fields

(b)   Form fields

(c)   Labels

(d)   All of the above

Ans – (a), (b)

  1. A reference can be set to

(a)   A non-key field of another table

(b)   Any key field of another table

(c)   Primary key field of another table.

(d)   A key combined field of another table

Ans – (b), (c), (d)


  1. Combined fields in a table are used for

(a)   Storing concatenated values of two fields

(b)   Storing repeating values

(c)   To enable a combination of fields to refer to an index.

(d)   Both (a) and (c)

Ans – (c )


  1. Doing a ‘Convert to Runtime DD’, after defining a table.

(a)   Creates the table.

(b)   Creates the table definition.

(c)   Both the above.

(d)   None of the above.

Ans – (b)


  1. Why is Create table session used? After defining a table, what is done first – ‘Convert to Runtime DD’ or ‘Create table’? Why?


Ans – Create table session is used to create the table physically in the database. ‘Convert to Runtime DD’ is done first to create the table definitions. After that we do ‘Create table’ to physically create the table in the DB.





  1. We can delete a line of a Sales order

(a)   Yes, always.

(b)   no

(c)   yes, only if the line quantity or price is 0


Ans – (b)

Create Vs Convert to Runtime Data Dictionary – when and why?

So being into BaaN, we all must have faced the option of create to run-time or convert to run-time option for tables/domains at least once. Often I have observed people badly stuck in dilemma while it comes to choose the best option between these two.

Today our discussion will try to answer following questions:-

1.Most important. most basic but often ignored question:- why it is required at all?

2.When to choose convert over create run-time and vice-versa?

3. How to troubleshoot issues/errors faced during CRDD (Create/Convert to Run-time Data Dictionary)?

Obviously I’ll be explaining in my own way and will be eagerly expecting suggestions/feedback from your side.

So here we go …….

1. Why it is required at all?

Create/Convert run-time both create/modify the application data into run-time data..okk this is a bit bookish explanation.

In simple term, you create a table via maintain table session, the metadata only gets created at application level.It is of no use until it get’s converted into run-time which the application refers at run-time. So run-time actually brings the application data at file-level in the Operating System under the path ${BSE}/dict  or ${BSE}/../dict [ this one is the traditional path used in BaaN IV, but there is no restriction about where the path should be].

Tables and Domains’s run-time data gets created/converted in the same path.

Once the run-time data is ready it is then ready to get created in the database. Database definition of the table must be always in sync with RTDD( run-time data dictionary) of table, otherwise there is a problem in accessing the table. Error 512 will come up.

2. When to choose convert over create run-time and vice-versa?

Well the answer is pretty simple.

When you create a table / domain for the very first time ( i.e they were not present in application as well as database ) go for create run-time option.

When the table/domain is already existing there is change in that particular table/domain definition go for convert to run-time option.

So what really convert-to run-time does? Is there any extra layer of complexity involved?

Yes, there is a point to worry about….Consider following cases:-

a. suppose your table definition contains 5 fields. There are 1000 rows in the table.

You delete 2 fields. Now after CRDD  the database definition of the table must get synced with RTDD; that implies that in database too, there will be only 3 fields.

So what about those 2 fields and there existing value in the table?

b. Your table definition contains 5 fields again and it is having 1000 rows.

This time you add 2 more fields in the table. What value are you expecting for those 2 fields for each of 1000 rows present , after proper CRDD?

These 2 cases has been taken into account in the underlying functionality of Convert to run-time data dictionary.

Here is how it works,

1. just before starting convert, BaaN takes dump/backup of existing data.

2. It drops the table and drops thr table definition.

3. It creates the table definition as per new definition mentioned in application.

4. It creates the table at database side( it is clear that database definition also gets created as per new definition from RTDD)

5. Then it checks the column/field  mismatch between newly created table in DB and the backup taken in step 1.

6. In case of point a. explained above, it simply discards those two fields and pump data back into table for rest 3 fields.

    In case of  point b. , it checks the domain/data type for those 2 newly added fields and sets there value as per their default value; i.e if the new 2 fields are integer default value will be 0(numeric ZERO) , if they are string default value will be ” “(Blank/Space but not NULL).Again the default value depends on the domain type and the default value set for that domain.

3. How to troubleshoot issues/errors faced during CRDD (Create/Convert to Run-time Data Dictionary)?

Mostly you’ll the error you’ll face during CRDD is : “serious error in bdbreconfig”

This means that not all domain/table could be converted into run-time.

There might be many reason.Some of the most common reasons are:-

1. Your are converting your table without converting the domain linked to the table field.

2.”.new” file generated during reconfig and it could not be removed.

3. Permission problem in the directory path where your RTDD will get stored.

Solution of the problem will depend on the situation, discussing solution of every possible solutions will be a bit lengthy here…instead I’ll give you standard process checklist following which you’ll over come the problem most of the time :

1. before starting CRDD process take seq dump of table and keep it safe with you.

2. make sure domain is always converted/created before you convert table.after converting/creating domain independently logout-login to refresh bshell cache.

3. check access permission of the directory path i.e. ${BSE}/dict/{package_combination}

4. During CRDD if  “.new” file is generated then do the following:-

a. remove the .new file, remove the .old file, rename the existing table-def file .eg:- if during CRDD of tdsls401 .new file is generated then you can see 3 files , tdsls401.old, tdsls401 and .old and .new and rename tdsls401 as say tdsls401.fullonbaan.

b. delete entries of this particular table from following table via ttaad4100 (GTM):

ttadv500 – Conversion indicators
ttadv501 – Reconfiguration indicators
ttadv502 – Conversion parameters table def. / domains
ttadv503 – Reconfiguring Restart Data
ttadv504 – Reconfiguring Restart Data II
ttadv505 – Logged changes

c. logout and login. then run CREATE RUNTIME and not convert….

In most of the cases this will help you out.

Obviously there are some cases where you have to go to DB and drop the table and recreate it. At that point of time the seq dump you have taken will come into picture.Obviously you cannot upload it directly then as table definition has changed. So you have to delete/add columns from sew dump manually in order to align the data with current table definition and then upload it.


So, you see it’s all pretty simple…try it yourself and let me know what all new things you explore!!

Waiting to hear from you guys soon!!