How To #8 – Can I bypass DAL in my program ? #baanhowto #LNHowto
Please be careful when you are doing this, I assume you already know what you are doing.
But yes off course, you can bypass DAL in your program. The below piece of code will do it all for you, this will prevent all the DAL checks on the main table for the session.
before.program:
disable.dal()
I wouldn’t recommend bypassing DAL at all, its good to have it on. But if you have some customization where you can’t avoid it, you can’t avoid it.
Quick Submit
Damn !! 10.5 ION desk is cool
I wont write long essay for this, but #inshorts
- Simplified Mapper ( I bet you won’t have an affair with 3rd party tools )
- Simplified deployment ( No more missed xmls or xsds )
- Light weight
- Smart & impressive
How To #7 – How to retrieve the description of the label ? #baanhowto
It is always a good practice to maintain labels instead of simply typing the descriptions on the static forms/report layouts. You can understand the importance of the labels when you are working in multilingual environment.
Many a times there is need to retrieve the description maintained for a label code. You can easily achieve this with a predefined function “tt.label.desc()”
Syntax
void tt.label.desc( string label_code(19), long label_context, ref string desc() mb )
Description
This returns information of the specified label.Arguments
label_code : The label code, including the package code.
label_context : The label’s context.
The possible values are:
•1 General Use (for labels on forms and reports)
•2 Session, Table or Report Descriptions
•3 Enumerate descriptions
•4 Index descriptions
•5 Chart descriptions
•6 Menu and menu field descriptions
•7 Chart Application Option descriptions
•8 Business Object descriptions
•9 Subfunction descriptions
•10 Form Command descriptions
•11 Descriptions for External Use
•12 Cascading item on button descriptionsdesc : This returns the longest description (in the user’s current language) of the specified label.
How To #6 – How to find a domain of a variable ? #baanhowto
In many cases, we require to know the domain of the variable or table field. This can be achieved very easily using
domainof() function.
Syntax
string domainof( variable )
The domainof() function is a compile time function which returns the name of the domain of the supplied variable. Make sure that the variable passed as an argument must be a domain type, otherwise it will result in a compile time error. You can also pass the table fields to the function as an argument.
Quick Submit
Error Logging DLL (Baan / Infor LN)
Baan handles error logging very well, you must be using ttstperrlog session frequently to verify the logged errors. In many scenarios, we need additional error logging for write/process programs. It is really time consuming to create create traditional baan reports for error logging. So most of the times we prefer writing to a log file. Many of you must have already written the dlls to write your errors to the log file.
While going through the archives, I found one of my very first program for error logging, you may use it without any restrictions & enhance the same based on your needs. I will definately like to know the changes you have done, so request you to share the modifications & enhancements done.
This is no different, the DLL uses report name as an argument and passes the error string to the report. This gives you the flexibility to save the reports in any format you want based on the availibility of the devices in your environment.
The DLL lifecycle have three stages init, log & end.
The details are as below
init.log()
The function init.log will initialise the “error log report”, The user can provide the report code or pass a empty string as a parameter to the function, In case of empty string the default report “rXXXXXXXXXXX” will open. The user can optionally pass the Report Title in the second argument under DSNtitle.
As a first step the developer will need to change the DEFAULT_REPORT & DEFAULT_TITLE values to the desired ones. There should be one report with the field error_desc with string datatype.
The init function will initialize & open the report. The init function will return the report id which is of type long.
log.error()
The log.error() function takes two parameters report id & error details. This can be called inside a loop multiple times provided the log is initiated.
The log.error() function will pass the error details to the report. The report id, which is the first parameter for the function is the id returned by init.log() function.
end.log()
This function will end the log by closing the report.
|******************************************************************************
|* Title : Error Logging
|* Description: : This DLL is used for logging errors
|* Original Author : Niraj N. S. Kakodkar
|* Date : 16/02/2007
|******************************************************************************
|* Category : Utility
|* Platform : Independent
|*
|* License for Error Logging DLL
|*
|* Copyright 2007 - 2011 by Niraj N S kakodkar
|*
|* All Rights Reserved
|*
|* Permission to use, copy, modify, and distribute this software and its
|* documentation for any purpose and without fee is hereby granted,
|* provided that the above copyright notice appear in all copies and that
|* both that copyright notice and this permission notice appear in
|* supporting documentation.
|*
|* NIRAJ KAKODKAR , Baanboard or Techbuzz (nirajsk.wordpress.com) DISCLAIM ALL
|* WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
|* MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NIRAJ KAKODKAR nor Baanboard
|* BE LIABLE FOR ANYSPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|* WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
|* OR PERFORMANCE OF THIS SOFTWARE.
|******************************************************************************
|******************************************************************************
extern domain tcmcs.s999m error.desc
extern domain tcmcs.str50 rep.name
|* Change the default report code & Title
#define DEFAULT_REPORT "rxxxxxxxxxxx"
#define DEFAULT_TITLE "ERROR REPORT"
function extern long init.log( domain tcmcs.str15 _report, ...)
{
DllUsage
Input: Report Code or empty string as first argument
DsNtitle -> Report Title
Output: Report Id
Description: The function init.log will initialise the "error log report", The user can
provide the report code or pass a empty string, in case of empty string
the default report "rxxxxxxxxxxxx" will open. The user can optionally pass the
Report Title.
EndDllUsage
long brp_id
long arg_count
long i
long long_value
string string_value(200)
arg_count = get.argc()
if arg_count > 1 then
for i = 3 to arg_count step 2
on case get.long.arg(i-1)
case DsNtitle:
string_value = get.string.arg(i)
rep.name = shiftl$(strip$(string_value))
break
default:
break
endcase
endfor
else
rep.name = DEFAULT_TITLE
endif
if(isspace(_report)) then
_report = DEFAULT_REPORT
endif
brp_id = brp.open(strip$(_report)," ",1)
if (brp_id 2 then
for i = 3 to arg_count step 1
error_desc = " --------> " & get.string.arg(i)
break
endfor
endif
error.desc = ""
if(rep.id > 0) then
error.desc = record & error_desc
brp.ready(rep.id)
endif
}
function extern end.log(long rep.id)
{
DllUsage
Input: Report Id
Output: Void
Description: The function closes the report of which id is provided.
EndDllUsage
if(rep.id > 0) then
brp.close(rep.id)
endif
}
You can also find the code posted on baanboard at Error Log
Try http://meamapa.com , a google maps V3 application with added features. Use it, its free & developed by me. Waiting for your valuable comments & feedback to improve it.
MeaMapa.com , Its my M-APP ;-)
-
I got married, Please congratulate me ;-).
-
I switched my company & was busy with assignments, well that can’t be a good excuse for me to divert from blogging, I know I would have, spared a few minutes for techbuzz.
-
I was very much fascinated by Google api’s & tried my hands on the same.
Command your Infor ERP System with your voice
Now this is what I would say the next generation Enterprise vision. Quite impressive and innovative step by Infor. Soon you will able to command your ERP System with your voice.
Infor, a provider of industry specific enterprise applications, and third largest ERP vendor has now impressed the enterprise world by developing a prototype app for mobile devices that allows users to search for customer or client information using voice commands. The app integrates with Siri, Apple’s Voice recognition tool, but uses its own cloud-based natural language processing engine to search stored enterprise data and dive into the applications.
According to Nick Borth,product manager at Infor, Siri will translate the voice, while Infor’s cloud based NLP engine will make the translation meaningful by adding context to the words.Eventually the user will be able to search all of the mobile data, check authorisations and take necessary actions with voice commands.
The prototype, was built in just seven hours by Infor’s development team, and as of now only allows users to find customers in certain cities, find the name of a contact or find the specific name of a customer. A full fledged version can be expected soon by the end of this year.
The app will use Infor’s latest middleware offering ION, which allows enterprises to easily integrate disparate or third party apps that had previously been connected using point-to-point solutions. Business Vault (The Enterprise Data repository) platform will enable the natural language processing engine to crawl stored data upon request.
Another thing which has really impressed me is the idea to develop a marketplace for its customers to submit mobile applications that they have developed using Infor’s Motion platform, where it may take these on and create a commercial offering. This will be something like Google Play Store where in you submit apps to share with other customers and Infor software users.Infor is planning to launch this in first half of 2013.
Infor!! Wishing you a grand success in the years ahead, keep up with the innovation.
Recent Comments