SAPABAPDMS文档管理开发.docx

上传人:b****5 文档编号:7629351 上传时间:2023-05-11 格式:DOCX 页数:10 大小:103KB
下载 相关 举报
SAPABAPDMS文档管理开发.docx_第1页
第1页 / 共10页
SAPABAPDMS文档管理开发.docx_第2页
第2页 / 共10页
SAPABAPDMS文档管理开发.docx_第3页
第3页 / 共10页
SAPABAPDMS文档管理开发.docx_第4页
第4页 / 共10页
SAPABAPDMS文档管理开发.docx_第5页
第5页 / 共10页
SAPABAPDMS文档管理开发.docx_第6页
第6页 / 共10页
SAPABAPDMS文档管理开发.docx_第7页
第7页 / 共10页
SAPABAPDMS文档管理开发.docx_第8页
第8页 / 共10页
SAPABAPDMS文档管理开发.docx_第9页
第9页 / 共10页
SAPABAPDMS文档管理开发.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

SAPABAPDMS文档管理开发.docx

《SAPABAPDMS文档管理开发.docx》由会员分享,可在线阅读,更多相关《SAPABAPDMS文档管理开发.docx(10页珍藏版)》请在冰点文库上搜索。

SAPABAPDMS文档管理开发.docx

SAPABAPDMS文档管理开发

SAP-ABAP-DMS文档管理开发

SAPABAPDMS文档开发

1.用到的BAPI:

BAPI_DOCUMENT_CREATE2,ZBAPI_DOCUMENT_CHECKOUTVIEW2,BAPI_DOCUMENT_DELETE_DIRECT

2.其中ZBAPI_DOCUMENT_CHECKOUTVIEW2是从标准的

BAPI_DOCUMENT_CHECKOUTVIEW2改写(标准的在导出文档时,会自定义一个文档名称);改动代码如下:

a)新增函数组ZMM_CVBAPI

b)将LCVBAPITOP的定义对象拷贝到LZMM_CVBAPITOP

c)在LZMM_CVBAPITOP最后添加如下:

INCLUDE lcvbapif01.

INCLUDE lcvbapif02.

INCLUDE lcvbapif03.

INCLUDE lcvbapif04.

INCLUDE lcvbapif05.

INCLUDE lcvbapif06.

INCLUDE lcvbapif07.

d)拷贝函数BAPI_DOCUMENT_CHECKOUTVIEW2到新ZBAPI_DOCUMENT_CHECKOUTVIEW2,添加IMPORT参ORFILENAME,并修改代码。

 

3.以下为参考代码:

* 文档类型

CONSTANTS:

 con_dokar(3) VALUE 'ZQX'.

* 存储类别

CONSTANTS:

 con_storage_cat(10) VALUE 'DMS_C1_ST'.

FORM frm_creat_file.

  DATA:

 lv_rc        TYPE i,

        lt_filetable TYPE filetable WITH HEADER LINE.

  DATA:

 lv_filename TYPE filep,

        lv_path     TYPE filep.

  DATA:

 lv_docnumber     TYPE bapi_doc_aux-docnumber.

  DATA:

 ls_documentdata  TYPE bapi_doc_draw2,

        ls_documentdatax TYPE bapi_doc_drawx2, "bapi_doc_draw2x,

        lt_objectlinks   TYPE TABLE OF bapi_doc_drad WITH HEADER LINE,

        lt_documentfiles TYPE TABLE OF bapi_doc_files2 WITH HEADER LINE,

        ls_return        TYPE bapiret2.

  DATA:

 t_tdwp TYPE TABLE OF tdwp WITH HEADER LINE.

  DATA:

 name    TYPE draw-filep,

        ext(64) TYPE c.

  CALL METHOD cl_gui_frontend_services=>file_open_dialog

    EXPORTING

      window_title            = '选择文件'

      default_extension       = '*'

    CHANGING

      file_table              = lt_filetable[]

      rc                      = lv_rc

    EXCEPTIONS

      file_open_dialog_failed = 1

      cntl_error              = 2

      error_no_gui            = 3

      not_supported_by_gui    = 4

      OTHERS                  = 9.

  IF lt_filetable[] IS INITIAL.

    EXIT.

  ENDIF.

  READ TABLE lt_filetable INDEX 1.

*解析路径文件

  PERFORM frm_split_path_file USING lt_filetable-filename

        CHANGING lv_filename lv_path.

  name = lv_filename.

  WHILE name CA '.'.

    SPLIT name AT '.' INTO ext name.

  ENDWHILE.

  CONCATENATE '.' name INTO name.

  TRANSLATE name TO LOWER CASE.

  CALL FUNCTION 'CV120_DOC_GET_APPL'

    EXPORTING

      pf_file  = name

    TABLES

      ptx_tdwp = t_tdwp.

  IF t_tdwp[] IS INITIAL.

    MESSAGE s001 WITH '不支持此类型文件'.

  ENDIF.

  READ TABLE t_tdwp INDEX 1.

  ls_documentdata-documenttype    = con_dokar.

  ls_documentdata-documentversion = '00'.

  ls_documentdata-documentpart    = '000'.

  ls_documentdata-description     = '凭证描述'.

  ls_documentdata-username        = sy-uname.

*  ls_documentdata-ecnumber        = '123'.

  READ TABLE t_tdwp INDEX 1.

  lt_documentfiles-documenttype    = 'ZQX'.

  lt_documentfiles-storagecategory = con_storage_cat.

  lt_documentfiles-wsapplication   = t_tdwp-dappl.

  lt_documentfiles-docpath         = lv_path.

  lt_documentfiles-docfile         = lv_filename.

  lt_documentfiles-checkedin       = 'X'.

  APPEND lt_documentfiles.

  CALL FUNCTION 'BAPI_DOCUMENT_CREATE2'

    EXPORTING

      documentdata   = ls_documentdata

    IMPORTING

      documentnumber = lv_docnumber

      return         = ls_return

    TABLES

      objectlinks    = lt_objectlinks

      documentfiles  = lt_documentfiles.

  IF ls_return-type = 'E' OR lv_docnumber IS INITIAL.

*    MESSAGE e001 WITH '上传文件出错,请联系管理员'.

    MESSAGE ID ls_return-id TYPE ls_return-type NUMBER ls_return-number

      WITH ls_return-message_v1 ls_return-message_v2 ls_return-message_v3 ls_return-message_v4.

  ELSE.

    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

    MESSAGE s001 WITH '上传成功'.

  ENDIF.

  wa_file-doc_id = lv_docnumber.

  wa_file-dname = lv_filename.

  wa_file-yk_planno = wa_xqjh_h-yk_planno.

  wa_file-dtype = name.

  wa_file-credat = sy-datum.

  wa_file-ctime = sy-uzeit.

  wa_file-cname = sy-uname.

  APPEND wa_file TO it_file.

  IF wa_xqjh_h-yk_planno IS NOT INITIAL.

    MODIFY ztmm_xqjh_file FROM wa_file.

    COMMIT WORK AND WAIT.

  ENDIF.

ENDFORM.                    " FRM_UPLOAD_FILE

*&---------------------------------------------------------------------*

*&      Form  frm_split_path_file

*&---------------------------------------------------------------------*

*       text拆分路径和文档名

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM frm_split_path_file  USING uv_fullname CHANGING cv_filename cv_pathname.

  DATA:

 lt_match TYPE match_result_tab,

        ls_match LIKE LINE OF lt_match.

  FIND ALL OCCURRENCES OF '\' IN uv_fullname IN CHARACTER MODE RESULTS lt_match.

  IF NOT lt_match IS INITIAL.

    LOOP AT lt_match INTO ls_match.

    ENDLOOP.

    ADD 1 TO ls_match-offset.

    cv_pathname = uv_fullname(ls_match-offset).

    cv_filename = uv_fullname+ls_match-offset.

  ENDIF.

ENDFORM.

*&---------------------------------------------------------------------*

*&      Form  FRM_READ_FILE

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM frm_read_file .

  DATA:

 lv_file TYPE string VALUE 'C:

\XQJH1'.

  DATA:

 lv_path TYPE string.

  DATA:

 lv_result TYPE abap_bool.

  DATA:

 lv_rc TYPE i.

  DATA:

 lv_line TYPE i.

  DATA:

 lv_originalpath TYPE bapi_doc_aux-filename,

        lv_orfilename   TYPE bapi_doc_aux-filename.

  DATA:

 ls_documentfile TYPE bapi_doc_files2,

        ls_return       TYPE bapiret2.

  lv_result = cl_gui_frontend_services=>directory_exist( directory = lv_file ).

  IF lv_result <> 'X'.

    CALL METHOD cl_gui_frontend_services=>directory_create

      EXPORTING

        directory                = lv_file

      CHANGING

        rc                       = lv_rc

      EXCEPTIONS

        directory_create_failed  = 1

        cntl_error               = 2

        error_no_gui             = 3

        directory_access_denied  = 4

        directory_already_exists = 5

        path_not_found           = 6

        unknown_error            = 7

        not_supported_by_gui     = 8

        wrong_parameter          = 9

        OTHERS                   = 10.

    IF lv_rc <> 0 OR sy-subrc <> 0.

      MESSAGE e001 WITH '文件路径拒绝访问'.

    ENDIF.

  ENDIF.

  GET CURSOR LINE lv_line.

  READ TABLE it_file INTO wa_file INDEX lv_line.

  CONCATENATE lv_file '\' INTO lv_originalpath.

  lv_orfilename = wa_file-dname.

  CALL FUNCTION 'ZBAPI_DOCUMENT_CHECKOUTVIEW2'

    EXPORTING

      documenttype    = con_dokar

      documentnumber  = wa_file-doc_id

      documentpart    = '000'

      documentversion = '00'

      documentfile    = ls_documentfile

      originalpath    = lv_originalpath

      orfilename      = lv_orfilename

    IMPORTING

      return          = ls_return.

  IF ls_return IS NOT INITIAL.

    MESSAGE ID ls_return-id TYPE ls_return-type NUMBER ls_return-number

      WITH ls_return-message_v1 ls_return-message_v2 ls_return-message_v3 ls_return-message_v4.

  ENDIF.

  CONCATENATE lv_originalpath lv_orfilename INTO lv_path.

  CALL METHOD cl_gui_frontend_services=>execute

    EXPORTING

      document               = lv_path

      synchronous            = 'X'

    EXCEPTIONS

      cntl_error             = 1

      error_no_gui           = 2

      bad_parameter          = 3

      file_not_found         = 4

      path_not_found         = 5

      file_extension_unknown = 6

      error_execute_failed   = 7

      synchronous_failed     = 8

      not_supported_by_gui   = 9

      OTHERS                 = 10.

  IF sy-subrc <> 0.

* Implement suitable error handling here

    MESSAGE s001 WITH '打开文档失败' DISPLAY LIKE 'E'.

  ENDIF.

ENDFORM.                    " FRM_READ_FILE

*&---------------------------------------------------------------------*

*&      Form  FRM_DOWN_FILE

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM frm_down_file .

  DATA:

 lv_filename TYPE string.

  DATA:

 lv_path TYPE string.

  DATA:

 lv_path_c(100) TYPE c.

  DATA:

 lv_fullpath TYPE string.

  DATA:

 lv_result TYPE abap_bool.

  DATA:

 lv_rc TYPE i.

  DATA:

 lv_line TYPE i.

  DATA:

 lv_originalpath TYPE bapi_doc_aux-filename,

        lv_orfilename   TYPE bapi_doc_aux-filename.

  DATA:

 ls_documentfile TYPE bapi_doc_files2,

        ls_return       TYPE bapiret2.

  GET CURSOR LINE lv_line.

  READ TABLE it_file INTO wa_file INDEX lv_line.

  lv_filename = wa_file-dname.

  CALL METHOD cl_gui_frontend_services=>file_save_dialog

    EXPORTING

      window_title              = '选择位置'

*     default_extension         =

      default_file_name         = lv_filename

*     with_encoding             =

*     file_filter               =

*     initial_directory         =

*     prompt_on_overwrite       = 'X'

    CHANGING

      filename                  = lv_filename

      path                      = lv_path

      fullpath                  = lv_fullpath

    EXCEPTIONS

      cntl_error                = 1

      error_no_gui              = 2

      not_supported_by_gui      = 3

      invalid_default_file_name = 4

      OTHERS                    = 5.

  IF sy-subrc <> 0.

    EXIT.

  ENDIF.

  lv_result = cl_gui_frontend_services=>directory_exist( directory = lv_path ).

  IF lv_result <> 'X'.

    MESSAGE e001 WITH '文件路径不存在'.

  ENDIF.

  lv_originalpath = lv_path.

  lv_orfilename = lv_filename.

  CALL FUNCTION 'ZBAPI_DOCUMENT_CHECKOUTVIEW2'

    EXPORTING

      documenttype    = con_dokar

      documentnumber  = wa_file-doc_id

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2