2013-07-05 47 views
1

我試圖將SAP內部表格保存爲SAP目錄作爲.CSV文件。我瞭解到,我應該將內容轉換爲字符類型,但是我收到了非法的轉換錯誤。 這是我的代碼:如何將SAP內部表格保存爲Sap目錄作爲.CSV文件?

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」「(FORM)」,也沒有通過RAISING子句傳播。 由於程序的調用者無法預料到會發生異常,因此當前程序將終止。 例外的原因是:

發生在表格 ASSIGN f TO CASTING表單中的錯誤。 分配給鑄造類型t。 或 將f賦值給f1。 或 在表語句中增加 指定鑄造。

以下可能的錯誤原因: 1.類型字段F或由所確定的目標類型,T或F1 包含數據的引用,對象引用,字符串或內部表 作爲分量。 這些組件必須完全匹配,只要它們的位置(偏移) 及其類型相關。 2.指定的類型t或f1的類型不適合字段符號 的類型。 3.相關表的行類型不適合按照1)中描述的規則指定的目標類型 。

回答

0

我使用的函數要轉換爲文本格式,我轉移數據到數據集之前:

CALL FUNCTION 'SAP_CONVERT_TO_TEX_FORMAT' 
EXPORTING 
    I_FIELD_SEPERATOR   = c_colon 
TABLES 
    I_TAB_SAP_DATA    = ig_final 
CHANGING 
I_TAB_CONVERTED_DATA  = ig_text 
EXCEPTIONS 
CONVERSION_FAILED   = 1 
OTHERS      = 2 
     . 
IF SY-SUBRC <> 0. 
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 
    ENDIF. 



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

IF sy-subrc EQ 0. 

LOOP AT ig_text ASSIGNING <fs_l_wa>. 
    TRANSFER <fs_l_wa> TO v_g_dtasetfile. 
ENDLOOP. 
CLOSE DATASET v_g_dtasetfile. 

MESSAGE i899(f2) WITH text-020 v_g_dtasetfile text-021. 

ENDIF. 
1

轉換鑄造不是一回事。如果您的表格包含的字段不是CLIKE,系統將拒絕投射整條線路。你有兩個選擇在這一點上:

  • 確保您的輸出表只包含文字狀字段或
  • 穿行每行的每個字段(可以用RTTI做到這一點),並且內容轉換爲需要