TYPES: BEGIN OF ty_item,
product_name TYPE string, " 商品名
unit_price TYPE p DECIMALS 2, " 単価
quantity TYPE i, " 数量
shipping_fee TYPE p DECIMALS 2, " 送料
END OF ty_item.
TYPES: BEGIN OF ty_final_item,
product_name TYPE string, " 商品名
total_price TYPE p DECIMALS 2, " 合計金額
shipping_fee TYPE p DECIMALS 2, " 送料
END OF ty_final_item.
DATA: it_item TYPE TABLE OF ty_item, " 商品情報の内部テーブル
it_final_item TYPE TABLE OF ty_final_item, " 最終商品情報の内部テーブル
ls_item TYPE ty_item, " 商品情報の構造
ls_final_item TYPE ty_final_item. " 最終商品情報の構造
* 内部テーブルに商品情報を追加
APPEND VALUE ty_item( product_name = 'Product 1' unit_price = 100 quantity = 55 shipping_fee = 300 ) TO it_item.
APPEND VALUE ty_item( product_name = 'Product 2' unit_price = 120 quantity = 20 shipping_fee = 600 ) TO it_item.
APPEND VALUE ty_item( product_name = 'Product 3' unit_price = 60 quantity = 150 shipping_fee = 900 ) TO it_item.
* 合計金額の計算と送料のチェック
LOOP AT it_item INTO ls_item.
ls_final_item-product_name = ls_item-product_name.
ls_final_item-total_price = ls_item-unit_price * ls_item-quantity.
IF ls_final_item-total_price >= 5000.
ls_final_item-shipping_fee = ls_item-shipping_fee. " 合計金額が5000以上の場合は送料も最終商品情報に入れる
ENDIF.
APPEND ls_final_item TO it_final_item.
CLEAR: ls_final_item. " ループの最後に最終商品情報の構造を初期化
ENDLOOP.
* 結果の表示
LOOP AT it_final_item INTO ls_final_item.
WRITE: / '商品名:', ls_final_item-product_name, ' 合計金額:', ls_final_item-total_price, ' 送料:', ls_final_item-shipping_fee.
ENDLOOP.