2

4.7 から ECC6 にアップグレードして以来、ABAP コンパイラは、OO コンテキストでの特定のステートメントの使用に関してより厳密になりました。

たとえば、ステートメント LIKE を使用することは許可されていませんが、代わりに TYPE を使用する必要があり、内部テーブルには暗黙的なヘッダー行がありません。

これらの制限については、こちらで詳しく説明しています

MY QUESTION:この制限は既存のコードベースにどの程度影響しますか?

1998 年以降、OO が当時利用可能であった限り、1000 を超える「クラス」が OO で作成されました。ほとんどの場合、各クラスは SE38 の独自のインクルードであり、クラスの定義と実装がこのインクルードにまとめられています。

これまでは、メイン プログラムが 4.7 で既存のものである限り、これらのクラスを正常に変更して有効にすることができました。現在、回帰テストの目的で新しいメイン プログラムでこれらの古いクラスの 1 つを使用しようとしていますが、次のエラーが発生しています。

「クラスとインターフェース内では、"TYPE" のみを使用して ABAP ディクショナリ タイプを参照できます ("LIKE" または "STRUCTURE" ではありません)。」

このエラーは、SAP 言語の現在の定義に従って有効です。

SAP インタープリターが廃止されたステートメントを含む古いコードを意図的に実行し続けるかどうか、または将来のパッチでこの「機能」が修正され、これらのクラスのコンパイルが停止する可能性があるかどうかを知りたいです。

4

2 に答える 2

6

各開発オブジェクトには、それが開発された SAP バージョンに対応するバージョンがタグ付けされています。これは、バージョン管理またはテーブル VRSD で確認できます。

私が理解しているように、それは特に、後のバージョンで違法にされたステートメントを含むコードがアップグレード後も存続し、実行を継続できるようにするためのものです。

これが、4.5b で開発されたインクルードを NW700 で開発されたクラスにアタッチすると、コンパイルされない理由です。コンパイラは、これが新しい開発であることを認識しており、それに応じてルールを適用します。

于 2009-07-08T13:42:02.247 に答える
0

ABAP コミュニティは、LIKE、ワークエリア、RANGE などは時代遅れであると長い間 (何年も) 知らされてきました。

SAP が古いコードを削除するとは思いませんが、もし私が責任者だったとしても、それを期待することはありません。

それで、彼らはそれをコンパイルを停止させることができますか: はい、彼らは: おそらくそうしません.

于 2009-04-01T21:30:30.217 に答える