如何在运行时中检查Application Server上的文件大小?

时间:2019-01-12 01:57:26

标签: sap abap application-server netweaver dms

尊敬的SAP和DMS专家

我想知道如何在运行时检查在Application Server -AL11- 上上传的文件的大小。

我的问题如下:

当使用FM HTTP_GET_FILE在应用程序服务器(T代码AL11)上上传DMS文件(原始物料图)时,我有时遇到以下问题:

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

到目前为止,我解决该问题的尝试是: 在第二次报告期间,会将原始文件的大小与上载的文件进行比较。如果两个大小不相等,请等待1秒钟,然后再次比较直到两个大小相等。 不幸的是,由于无法在上传过程中访问文件大小,因此我无法实施此解决方案。

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

我希望我能对这个问题有个清晰的认识。

感谢所有帮助和信息。

Khaled

编辑(只是为了阐明HTTP_GET_FILE的用法)

  1. 使用FM CVAPI_DOC_VIEW

  2. 获取原始文件的链接
  3. 然后,使用返回的pfx_url将文件“上传”到sap应用程序服务器(AL11)

1 个答案:

答案 0 :(得分: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.