Interface XbpInterface
-
- All Superinterfaces:
RfcInterface
public interface XbpInterface extends RfcInterface
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.String
getISOLanguage()
Get ISO language of the SAP systemXbpJob
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()
Get business key of the SAP systemString
getSapClient()
Get default client of the SAP systemString
getSAPLanguage()
Get SAP language of the SAP systemString
getSapSystem()
Get SAP system InstanceString
getSapSystemPartition()
Get Partition of the SAP systemString
getSapUser()
Get SAP userSAPSystemInfo
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- Specified by:
getSystemInfo
in interfaceRfcInterface
- 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.- Specified by:
hasRedwoodTransports
in interfaceRfcInterface
- 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- Specified by:
readTable
in interfaceRfcInterface
- 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- Specified by:
callTransaction
in interfaceRfcInterface
- 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- Specified by:
getUserDetails
in interfaceRfcInterface
- 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)"- Specified by:
getMessageText
in interfaceRfcInterface
- 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- Specified by:
getMessageText
in interfaceRfcInterface
- 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- Specified by:
getTimeZone
in interfaceRfcInterface
- 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- Specified by:
createRfcFunctionModule
in interfaceRfcInterface
- 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- Specified by:
attach
in interfaceRfcInterface
- Parameters:
functionModule
- function module to call
-
createTransactionId
String createTransactionId()
Create a transaction id for an IDOC- Specified by:
createTransactionId
in interfaceRfcInterface
- Returns:
- transaction id
-
confirmTransactionId
void confirmTransactionId(String tid)
Confirm a transaction id- Specified by:
confirmTransactionId
in interfaceRfcInterface
- Parameters:
tid
- transaction id to confirm
-
sendIDoc
void sendIDoc(IDoc idoc, String tid)
Send an IDOC using a transaction id- Specified by:
sendIDoc
in interfaceRfcInterface
- Parameters:
idoc
- IDOC to sendtid
- transaction id
-
getSapSystem
String getSapSystem()
Get SAP system Instance- Specified by:
getSapSystem
in interfaceRfcInterface
- Returns:
- SAP system Instance
-
getSapSystemPartition
String getSapSystemPartition()
Get Partition of the SAP system- Specified by:
getSapSystemPartition
in interfaceRfcInterface
- Returns:
- partition of the SAP system
-
getSapClient
String getSapClient()
Get default client of the SAP system- Specified by:
getSapClient
in interfaceRfcInterface
- Returns:
- default client of the SAP system
-
getSapUser
String getSapUser()
Get SAP user- Specified by:
getSapUser
in interfaceRfcInterface
- Returns:
- SAP user
-
getSapBusinessKey
BusinessKey getSapBusinessKey()
Get business key of the SAP system- Specified by:
getSapBusinessKey
in interfaceRfcInterface
- Returns:
- business key of the SAP system
-
getISOLanguage
String getISOLanguage()
Get ISO language of the SAP system- Returns:
- ISO language of the SAP system
-
getSAPLanguage
String getSAPLanguage()
Get SAP language of the SAP system- Returns:
- SAP language of the SAP system
-
-