SAP

【SAP】3分でわかるRICEF(ライセフ)講座

ABAP開発における基礎知識「RICEF」について3分でサクッと解説します。

「RICEF」を一言で言えば、開発するオブジェクトをざっくり5つに分類して整理したものです。

Report Interface Conversions Extensions Forms
RICEFとは

上記5つの頭文字をとって「RICEF」です。このページでは、「RICEF」を1つずつ順に解説し、それぞれの特徴を押さえつつ、RICEFという分類がなぜ必要なのか?(意外と必要性は低い?)整理しておきたいと思います。

RICEF

RICEFは、アドオン開発における開発オブジェクトをReports、Interfaces、Conversions、Extensions、Formsの5つに分類・整理したものです。まずは前提としての「開発オブジェクト」という言葉についての基本概念を確認しておきたいと思います。

開発オブジェクトとは、SAP標準にない全ての機能のことを指し示します。

例えば、SAP標準にない機能をABAPプログラムで追加したとします。すると、その追加したプログラムは「開発オブジェクト」に分類されることになります。

また、SAPがあらかじめ用意しているBADIやUser Exitなどを用いて機能を追加(拡張)したものも「SAP標準にない機能」という定義に当てはまるため「開発オブジェクト」の分類に当てはまりまることになります。

RICEFとはこの開発オブジェクトをざっくり5つに分類したものである、というをことを念頭に置いて、それぞれの内容を解説します。

※「開発オブジェクト」という言葉は、会社や職場によって異なる使われ方がされていたり、もしくはそもそもあまり使用しない単語である場合も多かったりします。あらかじめご了承ください。

Reports

Reportsは日本語に訳せば「報告書」と名の付く通り、データベースからデータを取得したり編集(データの並び替えや集計)したり、取得したデータを表示したりする機能群です。

「〇〇一覧表示」機能や、「〇〇集計結果確認」機能みたいな名前のアドオン機能であればこのReportsに分類されることが多いです。

押さえて起きたいのは、Reportsはあくまでもデータの取得・編集・表示を行うものであり、データベースの更新は行わないという点です。データベースの更新が発生する機能は、後述するExtensionsに該当します。

Reportsは、データベースの更新を行わない(即ちデータを条件に沿って取得してくるだけ)なので、設計・プログラミングが比較的簡単な機能です。

Interfaces

Interfacesには、SAP以外のシステムとのデータ連携機能が含まれます。

例えば、会社独自の旅費精算システムから、金額データをSAPに取り込む機能などが該当します。SAPの対抗システムが増加すればするほど、このInterfacesの機能数が増加します。

Interfacesに分類される機能については、異なるシステムとのデータ連携が発生するため、SAP以外のシステム知識がある程度求められるようになります。また、比較的大きめのデータを取り扱うことになるためパフォーマンス観点での設計・プログラミングが必要になってくるため、Reports分類よりも開発難易度が上がります。

Conversions

Conversionsには、既存システムから新規システムに移行する場合のデータ移行機能が含まれます。したがって基本的には、導入前に一番活躍するのがConversionsに分類される機能群です。

Conversionは日本語で「変換」の意味となります。その名の通りデータ変換を行う機能が中心ですが、データを一括でアップロード(バッチインプット)する機能もこの分類に含まれます。

Extensions(Enhancements)

Extensionsは、データベースの更新を行う機能と、ExitやBADIなどのSAP標準の拡張機能を利用してアドオンする機能全般が含まれます。

単純なReportよりも圧倒的に開発の難易度が上がります。データベースの更新が含まれるため、LUWの観点が必要になってきますし、ExitやBADIといったABAPではないSAP独自の仕組みに対する理解が必要となってくるためです。

プロジェクトが炎上する場合、大体の原因がこのExtensions分類です。熟練の開発者/SAPエンジニアをこれらの機能開発に割り当てる必要があるといえます。

Forms

Formsは帳票系の機能を指します。SmartformやSVF関連の機能がこれに該当します。

特に日本では、帳票文化が未だ根強いためこの分類に該当する機能数が多くなる傾向にあります。

RICEFを何に利用するか?

RICEFのそもそも論―。「何のために分類しているか?」について整理しておきたいと思います。

RICEFの分類を行うことで得られるメリットの第1は開発工数の見積もり精緻化に役立つということです。Report1本の開発工数と、Forms1本の開発工数は微妙に(時には非常に)異なるので、RICEF単位で見積もりをしたほうがより精度の高い予想開発工数が算出できるでしょう。

プロジェクト開始時点である程度の開発工数を予測する際に、RICEFという視点が役に立つのです。

メリットの2つ目は、チームメンバーの配置・役割分担の基準となる点です。ABAPerといえど、帳票系が得意なメンバーもいればExitやBADIに詳しいメンバーなど十人十色です。もし、あなたがプロジェクトリーダーだとすれば、アドオン機能ごとにチームを構成する際に、RICEFを基準にすることができるでしょう。