便利になったなぁと感じたコマンドのメモです。
NetWeaver7.40 SP2から使えます。
SAP NetWeaver AS for ABAP 7.51 Innovation Package – Overview and Product Highlightsに同じような情報ありました。他にも興味深い内容多かったです。
変数のInline Declaration
変数定義をしながら、値の入れ込みができます。
https://help.sap.com/http.svc/rc/abapdocu_751_index_htm/7.51/en-US/abendata_inline.htm
Report.abap
* 以前の書き方 DATA lv_guid TYPE sysuuid_x16. lv_guid = cl_system_uuid=>if_system_uuid_static~create_uuid_x16( ). * 新しい書き方 DATA(lv_guid) = cl_system_uuid=>if_system_uuid_static~create_uuid_x16( ).
Report.abap
* こんな書き方もできます
SELECT * FROM t000 INTO TABLE @DATA(lt_t000). READ TABLE lt_t000 INTO DATA(ls_t000) INDEX 1.
・汎用モジュール/メソッド側に合わせた動的なデータ定義ができるので、汎用モジュール/メソッドのパラメータ参照データ型を変えても、勝手に追随してくれます。そのため、保守性があがります。
・コードが短くなって可読性向上。
・データを入れ込む場所で変数定義するので、実際に使う場所がわかりやすく、変数が使われるスコープが短くなって可読性が向上します。
内部テーブルへの行追加
ヘッダ領域なしに追加できます。
レンジテーブルに対して、特に便利です。
Report.abap
DATA lt_string TYPE TABLE OF string. * 新しい書き方 lt_string = VALUE #( ( `1st Line` ) "1行目 ( `2nd Line` ) ). "2行目 * 古い書き方 APPEND: '1st Line' TO lt_string, '2nd Line' TO lt_string.
Report.abap
DATA lt_range TYPE RANGE OF i. * 新しい書き方 lt_range = VALUE #( BASE lt_range ( sign = 'I' option = 'BT' low = 1 high = 10 ) ). * 古い書き方 DATA ls_range LIKE LINE OF lt_range. ls_range-sign = 'I'. ls_range-option = 'BT'. ls_range-low = 1. ls_range-high = 10. APPEND ls_range TO lt_range.
・コードが短くなる
・ヘッダ領域の変数定義が不要