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

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. 


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值