SAP FTP上传出现的几个小问题归纳

原创 2016年03月07日 10:00:16

1.上传CSV文件的时候分隔符是分号,导致传过去的一行数据全部在第一列的第一格里面。在上传之前转换成逗号;

2.上传文件出现中文乱码,网上出现中文乱码的情况很多,这里我只记录自己遇到的。中文传到FTP的时候显示#;

CALL FUNCTION 'SCMS_TEXT_TO_BINARY'
    EXPORTING
      ENCODING      '8400'
    IMPORTING
      output_length blob_length
    TABLES
      text_tab      text   " input
      binary_tab    in_data" output
    EXCEPTIONS
      failed        1
      OTHERS        2.

此时只需要在传递文件之前转码,encoding = 8400即可  这是在RZ10 的install/codepage/appl_server = 8400的情况下还要注明的,不管该参数的结果是否是8400,都需要转码。

3.SAP上传文件到ftp需要后台执行的时候, rfc_destination 'SAPFTPA'不能写成SAPFTP。

FOR EXAMPLE:(该程序需要修改才能激活)

TYPE-POOLS truxs.
DATAmi_key TYPE VALUE 26101957,
     mi_handle TYPE i,
     slen TYPE .
DATAcsvtab TYPE truxs_t_text_data .
DATA:csvtab1 TYPE truxs_t_text_data WITH HEADER LINE.

DATA filename(128.

DATA:BEGIN OF RES OCCURS 0,
LINE(100TYPE C,
END OF RES.

CONCATENATE  sy-datum 'test.csv' INTO filename .

DATAsuser(30TYPE c,
      spwd(30)  TYPE c,
      shost(64TYPE c.


suser 'test'.
spwd 'test'.
shost '10.20.30.40'

DATAin_data TYPE STANDARD TABLE OF bapiconten."like csvtab OCCURS 0.
DATAtext TYPE lvc_t_1022 WITH HEADER LINE.
DATA:blob_length TYPE i.
DATA:b(20TYPE c.


slen STRLENspwd ).



TYPES:BEGIN OF ty_itab,
*    mandt TYPE zyyzb035hz-mandt,
  BUDAT_MKPF(8TYPE c,
  KUNNR     TYPE zyyzb035hz-KUNNR,
  NAME1     TYPE zyyzb035hz-NAME1,
  KTEXT     TYPE zyyzb035hz-KTEXT,
  ZLX      TYPE zyyzb035hz-zlx,
  ZBM       TYPE zyyzb035hz-zbm,
  ZQU       TYPE zyyzb035hz-zqu,
 ZDRXS(20)     TYPE c,
 ZDYXS(20)     TYPE c,
 ZDNXS(20)     TYPE c,
  END OF ty_itab.

DATA:gw_itab TYPE TABLE OF ty_itab.
DATA:gs_itab TYPE ty_itab.
FIELD-SYMBOLS <fs>  TYPE ty_itab.
FIELD-SYMBOLS <hs> TYPE zyyzb035hz.

LOOP AT lt_itab1 ASSIGNING <hs>.
  gs_itab-BUDAT_MKPf <hs>-BUDAT_MKPf.
  gs_itab-KUNNR    =         <hs>-KUNNR .
  gs_itab-NAME1     =        <hs>-NAME1 .
  gs_itab-KTEXT      =       <hs>-KTEXT .
  gs_itab-ZLX         =      <hs>-ZLX  .
  gs_itab-ZBM          =     <hs>-ZBM  .
  gs_itab-ZQU           =    <hs>-ZQU .
  gs_itab-ZDRXS  <hs>-zdrxs.
  gs_itab-ZDYXS <hs>-zdyxs.
  gs_itab-ZDNXS <hs>-zdnxs.
  APPEND gs_itab to gw_itab.
  CLEAR gs_itab.

ENDLOOP.

LOOP AT gw_itab ASSIGNING <fs>.

  IF <fs>-ZDRXS < 0.
    b <fs>-ZDRXS.
    CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
      CHANGING
        value b.
    <fs>-zdrxs b.
  ENDIF.

  IF <fs>-ZDYXS < 0.
    b <fs>-ZDYXS.
    CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
      CHANGING
        value b.
    <fs>-zdyxs  b.

  ENDIF.

  IF <fs>-ZDNXS < 0.
    b <fs>-ZDNXS.
    CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
      CHANGING
        value b.
    <fs>-zdnxs b.

  ENDIF.


ENDLOOP.


CALL FUNCTION 'SAP_CONVERT_TO_CSV_FORMAT'
  TABLES
    I_TAB_SAP_DATA       gw_itab
  CHANGING
    I_TAB_CONVERTED_DATA csvtab
  EXCEPTIONS
    CONVERSION_FAILED    1
    OTHERS               2.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.



LOOP AT  csvtab INTO csvtab1.
  REPLACE ALL OCCURRENCES OF ',' in csvtab1 WITH ''.
  REPLACE ',' WITH ''  INTO csvtab1 LENGTH 1.
  CONDENSE csvtab1 NO-GAPS.
  APPEND csvtab1 to csvtab1.
ENDLOOP.
DATA a(400TYPE c.
'过帐日期,客户,XXX,XXX,XXX,XXX,XXX,XXX,XXX,XXX'.
APPEND to text.

LOOP AT csvtab1.
  a csvtab1.
*    REPLACE ';' WITH ''  INTO a LENGTH 1.
  REPLACE ';' WITH ','  INTO a LENGTH 1.
  REPLACE ';' WITH ','  INTO a LENGTH 1.
  REPLACE ';' WITH ','  INTO a LENGTH 1.
  REPLACE ';' WITH ','  INTO a LENGTH 1.
  REPLACE ';' WITH ','  INTO a LENGTH 1.
  REPLACE ';' WITH ','  INTO a LENGTH 1.
  REPLACE ';' WITH ','  INTO a LENGTH 1.
  REPLACE ';' WITH ','  INTO a LENGTH 1.
  REPLACE ';' WITH ','  INTO a LENGTH 1.
  CONDENSE NO-GAPS.
*
*     REPLACE ALL OCCURRENCES OF ',' in a WITH ';'.
*    REPLACE ';' WITH ','  INTO a LENGTH 5.
  APPEND to text.

ENDLOOP.


CALL FUNCTION 'HTTP_SCRAMBLE'
  EXPORTING
    SOURCE      spwd
    sourcelen   slen
    key         mi_key
  IMPORTING
    destination spwd.
IF sy-subrc <> 0.
  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

CALL FUNCTION 'FTP_CONNECT'
  EXPORTING
    user            suser
    password        spwd
    host            shost
    rfc_destination 'SAPFTPA' "SAPFTPA
  IMPORTING
    handle          mi_handle
  EXCEPTIONS
    not_connected   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.



CALL FUNCTION 'SCMS_TEXT_TO_BINARY'
  EXPORTING
    ENCODING      '8400'
  IMPORTING
    output_length blob_length
  TABLES
    text_tab      text   " input
    binary_tab    in_data" output
  EXCEPTIONS
    failed        1
    OTHERS        2.



CALL FUNCTION 'FTP_COMMAND'
  EXPORTING
    HANDLE        mi_handle
    COMMAND       'cd SAP'" jmswechat/custom'
    COMPRESS      'N'
  TABLES
    DATA          RES  "result
  EXCEPTIONS
    COMMAND_ERROR 1
    TCPIP_ERROR   2.


CALL FUNCTION 'FTP_R3_TO_SERVER'
  EXPORTING
    handle         mi_handle
    fname          filename
    blob_length    blob_length
*   character_mode = 'X'
  TABLES
    blob           in_data.
*      text           = text.




IF sy-subrc <> 0.
  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

CALL FUNCTION 'FTP_DISCONNECT'
  EXPORTING
    handle mi_handle
  EXCEPTIONS
    OTHERS 1.
IF sy-subrc <> 0.
  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
 



相关文章推荐

连接FTP并执行Command

See ht e coding below, I have used these Fm to connect to FTP server and get the Files..   *ty...
  • zeewjj
  • zeewjj
  • 2013年03月10日 19:01
  • 2088

SAP连接FTP服务器

SAP系统中连接FTP服务器需要配置表SAPFTP_SERVERS,在这个表中添加ftp服务器及端口,然后使用如下代码连接ftp服务器 constants cons_key ty...

本文示例如何使用SAP FTP Function将文件从应用服务器传输到另外一个FTP服务器上。

本文示例如何使用SAP FTP Function将文件从应用服务器传输到另外一个FTP服务器上。 DATA: BEGIN OF ig_ftp_result OCCURS 0, lin...

SAP FTP

 原地址:http://blog.csdn.net/sourcepp/article/details/8535684 项目中有以下接口场景: 通过后台作业,SAP ECC系统每天...
  • po908
  • po908
  • 2015年06月29日 10:34
  • 496

SAP ABAP 与FTP文件交互-进站 文件上传到FTP服务器

report z04ftp2. data: begin of ig_ftp_result occurs 0, line(100), end of ig_ftp_resul...

ABAP连接FTP服务器

ABAP连接FTP服务器

SAP FTP

做FTP的需求还是快4年前的事情了。很基本的一些还是记下来,以后参考。 项目中有以下接口场景: 通过后台作业,SAP ECC系统每天晚上从外部FTP服务器Get文本文件到SAP服务器目录/us...

关于多线程的几个小问题

  • 2014年01月23日 19:57
  • 6.99MB
  • 下载

VS2013环境下调用winsock会出现的几个小问题

最厉害的问题出在INVALID_SOCKET上,为啥会出现这个呢?通常是没有权限,我们没有以管理员权限去运行这个东西,当然我们可以退了重新进入或者登陆电脑的时候就永远用管理员身份。当然我们也可以改一下...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SAP FTP上传出现的几个小问题归纳
举报原因:
原因补充:

(最多只允许输入30个字)