如何在运行时检查应用服务器上的文件大小?
How to check the file size on Application Server in Runtime?
尊敬的 SAP 和 DMS 专家,
我想知道如何在运行时.
检查应用服务器-AL11-上载文件的大小
我的问题如下:
当使用 FM HTTP_GET_FILE
在应用程序服务器(T 代码 AL11)上上传 DMS 文件(材料的原始图纸)时,我 有时 面对以下问题:
应用服务器中上传的文件被另一个报告(SAP 后台作业)拾取不完整。
这可能是由于两个报告的重叠(第一个报告将文档上传到应用程序服务器,第二个报告(作业)读取它并作为电子邮件发送)。
到目前为止,我尝试解决的问题是:
在第二次报告中,将原始文件的大小与上传的文件进行比较。如果两个大小不相等,请等待 1 秒,然后再次比较,直到两个大小相等。
不幸的是,我无法实施此解决方案,因为我无法在上传期间访问文件大小。
如果无法确定文件大小,是否有其他方法可以避免此问题?
希望能把问题说清楚
感谢所有的帮助和信息。
哈立德
编辑(只是为了阐明 HTTP_GET_FILE
的用法):
使用FM获取link原文件CVAPI_DOC_VIEW
然后,"upload"使用返回的pfx_url
文件到sap应用服务器(AL11)
要获取应用程序服务器上文件的大小,SAP 没有提出开箱即用的建议。您必须使用:
- 要么使用操作系统的命令(在事务码SM49中定义,通过功能模块调用
SXPG_COMMAND_EXECUTE
)
- 或者使用内核C程序
C_DIR_READ_START
, C_DIR_READ_NEXT
, C_DIR_READ_FINISH
.
- 小文件的另一种解决方案是在 ABAP 中执行。
对于前两种可能性,您可以在网络上找到一些示例。
计算 ABAP 中的文件大小(大文件性能较慢):
data read_buffer type x length 1000.
data(fullpath) = `/tmp/file`.
data(file_size) = 0.
open dataset fullpath for input in binary mode.
do.
read dataset fullpath into read_buffer ACTUAL LENGTH data(actual_length).
if actual_length = 0.
exit.
endif.
add actual_length to file_size.
enddo.
close dataset fullpath.
尊敬的 SAP 和 DMS 专家,
我想知道如何在运行时.
检查应用服务器-AL11-上载文件的大小我的问题如下:
当使用 FM HTTP_GET_FILE
在应用程序服务器(T 代码 AL11)上上传 DMS 文件(材料的原始图纸)时,我 有时 面对以下问题:
应用服务器中上传的文件被另一个报告(SAP 后台作业)拾取不完整。 这可能是由于两个报告的重叠(第一个报告将文档上传到应用程序服务器,第二个报告(作业)读取它并作为电子邮件发送)。
到目前为止,我尝试解决的问题是: 在第二次报告中,将原始文件的大小与上传的文件进行比较。如果两个大小不相等,请等待 1 秒,然后再次比较,直到两个大小相等。 不幸的是,我无法实施此解决方案,因为我无法在上传期间访问文件大小。
如果无法确定文件大小,是否有其他方法可以避免此问题?
希望能把问题说清楚
感谢所有的帮助和信息。
哈立德
编辑(只是为了阐明 HTTP_GET_FILE
的用法):
使用FM获取link原文件
CVAPI_DOC_VIEW
然后,"upload"使用返回的
pfx_url
文件到sap应用服务器(AL11)
要获取应用程序服务器上文件的大小,SAP 没有提出开箱即用的建议。您必须使用:
- 要么使用操作系统的命令(在事务码SM49中定义,通过功能模块调用
SXPG_COMMAND_EXECUTE
) - 或者使用内核C程序
C_DIR_READ_START
,C_DIR_READ_NEXT
,C_DIR_READ_FINISH
. - 小文件的另一种解决方案是在 ABAP 中执行。
对于前两种可能性,您可以在网络上找到一些示例。
计算 ABAP 中的文件大小(大文件性能较慢):
data read_buffer type x length 1000.
data(fullpath) = `/tmp/file`.
data(file_size) = 0.
open dataset fullpath for input in binary mode.
do.
read dataset fullpath into read_buffer ACTUAL LENGTH data(actual_length).
if actual_length = 0.
exit.
endif.
add actual_length to file_size.
enddo.
close dataset fullpath.