saprfc for Python has been updated, to include support for registered RFCs (SAP R/3 ABAP -> Python), and for Transactional RFC (queued RFC).

So for example you can do this:

class reg:

        def __init__(self):
                self.cnt = 0
                import sys
                import os

        def LoopHandler(self, srfc):
                self.cnt += 1
                print "inside the customer loop handler - iter: %d ...\n" % self.cnt
                if self.cnt >= 30:
                        return -1
                return 1

        def handler(self, iface, srfc):
                data = []
                out = os.popen(iface.COMMAND.getValue(), "r")
                for row in out:
                        data.append(row)
                out.close()
                iface.PIPEDATA.setValue( data )
                return 1

if __name__ == "__main__":
        import saprfc

        conn = saprfc.conn(gwhost='seahorse.local.net', gwserv='3300', tpname='wibble.rfcexec')

        cb = reg()

        ifc = saprfc.iface("RFC_REMOTE_PIPE", callback=cb)
        ifc.addParm( saprfc.parm("COMMAND", "", saprfc.RFCIMPORT, saprfc.RFCTYPE_CHAR, 256))
        ifc.addParm( saprfc.parm("READ", "", saprfc.RFCIMPORT, saprfc.RFCTYPE_CHAR, 1))
        ifc.addParm( saprfc.tab("PIPEDATA", "", 80))

        conn.iface(ifc)

        conn.accept(callback=cb, wait=3)
        print "All finished (reg.py) \n"


The latest version can be found here (saprfc-0.05).

Posted by PiersHarding at August 1, 2004 12:50 AM