SAP S/4HANAを使って購買業務を行っている企業にとって、購買発注伝票の管理は、毎日の業務の中でも欠かせないもののひとつである。
本記事では、SAP ERPの購買発注の情報をExcel上で手軽に確認できるようにする方法として、Excelマクロ(VBA)とBAPIを組み合わせて、購買発注伝票の一覧や詳細情報を表示する仕組みを紹介する。
あわせて、購買関連のテーブルやBAPIについても解説するので、購買データを扱う上で必要な知識を、効率よく押さえることができる内容となっている。
なお、本記事で紹介するExcelマクロファイルは「便利ツール」からダウンロードできるので、本記事と併せて活用してほしい。

購買関連のBAPI
購買関連BAPI一覧
以下は、SAPが提供する購買業務向けの主要なBAPIの一覧である(名称順)。
BAPI名 | 説明 |
---|---|
BAPI_CONTRACT_CREATE | 購買契約を新規作成する。 |
BAPI_CONTRACT_GETDETAIL | 既存の購買契約の詳細情報を取得。 |
BAPI_INFORECORD_GETLIST | 購買情報レコード(Info Record)の一覧を取得。 |
BAPI_PO_CREATE1 | 購買発注伝票を新規作成。 |
BAPI_PO_GETDETAIL | 購買発注の詳細情報を取得。 |
BAPI_PO_GETITEMS | 購買発注の一覧を取得。 |
BAPI_REQUISITION_CREATE | 購買依頼を新規作成。 |
BAPI_REQUISITION_GETDETAIL | 購買依頼の詳細情報を取得。 |
本マクロでは、次の2つのBAPIを使用している。
- BAPI_PO_GETITEMS: 購買発注の一覧を表示
- BAPI_PO_GETDETAIL: 選択した購買発注の詳細を表示
BAPI_PO_GETITEMS
BAPI_PO_GETITEMS は、複数の購買発注伝票をまとめて取得できるBAPIである。
抽出条件(Importパラメータ)として、購買発注伝票番号、仕入先コード、プラント、品目コード、購買組織、購買グループ、発注日付などを指定できる。これらの条件に一致する購買発注の「発注明細」データを、テーブル形式で取得する。
今回のマクロでは、これらの抽出条件はExcelのワークシートから入力できるようにしており、条件に一致した購買発注の主要明細の一覧を、ワークシート上に表示する。
BAPI_PO_GETDETAIL
BAPI_PO_GETDETAIL は、指定した購買発注の詳細情報を取得できるBAPIである。
詳細情報は、標準トランザクション T-CD: ME23N で照会できるデータとほぼ同等である。取得する詳細データは、フラグを指定することで、ヘッダのみ、明細のみ、納入日程行のみと、必要な情報だけを取得できるようになっている。
本マクロでは、パフォーマンスにそれほど影響がなかったため、フラグはすべて指定し、取得した詳細情報をワークシートごとに表示している。
Excelマクロ(VBA)でSAP購買発注データを表示する実装例
以下に、実際にSAPから購買発注データを取得してExcelに一覧表示するためのVBAコードの例を示す。
SAPシステムへのログオン
SAPシステムにログオンするための設定はワークシート「Logon Setting」上に、ログインするためのVBAコードは標準モジュール「Common」に実装している。
他のプロシージャからは、次のように関数「SapChkAndLogon」として呼び出される。
‘SAPログオン状態の確認
If SapChkAndLogon() <> 0 Then Exit Sub
SAPシステムにログインするための設定とVBAコードは、以下の記事で作成したものを流用しているので、「Logon Setting」の設定方法については以下の記事を参考にしてほしい。

購買発注一覧の取得と表示
指定された条件に一致する購買発注データを取得し、ワークシート「購買発注」に一覧表示する。
プロシージャ「Exec_BAPI_PO_GETITEMS」として、標準モジュール「Main」内に実装されている。このプロシージャはワークシート「購買発注一覧」上のボタン「購買発注一覧の取得」に登録されており、同ボタンを押すと呼び出される。
'**************************************************************************************** ' 処理名 :Exec_BAPI_PO_GETITEMS ' 機能 :購買発注の一覧を取得する ' 返り値 :なし ' 引数 :なし '**************************************************************************************** Public Sub Exec_BAPI_PO_GETITEMS() On Error GoTo Err_Exec_BAPI_PO_GETITEMS Dim wsPO As Worksheet Dim oRFC As Object Dim RowData As Integer Dim aFields() As Variant Dim aPO_ITEMS() As Variant Dim RowCount As Integer Dim RowLast As Long Dim ColHeaderL As Integer Dim ColHeaderR As Integer Dim FlgCondition As Boolean Dim RowStart As Integer '開始行 Dim Col As Integer Dim PO_Number As String '処理対象のワークシートを変数にセット Set wsPO = ActiveSheet 'SAPログオン状態の確認 If SapChkAndLogon() <> 0 Then Exit Sub '呼び出すBAPIのセット goSapFunction.RemoveAll Set oRFC = goSapFunction.Add("BAPI_PO_GETITEMS") '*** Importパラメータの設定 '購買伝票番号 PO_Number = Trim(wsPO.Range("PO_NUMBER")) If PO_Number <> "" Then '購買発注番号が数字のみの場合は先頭ゼロ埋め If IsNumeric(PO_Number) Then PO_Number = Right("0000000000" & PO_Number, 10) End If oRFC.Exports("PO_NUMBER") = PO_Number FlgCondition = True End If 'サプライヤ If Trim(wsPO.Range("VENDOR")) <> "" Then oRFC.Exports("VENDOR") = Trim(wsPO.Range("VENDOR")) FlgCondition = True End If 'プラント If Trim(wsPO.Range("PLANT")) <> "" Then oRFC.Exports("PLANT") = Trim(wsPO.Range("PLANT")) FlgCondition = True End If '品目コード If Trim(wsPO.Range("MATERIAL")) <> "" Then oRFC.Exports("MATERIAL") = Trim(wsPO.Range("MATERIAL")) FlgCondition = True End If '購買組織 If Trim(wsPO.Range("PURCH_ORG")) <> "" Then oRFC.Exports("PURCH_ORG") = Trim(wsPO.Range("PURCH_ORG")) FlgCondition = True End If '購買グループ If Trim(wsPO.Range("PUR_GROUP")) <> "" Then oRFC.Exports("PUR_GROUP") = Trim(wsPO.Range("PUR_GROUP")) FlgCondition = True End If '発注日 If Trim(wsPO.Range("DOC_DATE")) <> "" Then If IsDate(wsPO.Range("DOC_DATE")) Then oRFC.Exports("DOC_DATE") = CDate(wsPO.Range("DOC_DATE")) FlgCondition = True End If End If If FlgCondition = False Then '検索条件が未入力の時 wsPO.Range("PO_NUMBER").Select MsgBox "検索条件を一つ以上設定してください。", vbExclamation, ThisWorkbook.Name Exit Sub End If '*** 列見出しの列番号と行番号を取得 '左端の列 ColHeaderL = wsPO.Range("PO_ITEMS").Column '右端の列 ColHeaderR = ColHeaderL + wsPO.Range("PO_ITEMS").Columns.Count - 1 'データ貼り付けの開始行 RowStart = wsPO.Range("PO_ITEMS").Row + wsPO.Range("PO_ITEMS").Rows.Count '*** BAPI実行 If oRFC.Call = False Then 'BAPI実行時エラー MsgBox oRFC.Exception, vbExclamation Exit Sub End If 'シートの列見出し(セル範囲"PO_ITEMS")から項目名を取得する aPO_ITEMS = wsPO.Range("PO_ITEMS") '結果を貼り付ける領域の事前消去 RowLast = CInt(wsPO.Cells(1, 1).SpecialCells(xlLastCell).Row) If RowLast > wsPO.Range("PO_ITEMS").Row + wsPO.Range("PO_ITEMS").Rows.Count - 1 Then wsPO.Rows(CStr(RowStart) & ":" & CStr(RowLast)).ClearContents End If '*** 結果を貼り付けるための配列に値をセットする With oRFC.Tables("PO_ITEMS") 'テーブルPO_ITEMSの件数の取得 RowCount = .RowCount If RowCount = 0 Then 'テーブルの件数=0の時、処理終了 MsgBox "条件に合う購買発注データが存在しません。", vbExclamation, ThisWorkbook.Name GoTo Exit_Exec_BAPI_PO_GETITEMS End If '購買発注のレコードを、ワークシートに貼り付けるための配列の定義 ReDim aFields(0 To RowCount - 1, 0 To ColHeaderR - ColHeaderL) '購買発注テーブルの値を配列にセット For RowData = 1 To RowCount For Col = ColHeaderL To ColHeaderR aFields(RowData - 1, Col - ColHeaderL) = .Value(RowData, CStr(aPO_ITEMS(1, Col - ColHeaderL + 1))) Next Next End With 'ワークシートに配列を貼り付け With wsPO .Range(.Cells(RowStart, ColHeaderL), .Cells(RowStart + RowCount - 1, ColHeaderR)) = aFields End With Exit_Exec_BAPI_PO_GETITEMS: 'ログオフ Call SapLogoff Exit Sub Err_Exec_BAPI_PO_GETITEMS: 'エラー発生時 MsgBox Err.Description, vbCritical, ThisWorkbook.Name End Sub
このコードのポイント
- BAPI: BAPI_PO_GETITEMS の追加
-
BAPI_PO_GETITEMS を使用可能にするため、オブジェクトgoSapFunctionに次のコードで追加する。
Set oRFC = goSapFunction.Add(“BAPI_PO_GETITEMS”)
goSapFunctionは、クラス Connection にある共通関数 SapLogon によって生成された、SAPとの接続に使用するオブジェクト である。
- Importパラメータの設定
-
BAPI_PO_GETITEMS のImport(入力パラメータ=購買発注データの抽出条件)を設定する。
BAPI_PO_GETITEM は抽出条件を設定しなければ実行できない。抽出条件として、ワークシート「購買発注一覧」の入力項目(セル値)より、購買発注番号やサプライヤコードなどの条件を設定する。
入力値をチェックし、どのセルにも値が入力されていない場合は、警告を表示して処理を終了する。
また、BAPIにとってのImportパラメータは、VBAでは次のようにExportsとして記述する。
'サプライヤ If Trim(wsPO.Range("VENDOR")) <> "" Then oRFC.Exports("VENDOR") = Trim(wsPO.Range("VENDOR")) FlgCondition = True End If
- BAPIの実行
-
Callメソッドを呼び出してBAPIを実行する。実行時例外が発生するとFalseを返す。Falseの場合は、Exceptionプロパティにエラーメッセージがセットされる。
'*** BAPI実行 If oRFC.Call = False Then 'BAPI実行時エラー MsgBox oRFC.Exception, vbExclamation Exit Sub End If
- データテーブル PO_ITEMS から値を取り出す
-
BAPIの実行が成功すると、戻り値としてデータテーブル PO_ITEMS に購買発注の一覧がセットされる。
PO_ITEMS にある項目名は、ワークシート「購買発注一覧」の列見出し(セル範囲「PO_ITEMS」)から取得する。セル範囲 PO_ITEMS の上段にある項目名を使ってデータテーブルから値を取り出し、ワークシートに貼り付けるための配列にセットしている。
'シートの列見出し(セル範囲"PO_ITEMS")から項目名を取得する aPO_ITEMS = wsPO.Range("PO_ITEMS") '購買発注のレコードを、ワークシートに貼り付けるための配列の定義 ReDim aFields(0 To RowCount - 1, 0 To ColHeaderR - ColHeaderL) '購買発注テーブルの値を配列にセット For RowData = 1 To RowCount For Col = ColHeaderL To ColHeaderR aFields(RowData - 1, Col - ColHeaderL) = oRFC.Tables("PO_ITEMS").Value(RowData, CStr(aPO_ITEMS(1, Col - ColHeaderL + 1))) Next Next
購買発注詳細データの取得
ワークシート「購買発注一覧」で選択中の行の、購買発注の詳細データを取得し、各ワークシートに表示する。
プロシージャ「Exec_BAPI_PO_GETDETAILS」として、標準モジュール「Main」内に実装されている。このプロシージャはワークシート「購買発注一覧」上のボタン「購買発注詳細」に登録されており、同ボタンを押すと呼び出される。
処理が成功すると、ワークシート「購買発注詳細」がアクティブになる。
'**************************************************************************************** ' 処理名 :Exec_BAPI_PO_GETDETAILS ' 機能 :選択中の購買発注の詳細データを取得する ' 返り値 :なし ' 引数 :なし '**************************************************************************************** Public Sub Exec_BAPI_PO_GETDETAILS() On Error GoTo Err_Exec_BAPI_PO_GETDETAILS Dim wsPO As Worksheet Dim PO_Number As String Dim oRFC As Object 'SAPログオン状態の確認 If SapChkAndLogon() <> 0 Then Exit Sub '購買発注一覧のワークシートを変数にセット Set wsPO = ActiveSheet '選択中の行の購買発注番号を取得 PO_Number = Trim(wsPO.Cells(ActiveCell.Row, wsPO.Range("PO_ITEMS").Column)) If PO_Number = "" Then '購買発注番号が取得できない時、処理を中断 MsgBox "購買発注番号を取得できません。", vbExclamation, ThisWorkbook.Name Exit Sub End If '呼び出すBAPIのセット goSapFunction.RemoveAll Set oRFC = goSapFunction.Add("BAPI_PO_GETDETAIL") '購買発注番号が数字のみの場合は先頭ゼロ埋め If IsNumeric(PO_Number) Then PO_Number = Right("0000000000" & PO_Number, 10) End If '購買発注番号のセット oRFC.Exports("PURCHASEORDER") = PO_Number 'データを取得するためのフラグをセット '明細データ取得 oRFC.Exports("ITEMS") = "X" '勘定設定取得フラグ oRFC.Exports("ACCOUNT_ASSIGNMENT") = "X" '納入日程行 oRFC.Exports("SCHEDULES") = "X" '購買発注履歴取得フラグ oRFC.Exports("HISTORY") = "X" '明細テキスト取得フラグ oRFC.Exports("ITEM_TEXTS") = "X" 'ヘッダテキスト取得フラグ oRFC.Exports("HEADER_TEXTS") = "X" 'サービスおよび制限値取得フラグ oRFC.Exports("SERVICES") = "X" '確認取得フラグ oRFC.Exports("CONFIRMATIONS") = "X" 'サービステキスト取得フラグ oRFC.Exports("SERVICE_TEXTS") = "X" 'カスタマ独自の項目も提供 oRFC.Exports("EXTENSIONS") = "X" '*** BAPI実行 If oRFC.Call = False Then 'BAPI実行時エラー MsgBox oRFC.Exception, vbExclamation GoTo Exit_Exec_BAPI_PO_GETDETAILS End If If oRFC.Tables("PO_ITEMS").RowCount = 0 Then '明細データの件数=0の時、処理中止 MsgBox "明細データが見つかりません。", vbExclamation, ThisWorkbook.Name GoTo Exit_Exec_BAPI_PO_GETDETAILS End If '購買明細の表示 If SetRfcTableData(Worksheets("購買発注明細"), oRFC.Tables("PO_ITEMS")) <> 0 Then 'エラー発生時は処理中断 GoTo Exit_Exec_BAPI_PO_GETDETAILS End If '勘定設定 If SetRfcTableData(Worksheets("勘定設定"), oRFC.Tables("PO_ITEM_ACCOUNT_ASSIGNMENT")) <> 0 Then GoTo Exit_Exec_BAPI_PO_GETDETAILS End If '納入日程行 If SetRfcTableData(Worksheets("納入日程行"), oRFC.Tables("PO_ITEM_SCHEDULES")) <> 0 Then GoTo Exit_Exec_BAPI_PO_GETDETAILS End If '購買発注履歴 If SetRfcTableData(Worksheets("購買発注履歴"), oRFC.Tables("PO_ITEM_HISTORY")) <> 0 Then GoTo Exit_Exec_BAPI_PO_GETDETAILS End If '明細テキスト If SetRfcTableData(Worksheets("明細テキスト"), oRFC.Tables("PO_ITEM_TEXTS")) <> 0 Then GoTo Exit_Exec_BAPI_PO_GETDETAILS End If 'ヘッダテキスト If SetRfcTableData(Worksheets("ヘッダテキスト"), oRFC.Tables("PO_HEADER_TEXTS")) <> 0 Then GoTo Exit_Exec_BAPI_PO_GETDETAILS End If 'サービス If SetRfcTableData(Worksheets("サービス"), oRFC.Tables("PO_ITEM_SERVICES")) <> 0 Then GoTo Exit_Exec_BAPI_PO_GETDETAILS End If '確認 If SetRfcTableData(Worksheets("確認"), oRFC.Tables("PO_ITEM_CONFIRMATIONS")) <> 0 Then GoTo Exit_Exec_BAPI_PO_GETDETAILS End If 'サービステキスト If SetRfcTableData(Worksheets("サービステキスト"), oRFC.Tables("PO_SERVICES_TEXTS")) <> 0 Then GoTo Exit_Exec_BAPI_PO_GETDETAILS End If 'カスタマ独自の項目 If SetRfcTableData(Worksheets("カスタマ独自の項目"), oRFC.Tables("EXTENSIONOUT")) <> 0 Then GoTo Exit_Exec_BAPI_PO_GETDETAILS End If 'ワークシート購買明細をアクティブに Worksheets("購買発注明細").Select Exit_Exec_BAPI_PO_GETDETAILS: 'ログオフ Call SapLogoff Exit Sub Err_Exec_BAPI_PO_GETDETAILS: 'エラー発生時 MsgBox Err.Description, vbCritical, ThisWorkbook.Name End Sub
このコードのポイント
- BAPI_PO_GETDETAIL へのパラメータの設定
-
詳細データを取得するためのフラグはすべてセットしている。
'データを取得するためのフラグをセット '明細データ取得 oRFC.Exports("ITEMS") = "X" '勘定設定取得フラグ oRFC.Exports("ACCOUNT_ASSIGNMENT") = "X" '納入日程行 oRFC.Exports("SCHEDULES") = "X" '購買発注履歴取得フラグ oRFC.Exports("HISTORY") = "X" '明細テキスト取得フラグ oRFC.Exports("ITEM_TEXTS") = "X" 'ヘッダテキスト取得フラグ oRFC.Exports("HEADER_TEXTS") = "X" 'サービスおよび制限値取得フラグ oRFC.Exports("SERVICES") = "X" '確認取得フラグ oRFC.Exports("CONFIRMATIONS") = "X" 'サービステキスト取得フラグ oRFC.Exports("SERVICE_TEXTS") = "X" 'カスタマ独自の項目も提供 oRFC.Exports("EXTENSIONS") = "X"
- 購買発注番号の設定
-
数値であるかを検査し、数値だった場合は先頭にゼロを埋めて10桁となるようにしている。
これは、ABAPプログラムと違い、外部プログラムからBAPIをコールする場合は「アルファ変換」※が自動的に行われないためである。
'購買発注番号が数字のみの場合は先頭ゼロ埋め If IsNumeric(PO_Number) Then PO_Number = Right("0000000000" & PO_Number, 10) End If '購買発注番号のセット oRFC.Exports("PURCHASEORDER") = PO_Number
- アルファ変換:文字列(CHAR型)データの前ゼロ補完や削除を行うための仕組み。
- 取得した購買詳細データのワークシートへの表示
-
BAPIを実行すると、購買詳細データはデータテーブルに戻り値として返される。
データテーブルは複数あるので、SetRfcTableData 関数(後述)を、ワークシートとデータテーブルを引数として渡し、呼び出す。
'購買明細の表示 If SetRfcTableData(Worksheets("購買発注明細"), oRFC.Tables("PO_ITEMS")) <> 0 Then 'エラー発生時は処理中断 GoTo Exit_Exec_BAPI_PO_GETDETAILS End If '勘定設定 If SetRfcTableData(Worksheets("勘定設定"), oRFC.Tables("PO_ITEM_ACCOUNT_ASSIGNMENT")) <> 0 Then GoTo Exit_Exec_BAPI_PO_GETDETAILS End If
購買発注詳細データの表示
BAPI_PO_GETDETAIL で取得した購買発注の詳細データ(各データテーブル)を、各ワークシートに表示する。この処理は、関数「SetRfcTableData」によって行う。
'**************************************************************************************** ' 処理名 :SetRfcTableData ' 機能 :取得したテーブル型のデータをワークシートに表示する ' 返り値 :エラー番号 (正常終了=0) ' 引数 :wsWork = ワークシート ' oRfcTable = SAPから返されるテーブル型のデータ '**************************************************************************************** Private Function SetRfcTableData(wsWork As Worksheet, ByRef oRfcTable As Object) As Long On Error GoTo Err_SetRfcTableData Dim RowLast As Long Dim RowCount As Integer Dim aDETAIL_ITEMS() As Variant Dim RowData As Integer Dim Col As Integer Dim aFields() As Variant Dim ColHeaderL As Integer Dim ColHeaderR As Integer Dim RowStart As Integer 'データ貼り付けの開始行を取得 RowStart = wsWork.Range("DETAIL_ITEMS").Row + wsWork.Range("DETAIL_ITEMS").Rows.Count '結果を貼り付ける領域の事前消去 RowLast = CInt(wsWork.Cells(1, 1).SpecialCells(xlLastCell).Row) If RowLast > wsWork.Range("DETAIL_ITEMS").Row + wsWork.Range("DETAIL_ITEMS").Rows.Count - 1 Then wsWork.Rows(CStr(RowStart) & ":" & CStr(RowLast)).ClearContents End If 'テーブルの件数を取得 RowCount = oRfcTable.RowCount If RowCount = 0 Then 'テーブル件数=0の時、処理を抜ける Exit Function End If 'シートの列見出し(セル範囲"DETAIL_ITEMS")を配列にセット aDETAIL_ITEMS = wsWork.Range("DETAIL_ITEMS") '*** 列見出しの列番号を取得 '左端の列 ColHeaderL = wsWork.Range("DETAIL_ITEMS").Column '右端の列 ColHeaderR = ColHeaderL + wsWork.Range("DETAIL_ITEMS").Columns.Count - 1 'テーブルの値をシートに貼り付けるための配列の定義 ReDim aFields(0 To RowCount - 1, 0 To ColHeaderR - ColHeaderL) 'テーブルの値を配列にセット With oRfcTable For RowData = 1 To RowCount For Col = ColHeaderL To ColHeaderR aFields(RowData - 1, Col - ColHeaderL) = .Value(RowData, CStr(aDETAIL_ITEMS(1, Col - ColHeaderL + 1))) Next Next End With 'ワークシートに配列を貼り付け With wsWork .Range(.Cells(RowStart, ColHeaderL), .Cells(RowStart + RowCount - 1, ColHeaderR)) = aFields End With Exit Function Err_SetRfcTableData: 'エラー発生時 SetRfcTableData = Err.Number MsgBox Err.Description, vbError, ThisWorkbook.Name End Function
このコードのポイント
- ワークシートの見出し行から項目名を取得
-
データテーブルの項目にアクセスするための項目名は、ワークシートの列見出しの上段から取得する。
詳細データを表示するためのワークシートの列見出しには、すべてセル範囲「DETAIL_ITEMS」という共通の名前をつけている。セル範囲に同じ名前をつけることによって、どのワークシートからも DETAIL_ITEMS からテーブルの項目名を取得できるようになっている。
項目名をVBAコードに記述せず、セル範囲から取得するため、表示する項目を増やしたい(減らしたい)場合は、セル範囲 DETAIL_ITEMS 内にある列を増やす(減らす)だけでよい。
'シートの列見出し(セル範囲"DETAIL_ITEMS")を配列にセット aDETAIL_ITEMS = wsWork.Range("DETAIL_ITEMS") '*** 列見出しの列番号を取得 '左端の列 ColHeaderL = wsWork.Range("DETAIL_ITEMS").Column '右端の列 ColHeaderR = ColHeaderL + wsWork.Range("DETAIL_ITEMS").Columns.Count - 1 'テーブルの値をシートに貼り付けるための配列の定義 ReDim aFields(0 To RowCount - 1, 0 To ColHeaderR - ColHeaderL) 'テーブルの値を配列にセット With oRfcTable For RowData = 1 To RowCount For Col = ColHeaderL To ColHeaderR aFields(RowData - 1, Col - ColHeaderL) = .Value(RowData, CStr(aDETAIL_ITEMS(1, Col - ColHeaderL + 1))) Next Next End With 'ワークシートに配列を貼り付け With wsWork .Range(.Cells(RowStart, ColHeaderL), .Cells(RowStart + RowCount - 1, ColHeaderR)) = aFields End With
まとめ:SAP購買発注データをBAPI+Excelマクロで手軽に利活用
本記事では、SAP S/4HANA環境での購買発注データを手軽に取得するための手法として、購買関連のBAPIの紹介と、Excelマクロ(VBA)+BAPI(BAPI_PO_GETITEMS, BAPI_PO_GETDETAIL)の実装方法を詳しく解説した。
S/4HANAでは、標準機能だけでは実現できないカスタム開発はABAPアドオンに傾きがちだが、こうしたVBAマクロによって、少し手軽にデータを利活用することができる。本記事をきっかけに、自社業務に最適なS/4HANAの機能拡張へと繋げていただければ幸いである。
コメント