We all use some UBE as subsytem in JDE for various reasons. As we know these subsystem jobs have to started manually but many a times we run UBE’s using jdeLaunchUBEEx API. What happens if we Launch a Subsytem UBE using jdeLaunchUBEEx or what happens if we write a record in the subsystem master table for a UBE which is not defined as subsystem. Surely we will not get the desired ouput.
To avoid such a scenario and to properly validate there has to be some mechanism to find out if a Report is defined as subsytem or no . After digging into the RDA specs and various other tables storing report properties this is what I found.
One can find the report properties or the overides from F98761. Depending on the value in the record type field (RSRCRDTP) you can determine what type of override exists for the version.(Deepesh posted about this in his previous post)
Based on testing and review of the RDASPEC records, the record types are the following:
1 = Base Record
2 = Sections (will have one type 2 record for each section of a report)
3 = Report objects (one record for each report variable and constant on the report)
4 = Column calculation defined on tabular sections
5 = Subsection join (defines join information between sections)
6 = Data Sequencing (will have one record for each data item included in data sequencing)
7 = Data Selection (will have one record for each data item included in data selection)
8 = Database output (one record indicating destination for output -filename)
9 = Database output (one record for each mapping in database output)
10 = Row on tabular section (one record for each row)
11 = Cell on tabular section (one record for each cell)
13 = Row calculation defined on tabular section
16 = Event rule overrides performed at version level
17 = Row on tabular section (record for defined row criteria
18 = Cell on tabular section (record for defined cell criteria)
19 = Column data selection on tabular section
20 = Column and row overrides (tabular section only)
We will require Base record from the RDASPEC i.e F98761.RSRCRDT = 1, to fetch the Report Properties.
As you can see we have have different report properties enabled or disabled. Each of this property have a unique value defined. The question is how is this report property value calculated. After doing some analysis this is what I found out :
Property Values(2 raised to x ;x=0,1,2…)
|Print grand totals||4|
|Limit no of Primary Table row||8|
|Print Cover Page||16|
|Paper Size Custom||32|
|Suppress All Outputs||256|
For Eg If a report has both “Print grand totals” and “Susbsytem job” checked then the value stored in report property will be 5(4+1). Refer Fig 1.
As we can see all the report properties are even numbers except for subsystem; we can be sure that if subsytem is checked then the sum total will always be an Odd number.
Using this logic we can write a BSFN to do a fetch from the RDA spec for a Report Version combination and check if the dwReportProperty is an even number or an odd number.
If its an odd number then surely the UBE is a substem UBE.
There could be different ways as well, but this works fine.
Let me know if you the need the BSFN code to fetch these values.