SAP ABAP 二进制文件上传服务器生成HTTP链接 SCMS_HTTP_CREATE ARCHIV_CONNECTION_INSERT ARCHIVOBJECT_GET_URI

OAOR
自定义CLASS NAME T-CODE:SBDSV1, BDS_LOCL 的维护视图
T-CODE:SBDSV1,BDS_LOCL 的维护视图
T-CODE:OAC2,SAP ArchiveLink:全局文档类型
T-CODE:OAC3,SAP ArchiveLink:链接
T-CODE:SWO1, 业务对象制作程序

FUNCTION zrawstr_http_create.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     REFERENCE(IV_RAWSTR) TYPE  ZFILE_CONTENT
*"     REFERENCE(IV_SAPOBJID) TYPE  SAPB-SAPOBJID
*"     REFERENCE(IV_MIMETP) TYPE  BDS_MIMETP DEFAULT 'application/pdf'
*"     REFERENCE(IV_OBJECT) TYPE  SAEANWDID DEFAULT 'ZEIS_DOC'
*"     REFERENCE(IV_DOC_TYPE) TYPE  SAEDOKTYP DEFAULT 'PDF'
*"     REFERENCE(IV_FILENAME) TYPE  TOAAT-FILENAME
*"     REFERENCE(IV_DESCR) TYPE  TOAAT-DESCR
*"  EXPORTING
*"     REFERENCE(EV_UUID) TYPE  SYSUUID_C32
*"  TABLES
*"      T_OAURI STRUCTURE  TOAURI
*"  EXCEPTIONS
*"      ERROR_SCMS_HTTP_CREATE
*"      ERROR_ARCHIV_CONNECTION_INSERT
*"      ERROR_ARCHIVOBJECT_GET_URI
*"----------------------------------------------------------------------
  DATA: lw_sdokcntbin TYPE sdokcntbin,
        lt_sdokcntbin TYPE STANDARD TABLE OF sdokcntbin,
        lv_length     TYPE i,
        lv_index      TYPE i VALUE 0,
        lv_rest_len   TYPE i,
        lv_arc_doc_id TYPE toav0-arc_doc_id,
        lv_sapobjid   TYPE sapb-sapobjid,
        lv_object_id  TYPE toav0-object_id.

  lv_length = xstrlen( iv_rawstr ).
  lv_rest_len = lv_length.

  WHILE lv_rest_len >= 1022.
    lw_sdokcntbin-line = iv_rawstr+lv_index(1022).
    APPEND lw_sdokcntbin TO lt_sdokcntbin.
    lv_rest_len = lv_rest_len - 1022.
    lv_index = lv_index + 1022.
    CLEAR: lw_sdokcntbin.
  ENDWHILE.

  IF lv_rest_len > 0.
    lw_sdokcntbin-line = iv_rawstr+lv_index(lv_rest_len).
    APPEND lw_sdokcntbin TO lt_sdokcntbin.
    CLEAR: lw_sdokcntbin.
  ENDIF.

  TRY.
      CALL METHOD cl_system_uuid=>if_system_uuid_static~create_uuid_c32
        RECEIVING
          uuid = ev_uuid.
    CATCH cx_uuid_error .
  ENDTRY.

  CALL FUNCTION 'SCMS_HTTP_CREATE'
    EXPORTING
      crep_id               = 'C1'
      doc_id                = ev_uuid
      mimetype              = iv_mimetp
      length                = lv_length
    TABLES
      data                  = lt_sdokcntbin[]
    EXCEPTIONS
      bad_request           = 1
      unauthorized          = 2
      forbidden             = 3
      conflict              = 4
      internal_server_error = 5
      error_http            = 6
      error_url             = 7
      error_signature       = 8
      error_parameter       = 9
      blocked_by_policy     = 10
      OTHERS                = 11.
  IF sy-subrc NE 0.
    RAISE error_scms_http_create.
  ENDIF.
  lv_arc_doc_id = ev_uuid.
  CALL FUNCTION 'ARCHIV_CONNECTION_INSERT'
    EXPORTING
      archiv_id             = 'C1' "'CS' UPD BY HANDZJD 20210820
      arc_doc_id            = lv_arc_doc_id
      ar_object             = 'ZALL'
      object_id             = iv_sapobjid
      sap_object            = iv_object
      doc_type              = iv_doc_type
      filename              = iv_filename
      descr                 = iv_descr
      creator               = sy-uname
    EXCEPTIONS
      error_connectiontable = 1
      OTHERS                = 2.
  IF sy-subrc NE 0.
    RAISE error_error_archiv_connection_insert.
  ENDIF.
*  TOA01连接表1 TOAAT Table to store the File attributes
  lv_object_id = iv_sapobjid.
  CALL FUNCTION 'ARCHIVOBJECT_GET_URI'
    EXPORTING
      objecttype               = iv_object
      object_id                = lv_object_id
    TABLES
      uri_table                = t_oauri
    EXCEPTIONS
      error_archiv             = 1
      error_communicationtable = 2
      error_kernel             = 3
      error_http               = 4
      error_dp                 = 5
      OTHERS                   = 6.
  IF sy-subrc <> 0.
    RAISE error_archivobject_get_uri.
  ENDIF.
ENDFUNCTION.
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

令狐九剑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值