Abap 如何在运行时检查应用服务器上的文件大小?

Abap 如何在运行时检查应用服务器上的文件大小?,abap,application-server,dms,netweaver,Abap,Application Server,Dms,Netweaver,尊敬的SAP&DMS专家: 我想知道如何在运行时检查上传到应用服务器-AL11-上的文件的大小 我的问题是: 当使用FMHTTP_GET_FILE在应用服务器(T-code AL11)上上传DMS文件(原始材料图纸)时,我有时会遇到以下问题: 应用服务器中上载的文件被另一个报告(SAP后台作业)拾取。 这可能是由于两个报告重叠(第一个报告将文档上传到app server,第二个报告(作业)读取文档并以电子邮件形式发送) 到目前为止,我试图解决的问题是: 在第二次报告中,将原始文件的大小与上载的文

尊敬的SAP&DMS专家:

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

我的问题是:

当使用FM
HTTP_GET_FILE
在应用服务器(T-code AL11)上上传DMS文件(原始材料图纸)时,我有时会遇到以下问题:

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

到目前为止,我试图解决的问题是: 在第二次报告中,将原始文件的大小与上载的文件进行比较。如果两个尺寸不相等,请等待1秒并再次比较,直到两个尺寸相等。 不幸的是,我无法实现此解决方案,因为我在上传过程中无法访问文件大小

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

我希望我能把这个问题讲清楚

我感谢所有的帮助和信息

哈立德

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

  • 使用FM
    CVAPI\u DOC\u视图获取原始文件的链接

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


  • 要获得应用服务器上的文件大小,SAP没有现成的建议。您必须使用:

    • 使用操作系统的命令(在事务代码SM49中定义它,并通过功能模块
      SXPG_COMMAND_EXECUTE
      调用它)
    • 或者使用内核C程序
      C\u DIR\u READ\u START
      C\u DIR\u READ\u NEXT
      C\u DIR\u READ\u FINISH
    • 小文件的另一个解决方案是在ABAP中执行
    你可以在网上找到一些关于前两种可能性的例子

    在ABAP中计算文件大小(大文件的性能较慢):


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