スマホ便利サイト

スマートフォン向けアプリ、占い心理テストや情報エンタメ芸能など。

SAP

sapで特定のdeliveryに含まれるパーツのシリアルナンバー一覧をvbaでexcelファイルにダウンロードする方法

2025/01/13

SAPから特定のデリバリーに含まれるパーツのシリアルナンバーをVBAでExcelにダウンロードする方法を以下に示します。この方法では、SAP GUI Scriptingを利用して、VBAマクロからSAPの情報をExcelに抽出します。あらかじめ、SAP GUI Scriptingが有効になっていることと、必要なSAP権限があることを確認してください。

ステップ 1: SAP GUI Scripting の準備
SAP GUI Scriptingを有効にする:管理者に問い合わせ、SAP GUI Scriptingが有効か確認します。
SAP GUI Scripting APIを利用可能にする:VBAがSAPにアクセスできるよう、SAP GUIがインストールされているPCで「SAP GUI Scripting API」がインストールされているか確認してください。
ステップ 2: VBAコードの作成
ExcelでVBAエディタを開きます(Alt + F11)。
「挿入」→「モジュール」を選択し、新しいモジュールを作成します。
以下のコードを貼り付け、必要な情報(Delivery番号など)を入力します。
vba
コードをコピーする
Sub DownloadSerialNumbers()
Dim SapGuiAuto As Object
Dim SAPApp As Object
Dim SAPCon As Object
Dim session As Object
Dim deliveryNumber As String
Dim row As Integer

' デリバリー番号を設定
deliveryNumber = "YourDeliveryNumber" ' ここに取得したいデリバリー番号を入力してください

' SAP GUI のオートメーションオブジェクトを取得
On Error Resume Next
Set SapGuiAuto = GetObject("SAPGUI")
If Err.Number <> 0 Then
MsgBox "SAP GUI が開かれていません。"
Exit Sub
End If
On Error GoTo 0

' SAP セッションを取得
Set SAPApp = SapGuiAuto.GetScriptingEngine
Set SAPCon = SAPApp.Children(0)
Set session = SAPCon.Children(0)

' SAP で VL03N トランザクション(デリバリー確認)を実行
session.StartTransaction "VL03N"
session.FindById("wnd[0]/usr/ctxtLIKP-VBELN").Text = deliveryNumber
session.FindById("wnd[0]/tbar[1]/btn[8]").Press

' シリアル番号を取得するためのタブに移動(これはSAPの画面構造によって異なるため調整が必要です)
session.FindById("wnd[0]/usr/tabsTABSTRIP_OVERVIEW/tabpT\\06").Select
session.FindById("wnd[0]/usr/tabsTABSTRIP_OVERVIEW/tabpT\\06/ssubSUBSCREEN_BODY:SAPLV50R:1322/cntlCONTROL_CONTAINER/shellcont/shell").SetCurrentCell 0, "VBELN"

' シリアル番号をExcelに書き出し
row = 2
Do While True
Dim serialNumber As String
serialNumber = session.FindById("wnd[0]/usr/tabsTABSTRIP_OVERVIEW/tabpT\\06/ssubSUBSCREEN_BODY:SAPLV50R:1322/cntlCONTROL_CONTAINER/shellcont/shell").GetCellValue(row - 1, "SERIAL_NUMBER")
If serialNumber = "" Then Exit Do

' Excelにデータを書き込み
ThisWorkbook.Sheets("Sheet1").Cells(row, 1).Value = serialNumber
row = row + 1
Loop

MsgBox "シリアル番号のダウンロードが完了しました。"
End Sub
ステップ 3: コードの実行
コード内の deliveryNumber に取得したいデリバリー番号を入力します。
必要に応じて、シリアル番号が記載されているSAPタブやフィールドのIDを修正します。
VBAエディタを閉じて、Alt + F8 でマクロを実行します。
注意点
SAPのバージョンや設定により、画面IDが異なる可能性があるため、SAP GUI Scripting Recorderなどを使用して画面IDを確認・修正してください。
実行する際に他のアクションがあると、エラーになる場合がありますので、コード実行中はSAP GUIを操作しないようにしてください。

-SAP