1

尊敬的 SAP 和 DMS 专家,

我想知道如何在运行时检查应用服务器 -AL11- 上上传的文件的大小。

我的问题如下:

使用FMHTTP_GET_FILE在Application Server(T-code AL11)上传DMS文件(素材原图)时,有时会遇到以下问题:

应用服务器中上传的文件被另一个报告(SAP 后台作业)拾取不完整。这可能是由于两个报告重叠(第一个报告将文档上传到应用服务器,第二个报告(作业)读取它并作为电子邮件发送)。

至此,我解决问题的尝试是:在第二次报告期间,将原始文件的大小与上传的文件进行比较。如果两个大小不相等,请等待 1 秒并再次比较,直到两个大小相等。不幸的是,我无法实施此解决方案,因为在上传期间我无法访问文件大小。

如果无法确定文件大小,是否有其他想法可以避免此问题?

我希望我能清楚地了解这个问题。

我感谢所有帮助和信息。

哈立德

编辑(只是为了澄清使用HTTP_GET_FILE):

  1. 使用FM获取原始文件的链接CVAPI_DOC_VIEW

  2. 然后,使用返回的文件“上传”pfx_url到 sap 应用程序服务器 (AL11)

4

1 回答 1

1

要获取应用程序服务器上文件的大小,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.
于 2019-01-12T15:04:08.410 回答