Message Number Changes
The message number changed from seven to eight digits to deal with custom objects rather than with CA Automic content and to enable an independent release cycle for API. All language dependent texts, such as messages and captions, are maintained at a central location.
Important! To distinguish between custom and CA Automic messages and captions, all message numbers between 0 and 09999999 are reserved for CA Automic messages. All numbers > 09999999 are reserved for custom messages.
Diese Seite beinhaltet Folgendes:
Possible Impact on Customers and Solutions
Filter Objects
Filter objects are intended to scan for string patterns and might break.
Example
Solution
Filter objects must be adapted. The objects can be found by simply searching them with the GUI search feature or on database level, by submitting a query such as:
select OH_Client, OH_Name, OFC_SrcName, OFC_FilterText
from OH, OFC
where OH_Idnr = OFC_OH_Idnr
and OH_DeleteFlag = 0
and OFC_FilterText like '%U[0-9][0-9][0-9][0-9][0-9][0-9][0-9]%'
Note: The SQL queries exactly for the pattern Unnnnnnn. If there are other patterns such as Unn*, the query must be changed accordingly.
Query result:
-
OH_Client: 50
-
OH_Name: FILTER.OUTPUT.NEW.1
-
OFC_SrcName: LOG
-
OFC_FilterText: U0003488
Process Pages of Executable Objects
Pre-Process, Process and Post-Process Pages of Executable Objects:
:SET&hnd=PREP_PROCESS_REPORT(,,ACT)
:PROCESS&hnd
: SET&line=GET_PROCESS_LINE(&HND)
: IFSTR_FIND(&line,"U2004943") <> 0
: MODIFY_STATE RETCODE=50
: ENDIF
:ENDPROCESS
Solution
The script on the left contains an STR_FIND() function to find a message number with pattern Unnnnnnn. To find all scripts with the same pattern, the following SQL can be used:
select OH_Client, OH_Name, OT_Lnr, OT_Content
from OH, OT
where OH_Idnr = OT_OH_Idnr
and OT_Content like '%U[0-9][0-9][0-9][0-9][0-9][0-9][0-9]%'
and OH_DeleteFlag = 0
Note: The SQL queries exactly for the pattern Unnnnnnn. If there are other patterns such as Unn*, the query must be changed accordingly.
Query result:
-
OH_Client: 50
-
OH_Name: SAP.06.20.JOBS.DISTRIBUTE
-
OT_Lnr: 1
-
OT_Content: :SET &hnd =PREP_PROCESS_REPORT(,,ACT,'*U2004943*','Col=delimiter',"delimiter=@;@")
-
OH_Client: 50
-
OH_Name: R3_GET_JOBS
-
OT_Lnr: 5
-
OT_Content: : IFSTR_FIND(&line,"U2004943") <> 0
-
OH_Client: 50
-
OH_Name: JS.SAP.BDC.CHECK
-
OT_Lnr: 1
-
OT_Content: :set &hnd =PREP_PROCESS_REPORT(,,ACT,'*U2004943*','Col=delimiter',"delimiter=@;@")
-
OH_Client: 50
-
OH_Name: INCLUDE_JOB_SAP_ALL_POST_SCRIPT
-
OT_Lnr: 67
-
OT_Content: : IF &MSGID#='U2004005'
-
OH_Client: 50
-
OH_Name: UC4TST.INC0314902.SCRIPT.GAR_##STATUS_1900##.SCRI
-
OT_Lnr: 9
-
OT_Content: :SET&hnd#=PREP_PROCESS_REPORT(,&RUNID_EVENT#,"ACT","*U0020206*Test string*")
Custom Application Programs
Custom application programs, which parse log files of CA Automic components, must be adopted.
Although the uc4.jar is not affected by any incompatible change, application programs must be checked for report scans.
Call API for SAP ABAP
The ABAP call API returns the message in a String:
call function 'UC4' destination 'UC4DSP'
exporting client = p_clint
trcflg = '0'
userabtl = p_abtei
username = p_usern
userpass = p_passw
queue = p_queue
importing msg = o_msg
run = o_run
tables script = uc4_script
exceptions
logon_failed = 1
others = 99.
o_msg would contain Unnnnnnnn ... (new format).
Solution
If an ABAP program uses the call API, they must be checked on how they deal with the returned string.
Call API for Java
The Java Call API returns the message number as String:
String msg = uc4.activateScript(":stop msg,50,\"Hello World\"");
System.out.println(msg);
Output:
U00000050 Hello World (new format)
Solution
If such client programs are in place, they must be checked on how they deal with the returned string.
Additional Impact on Customers Running Components of Different Versions
Be aware that to change everything to the new message format Unnnnnnnn requires all components to be from Version 11.1.
Although the old message format and the new message format never can be mixed within one report or within one log file, it might happen that old components are in place and create output in the former format.
Example
Running an SAP Agent V10 against Automation Engine V11.1 would cause 2 different logs:
-
Activation Log (NEW format - created from the Engine)
2015-08-19 10:42:29 - U00020206 Variable 'LINK#' was stored with value 'http://www.uc4.com'.
-
Agent Log (OLD format - created from the Agent)
2015-08-19 10:42:29 - U2000005 Job 'JOBS.SAP.01' with RunID '5124035' started.
2015-08-19 10:42:29 - U2004018 The job was successfully interpreted.
2015-08-19 10:42:29 R3_ACTIVATE_REPORT REPORT="RSPO0041",COVERPAGE="YES",VARIANT="STANDARD",ABORTED="NO"
2015-08-19 10:42:29 - U2004024 SAP job 'XBP_TEST_1' with number '10422000' was created successfully.
2015-08-19 10:42:29 - U2004020 ABAP Program 'RSPO0041' was scheduled with variant 'STANDARD' .
2015-08-19 10:42:29 - U2004005 SAP job 'XBP_TEST_1' with number '10422000' was released.
2015-08-19 10:42:29 - U2004073 SAP job 'XBP_TEST_1' with number '10422000' is now active.
2015-08-19 10:42:30 - U2004027 SAP job 'XBP_TEST_1' with number '10422000' ended normally.
2015-08-19 10:42:30 - U2004026 Job script ended normally.
In such cases, consider the different options. If old and new versions are in place at the same time, the scripts and filters need to be changed, so that they distinguish between versions of the data source.
Distinguish in a Filter object (Filter tab)
Apply an OR combination:
Distinguish in scripts based on the agent version
- Pull the agent list with a query such as this:
- Push the list of agents to a static Variable object with a script such as:
- Use the GET_VAR script function and conditional statements to retrieve and distinguish between versions of an agent:
select oh_name, host_htyp_hw, host_htyp_sw, host_hostAttrType, host_version, host_hostroles from oh, host
where oh_otype = 'HOST'
and oh_deleteflag = 0
and oh_idnr = host_oh_idn
:SET &hnd# =PREP_PROCESS_VAR('VARA.SQLI.HOST')
:PROCESS &hnd#
: SET &host#=GET_PROCESS_LINE(&hnd#,1)
: SET &version#=GET_PROCESS_LINE(&hnd#,6)
: PUT_VAR'VARA.STATIC.HOST',&host#,&version#
:ENDPROCESS
:SET &hostname# = GET_ATT('HOST')
:SET &version# = GET_VAR('VARA.STATIC.HOST','&hostname#')
:IF &version# = ' '
:...