私はあなたの質問に正確に答えるつもりはありませんが、とにかく有益な情報を提供したいと思っています. 私は現在、QuickBooks から SAP への会計データの移行に取り組んでいます。スクリプトと Web インターフェイスには Ruby と Ruby on Rails を使用しました。
スクリプト作成に慣れているので、次のことを試してみることをお勧めします。
Ruby とライブラリのインストールは非常に簡単です。
構成ファイルを作成する必要がある場合があります。
# c:\tmp\sapdev.yml
# adjust parameters to yours
ashost: your.sap.server.ip
sysnr: "00"
client: "100"
user: yoursaplogin
passwd: yoursappwd
lang: EN
trace: "1"
次に、次のようなことを試してください。
# c:\tmp\sap-test.rb
require 'rubygems'
require 'sapnwrfc'
SAPNW::Base.config_location = "c:\\tmp\\sapdev.yml"
SAPNW::Base.load_config
conn = SAPNW::Base.rfc_connect
attrib = conn.connection_attributes
# here you will find if you can connect to SAP programmatically
puts "\n>>> Connection Attributes: #{attrib.inspect}\n"
# discover the BAPI function
call = conn.discover("BAPI_ACC_DOCUMENT_CHECK").new_function_call
# set up parameters. in this case DOCUMENTHEADER, ACCOUNTGL and CURRENCYAMOUNT
call.DOCUMENTHEADER = {
"HEADER_TXT" => "EXCEL POST",
"COMP_CODE" => "2080",
"DOC_DATE" => "20090123",
"PSTNG_DATE" => "20090123",
"USERNAME" => "YOURSAPLOGIN",
"BUS_ACT" => "RFBU",
"DOC_TYPE" => "SA" # CUSTOMER INVOICE
}
puts "\n>>> DOCUMENTHEADER:"
p call.DOCUMENTHEADER
call.ACCOUNTGL = [
{"ITEMNO_ACC" => "0000000001", "GL_ACCOUNT" =>"0000500000" },
{"ITEMNO_ACC" => "0000000002", "GL_ACCOUNT" =>"0000799900", "ORDERID" => "CS_USD4110" }
]
puts "\n>>> ACCOUNTGL:"
p call.ACCOUNTGL
call.CURRENCYAMOUNT = [
{"ITEMNO_ACC" => "0000000001", "CURR_TYPE" => "00", "CURRENCY" => "USD", "AMT_DOCCUR" => "-0.70" },
{"ITEMNO_ACC" => "0000000002", "CURR_TYPE" => "00", "CURRENCY" => "USD", "AMT_DOCCUR" => "0.70" }
]
puts "\n>>> CURRENCYAMOUNT:"
p call.CURRENCYAMOUNT
call.invoke
puts "\n>>> call.RETURN:"
message = []
call.RETURN.each do |r|
message << r["MESSAGE"].strip
end
message.uniq!
puts message.join("\n")
GLアカウントなどに関するエラーが表示される場合がありますが、これは私の実際の例です。ここで重要なのは、RFC 接続を確立することです。BAPI_REQUISITION_CREATE
次に、呼び出しの準備、入力call.REQUISITION_ITEMS
、呼び出し、確認に進むことができますcall.RETURN
。
また、Ruby と Ruby on Rails が Excel からデータを読み取って、さまざまなデータベースと統合できることも便利です。これは私のために働いています。
乾杯、
アレクセイ