2017-04-26 2 views
0

それはまさに私の質問です。cl_gui_alv_grid型の参照にdirty assignを使用しますか?一般的に不可能ですか?

トピックで言及したトリックで簡単に解決できる新しい要件を確認する必要があります。

コンサルタントは汚れたアサインを使用することができないと述べています。

私はBADIメソッドの中で始めて、正しく動作するように2つのダーティー・アサインを得ました。

GUIオブジェクトへの参照を持たないオブジェクトを割り当て、もう1つはデータテーブルのみを割り当てます。どちらも同じ、他のプログラムに存在します。

今、同じプログラムのALVグリッドの1つからfieldsymbolを割り当てる必要があります。

SY-SUBRCは、0を返しますが、後でfieldsymbolはINITIALを示します。

私はこれがセキュリティ上の理由で許可されていないと想像することができます。

とにかく、ここで私の前提の確認や訂正を求めるだけです。

+0

話題のコード例はありますか? –

+0

残念ながら、これは本当に多くのコードです。しかし、私は空の参照を受け取った理由を理解しました。私はPBO badiメソッドの中にいて、グリッドはその時にインスタンス化されませんでした。私は別に働いている。 – icbytes

答えて

0

私が知る限り、それはセキュリティとは関係ありません。汚い割り当ての可能性を避ける方法はありますが、それは別の話です。グローバルとして定義すると、GUIコントロールへの参照は、通常の到達可能な変数としてそのまま残りますが、しばらくしてから初期化することができます。

は私をバックアップするための公式 CFW documentationを見上げるとそこに彼らが書く:コントロールの

寿命は寿命管理によって規制されています。 ライフタイム管理では、フロントエンドのコントロールが不要になったときに、自動的にコントロールが破棄されます( )。もちろん、アプリケーションプログラムの も、コントロールの明示的な破棄をサポートしています。

したがって、サーバー側のGUIコントロールへの参照は、処理プログラムによって明示的にまたは自動的にシステム自体(「ガベージコレクタ」の一種)によって初期化され、初期化できます。

コントロールの寿命の詳細についてはhereをご覧ください。

0

dirty assignsを使用することは、ソフトウェア設計(カプセル化とインターフェイス)の少なくとも2つの原則を破るため、セキュリティと堅牢性の領域に損傷を与える可能性があるため、一般的に非常に悪い考えです。 ダーティアサインを使用しているときに何が問題になる可能性があるかについての説明は、私のこのブログを読むことができますAgreements must be kept

関連する問題