スマホ便利サイト

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

SAP インターネット

vl06で特定のdeliveryに含まれるパーツのシリアルナンバーをexcelにvbaで取得したい

VBAを使ってVL06(SAPトランザクションコード)で特定のデリバリーに含まれるパーツのシリアルナンバーを取得し、それをExcelに出力する方法をご紹介します。

必要な前提
SAP GUI Scripting が有効化されていること。
SAP GUI Scripting API が利用可能な環境であること。
ExcelにVBAを実行する準備が整っていること。
手順
ExcelでVBAエディタを開く

Alt + F11を押してVBAエディタを開きます。
新しいモジュールを作成

メニューから 挿入 → モジュール を選択。
以下のコードをコピーして貼り付け

vba
コードをコピーする
Sub GetDeliverySerialNumbers()
Dim SapGuiAuto As Object
Dim SAPApp As Object
Dim SAPCon As Object
Dim session As Object
Dim i As Integer
Dim deliveryNumber As String
Dim serialNumbers As Collection
Dim ws As Worksheet
Dim row As Long

' シートを準備
Set ws = ThisWorkbook.Sheets(1)
ws.Cells.Clear ' シートをクリア
ws.Cells(1, 1).Value = "Serial Numbers" ' ヘッダー設定

' SAP GUIに接続
On Error Resume Next
Set SapGuiAuto = GetObject("SAPGUI")
If SapGuiAuto Is Nothing Then
MsgBox "SAP GUIが起動していません。", vbCritical
Exit Sub
End If

Set SAPApp = SapGuiAuto.GetScriptingEngine
Set SAPCon = SAPApp.Children(0) ' 最初の接続
Set session = SAPCon.Children(0) ' 最初のセッション
On Error GoTo 0

' デリバリー番号を取得
deliveryNumber = InputBox("デリバリー番号を入力してください:", "Delivery Number")
If deliveryNumber = "" Then Exit Sub

' VL06の操作
With session
.StartTransaction "VL06" ' VL06を開く
.findById("wnd[0]/usr/ctxtLV50T-QLIEF").Text = deliveryNumber ' デリバリー番号入力
.findById("wnd[0]/tbar[1]/btn[8]").Press ' 実行ボタン押下

' シリアル番号を取得するロジック
Set serialNumbers = New Collection
i = 0
Do While True
On Error Resume Next
Dim serial As String
serial = .findById("wnd[0]/usr/tblSAPMV50A/TABLENAME").GetCellValue(i, "COLUMN_NAME")
If Err.Number <> 0 Then Exit Do
serialNumbers.Add serial
i = i + 1
On Error GoTo 0
Loop
End With

' Excelに出力
row = 2
For Each serial In serialNumbers
ws.Cells(row, 1).Value = serial
row = row + 1
Next

MsgBox "データの取得が完了しました。", vbInformation
End Sub
必要な修正箇所
VL06の操作に関する部分を調整

ctxtLV50T-QLIEF や TABLENAME、COLUMN_NAME は実際のSAP画面に応じて変更する必要があります。
SAP GUI Scripting Recorderを使って画面操作を記録し、正しいIDを取得してください。
Excelの出力先

出力先シート(ws)やカラム(Cells)を必要に応じて調整します。
実行手順
VBAコードを保存し、Excelに戻る。
マクロを実行する(Alt + F8 → GetDeliverySerialNumbers を選択 → 実行)。
注意事項
SAPシステムの権限や設定によって、操作が制限される場合があります。
適切なSAP GUIのバージョンを使用してください。

あなた:

vl06で特定のdeliveryを見る方法を教えて
ChatGPT:
ChatGPT
SAPでトランザクションコード VL06 を使用して特定のデリバリーを見る手順は以下の通りです。VL06では、出荷関連のリストを確認したり、フィルタを使って特定のデリバリー情報を取得できます。

手順: 特定のデリバリーを見る方法
VL06を開く

SAP GUIのコマンドフィールドに VL06 と入力し、Enterキーを押します。
画面タイプを選択

VL06のメインメニューが表示されます。以下のリストから目的に合った画面を選択します。
出荷済み (Outbounds Delivered): 出荷が完了したデリバリーを表示。
出荷予定 (Outbounds Due for Delivery): 出荷が予定されているデリバリーを表示。
伝票番号で絞り込み (Delivery Note): 特定のデリバリー番号を絞り込み。
検索条件を入力

伝票番号 (Delivery Number) を絞り込みたい場合、以下の手順を実行します。
伝票番号 フィールド(画面の検索条件)に特定のデリバリー番号を入力します。
伝票番号が分からない場合、他の条件(倉庫番号、出荷先、配送日付など)で検索することも可能です。
検索を実行

必要な検索条件を入力したら、画面上部の「実行 (Execute)」ボタン(緑色のチェックマーク)をクリックします。
検索結果を確認

該当するデリバリーのリストが表示されます。
デリバリーを選択し、詳細を確認する場合はその行をダブルクリックします。
シリアルナンバーなどの詳細を見る

デリバリーの詳細画面が開いたら、画面内の「シリアル番号」「品目明細」などのタブを選択して、必要な情報を確認します。
補足: フィルタオプション
日付範囲: 特定の日付範囲のデリバリーを確認できます。
配送先: 特定の顧客や倉庫に絞り込むことができます。
ステータス: 完了・未完了、または特定のステータスでデリバリーを絞り込むことが可能です。
トラブルシューティング
デリバリーが表示されない場合

検索条件が正しいか確認してください。
デリバリー番号が存在しない場合は「VL03N」(特定デリバリー表示)を試してみてください。
権限不足

VL06へのアクセス権限がない場合、SAP管理者に相談してください。

あなた:
iq03から特定のdeliveryに含まれるパーツのシリアルナンバー一覧を取得する方法を教えて下さい。
ChatGPT:
ChatGPT
SAP IQ03 を使用して、特定のデリバリーに含まれるパーツのシリアルナンバーを取得する方法は以下の通りです。IQ03はシリアルナンバー情報を確認するトランザクションコードですが、デリバリー情報を特定するには、関連するマスタデータやトランザクションデータとのリンクを活用する必要があります。

方法 1: 手動で取得する方法
デリバリー番号を取得

トランザクションコード VL03N を使用して、特定のデリバリーを開きます。
明細(品目)タブを確認し、デリバリーに含まれる品目番号(Material Number)と数量を確認します。
品目ごとにシリアル番号を確認

トランザクションコード IQ03 を使用してシリアル番号を検索します。
手順:
IQ03を実行: コマンドフィールドに IQ03 と入力してEnter。
品目番号を入力: 「品目番号 (Material Number)」フィールドにVL03Nで確認した品目番号を入力。
シリアル番号を検索: シリアル番号のリストが表示されます。
各シリアル番号に関連するデリバリー情報を確認します(「シリアル番号の履歴」タブなどを活用)。
関連するシリアル番号を記録

特定のデリバリー番号に関連するシリアル番号を手作業で収集してExcelなどに記録します。
方法 2: レポートやテーブルを利用する方法(より効率的)
SAPの標準レポートやテーブルを活用することで、特定のデリバリーに関連するシリアル番号を一括で取得できます。

1. デリバリーに含まれる品目のシリアル番号リストを取得
トランザクションコード IQ09 を使用します(シリアルナンバーリストを取得するレポート)。
IQ09を実行。
フィルタ条件を設定:
デリバリー番号: デリバリーに関連する品目を絞り込む条件として使用します。
品目番号: デリバリーに含まれる特定の品目を指定します。
実行: 実行ボタンを押し、結果を確認します。
必要に応じてデータをExcelにエクスポートします(メニュー「リスト → Excelへのエクスポート」)。
2. デリバリーとシリアル番号の関連をテーブルで確認
SAPのデータベーステーブルを利用して効率的に情報を取得できます。以下のテーブルが関連します。

テーブル名 説明
LIKP 出荷ヘッダ情報(デリバリー番号)
LIPS 出荷品目情報(品目番号)
EQUI 設備マスタ(シリアル番号情報)
SER03 シリアル番号とデリバリーのリンク
手順:

トランザクションコード SE16N または SE11 を使用してテーブルを検索します。
テーブル LIPS でデリバリー番号(VBELN)をキーに品目番号(MATNR)を取得します。
SER03 を使い、デリバリー番号(VBELN)に対応するシリアル番号を取得します。
方法 3: カスタムレポートを作成する
SAPでカスタムレポートを作成して、自動的にデリバリー番号に関連するシリアル番号リストを取得することも可能です。ABAPプログラムやVBAツールを組み合わせて効率化を図ります。

サンプルフロー
デリバリー番号(VL03Nから)を取得。
LIPSテーブルから品目を取得。
SER03テーブルからシリアル番号を取得。
取得したデータをExcelやSAPリストとして出力。
注意事項
権限不足の場合、SAP管理者に問い合わせてください(デリバリーやシリアル番号関連の権限が必要です)。
一度に大量のデータを検索すると、システムパフォーマンスに影響を与える可能性があります。条件を絞り込んでください。
必要であれば、より具体的な設定方法やスクリプト作成方法もご案内できます。

あなた:
vl03nから見れるデータで、上のタブから選択できるextrasからのSerial Numbersに出る複数のシリアルナンバーをExcelのファイルにダウンロードしたいのですが、何かいい方法はありますか?
ChatGPT:
ChatGPT
SAPのVL03Nで「Extras」→「Serial Numbers」から表示される複数のシリアルナンバーをExcelファイルにダウンロードする方法について説明します。この作業は手動でも可能ですが、VBAやSAP GUIスクリプトを使うことで自動化することも可能です。

方法 1: 手動でエクスポート
VL03Nを開く

SAPのコマンドフィールドに VL03N を入力して実行。
対象のデリバリー番号を入力して開きます。
シリアル番号の表示

上部メニューから Extras → Serial Numbers を選択。
該当するシリアル番号のリストが表示されます。
Excelへのエクスポート

表示されたシリアル番号リストを右クリックし、メニューから「リスト」→「エクスポート」→「スプレッドシート」または「Excel」形式を選択。
指定した場所にExcelファイルとして保存します。
方法 2: SAP GUIスクリプトを使った自動化
SAP GUIスクリプトを使用すると、シリアル番号のリストを自動で取得し、Excelに保存することができます。

スクリプト例
以下はVBAからSAP GUIスクリプトを実行する例です。

VBAコードを準備
ExcelのVBAエディタ(Alt + F11)を開き、新しいモジュールを作成して以下のコードを貼り付けます。
vba
コードをコピーする
Sub ExportSerialNumbers()
Dim SapGuiAuto As Object
Dim SAPApp As Object
Dim SAPCon As Object
Dim session As Object
Dim serialNumbers As Collection
Dim ws As Worksheet
Dim i As Integer
Dim row As Long

' Excelシート準備
Set ws = ThisWorkbook.Sheets(1)
ws.Cells.Clear
ws.Cells(1, 1).Value = "Serial Numbers"
row = 2

' SAP GUIに接続
On Error Resume Next
Set SapGuiAuto = GetObject("SAPGUI")
If SapGuiAuto Is Nothing Then
MsgBox "SAP GUIが起動していません。", vbCritical
Exit Sub
End If
Set SAPApp = SapGuiAuto.GetScriptingEngine
Set SAPCon = SAPApp.Children(0)
Set session = SAPCon.Children(0)
On Error GoTo 0

' VL03Nの操作
With session
.StartTransaction "VL03N"
.findById("wnd[0]/usr/ctxtLIKP-VBELN").Text = InputBox("デリバリー番号を入力してください:", "Delivery Number")
.findById("wnd[0]/tbar[1]/btn[8]").Press ' 実行ボタン

' Extras → Serial Numbersを開く
.findById("wnd[0]/mbar/menu[3]/menu[6]").Select ' Extrasメニュー → Serial Numbers

' シリアル番号の取得
serialNumbers = New Collection
i = 0
Do While True
On Error Resume Next
Dim serial As String
serial = .findById("wnd[1]/usr/tblSAPLV56L_TABLE").GetCellValue(i, "SERIALNO_COLUMN")
If Err.Number <> 0 Then Exit Do
serialNumbers.Add serial
i = i + 1
On Error GoTo 0
Loop
End With

' Excelにシリアル番号を書き込む
For Each serial In serialNumbers
ws.Cells(row, 1).Value = serial
row = row + 1
Next

MsgBox "シリアル番号のエクスポートが完了しました。", vbInformation
End Sub
修正が必要な箇所
SERIALNO_COLUMN
SAP GUIスクリプトレコーダーを使用して、シリアル番号列の正しいIDを特定してください。
SAPメニューのID
Extras → Serial Numbers のメニューID(menu[3]/menu[6])も画面に合わせて修正してください。
方法 3: 標準レポートを活用
SAP標準レポート(例: IQ09)を活用してシリアル番号を取得する方法もあります。VL03Nでデリバリー番号に含まれる品目番号を取得し、それを基にシリアル番号をIQ09などで検索し、Excelにエクスポートすることが可能です。

注意点
権限: SAPシステムでシリアル番号の表示やエクスポートに必要な権限がない場合、管理者に問い合わせてください。
SAP GUIスクリプト有効化: SAP GUIスクリプトが有効化されていない場合、管理者に設定を依頼してください。
カラムID確認: SAP GUIスクリプトを利用する場合、画面に応じてカラムやテーブルIDを修正する必要があります。
必要であれば、スクリプトのカスタマイズや操作の具体例についてもご案内できます。

-SAP, インターネット