Skip to content

Instantly share code, notes, and snippets.

@julbrs
Last active January 23, 2020 14:25
Show Gist options
  • Save julbrs/126d1c5703db3b99bee145cffa3e5ae4 to your computer and use it in GitHub Desktop.
Save julbrs/126d1c5703db3b99bee145cffa3e5ae4 to your computer and use it in GitHub Desktop.
BOBJ things

My BOBJ toolbox

Various scripts to help playing with a SAP Business Object system.

  • GetAllWebi.java will save webi files on disk
  • RescheduleInstance.java will generate instances to simulate a big system
package com.gbs.tools;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.logging.Logger;
import com.crystaldecisions.sdk.exception.SDKException;
import com.crystaldecisions.sdk.framework.CrystalEnterprise;
import com.crystaldecisions.sdk.framework.IEnterpriseSession;
import com.crystaldecisions.sdk.framework.ISessionMgr;
import com.crystaldecisions.sdk.occa.infostore.IFiles;
import com.crystaldecisions.sdk.occa.infostore.IInfoObject;
import com.crystaldecisions.sdk.occa.infostore.IInfoObjects;
import com.crystaldecisions.sdk.occa.infostore.IInfoStore;
import com.crystaldecisions.sdk.occa.infostore.IRemoteFile;
class GetAllWebi {
protected static Logger log = Logger.getLogger(GetAllWebi.class.getName());
protected static int METHOD = 1;
public static void main (String[] args) throws SDKException {
//LogController.setupLogger();
String user = args[0];
String password = args[1];
String cms = args[2];
String path = args[3];
System.out.println("Get all webis file");
ISessionMgr sm = CrystalEnterprise.getSessionMgr();
IEnterpriseSession enterpriseSession = sm.logon(user, password, cms, "secEnterprise");
IInfoStore iStore = (IInfoStore) enterpriseSession.getService("InfoStore");
IInfoObjects objs = iStore.query("SELECT * FROM CI_INFOOBJECTS, CI_APPOBJECTS, CI_SYSTEMOBJECTS WHERE SI_KIND='Webi'");
for(int i=0 ; i<objs.size(); i++) {
try {
IInfoObject object = (IInfoObject) objs.get(i);
IRemoteFile repFile = null;
IFiles files = object.getFiles();
for(int f=0; f<files.size(); f++) {
//IFile file = (IFile) object.getFiles().get(f);
repFile = (IRemoteFile) files.get(f);
if(METHOD==1) {
// method download
log.info("Save on disk "+object.getTitle() + "_" + repFile.getName() + " from repository: "+(repFile.download(path + object.getTitle() + "_" + repFile.getName().replaceAll("/", "_"))?"true":"false"));
}
else {
// IS method
InputStream is = repFile.getInputStream();
FileOutputStream outputStream = new FileOutputStream(new File(path + object.getTitle() + "_" + repFile.getName()));
int read = 0;
byte[] bytes = new byte[1024];
while ((read = is.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
}
repFile.commit();
}
}
catch (Exception e)
{
System.out.println(" Doc error: " + e);
e.printStackTrace();
//System.exit(-1);
}
}
}
}
package com.gbs.test;
import java.util.Iterator;
import com.businessobjects.rebean.wi.model.engine.IDocumentInstance;
import com.businessobjects.rebean.wi.model.inputform.IInputForm;
import com.businessobjects.rebean.wi.model.inputform.IInputForms;
import com.businessobjects.rebean.wi.model.reportspec.IRSReport;
import com.businessobjects.rebean.wi.model.reportspec.IRSReportStructure;
import com.businessobjects.rebean.wi.services.IDocumentInstanceManagementService;
import com.businessobjects.rebean.wi.services.IInputFormService;
import com.businessobjects.rebean.wi.services.IReportSpecService;
import com.businessobjects.sdk.core.Core;
import com.businessobjects.sdk.core.context.ContextParams;
import com.businessobjects.sdk.core.context.IContext;
import com.businessobjects.sdk.core.session.cms.CmsOccaScheme;
import com.businessobjects.sdk.core.session.cms.CmsScheme;
import com.businessobjects.sdk.core.session.scheme.IScheme;
import com.crystaldecisions.sdk.exception.SDKException;
import com.crystaldecisions.sdk.framework.CrystalEnterprise;
import com.crystaldecisions.sdk.framework.IEnterpriseSession;
import com.crystaldecisions.sdk.framework.ISessionMgr;
import com.crystaldecisions.sdk.occa.infostore.IInfoObjects;
import com.crystaldecisions.sdk.occa.infostore.IInfoStore;
import com.crystaldecisions.sdk.occa.infostore.ISchedulable;
public class RescheduleInstance {
public static void main(String[] args) throws SDKException {
int count = 17000;
int instanceID = 148383;
String documentIDs = "148323,225900,225904,225905,225906,225907,225908,225909,225910,225911,225912,225913,225914,225915,225916,225917,225918";
ISessionMgr sm = (ISessionMgr) CrystalEnterprise.getSessionMgr();
IEnterpriseSession enterpriseSession = sm.logon("user", "pw", "cms", "secEnterprise");
IInfoStore infoStore = (IInfoStore) (enterpriseSession.getService("InfoStore"));
IInfoObjects instances = infoStore.query("SELECT TOP 1000000 * FROM CI_INFOOBJECTS WHERE SI_PARENTID in (" + documentIDs + ")");
for(Object obj : instances) {
ISchedulable instance = (ISchedulable) obj;
System.out.println("Instance: " + obj.hashCode());
for(int i = 1;i <= count; i++) {
instance.schedule();
System.out.println(i);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment