【问题标题】:How to check the file size on Application Server in Runtime?如何在运行时检查应用程序服务器上的文件大小?
【发布时间】:2019-06-06 22:40:19
【问题描述】:

尊敬的 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)

【问题讨论】:

  • 对于基于 FTP 的系统来说,这是一个众所周知的问题。一种可能的解决方案是更改将文件上传到应用程序服务器的程序:首先上传一个包含另一个文件的名称和大小的小文件,然后上传大文件。后台作业可能会先读取小文件,因此它能够知道大文件何时完全上传,PS:我不明白HTTP_GET_FILE 本身如何只能“上传”一个文件(从HTTP)到应用服务器。
  • @SandraRossi 非常感谢您的反馈!问题是我找不到后台作业检查上传状态的方法:这意味着在上传时后台作业尝试从应用服务器读取文件时应用服务器 (AL11) 上的动态文件大小仍然可以运行。

标签: abap application-server dms netweaver


【解决方案1】:

要获取应用程序服务器上文件的大小,SAP 没有提供开箱即用的建议。你必须使用:

  • 使用操作系统的命令(在事务代码SM49中定义,通过功能模块SXPG_COMMAND_EXECUTE调用)
  • 或使用内核 C 程序 C_DIR_READ_STARTC_DIR_READ_NEXTC_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.

【讨论】:

    猜你喜欢
    • 2010-12-31
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 2017-11-22
    相关资源
    最近更新 更多