Saturday, October 18, 2008

How to fetch record with undefine key(s)

Often you wanted to fetch records from table with combination of key(s) that you know is unique (yes you use this ONLY when you know exactly what you want), then you find the key(s) that you are trying to map is not define either in Primary Key(PK) /Composite Keys(CK) or the Alternate Key(s) (AK).

Then what you can do?
1. Yes you might want to add another alternate key into this, but you'll have to regenerate your indexes, what if it's a standard table?
2. You try to use FetchNext, but there's no such key combination there to select.

Example Scenario:
Say you try to fetch field "F0101.AN8" of FIRST ROW of record from F0101 (Address Book Master) where URCD=[szCriteria_URCD].

In this case, instead of trying the F0101.Fetch Single function, try following ...

F0101.Open
F0101.Select
[VA frm_szCriteria_URCD] = [BF szUserReservedCode]
If [SV File_Status] equal to [CO_SUCCESS]
F0101.Fetch Next
[VA evt_mnF0101_AN8] <- [BF mnAddressNum
ber]
End If
F0101.Close

Then you notice I used F0101.Open and F0101.Close, these advance Table I/O operation might not be significant in here, but I like to keep this kind of practice so I know when my table operation start and stop it's session, so it won't interrupt with other similar I/O operation in a same event scope.

Reference(s):
- F0101 standard key(s)



By Avatar Ng
2008/10/19

Thursday, June 19, 2008

BSFN: ValidateAccountNumber (XX0901)

BSFN: ValidateAccountNumber

Account Number (alias=ANI) were very frequent used field in G/L side, unlike the other common alias out there ... ANI is a bit different.

ANI can be in any form and any length, most commonly setting were the "MCU.OBJ.SUB" combination.

So when comes to validation of Account Number, things were a bit complex.

I found this Business Function were quite handy in doing this job:
XX0901 (ValidateAccountNumber)

However it's a bit tricky to use, after looking at the parameter notes, I able to figure out how to make use of it for validation.

Example ER:

ValidateAccountNumber
[FC Account Number] -> [BF mnAccountNumber]
[VA evt_mnF0901_AID] <- [BF mnAccountID]
"7" -> [BF cBaseCode]
"1" -> [BF cFormatCode]

F0901.FetchSingle
[VA evt_mnF0901_AID] = [BF mnAccountID]

[VA evt_szF0901_OBJ] <- [BF ObjectAccount]

If [SV File_Status] equal to [CO_SUCCESS]
MDDebug
"Valid Account Number" -> [BF szComment]
[VA evt_mnF0901_AID] -> [BF String1]

Else
MDDebug
"Invalid Account Number" -> [BF szComment]
[VA evt_mnF0901_AID] -> [BF String1]

End If


by Avatar Ng
2008/06/19

Friday, April 4, 2008

EnterpriseOne(R) object types

EnterpriseOne(R) object types:
- APPL - Applications, including Vocabulary Overrides, Bitmaps and Icons
- APPLVER - Application Versions, including Processing Options
- BL - Parent Libraries - definition only, the DLL is not copied
- BSFN - Business Functions, all types: C, NER and Java (SBF)
- BSVW - Business Views
- DD - Data Dictionary Items, including any Language Translations
- DSTR - Data Structures, including GT Object Type
- TBLE - Tables
- UBE - Batch Applications, including Vocabulary Overrides
- UBEVER - Batch Versions, including Processing Options, Data Selections, etc.
- UDC - User Defined Codes, including any Language Translations
- MENU/ACTIVERATASK - Menu / Task Items
- USEROVERRIDE - User Overrides
- WORKFLOW - Workflow Processes
- XMLP
- SVCT
- RPDF
- And some others: CLASS, DATASET, AUTOPILOTSCRIPT, ACTIVERARELATION,
ACTIVERARULE, ACTIVERACROSSREF, ACTIVERAVARIANT, USER, GENERIC,
PROJECTOBJECT, PROJECTUSER


by Avatar Ng

JDE - database independent platform

Found some interesting to share here ...

"JDE uses these APIs to dynamically generate platform-specific SQL statements. Thus, this middleware provides workstation-to-server and server-to-server database access. To accomplish this, both the legacy JDE OneWorld middleware as well as the newer JDE EnterpriseOne middleware incorporate database driver support for a variety of third-party database drivers including ODBC, for connection to Microsoft SQL server, OCI, for connection to Oracle database and Client Access 400 drivers for connectivity to IBM DB2."


As refer to above statement (from wiki), I think it clears lots of doubts that frequently raised by JDE developer: "why can't I just go to the lower level and write my own SQL statement ...?"

Well a lot of us might ask that due to some performance issues that JDE developer frequently faces.

JDE is meant to design in such a way so that it is so generic. However, it is common to the software developer that you have to sacrifice something in exchange for something else.
E.g.: you trade off performance OR h/w requirement for graphics in games.
In this case, JDE decided to trade off some-level of performance for greater database-support-range.

That reminds me a common quote that I often uses: "there is no best software, anything above average is good enough ..." (:P perfectionism might not totally agree with me, but hey ... at least that kills over-budget, behind-schedule or even worst project-dropping).


by Avatar Ng

Monday, March 17, 2008

RDA - the World version

Report Design Aid (RDA), in the World version (code in RPG language).

First complete report design aid in J.D.Edwards ever, recapturing the green screen century.























By Avatar Ng.

Saturday, February 16, 2008

JD Edwards - Introduction

J.D. Edwards, also called JDE, is a software company founded in March 1977 in Denver, Colorado by Jack Thompson, C.T.P."Chuck" Hintze, Dan Gregory and Ed McVaney.

The company made its name building accounting software for IBM minicomputers, beginning with the System/34 and /36, focusing from the mid 1980s on System/38 minicomputers, switching to the AS/400 when it became available.

Their main AS/400 offering was called JDEdwards WorldSoftware and is popularly called World.

In 1996, J.D. Edwards also launched a client-server version of their software called OneWorld.

The company's official name was J.D. Edwards World Source Company and it is located at One Technology Way, in Denver, CO 80237. JDE was bought out by PeopleSoft in 2003.

PeopleSoft, in turn, was purchased by Oracle Corporation in 2005.

[picked from wikipedia]