Standard Address Book B.F. v/s Insert or Update operation to update Address Book info

Rauf

Rauf

VIP Member
I need to customize the address book application as per one of my client's requirement.

I started from a scratch application and reached in doubt: Should I use the standard business functions to add/update address, phone numbers, emails etc ?
I opened the standard applications like P01012SS(Self Service - Update Address Book Record) to know how it is working(like Update Address Book-B0101201, PhonesMBF-B0100090). By looking at this, I think, just a Table.Insert or Table.Update will make system in trouble.

Attached please find screen shot of my custom application, the client strictly needs the same layout.
 

Attachments

  • Emp. Admin & Gen. Info.jpg
    Emp. Admin & Gen. Info.jpg
    15.5 KB · Views: 61
Well.
I use UpdateAddressBook(B0101201) to update address on an employee(as found in P01012SS - Self Service - Update Address Book Record). But it gives two errors,
1. Business Unit Invalid
2. Business Unit has an invalid data dictionary value.

But the data structure is not receiving BU.

Any idea ?
 
Well.
I use UpdateAddressBook(B0101201) to update address on an employee(as found in P01012SS - Self Service - Update Address Book Record). But it gives two errors,
1. Business Unit Invalid
2. Business Unit has an invalid data dictionary value.

But the data structure is not receiving BU.

Any idea ?

turn on debug logs and then look in the code for where the error messages are being set. should lead you to what is required.

If you don't already have Objectbrowser installed and JDETrace from http://www.patwel.com/downloads/index.htm download and install them. execute the bsfn from object browser after you have turned debug logs on for the objectbrowser process.

The bsfn you are executing also appears to be a wrapper around AddressBookMasterMBF (N0100041), might be easier to use that bsfn
 
Last edited:
Thanks.
I also checked AddressBookMasterMBF (N0100041) function, but afraid of changing standard fields such as Employee Search Type, BU, etc. Because I just want to update Address Info.(Add. Line 1, Add. Line 2 .., City, Country etc. ) These are standard BFs, even though I could not find documentation/Business Function Notes :(
 
Last edited:
Where is the error, in your application or the BSFN?
If it's the APPL, is MCU a required field there with you and it's the blank MCU that is throwing the error?

If it's the BSFN, B0101201 just calls N0100041 AddressBookMasterMBF anyway. So uyou can find your error in there

MCU is checked on line 01270 for example.

Now it could be the AN8 you found has a naughty MCU in it on F0101, or something else
 
I am suspicious that the 32nd parameter to the function "szN0100041_Version" should be set correctly.

The error is as follows,


Code:
ERROR 1:----------------------------------------------------------  
Business Unit Invalid    
 
 A form level error has occurred.
CAUSE: The Business Unit entered does not exist in the Business Unit
Master file (F0006) or no value was entered for Business Unit.
In the following situations, use of the invalid G/L account
prefix '&' is not accepted unless the Business Unit exists in
the Business Unit Master file:
o using Journal Entries with VAT tax (P09106)
o using Multi-Voucher Entry program (P041017)
o using multi-currency processing
o entering 'G' type transactions in Cash Receipts (P03103)
RESOLUTION: Enter a valid Business Unit or add the entered Business Unit
to the Business Unit Master file (F0006).  
 ER Details:  
    Form   P59HRP03_W59HRP03B 
    Control Id   11 
    Control Title   OK 
    Event   Button clicked 
    Line No   7 
BSFN Details:  
    Source File   .........\package\DV812FB\source\ISCOLBU.c 
    Source Line   293 
    Error ID   0052 
 
ERROR 2:----------------------------------------------------------  
   Business Unit has an invalid data dictionary value.    
 
 A form level error has occurred.
CAUSE: The Business Unit does not match any of the valid values
specified in the Data Dictionary for this field.
RESOLUTION: Enter a valid value.
 
Last edited:
Rauf, does the MCU field go red on your form when you get the error?

ISCOLBU.c this is the internal BSFn that checks the MCU value lives on F0006

It could be your form or the DD item for MCU where you are doesn't allow blanks?
 
Last edited:
I am suspicious that the 32nd parameter to the function "szN0100041_Version" should be set correctly.

The error is as follows,


Code:
ERROR 1:----------------------------------------------------------  
Business Unit Invalid    
 
 A form level error has occurred.
CAUSE: The Business Unit entered does not exist in the Business Unit
Master file (F0006) or no value was entered for Business Unit.
In the following situations, use of the invalid G/L account
prefix '&' is not accepted unless the Business Unit exists in
the Business Unit Master file:
o using Journal Entries with VAT tax (P09106)
o using Multi-Voucher Entry program (P041017)
o using multi-currency processing
o entering 'G' type transactions in Cash Receipts (P03103)
RESOLUTION: Enter a valid Business Unit or add the entered Business Unit
to the Business Unit Master file (F0006).  
 ER Details:  
    Form   P59HRP03_W59HRP03B 
    Control Id   11 
    Control Title   OK 
    Event   Button clicked 
    Line No   7 
BSFN Details:  
    Source File   .........\package\DV812FB\source\ISCOLBU.c 
    Source Line   293 
    Error ID   0052 
 
ERROR 2:----------------------------------------------------------  
   Business Unit has an invalid data dictionary value.    
 
 A form level error has occurred.
CAUSE: The Business Unit does not match any of the valid values
specified in the Data Dictionary for this field.
RESOLUTION: Enter a valid value.

turn debug on, you will see the data structure in and out of the bsfn
 
ER Details:
Form P59HRP03_W59HRP03B
Control Id 11
Control Title OK
Event Button clicked
Line No 7


What do you have on line 7 of your Ok button? The call to the BSFN?
 
Yes. But even from the FDA, we can get the parameters of the BF.
There is no parameter for BU, and no documentation too :(
 
Exactly.
The line is a call to the BF. I wonder why does it get the error as it doesn't receive the BU parameter.
In the form I have MCU field, but it filled with MCU from F0006 table.
 
I searched JDEDEBUG.LOG and found the following 'error' details. This text is found at the last of the debug file,
Code:
Jan 11 17:18:26.731198 - 8480/12304 WRK:Starting jdeCallObject        	Return value is 2 for UpdateAddressBook. (BSFNLevel = 1) 
Jan 11 17:18:26.731199 - 8480/12304 WRK:Call Object                   	Entering JDB_ValidateHUser (User 26F70BA0) 
Jan 11 17:18:26.731200 - 8480/12304 WRK:Call Object                   	Exiting JDB_ValidateHUser with Success (User 26F70BA0) 
Jan 11 17:18:26.731201 - 8480/12304 WRK:Call Object                   	KNT0000068 - jdeCallObject failed for UpdateAddressBook 
Jan 11 17:18:26.731202 - 8480/12304 WRK:Call Object                   	no action properties to send, action property count = 0 
Jan 11 17:18:26.731203 - 8480/12304 WRK:Call Object                   	no item properties to send, item property count = 0 
Jan 11 17:18:26.731204 - 8480/12304 WRK:Call Object                   	Error count: Sent back - Server new #Error[2], #Warning[0]: Both Server&Client #Error[2] #Warning[0] 
Jan 11 17:18:26.731205 - 8480/12304 WRK:Call Object                   	END BUSINESS FUNCTION   type 901, 127.0.0.1_2177_m2866 
Jan 11 17:18:26.731206 - 8480/12304 WRK:Call Object                   	Checking Queue for transactions
 
The error is happening before the "Return value is 2 ..." line, inside the Update Address Book function. Can you post the entire debug log?
 
Please find the attached file.

The first error is in line number 284
Code:
ERROR INFO JDEERR - ID= 0, Error= 0052 - \JDDEP01\E812\DV812\package\DV812FB\source\ISCOLBU.c, Line= 293

The second error is in line number 346
Code:
ERROR INFO JDEERR - ID= 0, Error= 019T - \builds\8.96.04.00.02\Rels\common\Jdekrnl\runtime\Rtk_ddvl.c, Line= 535

I wonder why do the error comes as I don't pass any parameters or my form doesn't contain MCU field.
But as I have read in the "JD Edwards EnterpriseOne Address Book 8.12 Implementation Guide", Page No. 114, setting PO for P01012SS
Code:
1. Address Book MBF (P0100041) Version
Specify the version of the Address Book MBF program that you want the system to use.

we need to specify the Address Book MBF (P0100041) Version while calling the Update Address Book. I checked the P0100041 Version, and found that it receives a MCU as processing option(Default Business Unit), ("JD Edwards EnterpriseOne Address Book 8.12 Implementation Guide", Page No. 34). It says,
Code:
1. Default Business Unit 
Specify the business unit for the system to use when no business unit is
specified in the Address Book Revisions program (P01012). If no value is
specified for this processing option and the business unit in the Address Book
Revision program has no value specified, the system enters a 1 in the Business
Unit field of the address book record.

I think, this PO makes all issues. As it puts a 1 if the PO is blank.
 

Attachments

  • jdedebug_error.txt
    54.6 KB · Views: 8
Sounds like you got it. While your log is not the complete call to the MBF, it does show where the MCU value of 1 is trying to be validated and is failing.
 
Hope you did go through the debug log file I attached with the previous post.

I am not sure I found the issue. But for the address book number, a valid MCU is already defined. Then why does the system put a default value 1.
The standard application(P01012SS) is also giving the same error.

So what should I do to fix the issue ?
 
Finally I found the issue.
The "Update Address Book" BF is related with P0100041|ZJDE0001 version. There we have to define a "Default Business Unit". BUT as the documentation explains, this PO is for
Code:
Specify the default business unit to use when creating address book records.
.
Note the word "creating address book records". I am not CREATING just updating the address book. Then why does the error come? No answer :(
 
The debug log is incomplete. In order to tell exactly what is happening we need the log for the entire call to the AB MBF. That shows the parameters going into the function and what is returned.
 
See the complete log file. I am passing a version(VERBE009) of P0100041, but the AddressBook-MBF always takes the default version ZJDE001. Why ? :(
 

Attachments

  • jdedebug.log.zip
    63.6 KB · Views: 8
Back
Top