sftp get 文件夹_SAP与SFTP文件传输

本文介绍了在SFTP安全需求下,如何在SAP中利用SM49执行外部脚本来实现文件传输。通过创建.sh文件维护SFTP命令,再在SM49创建外部操作命令并触发执行,从而完成SFTP协议的数据传输。
摘要由CSDN通过智能技术生成

FTP服务器与SAP之间文件传输,这种方式有很多的实施案例。假设SAP中的数据要放到FTP服务器,可以通过点对点的方式,将数据形成文件放在应用服务器的某一路径下,然后使用标准的FTP函数进行文件传输;也可以通过PI进行数据集成,PI有专门的FTP adapter。

这些是FTP相关的一些报表:

RSFTP001 - SAPFTP 版本检查

RSFTP002 - 执行 FTP 命令

RSFTP003 - 测试 

RSFTP004 - FTP 复制

RSFTP005 - SAPFTP 检查

RSFTP006 - FTP 命令清单

RSFTP007 - Test FB:FTP_SERVER_TO_r3 / FTP_R3_TO_SERVER    读取FTP数据到R3 / R3数据写入FTP。

RSFTP008 - Test FB:FTP_CLIENT_TO_R3 / FTP_R3_TO_CLIENT       读取FTP数据到客……

那如果是SFTP呢?现在企业对数据的安全越来越重视,SFTP协议是在FTP的基础上对数据进行加密,使得传输的数据相对来说更安全。不过SAP目前没有像FTP一样的函数可以调用,来通过SFTP协议传输文件,只能借助工具,比如PI;还有一种方法是使用SM49执行外部脚本,今天就来说一下这种方式。

实现的方法大概就是:首先在AL11的某个路径下建个文件夹,然后在此文件夹下创建个.sh文件,里面编辑SFTP脚本。然后在SM49创建外部操作命令,挂接上AL11下创建的.sh文件。最后通过ABAP代码触发事件,实现执行.sh命令行的操作。

1、在OS服务器创建文件夹

6d03f33506c5d1cd619f6f9d4b1f4f7d.png

2、在此文件夹下创建.sh文件,并维护命令脚本,示例文件

ce9ecca062263995009ea41e1a7acd84.png

使用记事本创建文件,先保存在本地,然后使用CG3Z上传到步骤1创建的文件夹下。

267e850b01880fe83ffc96f14077add2.png

3、执行事务码SM49,创建外部操作命令,并维护上新创建的文件

f27c624c115330811342ae2da732183b.png

4、在程序中调使用函数SXPG_COMMAND_LIST_GET来执行外部操作命令,示例代码如下(代码中是弹出选择框让用户选择使用哪个外部命令)

*&---------------------------------------------------------------------**& Report  ZTESTJI003*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*REPORT ztestji003.DATA: BEGIN OF command_list OCCURS 0.        INCLUDE STRUCTURE sxpgcolist.DATA: END OF command_list .DATA: BEGIN OF exec_protocol OCCURS 0.        INCLUDE STRUCTURE btcxpm.DATA: END OF exec_protocol.DATA: status      LIKE btcxp3-exitstat,      commandname LIKE sxpgcolist-name VALUE '*',      sel_no      LIKE sy-tabix.* GET LIST OF EXTERNAL COMMANDSCALL FUNCTION 'SXPG_COMMAND_LIST_GET'  EXPORTING    commandname     = commandname    operatingsystem = sy-opsys  TABLES    command_list    = command_list  EXCEPTIONS    OTHERS          = 1.IF sy-subrc EQ 0.  CALL FUNCTION 'POPUP_WITH_TABLE_DISPLAY'    EXPORTING      endpos_col   = 100      endpos_row   = 20      startpos_col = 2      startpos_row = 2      titletext    = 'choose a COMMAND TO execute '    IMPORTING      choise       = sel_no    TABLES      valuetab     = command_list    EXCEPTIONS      break_off    = 1      OTHERS       = 2.  IF sy-subrc EQ 0.    READ TABLE command_list INDEX sel_no.* CHECK AUTHORIZATION    CALL FUNCTION 'SXPG_COMMAND_CHECK'      EXPORTING        commandname                = command_list-name        operatingsystem            = sy-opsys      EXCEPTIONS        no_permission              = 1        command_not_found          = 2        parameters_too_long        = 3        security_risk              = 4        wrong_check_call_interface = 5        x_error                    = 6        too_many_parameters        = 7        parameter_expected         = 8        illegal_command            = 9        communication_failure      = 10        system_failure             = 11        OTHERS                     = 12.    CASE sy-subrc.      WHEN 0.        CALL FUNCTION 'SXPG_COMMAND_EXECUTE'          EXPORTING            commandname                   = command_list-name          TABLES            exec_protocol                 = 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 EQ 0.          WRITE:/ command_list-name, 'ran successfully'.        ELSE.          WRITE:/ 'error WITH command', command_list-name.        ENDIF.      WHEN 1.        WRITE:/'you are NOT authorized TO run', command_list-name.      WHEN OTHERS.        WRITE:/'error with FUNCTION with command', command_list-name.    ENDCASE.  ENDIF.  "popup_with_table_displayENDIF. "sxpg_command_list_get
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值