Interface XbpInterface
-
public interface XbpInterface
XBP Interface Currently supported XBP interfaces are XBP 1.0 and higher, that is XBP 0.1 is not supported.{ import com.redwood.scheduler.api.connector.sap.rfc.scripting.RfcConnectionManager; import com.redwood.scheduler.api.connector.sap.rfc.scripting.xbp.XbpInterface; import com.redwood.scheduler.api.connector.sap.rfc.scripting.xbp.XbpWork; import com.redwood.scheduler.api.model.SAPSystem; { Partition part = jcsSession.getPsrtitionByName("MyPartition"); SAPSystem sapSystem = jcsSession.getSAPSystemByName(part, "NSP"); RfcConnectionManager rfcConnectionManager = new RfcConnectionManager(sapSystem); rfcConnectionManager.callXBP(new XbpWork() { public void performWork(final XbpInterface xbp) { //… } }); } }
selectJobs
:{ import com.redwood.scheduler.api.connector.sap.rfc.scripting.RfcConnectionManager; import com.redwood.scheduler.api.connector.sap.rfc.scripting.xbp.XbpInterface; import com.redwood.scheduler.api.connector.sap.rfc.scripting.xbp.XbpJobSelectionOption; import com.redwood.scheduler.api.connector.sap.rfc.scripting.xbp.XbpJob; import com.redwood.scheduler.api.connector.sap.rfc.scripting.xbp.XbpWork; import com.redwood.scheduler.api.model.enumeration.SapBatchJobStatus; import com.redwood.scheduler.api.model.SAPSystem; import com.redwood.scheduler.api.date.DateTimeZone; import java.util.Iterator; { SAPSystem sapSystem = jcsSession.getSAPSystemByName("NSP"); RfcConnectionManager rfcConnectionManager = new RfcConnectionManager(sapSystem); rfcConnectionManager.callXBP(new XbpWork() { public void performWork(final XbpInterface xbp) { SapBatchJobStatus[] statuses = new SapBatchJobStatus[] { SapBatchJobStatus.Scheduled, SapBatchJobStatus.Finished }; DateTimeZone dtz = new DateTimeZone(); dtz.truncateHour(); Iterator<XbpJob> jobs = xbp.selectJobs(XbpJobSelectionOption.All, "*", null, statuses, dtz, new DateTimeZone() ); jobs.forEachRemaining(job -> { jcsOut.println("SAP job #" + job.getJobcount() + " named '" + job.getJobname() + "' has " + job.getNumberOfSteps() + " step(s)."); }); } }); } }
getInterceptedJobs
:import com.redwood.scheduler.api.connector.sap.rfc.scripting.RfcConnectionManager; import com.redwood.scheduler.api.connector.sap.rfc.scripting.xbp.XbpInterface; import com.redwood.scheduler.api.connector.sap.rfc.scripting.xbp.XbpJobSelectionOption; import com.redwood.scheduler.api.connector.sap.rfc.scripting.xbp.XbpJob; import com.redwood.scheduler.api.connector.sap.rfc.scripting.xbp.XbpWork; import com.redwood.scheduler.api.model.SAPSystem; import java.util.Iterator; { SAPSystem sapSystem = jcsSession.getSAPSystemByName("NSP"); RfcConnectionManager rfcConnectionManager = new RfcConnectionManager(sapSystem); rfcConnectionManager.callXBP(new XbpWork() { public void performWork(final XbpInterface xbp) { Iterator<XbpJob> interceptedJobs = xbp.getInterceptedJobs(XbpJobSelectionOption.All); interceptedJobs.forEachRemaining(interceptedJob -> { jcsOut.println("SAP job #" + interceptedJob.getJobcount() + " has been intercepted"); }); } }); }
raiseBatchEvent
:import com.redwood.scheduler.api.connector.sap.rfc.scripting.RfcConnectionManager; import com.redwood.scheduler.api.connector.sap.rfc.scripting.xbp.XbpInterface; import com.redwood.scheduler.api.connector.sap.rfc.scripting.xbp.XbpWork; import com.redwood.scheduler.api.model.SAPSystem; { SAPSystem sapSystem = jcsSession.getSAPSystemByName("NSP"); RfcConnectionManager rfcConnectionManager = new RfcConnectionManager(sapSystem); rfcConnectionManager.callXBP(new XbpWork() { public void performWork(final XbpInterface xbp) { xbp.raiseBatchEvent("Z_TEST", "Testing this."); } }); }
getVariant
:import com.redwood.scheduler.api.connector.sap.rfc.scripting.RfcConnectionManager; import com.redwood.scheduler.api.connector.sap.rfc.scripting.xbp.XbpInterface; import com.redwood.scheduler.api.connector.sap.rfc.scripting.xbp.XbpWork; import com.redwood.scheduler.api.model.SAPSystem; import com.redwood.scheduler.api.connector.sap.rfc.scripting.xbp.AbapVariantValue; import java.util.Iterator; { SAPSystem sapSystem = jcsSession.getSAPSystemByName("NSP"); RfcConnectionManager rfcConnectionManager = new RfcConnectionManager(sapSystem); rfcConnectionManager.callXBP(new XbpWork() { public void performWork(final XbpInterface xbp) { Iterator<AbapVariantValue> abapVariantValues = xbp.getVariant("RSUSR007", "TRAINING").getValues(); abapVariantValues.forEachRemaining(val -> { if (val.isParameter()) { jcsOut.println("SAP variant value " + val.getName() + " is a parameter."); } }); } }); }
readTable
:import com.redwood.scheduler.api.connector.sap.rfc.scripting.RfcConnectionManager; import com.redwood.scheduler.api.connector.sap.rfc.scripting.xbp.XbpInterface; import com.redwood.scheduler.api.connector.sap.rfc.scripting.xbp.XbpWork; Import com.redwood.scheduler.api.connector.sap.rfc.scripting.TableRow; import com.redwood.scheduler.api.model.SAPSystem; import java.util.Iterator; { SAPSystem sapSystem = jcsSession.getSAPSystemByName("NSP"); RfcConnectionManager rfcConnectionManager = new RfcConnectionManager(sapSystem); rfcConnectionManager.callXBP(new XbpWork() { public void performWork(final XbpInterface xbp) { String[] cols = new String[] { "BUKRS", "BUTXT", "WAERS" }; String[] wClauses = new String[] { , }; Iterator<TableRow> it = xbp.readTable("T001", "|", cols, wClauses, -1, 20); it.forEachRemaining(tr -> { jcsOut.println(tr.toString()); }); } }); }
BdcDynpro
:import com.redwood.scheduler.api.connector.sap.rfc.scripting.RfcConnectionManager; import com.redwood.scheduler.api.connector.sap.rfc.scripting.xbp.XbpInterface; import com.redwood.scheduler.api.connector.sap.rfc.scripting.xbp.XbpWork; import com.redwood.scheduler.api.connector.sap.rfc.scripting.BdcDynpro; import com.redwood.scheduler.api.connector.sap.rfc.scripting.BdcReturn; import com.redwood.scheduler.api.connector.sap.rfc.scripting.BdcDynproFactory; import com.redwood.scheduler.api.model.SAPSystem; { SAPSystem sapSystem = jcsSession.getSAPSystemByName("NSP"); RfcConnectionManager rfcConnectionManager = new RfcConnectionManager(sapSystem); rfcConnectionManager.callXBP(new XbpWork() { public void performWork(final XbpInterface xbp) { BdcDynpro[] bdcDynpro = new BdcDynpro[1]; bdcDynpro[0] = BdcDynproFactory.createBdcDynpro("SAPLSUU5", "0050"); bdcDynpro[0].addValue("BDC_OKCODE", "=SHOW"); bdcDynpro[0].addValue("USR-02-BNAME", "USER"); BdcReturn bdcReturn = xbp.callTransaction("SU01", bdcDynpro); BdcMessage[] msgs = bdcReturn.getMessages(); for (BdcMessage msg : msgs) { jcsOut.println(msg.getMessageV1() + " " + msg.getMessageType() + " " + bdcReturn.getReturnCode()); } } }); }
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description <T extends RfcFunctionModule>
voidattach(T functionModule)
Attaches an RFC-enabled detached function module context which can be used to call the function moduleBdcReturn
callTransaction(String transactionName, BdcDynpro[] bdcData)
Call a transactionvoid
confirmTransactionId(String tid)
Confirm a transaction id<T extends RfcFunctionModule>
TcreateRfcFunctionModule(Class<T> functionModule)
Create an RFC-enabled function module context which can be used to call the function moduleString
createTransactionId()
Create a transaction id for an IDOCIterator<XbpJob>
getInterceptedJobs(XbpJobSelectionOption option)
Get intercepted jobs.XbpJob
getJob(String jobname, String jobcount)
Get a specific jobString
getMessageText(BdcMessage message)
Retrieve the message text basedBdcMessage
reply from a transaction callString
getMessageText(String language, String msgid, String msgno, String v1, String v2, String v3, String v4)
Retrieve the message text based on it's id and number similar to the ABAP keyword MESSAGE.BusinessKey
getSapBusinessKey()
String
getSapClient()
String
getSapSystem()
String
getSapSystemPartition()
String
getSapUser()
SAPSystemInfo
getSystemInfo()
Get the details of the SAP system as returned by the function module RFC_SYSTEM_INFOTimeZone
getTimeZone()
Gets the time zone of the SAP systemUserDetails
getUserDetails(String userName)
Get user detailsAbapVariant
getVariant(String abapProgramName, String variantName)
Get the data of a variant of an ABAP programboolean
hasRedwoodTransports()
Check if Redwood transport are loaded and licensed.boolean
hasXbp1()
Check if XBP 1.0 is available.boolean
hasXbp2()
Check if XBP 2.0 is available.boolean
hasXbp3()
Check if XBP 3.0 is available.void
raiseBatchEvent(String eventId, String eventParameter)
Raise a batch eventIterator<TableRow>
readTable(String tableName, String delimiter, String[] columns, String[] whereClauses, int rowSkip, int rowCount)
Read the contents of the given SAP ABAP tableIterator<XbpJob>
selectJobs(XbpJobSelectionOption option, String jobnameMask, String usernameMask, SapBatchJobStatus[] statuses)
Select jobs by the name of the job, owner name and statusIterator<XbpJob>
selectJobs(XbpJobSelectionOption option, String jobnameMask, String usernameMask, SapBatchJobStatus[] statuses, DateTimeZone fromDateTime, DateTimeZone toDateTime)
Select jobs by the name of the job, owner name, status and timeIterator<XbpJob>
selectJobs(XbpJobSelectionOption option, String jobnameMask, String usernameMask, SapBatchJobStatus[] statuses, String eventId, String eventParameter)
Select jobs by the name of the job, owner name, status and eventvoid
sendIDoc(IDoc idoc, String tid)
Send an IDOC using a transaction id
-
-
-
Method Detail
-
getSystemInfo
SAPSystemInfo getSystemInfo()
Get the details of the SAP system as returned by the function module RFC_SYSTEM_INFO- Returns:
- details of the SAP system
-
hasXbp1
boolean hasXbp1()
Check if XBP 1.0 is available. NOTE: this check also succeeds if XBP 2.0 or higher is available. Since this interface does not support XBP 0.1, this check is expected to always succeed.- Returns:
true
if XBP 1.0 or higher is available,false
otherwise
-
hasXbp2
boolean hasXbp2()
Check if XBP 2.0 is available. NOTE: this check also succeeds if XBP 3.0 or higher is available.- Returns:
true
if XBP 2.0 or higher is available,false
otherwise
-
hasXbp3
boolean hasXbp3()
Check if XBP 3.0 is available. NOTE: this check also succeeds if XBP 4.0 or higher is available. Hold on... there is no XBP 4.0...- Returns:
true
if XBP 3.0 or higher is available,false
otherwise
-
hasRedwoodTransports
boolean hasRedwoodTransports()
Check if Redwood transport are loaded and licensed.- Returns:
true
if Redwood transport are loaded and licensed,false
otherwise
-
selectJobs
Iterator<XbpJob> selectJobs(XbpJobSelectionOption option, String jobnameMask, String usernameMask, SapBatchJobStatus[] statuses)
Select jobs by the name of the job, owner name and status- Parameters:
option
- selection optionjobnameMask
- job name mask.null
matches all job names.*
can be used as wildcard.usernameMask
- owner user name mask.null
matches all user names.*
can be used as wildcard.statuses
- arrays with job statuses.null
or empty array matches all job statuses.- Returns:
Iterator
with the jobs of typeXbpJob
-
selectJobs
Iterator<XbpJob> selectJobs(XbpJobSelectionOption option, String jobnameMask, String usernameMask, SapBatchJobStatus[] statuses, DateTimeZone fromDateTime, DateTimeZone toDateTime)
Select jobs by the name of the job, owner name, status and time- Parameters:
option
- selection optionjobnameMask
- job name mask.null
matches all job names.*
can be used as wildcard.usernameMask
- owner user name mask.null
matches all user names.*
can be used as wildcard.statuses
- arrays with job statuses.null
or empty array matches all job statuses.fromDateTime
- date and time from where to start the selection.null
matches all jobs from the beginning of the universe.toDateTime
- date and time up to where to do the selection.null
matches all jobs till the end of the universe.- Returns:
Iterator
with the jobs of typeXbpJob
-
selectJobs
Iterator<XbpJob> selectJobs(XbpJobSelectionOption option, String jobnameMask, String usernameMask, SapBatchJobStatus[] statuses, String eventId, String eventParameter)
Select jobs by the name of the job, owner name, status and event- Parameters:
option
- selection optionjobnameMask
- job name mask.null
matches all job names.*
can be used as wildcard.usernameMask
- owner user name mask.null
matches all user names.*
can be used as wildcard.statuses
- arrays with job statuses.null
or empty array matches all job statuses.eventId
- event id to search for.eventParameter
- event parameter value.null
matches all parameter values.*
can be used as wildcard.- Returns:
Iterator
with the jobs of typeXbpJob
-
getInterceptedJobs
Iterator<XbpJob> getInterceptedJobs(XbpJobSelectionOption option)
Get intercepted jobs. Returns an emptyIterator
if XBP 2.0 is not available, i.e. it is not required to explicitly check if XBP 2.0 is available before calling this method.
-
getJob
XbpJob getJob(String jobname, String jobcount)
Get a specific job- Parameters:
jobname
- name of the jobjobcount
- id of the job- Returns:
XbpJob
with the job details
-
raiseBatchEvent
void raiseBatchEvent(String eventId, String eventParameter)
Raise a batch event- Parameters:
eventId
- event ideventParameter
- parameter value of the event
-
getVariant
AbapVariant getVariant(String abapProgramName, String variantName)
Get the data of a variant of an ABAP program- Parameters:
abapProgramName
- name of the ABAP programvariantName
- name of the variant- Returns:
AbapVariant
with the variant details
-
readTable
Iterator<TableRow> readTable(String tableName, String delimiter, String[] columns, String[] whereClauses, int rowSkip, int rowCount)
Read the contents of the given SAP ABAP table- Parameters:
tableName
- name of the ABAP tabledelimiter
- column delimiter. Default is|
.columns
- array with column names that should be retrieved. All columns are retrieved if the array is empty ornull
.whereClauses
- array with where clauses for the query statement. No where clauses are applied if the array is empty ornull
.rowSkip
- number of rows to skip from the beginning of the result set, or-1
to get the complete result setrowCount
- number of rows to retrieve, or-1
to retrieve all rows- Returns:
Iterator
with the table rows of typeTableRow
-
callTransaction
BdcReturn callTransaction(String transactionName, BdcDynpro[] bdcData)
Call a transaction- Parameters:
transactionName
- name of the transaction to callbdcData
- data that is passed to the input fields of the transaction- Returns:
BdcReturn
object with the return code of the transaction call and all messages that were sent
-
getUserDetails
UserDetails getUserDetails(String userName)
Get user details- Parameters:
userName
-- Returns:
UserDetails
object containing details of the user in question
-
getMessageText
String getMessageText(String language, String msgid, String msgno, String v1, String v2, String v3, String v4)
Retrieve the message text based on it's id and number similar to the ABAP keyword MESSAGE. Example: xbp.getMessage("EN", "XM", "086", "01.08.2009", "01.09.2009", "3", "XBP") returns "Reorganization of the log for XBP (except from 16.09.2009 to 16.09.2009, audit 3)"- Parameters:
language
-msgid
-msgno
-v1
-v2
-v3
-v4
-- Returns:
- message text
-
getMessageText
String getMessageText(BdcMessage message)
Retrieve the message text basedBdcMessage
reply from a transaction call- Parameters:
message
- message as it came back from a transaction call- Returns:
- message text
-
getTimeZone
TimeZone getTimeZone()
Gets the time zone of the SAP system- Returns:
TimeZone
of the SAP system
-
createRfcFunctionModule
<T extends RfcFunctionModule> T createRfcFunctionModule(Class<T> functionModule)
Create an RFC-enabled function module context which can be used to call the function module- Parameters:
functionModule
- function module to call- Returns:
RfcFunctionModule
context
-
attach
<T extends RfcFunctionModule> void attach(T functionModule)
Attaches an RFC-enabled detached function module context which can be used to call the function module- Parameters:
functionModule
- function module to call
-
createTransactionId
String createTransactionId()
Create a transaction id for an IDOC- Returns:
- transaction id
-
confirmTransactionId
void confirmTransactionId(String tid)
Confirm a transaction id- Parameters:
tid
- transaction id to confirm
-
sendIDoc
void sendIDoc(IDoc idoc, String tid)
Send an IDOC using a transaction id- Parameters:
idoc
- IDOC to sendtid
- transaction id
-
getSapSystem
String getSapSystem()
-
getSapSystemPartition
String getSapSystemPartition()
-
getSapClient
String getSapClient()
-
getSapUser
String getSapUser()
-
getSapBusinessKey
BusinessKey getSapBusinessKey()
-
-