ABAP 上传、下载请求文件

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

*& REPORT  Z_UP_DOWN_REQUEST

*&

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

*&

*&

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

REPORT  Z_UP_DOWN_REQUEST.

TYPE-POOLS: TRWBO, STMS.

DATA:

ES_SELECTED_REQUEST TYPE TRWBO_REQUEST_HEADER,

ES_SELECTED_TASK TYPE TRWBO_REQUEST_HEADER,

IV_ORGANIZER_TYPE TYPE TRWBO_CALLING_ORGANIZER,

IS_SELECTION TYPE TRWBO_SELECTION.

DATA: FOLDER TYPE STRING ,

FLAG TYPE C        ,

DIR_TRANS TYPE TEXT255  ,

PATH2 TYPE TEXT255 ,

LOCALFOLDER(128) TYPE C ,

UPFILENAME(11) TYPE C.

DATA:

LT_REQUEST TYPE STMS_TR_REQUESTS,

LT_TP_MAINTAIN TYPE STMS_TP_MAINTAINS.

DATA:

ET_REQUEST_INFOS TYPE STMS_WBO_REQUESTS,

REQUEST_INFO TYPE STMS_WBO_REQUEST,

REQUEST LIKE E070-TRKORR.

DATA: BEGIN OF IT_MEMO OCCURS 0 ,

LINE(255) TYPE C,

END OF IT_MEMO.

DATA: ERROR LIKE BOOLE-BOOLE ,

ERR_TXT(100) TYPE C .

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE T1.

PARAMETERS: DOWNLOAD RADIOBUTTON GROUP TYP USER-COMMAND SELE DEFAULT ‘X‘.

PARAMETERS: UPLOAD RADIOBUTTON GROUP TYP.

SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE T2.

PARAMETERS:  P_FILE(255) TYPE C LOWER CASE MODIF ID M2,

P_CLIENT LIKE TMSBUFFER-TARCLI DEFAULT SY-MANDT

MATCHCODE OBJECT H_T000 MODIF ID M2.

SELECTION-SCREEN END OF BLOCK B2.

SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE T3.

PARAMETERS:P_REQNUM TYPE TRKORR MODIF ID M3,

P_FOLDER LIKE RLGRAP-FILENAME DEFAULT ‘C:\‘ LOWER CASE MODIF ID M3 ,

P_MEMO(255) TYPE C MODIF ID M3.

SELECTION-SCREEN END OF BLOCK B3.

INITIALIZATION.

T1 = ‘选择功能‘.

T2 = ‘上传参数‘.

T3 = ‘下载参数‘.

IF SY-OPSYS = ‘WINDOWS NT‘.

FLAG = ‘\‘.

ELSE.

FLAG = ‘/‘.

ENDIF.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_REQNUM.

IV_ORGANIZER_TYPE = ‘W‘.

IS_SELECTION-REQSTATUS = ‘R‘.

CALL FUNCTION ‘TR_PRESENT_REQUESTS_SEL_POPUP‘

EXPORTING

IV_ORGANIZER_TYPE   = IV_ORGANIZER_TYPE

IS_SELECTION        = IS_SELECTION

IMPORTING

ES_SELECTED_REQUEST = ES_SELECTED_REQUEST

ES_SELECTED_TASK    = ES_SELECTED_TASK.

P_REQNUM = ES_SELECTED_REQUEST-TRKORR.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FOLDER.

CALL METHOD CL_GUI_FRONTEND_SERVICES=>DIRECTORY_BROWSE

CHANGING

SELECTED_FOLDER = FOLDER

EXCEPTIONS

CNTL_ERROR      = 1

ERROR_NO_GUI    = 2

OTHERS          = 3.

P_FOLDER = FOLDER.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

DATA:

FILE TYPE FILE_TABLE,

RC TYPE I,

FILE_TABLE TYPE FILETABLE,

FILE_FILTER TYPE STRING VALUE ‘(K*.*)|K*.*||‘.

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG

EXPORTING

FILE_FILTER             = FILE_FILTER

CHANGING

FILE_TABLE              = FILE_TABLE

RC                      = RC

EXCEPTIONS

FILE_OPEN_DIALOG_FAILED = 1

CNTL_ERROR              = 2

ERROR_NO_GUI            = 3

NOT_SUPPORTED_BY_GUI    = 4

OTHERS                  = 5.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

READ TABLE FILE_TABLE INTO FILE INDEX 1.

P_FILE = FILE.

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.

CASE SCREEN-GROUP1.

WHEN ‘M2‘.

IF DOWNLOAD = ‘X‘.

SCREEN-ACTIVE = ‘0‘.

ELSE.

SCREEN-ACTIVE = ‘1‘.

ENDIF.

WHEN ‘M3‘.

IF DOWNLOAD = ‘X‘.

SCREEN-ACTIVE = ‘1‘.

ELSE.

SCREEN-ACTIVE = ‘0‘.

ENDIF.

ENDCASE.

MODIFY SCREEN.

ENDLOOP.

START-OF-SELECTION.

CALL FUNCTION ‘RSPO_R_SAPGPARAM‘

EXPORTING

NAME   = ‘DIR_TRANS‘

IMPORTING

VALUE  = DIR_TRANS

EXCEPTIONS

ERROR  = 0

OTHERS = 0.

IF DOWNLOAD = ‘X‘.

IF P_REQNUM = ‘‘ OR P_FOLDER = ‘‘.

MESSAGE ‘必须输入请求号和地址‘ TYPE ‘I‘.

EXIT.

ENDIF.

PERFORM DOWNLOADREQUEST.

ELSE.

IF P_CLIENT = ‘‘ OR P_FILE = ‘‘ .

MESSAGE ‘必须输入文件名和CLIENT‘ TYPE ‘I‘.

EXIT.

ENDIF.

PERFORM UPLOADREQUEST.

PERFORM ADDREQUEST.

ENDIF.

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

*&      FORM  DOWNLOADREQUEST

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

FORM DOWNLOADREQUEST .

CONCATENATE P_REQNUM+3(7) ‘.‘ P_REQNUM(3) INTO P_REQNUM.

CONCATENATE DIR_TRANS ‘COFILES‘ P_REQNUM INTO PATH2 SEPARATED BY FLAG.

CONCATENATE P_FOLDER ‘\‘ P_REQNUM INTO LOCALFOLDER.

PERFORM DOWN_FILE USING PATH2

LOCALFOLDER .

P_REQNUM(1) = ‘R‘.

CONCATENATE DIR_TRANS ‘DATA‘ P_REQNUM INTO PATH2 SEPARATED BY FLAG.

CONCATENATE P_FOLDER ‘\‘ P_REQNUM INTO LOCALFOLDER.

PERFORM DOWN_FILE USING PATH2

LOCALFOLDER .

IF P_MEMO <> ‘‘.

DATA STR TYPE STRING.

IT_MEMO-LINE = P_MEMO.

APPEND IT_MEMO.

P_REQNUM(1) = ‘K‘.

P_REQNUM+8(3) = ‘TXT‘.

CONCATENATE P_FOLDER ‘\‘ P_REQNUM INTO LOCALFOLDER.

STR = LOCALFOLDER .

CALL FUNCTION ‘GUI_DOWNLOAD‘

EXPORTING

FILENAME = STR

TABLES

DATA_TAB = IT_MEMO.

ENDIF.

MESSAGE ‘成功下载!‘ TYPE ‘I‘.

ENDFORM.                    " DOWNLOADREQUEST

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

*&      FORM  DOWN_FILE

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

FORM DOWN_FILE USING    P_PATH

FILE_NAME .

DATA: PATH LIKE RCGFILETR-FTAPPL .

DATA: LOCALFILE LIKE RCGFILETR-FTFRONT.

PATH = P_PATH .

LOCALFILE = FILE_NAME .

CLEAR:ERROR,ERR_TXT.

CALL FUNCTION ‘C13Z_FILE_DOWNLOAD_BINARY‘

EXPORTING

I_FILE_FRONT_END    = LOCALFILE

I_FILE_APPL         = PATH

I_FILE_OVERWRITE    = ‘X‘

IMPORTING

E_FLG_OPEN_ERROR    = ERROR

E_OS_MESSAGE        = ERR_TXT

EXCEPTIONS

FE_FILE_OPEN_ERROR  = 1

FE_FILE_EXISTS      = 2

FE_FILE_WRITE_ERROR = 3

AP_NO_AUTHORITY     = 4

AP_FILE_OPEN_ERROR  = 5

AP_FILE_EMPTY       = 6

OTHERS              = 7.

IF SY-SUBRC <> 0.

IF SY-MSGTY = ‘‘ .

SY-MSGTY = ‘E‘ .

ENDIF .

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

IF ERROR = ‘X‘.

MESSAGE ERR_TXT TYPE ‘I‘.

STOP.

ENDIF.

ENDFORM.                               " DOWN_FILE

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

*&      FORM  UP_FILE

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

FORM UP_FILE USING      P_PATH

FILE_NAME .

DATA: PATH LIKE RCGFILETR-FTAPPL .

DATA: LOCALFILE LIKE RCGFILETR-FTFRONT.

PATH = P_PATH .

LOCALFILE = FILE_NAME .

CLEAR:ERROR,ERR_TXT.

SY-CPROG = ‘RC1TCG3Y‘.

CALL FUNCTION ‘C13Z_FILE_UPLOAD_BINARY‘

EXPORTING

I_FILE_FRONT_END   = LOCALFILE

I_FILE_APPL        = PATH

I_FILE_OVERWRITE   = ‘X‘

IMPORTING

E_FLG_OPEN_ERROR   = ERROR

E_OS_MESSAGE       = ERR_TXT

EXCEPTIONS

FE_FILE_NOT_EXISTS = 1

FE_FILE_READ_ERROR = 2

AP_NO_AUTHORITY    = 3

AP_FILE_OPEN_ERROR = 4

AP_FILE_EXISTS     = 5

OTHERS             = 6.

IF SY-SUBRC <> 0.

IF SY-MSGTY = ‘‘ .

SY-MSGTY = ‘E‘ .

ENDIF .

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

IF ERROR = ‘X‘.

MESSAGE ERR_TXT TYPE ‘I‘.

STOP.

ENDIF.

*  IF SY-SUBRC <> 0.

*    CASE SY-SUBRC  .

*      WHEN 1 .

*        MESSAGE ‘本地文件不存在!‘ TYPE ‘I‘ .

*      WHEN 2 .

*        MESSAGE ‘读取本地文件出错!‘ TYPE ‘I‘ .

*      WHEN 3 .

*        MESSAGE ‘服务器权限错误!‘ TYPE ‘I‘ .

*      WHEN 4 .

*        MESSAGE ‘服务器文件打开错误!‘ TYPE ‘I‘ .

*      WHEN 5 .

*        MESSAGE ‘服务器文件已经存在!‘ TYPE ‘I‘ .

*      WHEN 6 .

*        MESSAGE ‘其他错误!‘ TYPE ‘I‘ .

*    ENDCASE .

*  ENDIF.

ENDFORM.                    "UP_FILE

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

*&      FORM  UPLOADREQUEST

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

FORM UPLOADREQUEST .

DATA:

FILENAME LIKE SDBAH-ACTID ,

EXTENSION LIKE SDBAD-FUNCT,

N TYPE I ,

M TYPE I .

CALL FUNCTION ‘SPLIT_FILENAME‘

EXPORTING

LONG_FILENAME  = P_FILE

IMPORTING

PURE_FILENAME  = FILENAME

PURE_EXTENSION = EXTENSION.

CONCATENATE FILENAME ‘.‘ EXTENSION INTO UPFILENAME .

CONCATENATE EXTENSION FILENAME INTO REQUEST.

CONCATENATE DIR_TRANS ‘COFILES‘ UPFILENAME INTO PATH2 SEPARATED BY FLAG.

PERFORM UP_FILE USING PATH2

P_FILE .

UPFILENAME(1) = ‘R‘.

CONCATENATE DIR_TRANS ‘DATA‘ UPFILENAME INTO PATH2 SEPARATED BY FLAG.

N = STRLEN( P_FILE ).

M = N - 11 .

P_FILE+M(1) = ‘R‘.

PERFORM UP_FILE USING PATH2

P_FILE .

ENDFORM.                    " UPLOADREQUEST

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

*&      FORM  ADDREQUEST

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

FORM ADDREQUEST .

DATA SYSTEM LIKE TMSCSYS-SYSNAM .

SYSTEM = SY-SYSID.

CALL FUNCTION ‘TR_AUTHORITY_CHECK_ADMIN‘

EXPORTING

IV_ADMINFUNCTION = ‘TADD‘

EXCEPTIONS

E_NO_AUTHORITY   = 1

E_INVALID_USER   = 2

OTHERS           = 3.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

EXIT.

ENDIF.

CALL FUNCTION ‘TMS_UI_APPEND_TR_REQUEST‘

EXPORTING

IV_SYSTEM             = SYSTEM

IV_REQUEST            = REQUEST

IV_EXPERT_MODE        = ‘X‘

IV_CTC_ACTIVE         = ‘X‘

EXCEPTIONS

CANCELLED_BY_USER     = 1

APPEND_REQUEST_FAILED = 2

OTHERS                = 3.

CHECK SY-SUBRC = 0.

CALL FUNCTION ‘TMS_MGR_READ_TRANSPORT_REQUEST‘

EXPORTING

IV_REQUEST                 = REQUEST

IV_TARGET_SYSTEM           = SYSTEM

IMPORTING

ET_REQUEST_INFOS           = ET_REQUEST_INFOS

EXCEPTIONS

READ_CONFIG_FAILED         = 1

TABLE_OF_REQUESTS_IS_EMPTY = 2

SYSTEM_NOT_AVAILABLE       = 3

OTHERS                     = 4.

CLEAR REQUEST_INFO.

READ TABLE ET_REQUEST_INFOS INTO REQUEST_INFO INDEX 1.

IF REQUEST_INFO-E070-KORRDEV = ‘CUST‘ AND NOT P_CLIENT IS INITIAL.

CALL FUNCTION ‘TMS_MGR_MAINTAIN_TR_QUEUE‘

EXPORTING

IV_COMMAND                 = ‘FILLCLIENT‘

IV_SYSTEM                  = SYSTEM

IV_REQUEST                 = REQUEST

IV_TARCLI                  = P_CLIENT

IV_MONITOR                 = ‘X‘

IV_VERBOSE                 = ‘X‘

IMPORTING

ET_TP_MAINTAINS            = LT_TP_MAINTAIN

EXCEPTIONS

READ_CONFIG_FAILED         = 1

TABLE_OF_REQUESTS_IS_EMPTY = 2

OTHERS                     = 3.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

EXIT.

ENDIF.

ENDIF.

CALL FUNCTION ‘TR_AUTHORITY_CHECK_ADMIN‘

EXPORTING

IV_ADMINFUNCTION = ‘IMPS‘

EXCEPTIONS

E_NO_AUTHORITY   = 1

E_INVALID_USER   = 2

OTHERS           = 3.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

EXIT.

ENDIF.

CALL FUNCTION ‘TMS_UI_IMPORT_TR_REQUEST‘

EXPORTING

IV_SYSTEM             = SYSTEM

IV_REQUEST            = REQUEST

IV_TARCLI             = P_CLIENT

IV_SOME_ACTIVE        = SPACE

EXCEPTIONS

CANCELLED_BY_USER     = 1

IMPORT_REQUEST_DENIED = 2

IMPORT_REQUEST_FAILED = 3

OTHERS                = 4.

ENDFORM.                    " ADDREQUEST

时间: 2024-11-15 23:55:00

ABAP 上传、下载请求文件的相关文章

datasnap 上传/下载大文件(本Demo以图传片文件为例)

datasnap 上传/下载大文件(本Demo以图传片文件为例) 作者:admin 来源: 日期:2011-8-17 11:44:51 人气:737 标签: QQ空间 新浪微博 腾讯微博 腾讯朋友 QQ收藏 百度空间 百度贴吧 更多0 好久没写技术文了 datasnap传大流. 完整代码,同时感谢叶兄传流的指点,(只公开十天) 附:下面代码,转载请注明出处 ::code 服务端: function TServerMethods1.DownLoadFile(AfileName: string):

PSFTP自动登录SFTP服务器,批量自动上传上传下载指定文件

1.putty官方下载 http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html 下载安装版  putty-0.67-installer.msi 2.安装完成之后,打开putty安装目录,找到PSFTP.EXE,复制到新的文件夹 D:/Download 3.双击打开pstftp.exe,连接Linux服务器 4. 设置下载到windows的本地目录 5.psftp常用命令(操作服务端的文件则是Linux常用命令) lcd+路径

apache FtpClient上传下载删除文件夹及文件

/* * 文件名:FtpUtil.java * 描述:FTP操作 * 修改时间2014-08-10 */ import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import jav

****使用ftp软件上传下载php文件时换行符丢失bug

在使用ftp软件上传下载php源文件时,我们偶尔会发现在本地windows下notepad++编辑器写好的php文件,在使用ftp上传到linux服务器后,php文件的换行符全部丢失了,导致php文件无法正常运行. 这个时候,再次通过ftp软件把刚才上传的php文件下载到本地windows,用notepad++编辑器打开后,发现php源代码变成了一行,换行丢失. 发生这种情况的原因是什么呢?飘易就以一句话概括下:    由于linux下换行是\n,而windows下换行是\r\n,当ftp软件在

文件上传下载之文件上传

13.1  文件上传 13.1.1  概述 在开发基于Web的应用的时候,经常会碰到需要实现文件上传.下载的功能,比如编辑某个商品,需要给它上传一个图片等等. 不使用Struts2的话,可以有很多种方式来实现文件上传,比如使用Apache的Common-FileUpload等.但是这些传统的方式,实现起来非常麻烦,需要写很多代码来进行控制. 现在使用Struts2来实现文件上传的功能,会更加简单和方便,事实上,Struts2的文件上传功能,默认就是基于Common-FileUpload来实现的,

Xshell5下利用sftp上传下载传输文件

sftp是Secure File TransferProtocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.sftp与 ftp有着几乎一样的语法和功能.SFTP为 SSH的一部分,是一种传输档案至Blogger伺服器的安全方式.其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来

java 通过sftp服务器上传下载删除文件

最近做了一个sftp服务器文件下载的功能,mark一下: 首先是一个SftpClientUtil 类,封装了对sftp服务器文件上传.下载.删除的方法 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.Iterator; impor

使用.net FtpWebRequest 实现FTP常用功能 上传 下载 获取文件列表 移动 切换目录 改名 .

平时根本没时间搞FTP什么的,现在这个项目需要搞FTP,为什么呢,我给大家说下项目背景,我们的一个应用程序上需要上传图片,但是用户部署程序的服务器上不让上传任何东西,给了我们一个FTP账号和密码,让我们把图片保存到另一台所谓的文件服务器上面. 建立ftp通信,写入文件流,ok ,  但是显示的时候就麻烦了,不能直接写<img src = "ftp://121.131.131.1" />这样的代码啊,因为这样写的话,你浏览的时候还要登陆Ftp账户,每次都要弹出一个用户登陆框,

django上传下载大文件

上传 def upFile(file): upload_dir = '/tmp/upload/%s' % username if request.method == 'POST': upload_file = request.FILES.get('file', None) if upload_file: if not os.path.exists(upload_dir): os.makedirs(upload_dir) filename = '%s/%s' % (upload_dir, uplo

Hadoop之HDFS原理及文件上传下载源码分析(上)

HDFS原理 首先说明下,hadoop的各种搭建方式不再介绍,相信各位玩hadoop的同学随便都能搭出来. 楼主的环境: 操作系统:Ubuntu 15.10 hadoop版本:2.7.3 HA:否(随便搭了个伪分布式) 文件上传 下图描述了Client向HDFS上传一个200M大小的日志文件的大致过程: 首先,Client发起文件上传请求,即通过RPC与NameNode建立通讯. NameNode与各DataNode使用心跳机制来获取DataNode信息.NameNode收到Client请求后,