获取上传至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

相关推荐
杨云龙UP22 分钟前
Oracle Data Pump实战:expdp/impdp常用参数与导入导出命令整理_20260406
linux·运维·服务器·数据库·oracle
姗姗的鱼尾喵22 分钟前
Spring/SpringBoot 面试高频(含IOC/AOP/事务)
java·spring boot·面试
想唱rap34 分钟前
线程池以及读写问题
服务器·数据库·c++·mysql·ubuntu
Mr_Xuhhh1 小时前
从理论到实践:深入理解算法的时间与空间复杂度
java·开发语言·算法
望眼欲穿的程序猿1 小时前
Vscode Clangd 无法索引 C++17 或者以上标准
java·c++·vscode
带刺的坐椅1 小时前
Spring-AI 与 Solon-AI 深度对比分析报告
java·spring·ai·llm·solon·spring-ai·solon-ai
爱码少年1 小时前
JAVA获取客户端真实IP地址经典写法与Lambda写法对比
java
我科绝伦(Huanhuan Zhou)1 小时前
分享一个服务故障自愈系统
运维·人工智能·自动化
做个文艺程序员1 小时前
Spring AI + Qwen3.5 实现多步 Agent:从工具调用到自主任务拆解的踩坑全记录
java·人工智能·spring
gentle_ice1 小时前
初入社会的我该何去何从
java