获取上传至DMS服务器上文件的URL

  • 文件上传

    复制代码
       DATA: lv_class    TYPE toadv-doc_type,
            lv_objectid TYPE sapb-sapobjid.
    
    CALL FUNCTION 'ZARCHIV_CREATE_DIALOG_META'
          EXPORTING
            archiv_id                = 'Z1'               "内容存储库ID
            ar_object                = 'ZALLFILES'        "文档类型
    • 复制代码
          DEL_DATE                 = ' '
    • 复制代码
          NOTE                     = ' '
          object_id                = lv_objectid          "对象标识
          sap_object               = 'BUS1001' "T_ZTFILE001-SAP_OBJECT "对象类型
    • 复制代码
          FILE                     = pv_path
          document_class           = lv_class           "文档类,后缀名
    • 复制代码
          COMMIT_FLAG              = ' '
    • 复制代码
          VSCAN_PROFILE            = '/SCMS/KPRO_CREATE'
    • 复制代码
          FILE_DESCR_POP_SUP       = ' '
        IMPORTING
          archiv                   = lv_archiv_id       "内容存储库ID
          archiv_doc_id            = lv_archiv_doc_id   "文档ID
          documentclass            = lv_documentclass   "文档类
    • 复制代码
          TABLES
    • 复制代码
          OUTDOCTAB                =
        CHANGING
          infiletab                = lt_file
        EXCEPTIONS
          error_archiv             = 1
          error_communicationtable = 2
          error_connectiontable    = 3
          error_kernel             = 4
          error_parameter          = 5
          error_scanqueue          = 6
          canceled_by_user         = 7
          blocked_by_policy        = 8
          OTHERS                   = 9.
      IF sy-subrc <> 0.
        IF sy-subrc = 1.
          MESSAGE '选择的文件不存在'(029) TYPE 'S' DISPLAY LIKE 'E'.
        ELSE.
          MESSAGE '上传失败,请重新上传文件'(030) TYPE 'S' DISPLAY LIKE 'E'.
        ENDIF.
      ENDIF.
  • 文件下载

    CALL METHOD cl_gui_frontend_services=>file_save_dialog
    EXPORTING
    default_extension = lv_doc_type1 "默认保存文件格式
    default_file_name = lv_filename "默认文件名称
    CHANGING
    filename = lc_filename "默认文件名称
    path = lc_path "文件路径
    fullpath = lc_fullpath "文件路径
    EXCEPTIONS
    cntl_error = 1
    error_no_gui = 2
    not_supported_by_gui = 3
    OTHERS = 4.
    CALL FUNCTION 'ARCHIVOBJECT_GET_TABLE'
    EXPORTING
    archiv_id = 'Z1'
    document_type = lv_doc_type
    archiv_doc_id = gs_matnritem-zfileguid
    IMPORTING
    binlength = lv_lenth
    TABLES
    binarchivobject = lt_bin.
    lv_input_length = lv_lenth.
    CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
    EXPORTING
    input_length = lv_input_length
    IMPORTING
    buffer = lv_file
    TABLES
    binary_tab = lt_bin
    EXCEPTIONS
    failed = 1
    OTHERS = 2.

    复制代码
      cl_gui_frontend_services=>gui_download(
        EXPORTING
          filename                  = iv_filename
          filetype                  = 'BIN'
          bin_filesize              = xstrlen( lv_file )
        CHANGING
          data_tab                  = lt_data[]
        EXCEPTIONS
          OTHERS = 1
      ).
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 
        sy-msgv4 RAISING download_error.
      ENDIF.
  • 获取文件URL

    CALL FUNCTION 'SCMS_AO_URL_READ'
    EXPORTING
    arc_id = archiv_id
    doc_id = archiv_doc_id
    comp_id = ' '
    document_type = document_class
    loc_info = 'F'
    http_url_only = 'X'
    IMPORTING
    url = absolute_uri
    EXCEPTIONS
    OTHERS = 1.
    IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 RAISING others .
    ENDIF.

ARCHIVOBJECT_GET_URI

生成URL的时候 SCMS_URL_GENERATE会调用SCMS_URL_SIGN函数这是其中默认这是了URL的生效时间为两小时

如果需要失效时间延长会设置URL永久有效, 可以去修改函数SCMS_URL_GENERATE的参数DURATION 或EXPIRATION ,DURATION最大时间是999999,若需要永久有效,则需要设置EXPIRATION的时间,这时系统会忽略DURATION的参数,

具体可参考:2501205 - 如何修改内容服务器 URL 中的过期参数 - SAP for Me

相关推荐
惊起白鸽450几秒前
LVS负载均衡
运维·负载均衡·lvs
硅的褶皱1 小时前
对比分析LinkedBlockingQueue和SynchronousQueue
java·并发编程
MoFe11 小时前
【.net core】天地图坐标转换为高德地图坐标(WGS84 坐标转 GCJ02 坐标)
java·前端·.netcore
伤不起bb1 小时前
NoSQL 之 Redis 配置与优化
linux·运维·数据库·redis·nosql
季鸢2 小时前
Java设计模式之观察者模式详解
java·观察者模式·设计模式
Fanxt_Ja2 小时前
【JVM】三色标记法原理
java·开发语言·jvm·算法
广东数字化转型2 小时前
nginx怎么使用nginx-rtmp-module模块实现直播间功能
linux·运维·nginx
love530love2 小时前
【笔记】在 MSYS2(MINGW64)中正确安装 Rust
运维·开发语言·人工智能·windows·笔记·python·rust
啵啵学习2 小时前
Linux 里 su 和 sudo 命令这两个有什么不一样?
linux·运维·服务器·单片机·ubuntu·centos·嵌入式
Mr Aokey2 小时前
Spring MVC参数绑定终极手册:单&多参/对象/集合/JSON/文件上传精讲
java·后端·spring