Thursday, 20 May 2010

JDE E1 JAS “Record invalid” random errors

This is a classic and is occurring everywhere all of the time.  If you are getting errors like this, you must change the LocalLogicCatalog.xml file in the WEB-INF/Classes dir.  find the function that is failing (use the little yellow triangle when the error occurs on the browser) to find the function name.

Classics are b0000069.c and b0000095.c, there are heaps of others in the file.

Generally all of the table NERS (FXXXXX) run locally on the JAS server, but also the following “B”’s  Note that this is only in 8.98.2.2 (note that this sample is from 8.98.2.2, the functionality has been there for ages!

module="B0000045"
module="B0000069"
module="B0000095"
module="B0000128"
module="B0000130"
module="B0000198"
module="B0000399"
module="B0000580"
module="B0200098"
module="B03b0108"
module="B1100005"
module="B1100006"
module="B1100007"
module="B1100008"
module="B1100009"
module="B1100010"
module="B1100011"
module="B1100013"
module="B1100015"
module="B1100016"
module="B1100017"
module="B1100022"
module="B1701560"
module="B4000770"
module="B4002410"
module="B4301010"
module="B7600580"
module="B95400"
module="B9800100"
module="B9800150"
module="B9800181"
module="B9861a"

If these are bombing randomly for you,

Change the

<business-logic
         module="B0000045"
         function="ConvertNumericToString"
         run-local="true"/>

true to false, it is that easy.

WSJ cannot open .csv com.jdedwards.jas.ube? e1 JAS

Get prompted with “download .ube” file?  Don’t want this.  Try the registry setting below.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/csv]
"extension"=".csv"

Note that you should cut and paste this into a .reg file and run it on the machine that you want to get working!

From this:

image

to this:

image

Note that the change takes affect immediately.  No need to log in or out!

If you want the file name to have a decent name (R0010P…) you can set on

Server manager and a clustered agent for enterprise server

I could not find much “how to” documentation on this subject.

Actually, I could not find any.  I guess there is a point document out there, but my search skills are not up to scratch.

I have a client that is 8.96, they are upgrading to 8.98 and have clustered enterprise servers.  This is fairly easy to configure, but then how is server manager going to work?

I decided to install SM on the active node and install the files on the same drive as E1, so that the config would follow it’s way with JDE.  I do NOT think that this is the right move, but cannot be too sure.

I added the generic service clustered resource to the batch server group.  I then changed the properties of this service not to restart and not cause the group to restart.

Moved the group to the failover node and then installed the SM service on this second node (InstallAgentService.bat).  I then created some dependencies, that this service would only come up once JDE was up and the network name was up etc.  All important stuff.

I thought I had it in the bag, until…  I failed over and then went to the console.  The console was registering the base machines, not the cluster name.  So for each clustered server, I had two physical machines listed one with an active agent and active JDE and the other with shutdown JDE and shutdown agent. Surely this could get better!

I did some reading and they recommend host file changes for the cluster, but I don’t like doing that – especially for the agents that live on the cluster.

The only time you notice a problem is when you are running on a failover node – which is not a huge problem.  I’m guessing that if you do the following, the statistics will be available anyway:

  1. stop agent
  2. stop console
  3. rename folder in targets dir on agent for the service that you want to see
  4. start console
  5. start agent

I think you’ll then be able to see the server and the stats.

Wednesday, 19 May 2010

INCORRECT_CONVERSION_TO_DBFORMAT

19 May 2010 09:40:39,332 [SEVERE] USERNAME - [BASE] com.jdedwards.database.base.JDBException: [INCORRECT_CONVERSION_TO_DBFORMAT] Formatting error on converting AN8 of Everest type 9 from OneWorld to database format. com.jdedwards.database.base.JDBException: [INCORRECT_CONVERSION_TO_DBFORMAT] Formatting error on converting AN8 of Everest type 9 from OneWorld to database format.
java.lang.NumberFormatException: Invalid string input - COVENTRY G

Every seen a bunch of these in you JAS logs and wondered what they are about? Well, this is where JDE uses some special logic on a numeric field to do lookups on address book. Some AN8 fields allow you to enter a client name, and it will get converted (like the send message when you can type AN8 or username).

It's a lot of logs for something that should not be an error!!

Friday, 14 May 2010

AS/400 create table as basics

Ok, syntax lesson for CREATE TABLE on AS/400 SQL.

    • create table TESTDTA.F55XOBJ AS
    • (SELECT ABOBJ, count(1) AS COUNT
    • FROM TESTDTA.F55SUM
    • GROUP BY ABOBJ
    • HAVING COUNT(1) > 1)
    • WITH DATA | WITH NO DATA

Job done.  Just remember to alias your aggregates and include the data statement at the end!

More WSG

Messages are piling up with status 2, what is going on?  Easy

Remember the classic statement that will tell you everything about everything:

select count(1), ETEVNTST from testdta.f90710 group by ETEVNTST

Tell you the records and what status they are at.

If you have records at 2, it means that the trigger is not working, you need to create the trigger and the sequence.  Note that this is going to happen after every data refresh unless you manually create the trigger and the sequence in your prod environment (PRODDTA) so refreshes will pick it up.  Note that it will not get used in the prod environment, because it actually uses the SY812.F90710 (if you are being good and following best practice).

Note that this is oracle syntax:

Log on as JDEDBA

CREATE OR REPLACE TRIGGER TESTDTA.F90710_EVT_RIB
before insert on TESTDTA.F90710
for each row
declare
  nextseq number;
begin
  select TESTDTA.F90710_EVT_SEQ.nextval into nextseq from dual;
  :new.ETEVNTTIME := sysdate;
  :new.ETEVNTST := 3;
  :new.ETEVNTSEQ := nextseq;
end;
/

DROP SEQUENCE TESTDTA.F90710_EVT_SEQ;

CREATE SEQUENCE TESTDTA.F90710_EVT_SEQ
  START WITH 16011243
  MAXVALUE 999999999999999999999999999
  MINVALUE 1
  NOCYCLE
  CACHE 20
  ORDER;

GRANT SELECT ON  TESTDTA.F90710_EVT_SEQ TO RO_TESTDTA;

GRANT SELECT ON  TESTDTA.F90710_EVT_SEQ TO RW_TESTDTA;

If you’ve got a bunch of data in there at 2, create a copy of the table.  Install your triggers and the insert the data back, then all of the correct things will happen and the events will be marked as 3.  Then when they start getting grabbed by the txn server they will be marked as 4.  Once the delivery has been confirmed, they will be deleted!

When things are broke:

  COUNT(1)   ETEVNTST
---------- ----------
      5521          2

When things are working:

  COUNT(1)   ETEVNTST
---------- ----------
      3384          3
       685          4

Extending JDE to generative AI