首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Webdynpro ABAP中上传文件

在Webdynpro ABAP中上传文件
EN

Stack Overflow用户
提问于 2012-06-05 06:51:15
回答 2查看 2.9K关注 0票数 1

我正在寻找一种上传xstring文件到BDS (商业文档服务)的Webdynpro方法,大多数文件都是二进制或ZIP格式的。我使用的是Webdynpro的文件上传功能。

我尝试使用BDS-function CREATE_WITH_AS_TABLE插入该文件,但只有垃圾文件存储在BDS中。

有人能帮我解决这个小问题吗?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2012-06-05 16:08:45

嗨,谢谢你的回答。

我找到了这个小问题的解决方案。我忘记了将xsting转换为二进制格式,以便将文件插入到bds系统中。不幸的是,许多人都有同样的问题,但没有人发布代码片段。

重要的代码是:

代码语言:javascript
复制
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
  buffer        = im_xstr
IMPORTING
  output_length = lv_size
TABLES
  binary_tab    = lt_data.

我的完整类:

代码语言:javascript
复制
method WD_SAVE_NEW_FILE.

DATA: i_files TYPE sbdst_files,
      wa_files LIKE LINE OF i_files,
      i_signature TYPE sbdst_signature,
      wa_signature LIKE LINE OF i_signature.

* prepare data for FM - COMPONENTS
  DATA: i_components TYPE sbdst_components,
        wa_components LIKE LINE OF i_components .

  wa_components-doc_count  = 1.
  wa_components-comp_count = 1.
  wa_components-comp_id    = IM_FILE_NAME.
  wa_components-mimetype   = IM_FILE_MIME.
  APPEND wa_components to i_components.


* set signature to intial = 1
    wa_signature-doc_count  = 1.
    wa_signature-doc_ver_no = 1.
    wa_signature-doc_var_id = 1.
    wa_signature-doc_var_tg = ''.
    wa_signature-comp_count = 1.
    wa_signature-prop_name  =  'BDS_DOCUMENTCLASS'.
    wa_signature-prop_value = ''.
    APPEND  wa_signature TO i_signature.
    CLEAR wa_signature.

    wa_signature-doc_count  = 1.
    wa_signature-doc_ver_no = 1.
    wa_signature-doc_var_id = 1.
    wa_signature-doc_var_tg = ''.
    wa_signature-comp_count = 1.
    wa_signature-prop_name  =  'DESCRIPTION'.
    wa_signature-prop_value = im_file_comment.
    APPEND  wa_signature TO i_signature.
    CLEAR wa_signature.

DATA lt_data TYPE sbdst_content.
  DATA lv_size TYPE i.
  DATA ls_xstring TYPE XSTRINGVAL.
* Fill ls_xstring

  CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
    EXPORTING
      buffer        = im_xstr
    IMPORTING
      output_length = lv_size
    TABLES
      binary_tab    = lt_data.

CALL METHOD me->o_document_set->create_with_table
      EXPORTING
        classname       = me->i_classname
        classtype       = me->i_classtype
        content         = lt_data
        components      = i_components
      CHANGING
        object_key      = me->i_object_key
        signature       = i_signature
      EXCEPTIONS
        nothing_found   = 1
        parameter_error = 2
        not_allowed     = 3
        error_kpro      = 4
        internal_error  = 5
        not_authorized  = 6
        OTHERS          = 7.


    CASE sy-subrc.
      WHEN 0.
*       
      WHEN 1.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      WHEN 2.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      WHEN 3.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      WHEN 4.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      WHEN 5.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      WHEN 6.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      WHEN OTHERS.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
        WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    ENDCASE.

*return values

endmethod.

我希望这些代码能对其他Web Dynpro新手有所帮助。

干杯海因里希

票数 3
EN

Stack Overflow用户

发布于 2012-06-05 13:25:05

你有没有试过这个功能?

代码语言:javascript
复制
-BDS_BUSINESSDOCUMENT_CREATEF 

此外,要将该文件存储在BDS中,您必须使用

代码语言:javascript
复制
-CL_BDS_DOCUMENT_SET=>CREATE_WITH_TABLE

希望能对你有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10889485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档