SAP ABAP发送文件到SFTP服务器 SXPG_COMMAND_EXECUTE

经过今天在ERP系统的测试及在SAP官方网站查询相关的资料,发现SAP可以直接访问FTP服务,但不能直接访问SFTP服务器。

如需访问SFTP服务器,需要在SFTP客户端及服务端安装相关的软件,详情见附件SAP NOTE 795131 。

实现步骤;

1.SAP ABAP发送文件到SAP应用服务器指定目录

2.BASIS部署脚本并配置SM69命令

SFTP.SH

#!/bin/sh
HOST=XXXX.XX.XX.XX
USER=用户名
PASS=密码

lftp -u ${USER},${PASS} sftp://${HOST} <<EOF
lcd /usr/sap/trans/sd
cd TEST/IN
put $1
bye
EOF
 

3.调用函数驱动应用服务器脚本发送数据到SFTP .

SXPG_COMMAND_EXECUTE

FORM FRM_SEND_CSV_TO_SFTP USING  LV_FILE_NAME TYPE STRING
      CHANGING LV_FLAG  TYPE CHAR01
               LV_MESSA TYPE STRING .
  DATA:LT_EXEC_PROTOCOL  TYPE TABLE OF BTCXPM .
  DATA:
    LV_COMMANDNAME           LIKE  SXPGCOLIST-NAME,
    LV_ADDITIONAL_PARAMETERS LIKE  SXPGCOLIST-PARAMETERS,
    LV_OPERATINGSYSTEM       LIKE  SXPGCOLIST-OPSYSTEM.
  data:
    lv_status type     EXTCMDEXEX-STATUS ,
    lv_exitcode type EXTCMDEXEX-EXITCODE .
  DATA:LV_MESSAGE TYPE STRING .
  IF P_TRAIN IS INITIAL .
    LV_COMMANDNAME = 'ZFTP' .  "待确定
  ELSE .
    LV_COMMANDNAME = 'ZFTP' .
  ENDIF .
  LV_OPERATINGSYSTEM = 'Linux' . "待确定
  LV_ADDITIONAL_PARAMETERS  = LV_FILE_NAME .
  CALL FUNCTION 'SXPG_COMMAND_EXECUTE'
    EXPORTING
      COMMANDNAME                   = LV_COMMANDNAME
      ADDITIONAL_PARAMETERS         = LV_ADDITIONAL_PARAMETERS
      OPERATINGSYSTEM               = LV_OPERATINGSYSTEM "SY-OPSYS
*     TARGETSYSTEM                  = ''
*     DESTINATION                   =
*     STDOUT                        = 'X'
*     STDERR                        = 'X'
*     TERMINATIONWAIT               = 'X'
*     TRACE                         =
*     DIALOG                        =
 IMPORTING
     STATUS                         = lv_status
     EXITCODE                       = lv_exitcode
    TABLES
      EXEC_PROTOCOL                 = LT_EXEC_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 SY-SUBRC <> 0 or lv_exitcode ne 0 .
    LV_FLAG = 'X' .
    CALL FUNCTION 'MESSAGE_TEXT_BUILD'
      EXPORTING
        MSGID               = SY-MSGID
        MSGNR               = SY-MSGNO
        MSGV1               = SY-MSGV1
        MSGV2               = SY-MSGV2
        MSGV3               = SY-MSGV3
        MSGV4               = SY-MSGV4
      IMPORTING
        MESSAGE_TEXT_OUTPUT = LV_MESSAGE.
  ELSE .

  ENDIF.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值