2017-01-10 18 views
3

私は、ロジックが埋め込まれたテキストを扱うのを助けるために、汎用モジュールに取り組んでいます。 SAPはSAPscriptのファイルを処理すると、私はそうのように宣言された構造を発見したロジックを解析する方法を検討していますが:これは明らかに組み込みの汎用モジュールでこの構造体宣言を使用できますが、新しい構造体宣言では使用できないのはなぜですか?

DATA BEGIN OF events OCCURS 100. 
     INCLUDE STRUCTURE ITCCA. 
DATA: command LIKE BOOLEAN, 
     template LIKE BOOLEAN, 
     mask LIKE BOOLEAN, 
    END OF events. 

それは印刷プログラムを実行している間、私はそれをトレースすることができますように、働きます。だから私は私自身のコードで同様の構造体を試してみると思ったが、上のように1のコード1をコピーしても、起動時にエラーが出る。エラーは

"BOOLEAN" must be a flat structure. Internal tables, references, 
strings and structures are forbidden as components. 

なぜこの構造が1つのプログラムで有効で、私のものではないのか説明できますか?

+0

元のコードはどこにありますか? – vwegert

+0

これは 'STXC'関数グループの一部です。私はこの質問を投稿した後、これに関するいくつかの情報を見つけました。 'LIKE'では自分自身で' BOOLEAN'型を定義しなければならないと思われますが、 'TYPE'を使用すると、' BOOLEAN'の辞書値を使用します。彼らが元のコードで自分自身を定義する理由を知りませんでしたか? – JRSofty

答えて

3

実際の効果について説明するため:LIKEは通常右側にデータオブジェクト(実変数)を意味し、ないデータ型。あなたが正しく発見したら、データオブジェクトBOOLEANという名前を指定すると、型の作成に使用されます。その名前のデータオブジェクトが存在せず、クラスまたはインターフェイス内にない場合は、obsolete variant of the LIKE statementがトリガされ、データ型も考慮されますが、右側の特定の要素のみが許可されますフラットな構造化オブジェクトまたはそれらのコンポーネントです。 LIKE DATATYPE-BOOLEANが機能するはずです。いつものように、エラーメッセージは参考になるよりも多少少ないです。

+1

説明をありがとう。 SAPとABAPの新人として、私はそれがどのように機能するかを理解する上で多くの小さな問題を発見しています。 – JRSofty

+2

それと一緒に暮らすことを学ぶ - その気持ちはいつでもすぐに消えません:-) – vwegert

0

最初の調査では、BOOLEANタイプの宣言がありませんでした。 SAPが異なるのbooleanのために独自の変数を宣言することを決定したSTXC機能グループでは、このようなファイルが含ま:私はもともと、彼らは似た名前を持ち、ある辞書の定義されたタイプでこれをやっていたことを想定していた

data: boolean(1) type c. 

を1文字の長い文字列。

DATA BEGIN OF events OCCURS 100. 
    INCLUDE STRUCTURE ITCCA. 
DATA: command TYPE BOOLEAN, 
    template TYPE BOOLEAN, 
    mask TYPE BOOLEAN, 
END OF events. 

それはその後、辞書に定義された値を使用することになるので、私のコードが有効になります:私は何も見つけた私は、このように私の構造体の宣言を変更した場合ということです。だから私はキーワードを使うことができるように、またはTYPEキーワードを辞書定義を使用するために使用するために、私自身の定義のために、booleanの宣言を追加する必要があります。

関連する問題