1

SAP 内部テーブルを .CSV ファイルとして SAP ディレクトリに保存しようとしています。コンテンツを文字型に変換する必要があることを学びましたが、不正なキャスト エラーが発生します。これは私のコードです:

 FORM f_opendata TABLES p_tab TYPE STANDARD TABLE USING
                   p_work TYPE any.


FIELD-SYMBOLS: <lfs_wa>.


 CONCATENATE c_headerfile c_initials sy-datum c_ext INTO v_dtasetfile.

OPEN DATASET v_dtasetfile FOR OUTPUT IN TEXT MODE ENCODING UTF-8.

IF sy-subrc EQ 0.

LOOP AT p_tab INTO p_work.
  ASSIGN p_work TO <lfs_wa> CASTING TYPE c.
  TRANSFER <lfs_wa> TO v_dtasetfile.
ENDLOOP.
CLOSE DATASET v_dtasetfile.
MESSAGE i899(f2) WITH 'SUCCESS' v_dtasetfile.

ENDIF.
ENDFORM.   

これはエラーです:

以下で詳しく説明する例外が発生しました。クラス に割り当てられた例外はCX_SY_ASSIGN_CAST_ILLEGAL_CAST、プロシージャF_OPENDATAでキャッチされず、RAISING 句によって伝播されませんでした。プロシージャーの呼び出し元は例外が発生することを予期できなかったので、現在のプログラムは終了します。例外の理由は次のとおりです。

ASSIGN f TO CASTING という形式のステートメントでエラーが発生しました。
f を鋳造タイプ t に割り当てます。
または
ASSIGN f TO CASTING LIKE f1.
または ASSIGNING CASTING
を追加した at table ステートメント。

次のエラーの原因が考えられます
。 1. 項目 f の型、または 、t または f1 によって決定されるターゲット型に、コンポーネントとしてデータ参照、オブジェクト参照、文字列、または内部テーブルが含まれています。
これらのコンポーネントは、その位置 (オフセット) とタイプが関係する限り正確に一致する必要があります。
2. 指定された型 t または f1 の型は、フィールド symbol の型に適していません。
3. 1)のルールにより、関連表の行型が で指定した対象型に適合しない。

4

2 に答える 2

1

変換は、キャストと同じではありません。テーブルに ではないフィールドが含まれている場合CLIKE、システムは行全体のキャストを拒否します。この時点で、次の 2 つのオプションがあります。

  • 出力テーブルに文字のようなフィールドのみが含まれていることを確認するか、
  • 各行の各フィールドを確認し (これには RTTI を使用できます)、必要に応じて内容を変換します
于 2013-07-05T08:28:17.263 に答える