VBからBAPIの実行について
- このフォーラムに新規トピックを投稿できます
- このフォーラムではゲスト投稿が許可されています
- このトピックは管理者もしくはモデレータによりロックされています。
VBからBAPIの実行について
msg# 1
seizi
投稿数: 2
初めまして、seiziと申します。
R/3 Enterpriseを利用しており、現在はVB6.0よりBAPIを使ってアクセスする技術について勉強しています。
下記ロジックにてBAPI-APAccountを利用して、データを取得したいと考えていますがエラーが表示されてしまい、うまくデータを取得できません。おそらくパラメータの指定方法がまずいとは思い、試行錯誤したのですがエラーとなってしまいます。
どなたか原因が分かる方はアドバイスをお願いします。
エラー=====================
実行時エラー'8818'
The persistent key for an business object instance of type APAccount has not been set.
Cannot invoke method GETPERIODBALANCES
ロジック====================
Dim R3 As Object
Dim objRequisitions As Object
Dim objCreditorBalances As Object
Dim objCredSpecialBalances As Object
Dim objReturn As Object
' 接続のパラメータ入力
'Set R3 = CreateObject("SAP.BAPI.1")
'R3.Connection.Applicationserver = "XXX.XXX.XXX.XXX"
'R3.Connection.Client = "XXX"
'R3.Connection.User = "XXXXXX"
R3.Connection.Password = "XXXXX"
'R3.Connection.language = "JA"
' ログイン実行
If R3.Connection.logon(0, True) <> True Then
MsgBox "R/3 ログインに失敗しました"
Exit Function
End If
Set objRequisitions = R3.GetSAPObject("APAccount")
Set objCreditorBalances = R3.DimAs(objRequisitions, "GetPeriodBalances", "CreditorBalances")
Set objCredSpecialBalances = R3.DimAs(objRequisitions, "GetPeriodBalances", "CredSpecialBalances")
With objCreditorBalances
.Rows.Add
.Value(1, "VENDOR") = "VB34021200"
.Value(1, "COMP_CODE") = "1000"
End With
With objCredSpecialBalances
.Rows.Add
.Value(1, "VENDOR") = "VB34021200"
.Value(1, "COMP_CODE") = "1000"
End With
'BAPIの実行
objRequisitions.GetPeriodBalances CreditorBalances:=objCreditorBalances, CredSpecialBalances:=objCredSpecialBalances
'↑
'ここでエラーとなります。
R/3 Enterpriseを利用しており、現在はVB6.0よりBAPIを使ってアクセスする技術について勉強しています。
下記ロジックにてBAPI-APAccountを利用して、データを取得したいと考えていますがエラーが表示されてしまい、うまくデータを取得できません。おそらくパラメータの指定方法がまずいとは思い、試行錯誤したのですがエラーとなってしまいます。
どなたか原因が分かる方はアドバイスをお願いします。
エラー=====================
実行時エラー'8818'
The persistent key for an business object instance of type APAccount has not been set.
Cannot invoke method GETPERIODBALANCES
ロジック====================
Dim R3 As Object
Dim objRequisitions As Object
Dim objCreditorBalances As Object
Dim objCredSpecialBalances As Object
Dim objReturn As Object
' 接続のパラメータ入力
'Set R3 = CreateObject("SAP.BAPI.1")
'R3.Connection.Applicationserver = "XXX.XXX.XXX.XXX"
'R3.Connection.Client = "XXX"
'R3.Connection.User = "XXXXXX"
R3.Connection.Password = "XXXXX"
'R3.Connection.language = "JA"
' ログイン実行
If R3.Connection.logon(0, True) <> True Then
MsgBox "R/3 ログインに失敗しました"
Exit Function
End If
Set objRequisitions = R3.GetSAPObject("APAccount")
Set objCreditorBalances = R3.DimAs(objRequisitions, "GetPeriodBalances", "CreditorBalances")
Set objCredSpecialBalances = R3.DimAs(objRequisitions, "GetPeriodBalances", "CredSpecialBalances")
With objCreditorBalances
.Rows.Add
.Value(1, "VENDOR") = "VB34021200"
.Value(1, "COMP_CODE") = "1000"
End With
With objCredSpecialBalances
.Rows.Add
.Value(1, "VENDOR") = "VB34021200"
.Value(1, "COMP_CODE") = "1000"
End With
'BAPIの実行
objRequisitions.GetPeriodBalances CreditorBalances:=objCreditorBalances, CredSpecialBalances:=objCredSpecialBalances
'↑
'ここでエラーとなります。
投票数:363
平均点:3.58
Re: VBからBAPIの実行について
msg# 1.1
seizi
投稿数: 2
自己レスです。
Set objRequisitions = R3.GetSAPObject("APAccount")を
Set objRequisitions = R3.GetSAPObject("APAccount", "1000", "VB34620300")へ
変更したらデータの取得ができました。
変更後のロジック===================
Set objRequisitions = R3.GetSAPObject("APAccount", "1000", "VB34620300")
Set objCreditorBalances = R3.DimAs(objRequisitions, "GetPeriodBalances", "CreditorBalances")
Set objCredSpecialBalances = R3.DimAs(objRequisitions, "GetPeriodBalances", "CredSpecialBalances")
objRequisitions.GetPeriodBalances _
CreditorBalances:=objCreditorBalances, _
CredSpecialBalances:=objCredSpecialBalances
===========================
しかし、今度は追加パラメータの指定方法が分かりません。
具体的には、上記のロジックだと取得される勘定残高一覧は当年度(2008)のデータです。
前年度(2007)を取得したいのですが、FISC_YEAR(会計年度)の指定はどこで行えば良いのでしょうか?
追加の質問ですが、よろしくお願いします。
Set objRequisitions = R3.GetSAPObject("APAccount")を
Set objRequisitions = R3.GetSAPObject("APAccount", "1000", "VB34620300")へ
変更したらデータの取得ができました。
変更後のロジック===================
Set objRequisitions = R3.GetSAPObject("APAccount", "1000", "VB34620300")
Set objCreditorBalances = R3.DimAs(objRequisitions, "GetPeriodBalances", "CreditorBalances")
Set objCredSpecialBalances = R3.DimAs(objRequisitions, "GetPeriodBalances", "CredSpecialBalances")
objRequisitions.GetPeriodBalances _
CreditorBalances:=objCreditorBalances, _
CredSpecialBalances:=objCredSpecialBalances
===========================
しかし、今度は追加パラメータの指定方法が分かりません。
具体的には、上記のロジックだと取得される勘定残高一覧は当年度(2008)のデータです。
前年度(2007)を取得したいのですが、FISC_YEAR(会計年度)の指定はどこで行えば良いのでしょうか?
追加の質問ですが、よろしくお願いします。
投票数:324
平均点:3.92
Re: VBからBAPIの実行について
msg# 1.2
seizi
またまた自己レスです。
T-CD:BAPIからビジネスオブジェクトビルダでAPAccountを確認したところ、キー項目がCompanyCode:会社コードとVendor:仕入先コードしか指定できないことが分かりました。
BAPI側にパラメータが無い場合にはどうする事もできないのでしょうか?別途、会計年度を指定できるようなBAPIを作成する必要があるのでしょうか?
T-CD:BAPIからビジネスオブジェクトビルダでAPAccountを確認したところ、キー項目がCompanyCode:会社コードとVendor:仕入先コードしか指定できないことが分かりました。
BAPI側にパラメータが無い場合にはどうする事もできないのでしょうか?別途、会計年度を指定できるようなBAPIを作成する必要があるのでしょうか?
投票数:216
平均点:4.86
Re: Re: VBからBAPIの実行について
msg# 1.2.1
ゲスト
ECC6.0だと、メソッドGetPeriodBalancesがありますが
EnterPriseではりようできませんか?
汎用モジュール、BAPI_AP_ACC_GETPERIODBALANCES
の登録日付は1997年となっているので以前のSAPでも利用できそうですが。
EnterPriseではりようできませんか?
汎用モジュール、BAPI_AP_ACC_GETPERIODBALANCES
の登録日付は1997年となっているので以前のSAPでも利用できそうですが。
投票数:226
平均点:4.34