一、知悉上传后保存在那个目录下
1、判断目录是否存在
通过事务码AL11打开服务器目录清单,创建目录文件
点击“配置用户目录”按钮
输入目录参数、目录路径和服务器后,点击保存按钮
在目录清单中找到刚才配置的目录参数,双击该参数,若能够进入明细界面,则表示该目录是真实存在的,可以使用。若报错(如上图所示):Wrong order of calls <- 调用 opendir: No such file or directory(,,..),则表示该目录不存在,无效。
2、创建目录
项目上需要和外围系统做接口,上传图片到文件服务器上,让外围系统过来读取,但是为了减少SAP应用服务器的负担,需要一台独立的文件服务器共享目录到SAP应用服务器,
也就是NFS,实现往SAP应用服务器上写文件,实际上是写在了这台独立的文件服务器上。
我们需要让基础架构工程师把文件服务器和SAP应用服务器做NFS,也就是共享,只对该目录开放给SAP权限。
SAP中可以在该目录上新建文件夹也就是在该目录里新建目录。
通过事务码SM69进入(仅讨论文件服务器是Linux系统)
点击创建按钮,输入命令名称、操作系统命令、操作系统命令参数,勾选“允许的附件参数”(在执行时用来输入目录路径),然后点击保存
在详情页点击执行按钮,在附加参数字段输入目录路径,点击执行,即可创建目录
创建目录仅可以在已有目录下面创建文件夹,而不能跨多层创建。比如,现有的目录仅为/user/sap/111,只能创建其下层如/user/sap/111/222,而不能一次性创建多层,如/user/sap/111/222/333/444
目录创建完毕后,即可通过AL11创建目录文件了
附删除目录命令
二、文件上传服务器
1、在应用服务器中打开文件OPEN DATASET <dsn> [options] 此语句打开文件 <dsn> 。如果不指定任何模式 选项,则文件将按二进 制模式打开。如果系统不能打开文件,则将系统字段 SY-SUBRC 设置为 8,否则 SY-SUBRC 返回 0
2、打开文件读取OPEN DATASET <dsn> FOR INPUT IN TEXT MODE ENCODING DEFAULT .(以TXT文件打开)
3、打开文件写入OPEN DATASET <dsn> FOR OUTPUT IN TEXT MODE ENCODING DEFAULT .(以TXT文件打开写入,这种是打开文件完全重写)
4、打开文件追加 OPEN DATASET <dsn> FOR APPENDING IN TEXT MODE ENCODING DEFAULT .(以TXT文件打开写入,这种是打开文件追加记录)
5、关闭应用服务器上的文件 CLOSE DATASET <dsn>.
6、删除应用服务器上的文件 DELETE DATASET <dsn>.
7、向应用服务器上文件上写入数据TRANSFER <f> to <dsn> [LENGTH <len>].
8、向应用服务器上文件上读取数据READ DATASET <dsn> INTO <f> [LENGTH <len>].
FUNCTION zbc_fm_upload_picture.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(IV_FILE_NAME) OPTIONAL
*" VALUE(IV_PATH_SAVE) OPTIONAL
*" VALUE(IV_PATH_UPLOAD) OPTIONAL
*" VALUE(IV_CONTENT) TYPE XSTRING OPTIONAL
*" VALUE(IV_SAVE) TYPE FLAG DEFAULT 'X'
*" EXPORTING
*" VALUE(EV_TYPE) TYPE MSGTY
*" VALUE(EV_MESSAGE) TYPE STRING
*" VALUE(EV_PATH)
*" VALUE(EV_CONTENT) TYPE XSTRING
*"----------------------------------------------------------------------
DATA: lt_pic_data TYPE solix_tab.
DATA: lv_length TYPE i,
lv_len TYPE i,
lv_failed TYPE abap_bool,
lv_message TYPE string.
DATA: lv_file_name TYPE string,
lv_path_upload TYPE string,
lv_path_save TYPE string,
lv_content TYPE xstring.
DATA: lo_obj TYPE REF TO cl_gui_frontend_services.
DATA: lt_file TYPE filetable,
lv_rc TYPE i.
IF iv_save EQ 'X' AND iv_path_save IS INITIAL.
ev_type = 'E'.
ev_message = '保存文件路径为空,请检查!'.
ENDI