SAP ofrece un amplio soporte de OData en todos sus productos. Así que OData puede ser una excelente opción para intercambiar datos entre SAP e InterSystems IRIS.
  • Sigue las instrucciones del artículo https://es.community.intersystems.com/post/intersystems-iris-y-odata para exponer tus datos de IRIS como servicios Odata de REST.
  • Para consumir datos de InterSystems IRIS desde SAP utilizando OData, sigue estos pasos (créditos de los siguientes pasos a este tutorial: https://sapyard.com/sapui5-for-abapers-consuming-odata-service-from-sapui5-application-crud-operations/) :
  • Crea una nueva aplicación SAPUI5 con el nombre crud_demo.
  • Crea una vista XML ‘crud_demo.view’. Escribe este código en ella.
  • <core:View xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m"
    controllerName="crud_demo.crud_demo" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:l="sap.ui.commons.layout">
    <Page title="CRUD Operations">
    <content>
    <l:AbsoluteLayout width="10rem" height="10rem"></l:AbsoluteLayout>
    <VBox xmlns="sap.m" id="vboxid"> 
    <items> 
    <HBox xmlns="sap.m"> 
    <items> 
    <l:AbsoluteLayout width="20px" height="20px"></l:AbsoluteLayout> 
    
    <l:AbsoluteLayout width="20px" height="20px"></l:AbsoluteLayout>
    
    <l:AbsoluteLayout width="20px" height="20px"></l:AbsoluteLayout>
    
    <l:AbsoluteLayout width="20px" height="20px"></l:AbsoluteLayout>
    
    </items>
    </HBox>
    <HBox xmlns="sap.m"> 
    <items> 
    <l:AbsoluteLayout width="20px" height="20px"></l:AbsoluteLayout>
    </Input>
    <l:AbsoluteLayout width="20px" height="20px"></l:AbsoluteLayout>
    </Input>
    <l:AbsoluteLayout width="20px" height="20px"></l:AbsoluteLayout>
    </Input>
    <l:AbsoluteLayout width="20px" height="20px"></l:AbsoluteLayout>
    </Input>
    </items>
    </HBox>
    <HBox xmlns="sap.m"> 
    <items> 
    <l:AbsoluteLayout width="20px" height="20px"></l:AbsoluteLayout>
    <Table xmlns="sap.m"
    id="userdatatable" headerText="User Data"> 
    <items>
    <ListItemBase xmlns="sap.m" id="id1"></ListItemBase>
    </items> 
    <columns> 
    
    
    <Column xmlns="sap.m"> <header> <Text xmlns="sap.m" text="Id" ></Text></header></Column>
    <Column xmlns="sap.m"> <header> <Text xmlns="sap.m" text="Name" ></Text></header></Column>
    <Column xmlns="sap.m"> <header> <Text xmlns="sap.m" text="Email" ></Text></header></Column>
    <Column xmlns="sap.m"> <header> <Text xmlns="sap.m" text="Mobile" ></Text></header></Column>
    </columns>
    </Table>
    </items>
    </HBox> 
    </items> 
    
    
    </VBox>
    </content>
    </Page>
    </core:View>

    5. Crea crud_demo.controller.js. Escribe el siguiente código:

    onInit: function() {
    that = this;
    // Create Model Instance of the oData service
    var oModel = new sap.ui.model.odata.v2.ODataModel("/sap/opu/odata/sap/ZCRUD_DEMO_SRV");
    sap.ui.getCore().setModel(oModel, "myModel");
    },
    oDataCall:function(oEvent)
    {
    // call oData service's function based on which button is clicked.
    debugger;
    var myModel = sap.ui.getCore().getModel("myModel");
    myModel.setHeaders({
    "X-Requested-With" : "X"
    });
    // CREATE******************
    if ('Create' == oEvent.oSource.mProperties.text) {
    var obj = {};
    obj.id = that.getView().byId("uniqueid").getValue();
    obj.name = that.getView().byId("nameid").getValue();
    obj.email = that.getView().byId("emailid").getValue();
    obj.mobile = that.getView().byId("mobid").getValue();
    myModel.create('/userdataSet', obj, {
    success : function(oData, oResponse) {
    debugger;
    alert('Record Created Successfully...');
    },
    error : function(err, oResponse) {
    debugger;
    alert('Error while creating record - '
    .concat(err.response.statusText));
    }
    });
    }
    // READ******************
    else if ('Read' == oEvent.oSource.mProperties.text) {
    var readurl = "/userdataSet?$filter=(id eq '')";
    myModel.read(readurl, {
    success : function(oData, oResponse) {
    debugger;
    var userdata = new sap.ui.model.json.JSONModel({
    "Result" : oData.results
    });
    var tab = that.getView().byId("userdatatable");
    tab.setModel(userdata);
    var i = 0;
    tab.bindAggregation("items", {
    path : "/Result",
    template : new sap.m.ColumnListItem({
    cells : [ new sap.ui.commons.TextView({
    text : "{id}",
    design : "H5",
    semanticColor : "Default"
    }), new sap.ui.commons.TextView({
    text : "{name}",
    design : "H5",
    semanticColor : "Positive"
    }), new sap.ui.commons.TextView({
    text : "{email}",
    design : "H5",
    semanticColor : "Positive"
    }), new sap.ui.commons.TextView({
    text : "{mobile}",
    design : "H5",
    semanticColor : "Positive"
    }), ]
    })
    });
    },
    error : function(err) {
    debugger;
    }
    });
    } 
    // UPDATE******************
    if ('Update' == oEvent.oSource.mProperties.text) {
    var obj = {};
    obj.id = that.getView().byId("uniqueid").getValue();
    obj.email = that.getView().byId("emailid").getValue();
    var updateurl = "/userdataSet(id='"
    + that.getView().byId("uniqueid").getValue() + "')";
     
    myModel.update(updateurl, obj, {
    success : function(oData, oResponse) {
    debugger;
    alert('Record Updated Successfully...');
    },
    error : function(err, oResponse) {
    debugger;
    alert('Error while updating record - '
    .concat(err.response.statusText));
    }
    });
    } 
    // DELETE******************
    if ('Delete' == oEvent.oSource.mProperties.text) {
    var delurl = "/userdataSet(id='"
    + that.getView().byId("uniqueid").getValue() + "')";
    myModel.remove(delurl, {
    success : function(oData, oResponse) {
    debugger;
    alert('Record Removed Successfully...');
    },
    error : function(err, oResponse) {
    debugger;
    alert('Error while removing record - '
    .concat(err.response.statusText));
    }
    });
    }
    }

    6. Guarda, despliega y ejecuta la aplicación. Deberías poder ejecutar la aplicación usando esta URL http://hostname:8000/sap/bc/ui5_ui5/sap/zcrud_demo/index.html.  

    7. Resultado: