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)
            {
              //…
            }
          });
        }
      }
    
    
    Selecting SAP jobs using 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).");
              });
            }
          });
        }
      }
    
    
    Selecting intercepted SAP jobs using 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");
            });
          }
        });
      }
    
    
    Raising an SAP batch event using 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.");
           }
         });
      }
    
    
    Reading an SAP Variant using 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.");
              }
            });
           }
         });
      }
    
    
    Reading an SAP database table using 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());
            });
           }
         });
      }
    
    
    Calling BDC Transactions using 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 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:
        trueif 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:
        trueif 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:
        trueif XBP 3.0 or higher is available, false otherwise
      • hasRedwoodTransports

        boolean hasRedwoodTransports()
        Check if Redwood transport are loaded and licensed.
        Returns:
        trueif 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 option
        jobnameMask - 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 type XbpJob
      • 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 option
        jobnameMask - 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 type XbpJob
      • 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 option
        jobnameMask - 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 type XbpJob
      • getInterceptedJobs

        Iterator<XbpJob> getInterceptedJobs​(XbpJobSelectionOption option)
        Get intercepted jobs. Returns an empty Iterator 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.
        Parameters:
        option - selection option
        Returns:
        Iterator with the jobs of type XbpJob
      • getJob

        XbpJob getJob​(String jobname,
                      String jobcount)
        Get a specific job
        Parameters:
        jobname - name of the job
        jobcount - id of the job
        Returns:
        XbpJob with the job details
      • raiseBatchEvent

        void raiseBatchEvent​(String eventId,
                             String eventParameter)
        Raise a batch event
        Parameters:
        eventId - event id
        eventParameter - 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 program
        variantName - 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 table
        delimiter - column delimiter. Default is |.
        columns - array with column names that should be retrieved. All columns are retrieved if the array is empty or null.
        whereClauses - array with where clauses for the query statement. No where clauses are applied if the array is empty or null.
        rowSkip - number of rows to skip from the beginning of the result set, or -1 to get the complete result set
        rowCount - number of rows to retrieve, or -1 to retrieve all rows
        Returns:
        Iterator with the table rows of type TableRow
      • callTransaction

        BdcReturn callTransaction​(String transactionName,
                                  BdcDynpro[] bdcData)
        Call a transaction
        Parameters:
        transactionName - name of the transaction to call
        bdcData - 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 based BdcMessage 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 send
        tid - transaction id
      • getSapSystem

        String getSapSystem()
      • getSapSystemPartition

        String getSapSystemPartition()
      • getSapClient

        String getSapClient()
      • getSapUser

        String getSapUser()