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)
            {
              //…
            }
          });
        }
      }
    
     
    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

      • 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
      • 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