これは古典的です-すべてのABAP開発者はこれを少なくとも一度は経験しなければならないと思います。
構造体の内部テーブルを使用していKNA1ます。これは、ターゲット変数が次の構造体を持っていることを意味します
ccckkkkkkkkkklllnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN...
cccクライアントでありkkkkkkkkkk、フィールドKUNNR(10文字)、lllフィールドLAND1(3文字)であり、フィールドの場合は35秒n、フィールドの場合は35秒というように続きます。NAME1NNAME2
ステートメントでは、列をSELECT取得するようにシステムに指示し、NAME1-この順序で!これにより、上記の命名法を使用して、次の構造を持つ結果セットが生成されます。KUNNRNAME2
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnkkkkkkkkkkNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
ある種の型エラーを発生させる代わりに、システムは、主に歴史的な理由で、データをターゲット構造に絞り込もうとします。最初のフィールドはすべて文字フィールドであるため、成功します。結果:MANDT内部テーブルのフィールドには、の最初の3文字が含まれNAME1、フィールドKUNNRにはソースフィールドの文字4〜13が含まNAME1れます。
幸い、解決策は簡単です。INTO CORRESPONDING FIELDS OF TABLEの代わりに使用してINTO TABLEください。これにより、システムはターゲットテーブルに入力するときにフィールド名ベースのマッピングを使用します。tomdemuytが述べたように、独自のターゲット構造をロールすることも可能です。大規模なデータセットの場合、それ以外の場合は大量のメモリを浪費するため、これは非常に良いアイデアです。それでも、これがオプションではない場合があるため、このエラーを実際に知る必要があります。エラーが表示されたらすぐに認識し、何をすべきかを知ってください。