Hi All,
Any idea what could be the substitute to SI_NEW_JOB_ID property that is missing in service pack 6 can be replaced with which other property? Does any equivalent object property exists?
Thanks,
Shubha
Hi All,
Any idea what could be the substitute to SI_NEW_JOB_ID property that is missing in service pack 6 can be replaced with which other property? Does any equivalent object property exists?
Thanks,
Shubha
Hi Shubha,
Once you schedule, the collection is updated, but the infoobject is not. I believe you have to try pulling the report back out of the collection to get the ID:
infoStore.schedule(collection);
report = collection[1];
details.InstanceId = ( int ) report.Properties \"SI_NEW_JOB_ID\" .Value;
SetStatus( details, ScheduleStatus.Success, process );
return true;
The SI_NEW_JOB_ID property is available immediately after an InfoObjects collection is scheduled, and it remains available as long as reference to the collection or the InfoObject is retained. This property is notaccessible by querying the InfoStore object.
This property is only applicable to InfoObjects that can be scheduled (for example, report objects).
Have you tried to get the SI_NEW_JOB_ID property after scheduling the report?
Awaiting for your response.
Thanks,
Shailendra
Hi,
i'd like to build a Java consumer for BusinessObjects Web Service.
I read in the doc that I need to add to my project the Java consumer JAR files located in C:\Program Files (x86)\SAPBusinessObjects\SAP BusinessObjects Enterprise XI 4.0\java\lib.
The problem is that there are about 400MB of jars so my question is: What are the web services consumer jars that can I extract form that folder and include and distribute in my application?
I use SAP BO 4.1
Hi Ricardo,
You can use the below list of jar files to run an application which is based on Web Services Java SDKs:
axiom-api-1.2.13.jar
axiom-impl-1.2.13.jar
axis2-adb-1.6.2.jar
axis2-kernel-1.6.2.jar
axis2-transport-http-1.6.2.jar
axis2-transport-local-1.6.2.jar
axis2-xmlbeans-1.6.2.jar
commons-codec-1.3.jar
commons-httpclient-3.1.jar
commons-logging-1.1.1.jar
dsws-bicatalog.jar
dsws-biplatform.jar
dsws-common-util.jar
dsws-common-util_tr.jar
dsws-common.jar
dsws-publish.jar
dsws-reportengine.jar
dsws-session.jar
dsws-webishared-provider.jar
httpcore-4.0.jar
mail-1.4.jar
neethi-3.0.2.jar
TraceLog.jar
wsdl4j-1.6.2.jar
xmlbeans-2.3.0.jar
XmlSchema-1.4.7.jar
You can find the above list of jar files at below location:
C:\Program Files (x86)\SAP BusinessObjects\SAP BusinessObjects Enterprise XI 4.0\web services\en\dsws_consumer\data\dswsJavaApi
The above location contains some jars & a folder as external. You also have to use the external jar files in your eclipse project to run an application based on Web Services Java SDKs.
Hope it helps.
Thanks,
Shailendra
Could you please let me know once you have the code.
I am also working on the same, if I happen to complete I shall post it to you.
Plese send me a test mail @ kpavan999@gmail.com
Thanks in advance.
Hi..
Can anyone please let me know the status of this ADAPT as this issue tracked as a bug.
Thanks.
I have it - it's complicated! I can't post all of the code because I'm writing this for a client, but I hope this helps you move in the right direction....
Basically what you have to do is this:
1. Create a new IReport based on the plugin (like regular scheduling code).
2. To set each of the following, use the sample scheduling code that's available, but get the property values from the appropriate IProperties of the IInfoObject of the schedule you're trying to recreate - you can't get them using the plugins.
a. Destination
IProperties destProps = oldRpt.getSchedulingInfo().getProperties("SI_DESTINATIONS");
IProperties destSchedProps = destProps.getProperties("1").
getProperties("SI_DEST_SCHEDULEOPTIONS");
b. Prompts
IProperties oldProps = oldRpt.getProcessingInfo().getProperties("SI_PROMPTS");
int cnt = PropertyHelper.getIntProp(oldProps, "SI_NUM_PROMPTS", _log);
for (Integer i=1; i<=cnt; i++){
//process each parameter
}
c. Output Format (if it's not Crystal Report, Crystal Report Read Only, Tab Separated, XML)
IProcessingInfo oldPi = oldRpt.getProcessingInfo();
IProperties oldProps = oldPi.properties().getProperties("SI_FORMAT_INFO");
String oldFmt = oldProps.getString("SI_FORMAT");
IReportFormatOptions.CeReportFormat newFmt
if (oldFmt.startsWith("u2fcr:0") ){
newFmt = IReportFormatOptions.CeReportFormat.CRYSTAL_REPORT;
} else if (oldFmt.equals("u2fcr:2")){
newFmt = IReportFormatOptions.CeReportFormat.RPTR;
} else if (oldFmt.equals("crxf_xls:9")){
newFmt = IReportFormatOptions.CeReportFormat.EXCEL;
} else if (oldFmt.equals("crxf_xls:10")){
newFmt = IReportFormatOptions.CeReportFormat.EXCEL_DATA_ONLY;
} else if (oldFmt.equals("crxf_xls:11")){
newFmt = IReportFormatOptions.CeReportFormat.EXCEL_2007_DATA_ONLY;
} else if (oldFmt.equals("u2fwordw:0")){
newFmt = IReportFormatOptions.CeReportFormat.WORD;
} else if (oldFmt.equals("crxf_pdf:0")){
newFmt = IReportFormatOptions.CeReportFormat.PDF;
} else if (oldFmt.equals("crxf_rtf:0")){
newFmt = IReportFormatOptions.CeReportFormat.RTF;
} else if (oldFmt.equals("crxf_rtf:1")){
newFmt = IReportFormatOptions.CeReportFormat.RTF_EDITABLE;
} else if (oldFmt.equals("u2ftext:0")){
newFmt = IReportFormatOptions.CeReportFormat.TEXT_PLAIN;
} else if (oldFmt.equals("u2ftext:2")){
newFmt = IReportFormatOptions.CeReportFormat.TEXT_PAGINATED;
} else if (oldFmt.equals("u2ftext:1")) {
newFmt = IReportFormatOptions.CeReportFormat.TEXT_TAB_SEPARATED;
} else if (oldFmt.startsWith("u2fsepv")){
newFmt = IReportFormatOptions.CeReportFormat.TEXT_CHARACTER_SEPARATED;
} else if (oldFmt.startsWith("u2fxml2")){
newFmt = IReportFormatOptions.CeReportFormat.XML;
}
d. Scheduling options
A lot of this you can get straight from the ISchedulingInfo of the old report. However, you'll need to go to the properties to get the days, months, calendar template, etc.
The only thing that I'm not setting yet is events.
I got a LOT of information by creating a Crystal report that had one of each type of parameter and then scheduling it with a descriptive instance name for a future date to each of the formats and using each of the scheduling options. I would then run a query like this in QueryBuilder to get the specific property names, etc.
Select SI_NAME, SI_PROCESSINFO, SI_SCHEDULEINFO from CI_INFOOBJECTS where SI_PARENTID = <id of report template> and SI_SCHEDULE_STATUS = 9 <gets only scheduled instances.)
-Dell
Hi,
We’ve developed an utility using BOXI Java SDK to extract Deski reports from BOXI repository and save them locally in PDF format. This utility is cashing after extracting around five thousand report instances. Some reports have over thousand instances.
Error - [main] RootLogger - Exception while writing into PDF file There is no server available to process your request. Please try again later, or contact your system administrator if the problem persists.[ RCIRAS0384 ]
The servers didn’t crash when we checked them in CMC but there were core files generated by boe_fcprocd process.
Environment –
OS – Red Hat Linux 5.5
BOXI – 3.1 SP6.1
Database – Oracle 11g
SDK – Java
Java - jdk1.6.0_17
Appreciate your help!
Thanks!
Hi Ryan,
can you please confirm if we follow just 3 above steps we can reschedule the instance? As Im unable to do it.
Could you please help me here.
Thank you Dell, you are correct, this looks very complicated . I will try to integrate this code myself.
I have one more question, I want to list all the events. I have the query "SELECT SI_ID, SI_NAME, SI_FEATURES FROM CI_SYSTEMOBJECTS WHERE SI_KIND= 'Event' " and in my SDK code I have below:
stmt = conn1.createStatement(); | |||||||||
ResultSet rs = stmt.executeQuery(query); | |||||||||
while (rs.next()) { | |||||||||
k++; | |||||||||
int sno = rs.getInt("SNO"); | |||||||||
String ID = rs.getString("SI_ID"); | |||||||||
String title = rs.getString("SI_NAME"); |
And now I will start printing sno,ID,title.
Now is this correct way to do it? How to use getproperty() to handle columns? Are both are same?
Hope you are getting my question, pls let me know if not.
Hi Kishore,
Can you give more details about the environment. How many desktop intelliegence servers you have in your environment.
Are all desktop intelligence servers enabled and running.
How frequently this problem occurs? Is this happened only once or you have observed the behaviour all the time when running the batch.
Also I would like to log the names of all the reports which are being converted to pdf and check for the report for which we got the exception. By this we can check if any server group is assigned to the report. I would then export the report to pdf from infoview and observe the behavior. I am not sure how much helpful it can be, but it is worth capturing the names, if this happens intermittently.
Thanks,
Prithvi
Hi,
I'm a French student so I'm sorry if my English is not perfect.
I am contacting you because I can see on this topic that you used the 'isAllowed()' function. I understand well how it works but I don't find the correspondance between the rights IDs ans their signification. I think it's something like "description" but I would like to have the complete list of the IDs. If you globaly explain more this function it will be great.
Moreover, do you know if it's possible to retreive the level access (Full control, No Acces, View, View on demand...) instead of a typical right?
For information, I'm working on the construction of a matrix of folders in one side and users in the other and put this level of acces in each cell in VBA.
I'm using XI 3.1version and Excel 2010.
Thanks for your answer.
Yoann
(Here's the question that I posted on http://stackoverflow.com/questions/23897994/increase-the-precision-for-a-number-floating-point-column-via-the-crystal-repo - posting here for hopefully some comments - reposted from a previous SAP discussion)
I'm a newbie when it comes to making use of the crystal reports java sdk (Business Objects 4.1), and I'm running into a frustrating issue. I'm attempting to augment the format of a dynamically generated column in Excel/CSV that happens to be representing a floating point number (percentage), but when no matter what I've done with INumericFieldFormat, I can't get the output I need.
Take for instance 0.0625 - when it is rendered in Excel, the cell displays it as 0.06 (two decimal places), but the actual value when you click on the cell shows up correctly in the formula bar. For CSV, the output is always truncated at 2 decimal places. What I was hoping for was to set the number of decimal places and rounding format, and that would properly display the number.
Here's a snippet of my code so far:
INumericFieldFormat numericFieldFormat = new NumericFieldFormat(); |
numericFieldFormat.setAllowFieldClipping(false); | ||
numericFieldFormat.setCurrencySymbolFormat(CurrencySymbolType.noSymbol); | ||
numericFieldFormat.setCurrencySymbol(""); | ||
numericFieldFormat.setCurrencyPosition(CurrencyPositionFormat.leadingCurrencyOutsideNegative); | ||
numericFieldFormat.setDecimalSymbol("."); | ||
numericFieldFormat.setDisplayReverseSign(false); | ||
numericFieldFormat.setEnableSuppressIfZero(false); | ||
numericFieldFormat.setEnableUseLeadZero(true); | ||
numericFieldFormat.setNDecimalPlaces(10); | ||
numericFieldFormat.setNegativeFormat(NegativeType.leadingMinus); | ||
numericFieldFormat.setOneCurrencySymbolPerPage(false); | ||
numericFieldFormat.setRoundingFormat(RoundingType.roundToTenBillionth); | ||
numericFieldFormat.setThousandsSeparator(false); | ||
numericFieldFormat.setThousandSymbol(","); | ||
numericFieldFormat.setUseAccountingFormat(false); | ||
numericFieldFormat.setZeroValueString("0"); | ||
numericFieldFormat.setConditionFormulas(null); |
final ICommonFieldFormat commonFieldFormat = new CommonFieldFormat(); |
commonFieldFormat.setEnableSuppressIfDuplicated(false); | ||
commonFieldFormat.setEnableSystemDefault(false); | ||
commonFieldFormat.setConditionFormulas(null); |
final IObjectFormat objectFormat = new ObjectFormat(); |
objectFormat.setAllowCustomizeInTemplate(true); | ||
objectFormat.setEnableSuppress(false); | ||
objectFormat.setEnableKeepTogether(true); | ||
objectFormat.setEnableCloseAtPageBreak(true); | ||
objectFormat.setHorizontalAlignment(Alignment.useDefault); | ||
objectFormat.setEnableCanGrow(true); | ||
objectFormat.setToolTipText(StringUtils.EMPTY); | ||
objectFormat.setCssClass(StringUtils.EMPTY); | ||
objectFormat.setConditionFormulas(null); | ||
objectFormat.setHyperlinkText(StringUtils.EMPTY); | ||
objectFormat.setHyperlinkType(HyperlinkType.undefined); | ||
objectFormat.setTextRotationAngle(TextRotationAngle.rotate0); |
final IFieldFormat fieldFormat = new FieldFormat(); |
fieldFormat.setNumericFormat(numericFieldFormat); | ||
fieldFormat.setCommonFormat(commonFieldFormat); | ||
fieldObject.setFieldFormat(fieldFormat); | ||
fieldObject.setFormat(objectFormat); | ||
reportDefController.getReportObjectController().add(fieldObject, section, -1); |
So far I've been able to make the Excel output look like 0.0600000000 and the CSV output look like 600000000, but that's not what I need. Any help is appreciated!
Update
One thing I've noticed, is that adding a formula to do the formatting, for the most part, gives a "bad formula result" error:
ConditionFormula roundingFormula = new ConditionFormula();
roundingFormula.setFormulaNullTreatment(FormulaNullTreatment.asDefaultValue);
roundingFormula.setSyntax(FormulaSyntax.crystal);
roundingFormula.setText("Round(" + crystalDatasetField.getFormulaForm() + ",10)");
...
roundingFormula.setText("Numbervar x; x := " + crystalDatasetField.getFormulaForm() + "; x := Round(x, 10)");
...
roundingFormula.setText("ToNumber(ToText(" + crystalDatasetField.getFormulaForm() + ",\"0.00\",10))");
However, the following works, but rounds to the zeroth place:
ConditionFormula roundingFormula = new ConditionFormula();
roundingFormula.setFormulaNullTreatment(FormulaNullTreatment.asDefaultValue);
roundingFormula.setSyntax(FormulaSyntax.crystal);
roundingFormula.setText("Round(" + crystalDatasetField.getFormulaForm() + ")");
Hi,
I need to schedule webi report which has prompts. Can we have schedule webi report with prompts in 4.0.
I was able set values for prompts and refresh the webi report using documentInstance object. I think we can't use this object for scheduling right?
Also, I would like set values from LOV.
Could you please help to find solution.
Thanks
Venkat
I am developing a post processing publication extension to password protect pdf ( for web intelligence reports ) . For that I need the path of the source file to be encrypted.
Hi Akash,
By the path of source file, I assume that you are referring to the frs path.
The frs path can be found from the query builder.
Execute the query
Select * from ci_infoobjects where si_kind='webi' and si_instance=0 and si_id=<webi report id>
Look for the property SI_FILES. In this there is a subproperty bag named as SI_PATH which holds the input frs path for the report.
Now as you are looking to implement publication extension, you would need to use BusinessObjects SDKs to get the details.
So the work flow would be to
1. Logon to Enterprise system
2. Query the infostore to retrieve the report from the repository.
3. Call the getFiles() method on the infoobject which will return IFiles.
4. Call the getFRSPathURL() on the IFiles object, it would return the String for the frs path.
Below is a small snippet logic
=====================
IInfoObjects infoobjects=infoStore.query("select * from ci_infoobjects where si_instance=0 and si_kind='webi' and si_id=reportid ");
IInfoObject infoobject=(IInfoObject)infoobjects.get(0);
IFiles files=infoobject.getFiles();
String frsPath=files.getFRSPathURL();
=======================
More details can be found from the developers guide and api reference guide available at www.help.sap.com
Hope it helps you move in the right direction.
Thanks,
Prithvi
Hello Venkat,
Unfortunately the feature of scheculing a webi reports with prompts have been deprecated from the
version 4.0 using the enterprise java sdks.
In XI 3.1, promtsutil class was used for setting prompts while scheduling a webi report using java sdks, which have been deprectaed from 4.0 and there is no replacement for the same in enterprise java sdks.
However, this feature was re-implemented in the new Restful web services and is availble for BI 4.0 SP6 onwards as far as I am aware of.
Please refer to the below document for better understanding.
http://help.sap.com/businessobject/product_guides/boexir4/en/xi4sp6_webi_restful_ws_en.pdf
Also please refer to the forum http://scn.sap.com/community/restful-sdk for any queries related to Restful webservices sdks.
Thanks,
Prithvi
No, it's not. Also, there is no property called "SNO" in an event. Here are the properties for custom, schedule, and file events:
Here's what I would do (assuming that you're using the BI Platform SDK and that you have an IEnterpriseSession called "eSession" available from logging in to the CMS:
IInfoStore iStore = eSession.getService("InfoStore");
String query = "SELECT SI_ID, SI_NAME, SI_KIND, SI_FEATURES FROM CI_SYSTEMOBJECTS WHERE SI_KIND= 'Event' ";
IInfoObjects iobjs = iStore.query(query);
if (iobjs != null){
for (Object obj : iobjs){
IInfoObject iobj = (IInfoObject) obj;
Integer id = iobj.getID();
String title = iobj.getTitle();
String eventType = iobj.getSpecificKind();
if (eventType = "FileEvent"){
IFileEvent fEvent = (IFileEvent) iobj;
String filename = fEvent.getFileName();
String serverName = fEvent.getServerFriendlyName();
//output event info
} else { //eventType is "ScheduleEvent" or "UserEvent"
//output event info
}
}
}
-Dell
Hi Atul,
Even I am trying to pass user id and password to the Standalone Java application with in BO server for authentication.
Can you please give me your inputs to achieve the above scenario?
Regards,
Rakhy.
Thank you Prithivarj. I think we need to have 4.1 sp2 for Full functionality of REST..