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

相关推荐
云心似我心^o^40511 分钟前
使用POI和EasyExcel使用导入
java
我是大头鸟21 分钟前
SpringMVC 使用thymeleaf 进行数据展示
java·springmvc·thymeleaf
小刘|23 分钟前
JVM 自动内存管理
java·jvm·算法
2401_8370885034 分钟前
eclipse怎么导入junit4
java·junit·eclipse
幼儿园口算大王35 分钟前
Spring反射机制
java·spring·反射
安全系统学习1 小时前
网络安全之红队LLM的大模型自动化越狱
运维·人工智能·安全·web安全·机器学习·php
2302_799525741 小时前
【Linux】第十二章 安装和更新软件包
linux·运维·服务器
qq_339282231 小时前
docker打开滚动日志
运维·docker·容器
purrrew1 小时前
【JAVA ee初阶】多线程(3)
java·开发语言
每次的天空2 小时前
Android学习总结之Java篇(一)
android·java·学习