ALV OM for WebDynpro のチュートリアルで作成したソースを見ていたのですが、
何箇所かリテラルでテキストをコーディングしていることに気付きました。
これでは多言語対応できませんね。
WebDynproでテキストの国際化をする場合、ヘルプの「Internationalization and Translation」で記述されているように OTR を使用する方法がありますが、これは、プロジェクト全体で使用するメッセージなどの国際化には向いていますが、アプリケーション固有のテキストには不向きです。
(ちなみに、メッセージをOTRに対応させるには、グローバル例外クラスの使用をお勧めします。グローバル例外クラスのテキストタブで登録したテキストは、自動的にOTRに保存されます。)
では、アプリケーション固有テキストは、どのように国際化すればよいでしょうか。
そのためには、ヘルプの「Working with the Assistance Class」で説明されているアシスタントクラスを使用します。
アシスタントクラスを使用すると、テキストエレメントを使用することができるので、通常のABAPオブジェクトと同様に、容易に国際化が行えます。
ただ、テキストエレメントを WebDynpro コンポーネントから直接使用することはできません。そのためには、アシスタントクラスの GET_TEXT メソッド(ALIASを設定した場合です。設定しない場合は、IF_WD_COMPONENT_ASSISTANCE~GET_TEXT です。)を使用します。
このとき、GET_TEXT に KEY としてテキストシンボルの ID を渡さなければなりません。この ID も文字列になるので、一緒にこの ID 値も定数として定義してしまいます。
たとえば、ALV OM for WebDynpro のチュートリアル『Generating Self-Defined Functions for ALV in Web Dynpro for ABAP』(PFD形式:276KB)のビュー FLIGHTVIEW のメソッド WDDOINIT のコーディングで、ヘッダテキストを設定する箇所では、「FLIGHT LIST SEARCH」というテキストリテラルを使用していますので、これをアシスタントクラスのテキストエレメント「H01」で登録します。
このとき、同時に属性として C_ID_TEXT_HEADER という定数を作成し、その定数値を「H01」とします。
WDDOINITメソッドからは、
DATA: l_text_head TYPE string .
l_text_head = wd_assist->get_text( wd_assist->c_id_text_header ) .
lr_header->set_text( l_text_head ).
として、定数およびテキストエレメントを使用します。
最近のコメント