将文件从Presentation Server本地文件夹移动到AL11,而无需在后台模式下使用FTP

2020-09-07 18:24发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)尊敬的专家, 我需要在不使用F...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


尊敬的专家,

我需要在不使用FTP的情况下将" .txt"文件从本地文件夹移动到AL11,在后台模式下。 当前正在使用FM ARCHIVFILE_CLIENT_TO_SERVER。

当我在SCN中搜索时,有人发布了如下内容。

使用FM" C13Z_FILE_UPLOAD_ASCII"以批处理模式将文件上传到应用程序服务器,然后使用打开数据集读取数据集和关闭数据集。

我很累但没有运气。

任何建议。

此致

Ishwarya

8条回答
clever101
2020-09-07 18:52

感谢各种见解。.

 SPAN {
 字体家族:" Courier New";
 字体大小:10pt;
 颜色:#000000;
 背景:#FFFFFF;
 }
 .L0S31 {
 字体样式:斜体;
 颜色:#808080;
 }
 .L0S32 {
 颜色:#3399FF;
 }
 .L0S33 {
 颜色:#4DA619;
 }
 .L0S52 {
 颜色:#0000FF;
 }
 .L0S55 {
 颜色:#800080;
 }
 .L0S70 {
 颜色:#808080;
 }

 *&------------------------------------------------  --------------------- *

 *&报告ZZ_ALL11_UP_DOWN

 *&------------------------------------------------  --------------------- *

 *&

 *&------------------------------------------------  --------------------- *

 报告zz_al11_down_up。



 表格:可旋转。



 常量:c_execute_command类型sy-ucomm值'ONLI'。



 具有帧标题lv_t1的第1块的选择屏幕开始。

 参数gv_rb1类型c RADIOBUTTON GROUP对接默认'X'。

 参数gv_rb2 TYPE C RADIOBUTTON GROUP对接。

 参数gv_rb3 TYPE C RADIOBUTTON GROUP对接。

 选择屏幕的结尾1。



 选择选项:so_asfil FOR rovertable-filename没有间隔。  " RLGRAP-FILENAME。

 参数:p_out TYPE字符串默认值'C:\ temp'小写。





 参数:p_addext类型c AS CHECKBOX DEFAULT"。



 数据:ls_asfil,就像so_asfil的行一样,

       ls_subrc类型为sy-subrc。



 在p_out值请求的选择屏幕上。

   DATA:lv_selected_folder TYPE字符串。

   呼叫方法cl_gui_frontend_services => directory_browse

     改变

       selected_folder = lv_selected_folder

     例外情况

       cntl_error = 1

       error_no_gui = 2

       not_supported_by_gui = 3

       其他= 4。

   如果sy-subrc <> 0。

     消息ID sy-msgid类型sy-msgty编号sy-msgno

                与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。

   万一。



   p_out = lv_selected_folder。



 在选择屏幕上。

   如果sy-ucomm = c_execute_command。

     执行check_directory。

   万一。



 在SELECT-SCREEN上对so_asfil-low的值请求。

 *******************

   PERFORM z30_get_filename更改so_asfil-low。



 选择开始。

 *如果选择下载到桌面

 如果gv_rb1 ='X'。

  循环至so_asfil INTO ls_asfil。

  使用ls_asfil-low p_out执行下载。

  执行show_msg。

 结局。



 ELSEIF gv_rb2 ='X'。  "选择了"上载到应用程序服务器"



 循环至so_asfil INTO ls_asfil。

 BREAK-POINT。

 使用ls_asfil-low p_out ls_subrc执行上传。

 使用ls_subrc执行show_upd_msg。

 结局。



 ELSEIF gv_rb3 ='X'。  "已选择从应用程序服务器删除文件



 循环至so_asfil INTO ls_asfil。

   使用ls_asfil-low ls_subrc执行delete_from_as。

   使用ls_subrc执行show_del_msg。

 结局。

 万一。



 FORM delete_from_as使用

       pv_dimfile TYPE本地文件

       更改lv_subrc类型sy-subrc。

 *从文件名中修剪路径

 * .//BU_LINE-> BU_LINE

 数据:

 文件大小为类型epsf-epsfilsiz,

 filenm TYPE epsfilnam,

 文件路径类型epsdirnam,

 lv_string TYPE字符串," VALUE'.//BU_LINE",

 lv_len TYPE i,

 lv_pos TYPE i,

 lv_last_occ类型i。



 将pv_dimfile移动到lv_string。



 lv_len = strlen(lv_string)。

 做。

 搜索lv_string FOR'/'。

 如果sy-subrc ='0'。

 lv_pos = sy-fdpos + 1。

 lv_len = lv_len-sy-fdpos-1。

 lv_string = lv_string + lv_pos(lv_len)。

 lv_last_occ = lv_last_occ + sy-fdpos + 1。

 其他。

 出口。

 万一。

 ENDDO。

 *文件名是

 filenm = lv_string。

 *路径为

 文件路径= pv_dimfile(lv_last_occ)。



 *检查文件是否存在

   通话功能'EPS_GET_FILE_ATTRIBUTES'

    出口

      file_name = filenm

 * IV_LONG_FILE_NAME =

      dir_name =文件路径

 * IV_LONG_DIR_NAME =

    输入

      file_size =文件大小

 * FILE_OWNER =

 * FILE_MODE =

 * file_type = filetyp

 * FILE_MTIME =

 * FILE_SIZE_LONG =

    例外情况

      read_directory_failed = 1

      read_attributes_failed = 2

      其他= 3

             。

   如果sy-subrc <> 0。

 *在这里实施适当的错误处理

    lv_subrc = sy-subrc。

   其他。

   通话功能'EPS_DELETE_FILE'

    出口

      file_name = filenm" VERSION

 * IV_LONG_FILE_NAME =

      dir_name =文件路径" .//

 * IV_LONG_DIR_NAME =

 *重要

 * FILE_PATH =

 * EV_LONG_FILE_PATH =

 *例外情况

 * INVALID_EPS_SUBDIR = 1

 * SAPGPARAM_FAILED = 2

 * BUILD_DIRECTORY_FAILED = 3

 * NO_AUTHORIZATION = 4

 * BUILD_PATH_FAILED = 5

 * DELETE_FAILED = 6

 *其他= 7

             。

   如果sy-subrc <> 0。

 *在这里实施适当的错误处理

     lv_subrc = sy-subrc。

   万一。



   万一。



 ENDFORM。



 表格show_msg。

   带有文本004的消息s398(00)。"文件下载成功!

 ENDFORM。  " show_msg





 使用p_subrc类型sy-subrc的FORM show_upd_msg。

   如果p_subrc = 0。

   带有文本003的消息s398(00)。"文件已成功上传!

   其他。

   带有文本002的消息s398(00)。"上传文件时出错!

   万一。

 ENDFORM。  " show_msg



 FORM show_del_msg使用p_subrc类型sy-subrc。

   如果p_subrc = 0。

   带有文本005的消息s398(00)。"文件已成功删除!

   其他。

   带有文本006的消息s398(00)。"文件删除错误!



   万一。

 ENDFORM。  " show_del_msg





 FORM上传使用pv_dimfile TYPE localfile

       out_path TYPE字符串

       更改lv_subrc类型sy-subrc。



 数据:lv_dimfile类型SAPB-SAPPFAD,

       ls_out_path TYPE SAPB-SAPPFAD,

       lv_out_path类型SAPB-SAPPFAD。

 数据:

 文件大小为类型epsf-epsfilsiz,

 filenm TYPE epsfilnam,

 文件路径类型epsdirnam,

 lv_string TYPE字符串," VALUE'.//BU_LINE",

 lv_len TYPE i,

 lv_pos TYPE i,

 lv_last_occ类型i。



 移动:pv_dimfile至lv_string,

       ls_out_path的out_path。



 lv_len = strlen(lv_string)。

 做。

 搜索lv_string FOR'/'。

 如果sy-subrc ='0'。

 lv_pos = sy-fdpos + 1。

 lv_len = lv_len-sy-fdpos-1。

 lv_string = lv_string + lv_pos(lv_len)。

 lv_last_occ = lv_last_occ + sy-fdpos + 1。

 其他。

 出口。

 万一。

 ENDDO。

 *文件名是

 filenm = lv_string。

 *路径为

 文件路径= pv_dimfile(lv_last_occ)。



 CONCATENATE out_path filenm INTO ls_out_path用'\'分隔。

 移动:pv_dimfile到lv_out_path,

       lv_dimfile的ls_out_path。



 如果p_addext ='X'。

 将lv_dimfile'.txt'并入lv_dimfile。

 CONCATENATE lv_out_path'.txt'INTO lv_out_path。

 万一。



 通话功能'ARCHIVFILE_CLIENT_TO_SERVER'

   出口

     路径= lv_dimfile

     targetpath = lv_out_path

  例外情况

    error_file = 1

    no_authorization = 2

    其他= 3。



 lv_subrc = sy-subrc。

 清除:lv_last_occ,lv_string,lv_len,lv_pos,filenm,filepath,lv_dimfile,lv_out_path,ls_out_path。

 ENDFORM。  "表格上传

 *&------------------------------------------------  --------------------- *

 *&表格下载

 *&------------------------------------------------  --------------------- *

 *文字

 * -------------------------------------------------  --------------------- *

 表格下载使用

       pv_dimfile TYPE本地文件

       out_path TYPE字符串。

   DATA:lv_path像sapb-sappfad VALUE``,

        lv_targetpath像sapb-sappfad,

        lv_ot_filename TYPE字符串。

   CONCATENATE lv_path pv_dimfile INTO lv_path。

   如果p_addext ='X'。

   将pv_dimfile'.txt'连接到pv_dimfile中。

   万一。

   CONCATENATE out_path pv_dimfile INTO lv_targetpath由" \"分隔。

 * BREAK-POINT。

   通话功能'ARCHIVFILE_SERVER_TO_CLIENT'

     出口

       路径= lv_path

       targetpath = lv_targetpath

     例外情况

       error_file = 1

       其他= 2。

   如果sy-subrc <> 0。

     消息ID sy-msgid类型sy-msgty编号sy-msgno

             与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。

   万一。

 ENDFORM。  "下载



 *&------------------------------------------------  --------------------- *

 *&表格check_directory

 *&------------------------------------------------  --------------------- *

 *文字

 * -------------------------------------------------  --------------------- *

 FORM check_directory。

   数据:lv_result TYPE c,

         lv_directory TYPE字符串。

   lv_directory = p_out。

   呼叫方法cl_gui_frontend_services => directory_exist

     出口

       目录= lv_directory

     接收

       结果= lv_result

     例外情况

       cntl_error = 1

       error_no_gui = 2

       错误参数= 3

       not_supported_by_gui = 4

       其他= 5。

   如果sy-subrc <> 0。

     消息ID sy-msgid类型sy-msgty编号sy-msgno

                与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。

   万一。

   如果lv_result是INITIAL。

     带有文本001的消息e398(00)。"输出目录不存在!

   万一。

 ENDFORM。  " check_directory

 *&------------------------------------------------  --------------------- *
 *&表格Z30_GET_FILENAME
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 FORM z30_get_filename更改p_file。
 * ------------------- *
   数据:lt_files TYPE文件表,
         ls_file TYPE file_table,
         lv_lfile TYPE字符串,
         lv_rc TYPE i,
         lv_applserv TYPE as4flag,
         lv_al11 TYPE as4flag,
         lv_initial_dir TYPE字符串,
         lv_guiext TYPE字符串,
         lv_guiflt TYPE字符串,
         lv_title TYPE字符串。
 *情况" X"。
 *当p_pc。  "来自PC或网络的文件
 * lv_initial_dir ='我的文档'。
 *当p_unix。  "来自SAP服务器的文件
 * lv_applserv ='X'。
 * lv_al11 ='X'。
 *当别人。
 *结束。
   lv_lfile = p_file。
   呼叫方法cl_rsan_ut_files => f4
     出口
       i_applserv ='X'" lv_applserv'
       i_title = lv_title
       i_gui_extension = lv_guiext
       i_gui_ext_filter = lv_guiflt
       i_applserv_logical =空间
       i_applserv_al11 ='X'" lv_al11'
     改变
       c_file_name = lv_lfile
     例外情况
       失败= 1
       其他= 2。
   如果sy-subrc <> 0。
     消息ID sy-msgid类型sy-msgty编号sy-msgno
                与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。
   万一。
   p_file = lv_lfile。

 ENDFORM。  " Z30_GET_FILENAME 

一周热门 更多>