Friday is awesome

SAPについて個人的なメモをまとめたブログです

MENU

【AI】Google BardでABAPコードを作ることはできるのか?


f:id:carthat:20230610214505j:image
ChatGPTに続いてGoogleもBardというチャットAI、生成系AIを出してきたというわけで
前回、GhatGPTへABAP Codeを生成してもらった時と同じ質問文をGoogle Bardへ投げかけてみました。

質問①

受注伝票から販売価格を取得するためのABAPプログラムサンプルを書いてください

Bard回答①

はい、喜んで。

report z_get_sales_price.

data:
    i_sales_order_id type so_order_id.
    o_sales_price type so_price.

select-single sales_price into o_sales_price
    from so_order
    where order_id = i_sales_order_id.

if sy-subrc <> 0.
    message 'Sales order not found.' type 'E'.
endif.

endreport.
このプログラムは、受注伝票IDを指定して、販売価格を取得します。販売価格は、SO_ORDERテーブルのSALES_PRICEカラムから取得します。販売伝票が見つからない場合、エラーメッセージを出力します。

感想①
それらしいプログラムコードを生成してきましたが、取得テーブルが受注系テーブルではない謎のテーブルIDから取得してきました。

質問②

画面の検索項目で受注伝票を複数指定できて、受注伝票明細の伝票番号、明細番号、プラント、保管場所、出荷ポイント、受注数量を一覧表示するABAPプログラムサンプルを書いてください

Bard回答②
はい、わかりました。画面の検索項目で受注伝票を複数指定できて、受注伝票明細の伝票番号、明細番号、プラント、保管場所、出荷ポイント、受注数量を一覧表示するABAPプログラムサンプルは次のとおりです。

REPORT ZABAP_ORDER_DETAIL.

*&---------------------------------------------------------------------*
*& Report ZABAP_ORDER_DETAIL
*&
*& This report lists the order details for the specified order numbers.
*&
*&---------------------------------------------------------------------*

* Declare variables.
DATA: ls_order_number TYPE sord-numb.
DATA: ls_detail_number TYPE sord-pos.
DATA: ls_plant TYPE sloc-plant.
DATA: ls_storage TYPE sloc-loc.
DATA: ls_shipment_point TYPE sloc-ship.
DATA: ls_order_quantity TYPE snum.

* Get the order numbers from the screen.
SELECT-SCREEN 100.
SELECT order_number INTO ls_order_number
FROM sord
WHERE order_number IN ('10000001', '10000002').

* Loop over the order numbers and get the details.
LOOP AT ls_order_number INTO ls_order_number.

* Get the order detail.
SELECT detail_number, plant, storage, shipment_point, order_quantity
INTO ls_detail_number, ls_plant, ls_storage, ls_shipment_point, ls_order_quantity
FROM sord_detail
WHERE order_number = ls_order_number.

* Display the order detail.
WRITE:/ ls_order_number, ' ', ls_detail_number, ' ', ls_plant, ' ',
       ls_storage, ' ', ls_shipment_point, ' ', ls_order_quantity.

ENDLOOP.

* End of report.
END-OF-SELECTION.
このプログラムを実行すると、画面に指定した受注伝票の受注伝票明細が一覧表示されます
感想②またも、それらしいコードを返してきましたが、根本的にABAPの文法を理解はしていないようです。
・受注のテーブルIDが違う
・画面の入力項目が設定できていない
・テーブル取得後、内部テーブルへ値を挿入できていない

前回のChatGPTと比較すると、ChatGPTのProgramming能力はGoogle Bardよりも相当高いように思います。
天下のGoogle社でもAI開発は難しいんだなと感じました。というか、Googleの頭脳が
他の場所に流れているだけかもしれませんが。