今回はタイトルの通り、PythonでSAPユーザ登録用のBAPI汎用モジュールを実行するスクリプトを作ってみました。
前にPowershellで作ってみた時の記事がこれです。
【PowerShell】SAPユーザ登録用のPowerShellコマンドレットを作ってみました - YOMON8.NET
即席とはいえかなり中途半端だったので、今度はPythonでやってみてます。
前提条件
前提条件ですが、Python2.7がインストールされていて実行できることと、SAP接続用のPythonモジュールが必要です。詳細は以下の記事をどうぞ。
PythonからSAP処理を呼び出してみる - YOMON8.NET
SAP接続情報ファイル
「sapnwrfc.cfg」という名前のファイルを準備して、以下のようにSAP接続情報を書き込みます。
[connection] ashost=saphost #SAPホスト名 client=100 #クライアント番号 sysnr=00 #システム番号 user=sidadm #ログオンユーザ名(要ユーザ登録権限) passwd=password #ログオンユーザパスワード
ユーザ設定CSVファイル
「userinfo.csv」という名前のファイルを準備してカンマ区切りでユーザの情報を記載します。
書式は左から(ユーザID、初期パスワード、ユーザタイプ(Aはダイアログ)、姓、名)です。
今回は以下のような設定でpytest01~pytest09までのユーザを登録してみます。
pytest01,init0000,A,py,01 pytest02,init0000,A,py,02 pytest03,init0000,A,py,03 pytest04,init0000,A,py,04 pytest05,init0000,A,py,05 pytest06,init0000,A,py,06 pytest07,init0000,A,py,07 pytest08,init0000,A,py,08 pytest09,init0000,A,py,09
Pythonスクリプト
Pythonスクリプトを準備します。テキストファイルに貼り付けて保存すればOKです。
import csv from ConfigParser import ConfigParser from sapnwrfc2 import * def userAdd(sapconn,userName,initPass,userType,firstName,lastName): try: passwordStruct = {u'BAPIPWD':initPass} impStruct = {u'FIRSTNAME':firstName,u'LASTNAME':lastName} logonStruct = {u'USTYP':userType} result = sapconn.call('BAPI_USER_CREATE1', USERNAME=userName, PASSWORD=passwordStruct, LOGONDATA=logonStruct, ADDRESS=impStruct) print(result['RETURN'][0]['MESSAGE']) except: print('Error Occurred in ' + userAdd.__name__ ) raise def getConnectionInfo(): try: config = ConfigParser() config.read("sapnwrfc.cfg") return config._sections["connection"] except: print('Error Occurred in ' + getConnectionInfo.__name__) raise if __name__ == '__main__': try: sapconn = None connecitonInfo = getConnectionInfo() csvReader = csv.reader(open('userinfo.csv'),delimiter=',') sapconn = Connection(**connecitonInfo) for username,initpass,usertype,firstname,lastname in csvReader: userAdd(sapconn,username,initpass,usertype,firstname,lastname) except Exception as e: print(e) finally: if sapconn: print('close') sapconn.close()