« 2008年9月 | トップページ | 2008年11月 »

2008年10月の5件の記事

クラスのフレンド

またHDDが壊れました。しかも今度はシステムドライブなのでOSの再インストールです。o(;△;)o

ALV OMの続きには時間がかかりそうなので、別の話題を。

クラスにフレンドを定義すると、そのクラスのPrivateProtectedのコンポーネントにアクセス可能になります。

これはカプセル化を破ることになるので、使用はあまりお勧めしません。

とはいえ、ALVの具象クラスでもフレンドが定義されています。

  • CL_SALV_ADAPTER
  • CL_SALV_CONTROLLER
  • CL_SALV_CONTROLLER_TABLE (CL_SALV_TABLEのみ) ← これって必要?

たとえば、CL_SALV_ADAPTERのサブクラスCL_SALV_FULLSCREEN_ADAPTERのメソッドGET_COLUMNSでは、CL_SALV_TABLEPrivate属性R_COLUMNSにアクセスします。

同様に、CL_SALV_CONTROLLER_TABLEDISPLAYメソッドでも、CL_SALV_TABLEProtected属性R_LAYOUTにアクセスします。

ところで、アクセスを許可されたクラスからサブクラスを作成した場合、サブクラスからはPrivateProtectedのコンポーネントにアクセスできるのでしょうか?

| | コメント (0) | トラックバック (0)

ALV OM:クラス構造(基本部分)

まず最初にALV OMのクラスの構造を見ていきましょう。
基本となるクラスのパブリックコンポーネントを列挙したクラス図を見てください。
「public_structure.zip」(0.97MB)をダウンロード

トップにあるのは「CL_SALV_MODEL」です。抽象クラスとなっており、ここでは省略していますが、ALVのコントローラクラスへのリンクとなっています。

次のレベルは「CL_SALV_MODEL_BASE」です。このクラスも抽象クラスであり、名前の通り、すべての表示形式のベースクラスとなっています。
すなわち、各表示形式に共通するメソッドと定数が、このクラスで定義されています。

「CL_SALV_MODEL_BASE」からは、「CL_SALV_MODEL_LIST」と「CL_SALV_MODEL_TREE」が派生しています。

「CL_SALV_MODEL_TREE」は、ツリー表示形式のALVを出力するための具象クラスです。

「CL_SALV_MODEL_LIST」は、抽象クラスで、LIST形式のALV出力を行う場合の共通メソッドを定義しています。

「CL_SALV_MODEL_TREE」からは、「CL_SALV_HIERSEQ_TABLE」と「CL_SALV_TABLE」が派生しています。

「CL_SALV_HIERSEQ_TABLE」は階層付き表形式のALVを出力するための具象クラスです。

「CL_SALV_TABLE」は単純表形式のALVを出力するための具象クラスです。

本日は、ここまでとします。次回は、各クラスのコンポーネントについて見ていきたいと思います。

| | コメント (2) | トラックバック (0)

ALV OM:まとめのトピック

予告してからだいぶ経ってしまいましたが、ALV OM (Object Model)について書いていこうと思います。
とりあえず、ここがまとめ用の記事になりますので、ALV OMに興味がある方は、この記事をブックマークしたり更新チェックをかけたりしてみてください。

以下、各トピックへのリンクになります。

ALV OM:クラス構造(基本部分)

ALV OM:メソッド一覧

ALV OM: デザインパターンの適用

ALV OM: デザインパターンの適用(2)

ALV OM: デザインパターンの適用(3)

| | コメント (0) | トラックバック (0)

クラスでのインクルード使用について

以前にも書いたと思いますが、最近このキーワードで検索をされた方がいらっしゃったので、改めて書かせていただきます。

クラスからインクルードを使用することはまったく不可能ではありませんが、特殊な手順が必要になります。
たとえば、既存の一般的な定数インクルードをクラス内から使用するようなことはできないと思ってください。

では、どうすればよいかというと、定数インクルードの内容を、新規インタフェースで定義することになります。
このとき、定数が大量に定義済みの場合は、1つ1つをインタフェース定義画面で登録するのは手間ですので、定数インクルードの内容を、テキストファイルにダウンロードして、インタフェースの定義形式に編集してそのままコピーして、クラスビルダの「Goto」メニューの「Interface Section」で開いた画面に張り付ける方法をお勧めします。

定数名自体はインクルード中のものと同じであっても大丈夫です。
インタフェース作成以後は、インクルードの更新を停止し、インタフェースを更新するようにしてください。2重メンテは危険ですので。

クラスビルダでインタフェースを使用することを宣言しておけば、クラスからは、Alias が使用できますので、インタフェースで定義した cns_MyCompany のような定数を、そのまま cns_MyCompany として使用可能です。

レポートプログラムなどからは、インタフェース名=>cns_MyCompany となり、少々長くなりますが、特に問題はないでしょう。

| | コメント (0) | トラックバック (0)

Strategy Management 日本語版

@ITの記事

EPM =「Enterprise Performance Management」ですね。
プラットフォームが NetWeaver になってから、こういう外付け製品による拡張がしやすくなっているようです。
今回の Strategy Management も NetWeaver のパワーで BI とも統合されています。
カスタマ開発においても、これからは NetWeaver を十分に活用して柔軟なシステムを構築する必要があります。

| | コメント (0) | トラックバック (0)

« 2008年9月 | トップページ | 2008年11月 »