ABAP 內表轉CSV文件推送SAP服務器和SFTP到對方服務器
1、內表轉CSV文件,老ECC個別版本該函數有BUG,I類型字段會dump
DATA:lt_csv_vbak TYPE ztruxs_t_text_data,"ztruxs_t_text_data長度為8192
CALL FUNCTION 'ZSAP_CONVERT_TO_CSV_FORMAT' TABLES i_tab_sap_data = lt_vbak CHANGING i_tab_converted_data = lt_csv_vbak EXCEPTIONS conversion_failed = 1 OTHERS = 2.

2、推送SAP服務器,使用open dataset,百度一堆
DATA:BEGIN OF ls_tab, tline(8192), "與內表轉CSV文件參考類型長度一致 END OF LS_TAB. CONCATENATE lv_dir gv_vbak_filename INTO lv_dir_path. OPEN DATASET lv_dir_path FOR OUTPUT IN TEXT MODE ENCODING NON-UNICODE. IF sy-subrc = 0. CLEAR:ls_tab,ls_tab. LOOP AT lt_tab_vbak INTO ls_tab . TRANSFER ls_tab TO lv_dir_path. ENDLOOP. CLOSE DATASET lv_dir. ENDIF.
3、推送SFTP,以WINDOWS NT為例,LINUX系統類似;可參考SAP to SFTP simple Setup with a Windows Host | SAP Blogs;但把命令封裝到參數里調用函數不行,使用下述方法可以
首先安裝Winscp 方法網上有
其次配置SM69,文件操作命令寫在腳本里

腳本命令

代碼:
DATA:lv_param TYPE sxpgcolist-parameters, lv_exitcode TYPE btcxpgexit, lt_protocol TYPE TABLE OF btcxpm. CONCATENATE '/parameter d:\usr\sap\datalake\' p_lv_file_name INTO lv_param."sap服務器文件路徑 CALL FUNCTION 'SXPG_COMMAND_EXECUTE' EXPORTING commandname = 'ZSFTP' additional_parameters = lv_param IMPORTING exitcode = lv_exitcode TABLES exec_protocol = lt_protocol EXCEPTIONS no_permission = 1 command_not_found = 2 parameters_too_long = 3 security_risk = 4 wrong_check_call_interface = 5 program_start_error = 6 program_termination_error = 7 x_error = 8 parameter_expected = 9 too_many_parameters = 10 illegal_command = 11 wrong_asynchronous_parameters = 12 cant_enq_tbtco_entry = 13 jobcount_generation_error = 14 OTHERS = 15. IF lv_exitcode = 0. p_lv_flg = 'S'. ELSE. p_lv_flg = 'E'. ENDIF.
社會很單純,復雜的是人

浙公網安備 33010602011771號