Quantcast
Channel: Scripting Languages
Viewing all articles
Browse latest Browse all 68

How to use actual SAP NetWeaver RFC Library with Python - Read Table

$
0
0

Hello community,

 

I presented until now in the series "How to use actual SAPNetWeaver RFC Library with Pyhton" :

 

Here now an example how to read a table with the function module (FM) RFC_READ_TABLE. You need the file sapnwrfc.py from here - look at the end of the posting.

After the connection we get the function description of the FM, in our case RFC_READ_TABLE. We set the arguments QUERY_TABLE, in our case USR01, and the DELIMITER. We invoke the FM and print the result line by line. The result is in the DATA table, in the field WA.

 

# -*- coding: iso-8859-15 -*-

#-Begin-----------------------------------------------------------------

 

#-Include---------------------------------------------------------------

FileName = "sapnwrfc.py"

exec(compile(open(FileName).read(), FileName, "exec"))

 

#-Main------------------------------------------------------------------

 

#-Connection parameters-------------------------------------------------

RfcConnParams[0].name = "ASHOST"; RfcConnParams[0].value = "ABAP"

RfcConnParams[1].name = "SYSNR" ; RfcConnParams[1].value = "00"

RfcConnParams[2].name = "CLIENT"; RfcConnParams[2].value = "001"

RfcConnParams[3].name = "USER"  ; RfcConnParams[3].value = "BCUSER"

RfcConnParams[4].name = "PASSWD"; RfcConnParams[4].value = "minisap"

 

TableName = "USR01"

 

hRFC = SAP.RfcOpenConnection(RfcConnParams, 5, RfcErrInf)

if hRFC != None:

 

  charBuffer = create_unicode_buffer(512 + 1)

 

  hFuncDesc = SAP.RfcGetFunctionDesc(hRFC, "RFC_READ_TABLE", RfcErrInf)

  if hFuncDesc != 0:

    hFunc = SAP.RfcCreateFunction(hFuncDesc, RfcErrInf)

    if hFunc != 0:

 

      rc = SAP.RfcSetChars(hFunc, "QUERY_TABLE", TableName, \

        len(TableName), RfcErrInf)

      rc = SAP.RfcSetChars(hFunc, "DELIMITER", "~", 1, RfcErrInf)

 

      if SAP.RfcInvoke(hRFC, hFunc, RfcErrInf) == RFC_OK:

 

        hTable = c_void_p(0)

        if SAP.RfcGetTable(hFunc, "DATA", hTable, RfcErrInf) == RFC_OK:

 

          RowCount = c_ulong(0)

          rc = SAP.RfcGetRowCount(hTable, RowCount, RfcErrInf)

          rc = SAP.RfcMoveToFirstRow(hTable, RfcErrInf)

          for i in range(0, RowCount.value):

            hRow = SAP.RfcGetCurrentRow(hTable, RfcErrInf)

            rc = SAP.RfcGetChars(hRow, "WA", charBuffer, 512, RfcErrInf)

            print(charBuffer.value)

            if i < RowCount.value:

              rc = SAP.RfcMoveToNextRow(hTable, RfcErrInf)

 

      rc = SAP.RfcDestroyFunction(hFunc, RfcErrInf)

 

  rc = SAP.RfcCloseConnection(hRFC, RfcErrInf)

 

else:

  print(RfcErrInf.key)

  print(RfcErrInf.message)

 

del SAP

 

#-End-------------------------------------------------------------------

 

Cheers

Stefan


Viewing all articles
Browse latest Browse all 68

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>