内部テーブル
OCCURSで定義する数字って、国民のみんなどうしていますか?
前に担当したプロジェクトの担当者から電話がかかってきて、
「OCCURSにゼロ以外(1とか10)の数字が定義されている、
SAP推奨でない(?)ので直しに来てくれ」と言われてしまいました。
ヘルプを見ると
1.ゼロにすると行の長さによって16~100の間で自動的に
割当がされる
2.ゼロより大きい値を定義して意味があるのは、エントリ数が
わかっていて、かつきちんとOCCURS領域を的確に定義したい
場合のみで、それ以外は意味がない
3.OCCURSの値が大きすぎる場合は行の長さに合わせて自動的に
調整される
これらを見ると、エントリ数とよほど乖離した大きな値を
定義していない限りは、別に開発担当者を呼び出して改修する
必要まではないと思うのですがどうなのでしょうか?
※ヘルプに「使わないようにしてください」と明記されている
'INCLUDE STRUCTURE'や、内部テーブルのヘッダ行の方が
改修の必要性があるのではと思ってしまうのですが…(^^;
私は特に意味もなく、通常、0固定ですねぇ~~~
で、最大10明細とかわかっていると、occurs 10 にしたりします。
「SAP推奨」って言ったら、ヘッダ行無しの OCCURS もそうらしいですね。
ヘッダ行が有ったほうが断然便利だと思うのは私だけですか?
古くからのABAP/4(あえて)を知っている当方にしては
ヘッダありの方がしっくりきます。
基本的にOCCURS 0は使用しないようにPGには指導しています。
ただ、パフォーマンス上些細なことなので気にはしませんが...
結局ABAPのパフォーマンスってI/Oベースが基本なように感じています。
OCCURSについてはVer4.0以降はSIZEを使いますが基本的には指定しないのが推奨
みたいです。たしかに内部テーブルのパフォーマンス面から見るとOCCURSよりかは
どこのプロジェクトも標準化の遅れてる内部テーブルの種類とか読み方とかをもう
少し見直されたほうが良いような気がします。
大変ですね、occursだけで呼び出されるって。。。
こんにちは。先日、occursの直しを行ってきました。
絶対にエラーが出ないことはわかっていながら、
一応動作確認までやってきました(笑)
occursに関しては、「何を設定しても一緒だけど、とりあえず
1か10くらいにしておけ」というように教えられたので(3.1H)、
そのように組んでいました。
ゼロが推奨なんて話は聞いてませんでした。
ヘッダ行ありなしですが、今まで経験したプロジェクトで、
「ヘッダ行なしの内部テーブルで」と指示されたのは
ごくわずかです。おそらくヘッダ行なしの内部テーブルでの
コーディングに慣れていない人が多いのが原因か、
ヘッダ行なしがSAP推奨であるということを知っている
人間がまだ少ないのが原因ではと思います。
ありがとうございました。
こんにちは。
内部テーブルのoccursですが、私は「0」しかしたことないです。
今まで、内部テーブルに入れる件数が明確にわかっている。という
仕様をもらったことない。というのと、周りの人がみんな
occurs 0 と書いているので、それに合わせている。というの
というのが主な理由です。
ヘッダ行は・・・個人的にはない方がわかりやすいし、使い
やすくて好きなんですけど、汎用モジュールのtablesパラメータ
に渡す内部テーブルだと、ヘッダ行がないとだめ、みたいな事
をどこかで見た記憶があって、tablesパラメータに渡す時は、
ヘッダつきで宣言してます。
それでは。長々と失礼いたしました。
今後ともよろしくお願いします。
OCCURS の値または INITIAL SIZE の指定
テーブル定義の "OCCURS n" または "INITIAL S IZE n"
n = 0 と指定すれば、OCCURS 領域のサイズ設定をシステムに任せること ができます。
具体的に n > 0 の数値を指定して意味があるのは、テーブルに含まれるエント リの数が正確に分かっており、 OCCURS 領域を正確に設定したい場合です 。
メモリに対する要件が過剰にならないようにするために、n の値が大きい場合に は以下のような処理が行われます: n の最大値として取り得る値 n_max は、8 < (>KB<)> を行の長さで割ったものとなります。値が大きい場合、n に行の長さを 掛けたものが 12 KB 程度になるように n が設定されます。
なんて書いてありますね。これをもってSAP推奨と解釈しているかも
OCCURSで定義する数字って、国民のみんなどうしていますか?
前に担当したプロジェクトの担当者から電話がかかってきて、
「OCCURSにゼロ以外(1とか10)の数字が定義されている、
SAP推奨でない(?)ので直しに来てくれ」と言われてしまいました。
ヘルプを見ると
1.ゼロにすると行の長さによって16~100の間で自動的に
割当がされる
2.ゼロより大きい値を定義して意味があるのは、エントリ数が
わかっていて、かつきちんとOCCURS領域を的確に定義したい
場合のみで、それ以外は意味がない
3.OCCURSの値が大きすぎる場合は行の長さに合わせて自動的に
調整される
これらを見ると、エントリ数とよほど乖離した大きな値を
定義していない限りは、別に開発担当者を呼び出して改修する
必要まではないと思うのですがどうなのでしょうか?
※ヘルプに「使わないようにしてください」と明記されている
'INCLUDE STRUCTURE'や、内部テーブルのヘッダ行の方が
改修の必要性があるのではと思ってしまうのですが…(^^;
私は特に意味もなく、通常、0固定ですねぇ~~~
で、最大10明細とかわかっていると、occurs 10 にしたりします。
「SAP推奨」って言ったら、ヘッダ行無しの OCCURS もそうらしいですね。
ヘッダ行が有ったほうが断然便利だと思うのは私だけですか?
古くからのABAP/4(あえて)を知っている当方にしては
ヘッダありの方がしっくりきます。
基本的にOCCURS 0は使用しないようにPGには指導しています。
ただ、パフォーマンス上些細なことなので気にはしませんが...
結局ABAPのパフォーマンスってI/Oベースが基本なように感じています。
OCCURSについてはVer4.0以降はSIZEを使いますが基本的には指定しないのが推奨
みたいです。たしかに内部テーブルのパフォーマンス面から見るとOCCURSよりかは
どこのプロジェクトも標準化の遅れてる内部テーブルの種類とか読み方とかをもう
少し見直されたほうが良いような気がします。
大変ですね、occursだけで呼び出されるって。。。
こんにちは。先日、occursの直しを行ってきました。
絶対にエラーが出ないことはわかっていながら、
一応動作確認までやってきました(笑)
occursに関しては、「何を設定しても一緒だけど、とりあえず
1か10くらいにしておけ」というように教えられたので(3.1H)、
そのように組んでいました。
ゼロが推奨なんて話は聞いてませんでした。
ヘッダ行ありなしですが、今まで経験したプロジェクトで、
「ヘッダ行なしの内部テーブルで」と指示されたのは
ごくわずかです。おそらくヘッダ行なしの内部テーブルでの
コーディングに慣れていない人が多いのが原因か、
ヘッダ行なしがSAP推奨であるということを知っている
人間がまだ少ないのが原因ではと思います。
ありがとうございました。
こんにちは。
内部テーブルのoccursですが、私は「0」しかしたことないです。
今まで、内部テーブルに入れる件数が明確にわかっている。という
仕様をもらったことない。というのと、周りの人がみんな
occurs 0 と書いているので、それに合わせている。というの
というのが主な理由です。
ヘッダ行は・・・個人的にはない方がわかりやすいし、使い
やすくて好きなんですけど、汎用モジュールのtablesパラメータ
に渡す内部テーブルだと、ヘッダ行がないとだめ、みたいな事
をどこかで見た記憶があって、tablesパラメータに渡す時は、
ヘッダつきで宣言してます。
それでは。長々と失礼いたしました。
今後ともよろしくお願いします。
OCCURS の値または INITIAL SIZE の指定
テーブル定義の "OCCURS n" または "INITIAL S IZE n"
n = 0 と指定すれば、OCCURS 領域のサイズ設定をシステムに任せること ができます。
具体的に n > 0 の数値を指定して意味があるのは、テーブルに含まれるエント リの数が正確に分かっており、 OCCURS 領域を正確に設定したい場合です 。
メモリに対する要件が過剰にならないようにするために、n の値が大きい場合に は以下のような処理が行われます: n の最大値として取り得る値 n_max は、8 < (>KB<)> を行の長さで割ったものとなります。値が大きい場合、n に行の長さを 掛けたものが 12 KB 程度になるように n が設定されます。
なんて書いてありますね。これをもってSAP推奨と解釈しているかも