*&---------------------------------------------------------------------*
*& Report Z_SCR_WORD_UPLOAD
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT z_scr_word_upload LINE-SIZE 141
                         NO STANDARD PAGE HEADING MESSAGE-ID td.
* V2.1
DATA: dummy(80),
      f_ext(4).
PARAMETERS: Path LIKE dummy DEFAULT 'C:\Word2007template.dotm' LOWER CASE,
            ext  LIKE f_ext DEFAULT 'dotm' LOWER CASE.

DATA: bds_instance    TYPE REF TO cl_bds_document_set,
      bds_classname   TYPE sbdst_classname  VALUE
                         'SAPSCRIPTWORDINTEGRATION',
      bds_classtype   TYPE sbdst_classtype  VALUE 'OT',
      bds_objectkey   TYPE sbdst_object_key VALUE 'WORDTEMPLATE',
      doc_id_700      TYPE sbdst_doc_id     VALUE
                         'BDS_LOC2  A83FD83F732D5D1EE10000000A1550A7',
      doc_id_640      TYPE sbdst_doc_id     VALUE
                         'BDS_LOC2  B91FC640B91E325CE10000000A1551F7',
      doc_id_620      TYPE sbdst_doc_id     VALUE
                         'BDS_LOC2  40C0B062D5C34C4CE10000000A1145AB',
      bds_classname_7 TYPE sbdst_classname  VALUE
                         'SAPSCRIPTWORDINTEGRATION2',
      doc_id_7        TYPE sbdst_doc_id     VALUE
                         'BDS_LOC2  473BA296286672C0E10000000A1146E7',

      l_doc_id        TYPE sbdst_doc_id,
      l_doc_ver_no    TYPE sbdst_doc_ver_no,
      l_doc_var_id    TYPE sbdst_doc_var_id,

      l_files_line    TYPE bapifiles,
      l_files         TYPE TABLE OF bapifiles,

      filename        LIKE rlgrap-filename,
      dir             TYPE string,
      file            TYPE string,
      rel_i           TYPE i,
      rel(4),
      extt(1),
      rc              LIKE sy-subrc.

DATA: true   TYPE tdbool VALUE 'X',
      false  TYPE tdbool VALUE space,
      cancel.

filename = path.

* Check extension dot|dotm

IF NOT ( ext EQ 'dotm' OR ext EQ 'dot' ).
  PERFORM bd_textbox_err(rstxpdft) USING 80
       'Wrong file extension'(003).
  EXIT.
ENDIF.

PERFORM check_data.

PERFORM upload_file CHANGING filename
                             ext
                             dir
                             file
                             cancel.
IF cancel EQ true.
  EXIT.
ENDIF.

PERFORM init_file_line USING dir
                             file.
PERFORM init.
PERFORM upload CHANGING rc.

IF rc = 1.
  PERFORM bd_textbox_err(rstxpdft) USING 80
    'Error in Upload'(003).
ELSE.
  PERFORM bd_textbox_msg(rstxpdft) USING 80
    'The upload of Wordtemplate is done'(001).
ENDIF.

FORM init.
* init for 2003 Upload

* release

  rel = sy-saprl.
  rel_i = rel(2).

  IF     rel_i GE 70.
    l_doc_id = doc_id_700.
  ELSEIF rel_i EQ 64.
    l_doc_id = doc_id_640.
  ELSEIF rel_i EQ 62.
    l_doc_id = doc_id_620.
  ELSE.
    EXIT.
  ENDIF.

ENDFORM.

FORM init_file_line USING dir  TYPE string
                          file TYPE string.
* BDS file line
  DATA: file_up TYPE string.

  CLEAR l_files_line.
  file_up = file.
  TRANSLATE file_up TO UPPER CASE.
  CLEAR l_files_line.
*  l_files_line-comp_id   = 'WORDTEMPLATE.DOT'.
  l_files_line-comp_id   = 'Word2007template.dotm'.
  l_files_line-directory = dir.
  l_files_line-filename  = file_up.
  l_files_line-mimetype  = 'APPLICATION/MSWORD'.
  CLEAR l_files[].
  APPEND l_files_line TO l_files[].
ENDFORM.

FORM check_data.
  IF rel_i GE 70.
    PERFORM delete_rel USING 62.
    PERFORM delete_rel USING 64.
  ELSEIF rel_i EQ 64.
    PERFORM delete_rel USING 62.
    PERFORM delete_rel USING 70.
  ELSEIF rel_i EQ 62.
    PERFORM delete_rel USING 64.
    PERFORM delete_rel USING 70.
  ELSE.
    EXIT.
  ENDIF.
ENDFORM.

FORM delete_rel USING p_rel TYPE i.

  DATA: signature_line TYPE bapisignat,
        signature      TYPE TABLE OF bapisignat,
        pp_cancel      VALUE 'A',
        pp_replace_all VALUE 'R',
        pp_enter       VALUE 'E',
        pp_yes         VALUE 'J',
        pp_no          VALUE 'N',
        pp_leave.

  IF     p_rel EQ 62.
    MOVE: doc_id_620 TO signature_line-doc_id.
  ELSEIF p_rel EQ 64.
    MOVE: doc_id_640 TO signature_line-doc_id.
  ELSEIF p_rel EQ 70.
    MOVE: doc_id_700 TO signature_line-doc_id.
  ELSE.
    EXIT.
  ENDIF.

  APPEND signature_line TO signature[].

  CALL FUNCTION 'BDS_BUSINESSDOCUMENT_GET_INFO'
    EXPORTING
      classname       = bds_classname
      classtype       = bds_classtype
      object_key      = bds_objectkey
    TABLES
      signature       = signature
    EXCEPTIONS
      nothing_found   = 1
      parameter_error = 2
      not_allowed     = 3
      error_kpro      = 4
      internal_error  = 5
      not_authorized  = 6
      OTHERS          = 9.

  IF sy-subrc EQ 0.
    CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
      EXPORTING
        titel         = 'Template delete'
        textline1     =
                        'The system contains Wordtemplate.dot from old Basis release.'
        textline2     = 'Do you want to delete this Object?'
        defaultoption = pp_no
      IMPORTING
        answer        = pp_leave.
    IF pp_leave = pp_yes.
      CALL FUNCTION 'BDS_BUSINESSDOCUMENT_DELETE'
        EXPORTING
          classname       = bds_classname
          classtype       = bds_classtype
          object_key      = bds_objectkey
        TABLES
          signature       = signature
        EXCEPTIONS
          nothing_found   = 1
          parameter_error = 2
          not_allowed     = 3
          error_kpro      = 4
          internal_error  = 5
          not_authorized  = 6
          OTHERS          = 7.
    ENDIF.

* To do: Transport create on case of Yes answer.

  ENDIF.
ENDFORM.

FORM upload CHANGING rc LIKE sy-subrc.
  DATA: l_bds_classname TYPE sbdst_classname.

  IF ext EQ 'dotm'.
    l_bds_classname = bds_classname_7.
    l_doc_id        = doc_id_7.
  ELSE.
    l_bds_classname = bds_classname.
  ENDIF.

  CALL FUNCTION 'BDS_BUSINESSDOCUMENT_UPD_F'
    EXPORTING
      classname       = l_bds_classname
      classtype       = bds_classtype
      object_key      = bds_objectkey
      doc_id          = l_doc_id
      doc_ver_no      = l_doc_ver_no
      doc_var_id      = l_doc_var_id
    TABLES
      files           = l_files
    EXCEPTIONS
      nothing_found   = 1
      parameter_error = 2
      not_allowed     = 3
      error_kpro      = 4
      internal_error  = 5      not_authorized  
= 6      
OTHERS          = 7.  rc 

= sy-subrc.

ENDFORM.

FORM upload_file CHANGING                 p_filename     
LIKE rlgrap-filename                 p_ext          
LIKE ext                 p_dir          
TYPE string                 p_file         
TYPE string                 p_cancel       
TYPE c.  

DATA: name      TYPE string,        filetable 
TYPE filetable,        filter    
TYPE string,        rc        
TYPE i,        uact      
TYPE i,        result    
TYPE tdbool,        l_res     
TYPE i,        l_str     
TYPE i,        l_res2    
TYPE i,        l_find    
LIKE sy-subrc,        l_name    
TYPE string.

* condense filename no-gaps.  name     
= p_filename.  
CLEAR p_cancel.  
CLEAR p_dir.  
CLEAR p_file.  
IF p_ext EQ 'dotm'.    filter 
= '(Word2007template.dotm)|Word2007template.dotm|'.  
ELSE.    filter 
= '(Wordtemplate.dot)|Wordtemplate.dot|'.    " '(*.*)|*.*|)'.  
ENDIF.  
WHILE result EQ false.       " Search the file    
CALL METHOD cl_gui_frontend_services=>file_exist      
EXPORTING        file            
= name      RECEIVING        result          

= result      
EXCEPTIONS        cntl_error      
= 1        error_no_gui    
= 2        wrong_parameter 
= 3        
OTHERS          = 5.    
IF result EQ true.      
EXIT.    
ENDIF.    

CALL METHOD cl_gui_frontend_services=>file_open_dialog      
EXPORTING        window_title            
= 'Template Upload'
*       default_filename        = name        file_filter             
= filter      
CHANGING        file_table              
= filetable        rc                      
= rc        user_action             
= uact      
EXCEPTIONS        file_open_dialog_failed 
= 1        cntl_error              
= 2        error_no_gui            
= 3.    
CHECK sy-subrc = 0.    
IF rc < 0 OR uact EQ 9.      p_cancel 
= true.      
EXIT.    
ENDIF.    

READ TABLE filetable INDEX 1 INTO name.    
CHECK sy-subrc = 0.  
ENDWHILE.  

IF p_cancel NE 'X'.    l_name 

= name.    l_str 
= strlen( name ).    

WHILE l_find EQ 0 AND          l_res2 
LT l_str.      l_name 
= l_name+l_res.      
FIND '\' IN l_name MATCH OFFSET l_res.      l_find 
= sy-subrc.      
IF l_find EQ 0.        l_res 
= l_res + 1.        l_res2 
= l_res2 + l_res.      
ENDIF.    
ENDWHILE.    
IF l_res2 EQ 0.      p_cancel 
= 'X'.      
EXIT.    
ENDIF.    p_file 
= name+l_res2.    p_dir  
= name(l_res2).    p_filename 
= name.  
ELSE.    
EXIT.  
ENDIF.

ENDFORM.

QA12更改使用决策时自动转至长文本并报错 上载附件 Word2007template.dotm的更多相关文章

  1. PHP 文件上传注意一个地方,移动文件时要保证目标目录存在,否则报错

    move_uploaded_file ( $_FILES ["file"] ["tmp_name"], "upload/" . $fileN ...

  2. 错误笔记 对象为null时调用改对象的方法会报错

    对象为null时调用改对象的方法会报错

  3. 启动多个eclipse 时,因为一个另一个启动报错,

    启动多个eclipse 时,因为一个另一个启动报错, 原因: 可能是 有一个 eclipse  中 的 tomcat  配置出错:preference中  tomcat 配置  context dec ...

  4. 对于一个web工程,如果我们复制一个已有的工程粘贴到同一个workspace下,我们除了需要更改工程的名字还需要更改这个新工程的content root,否则会报错。

    对于一个web工程,如果我们复制一个已有的工程粘贴到同一个workspace下,我们除了需要更改工程的名字还需要更改这个新工程的content root,否则会报错.步骤如下: 右键新的工程---&g ...

  5. virtualbox装配fedora时,安装增强功能包时会报错解决

    virtualbox安装fedora时,安装增强功能包时会报错解决 Building the main GuestAdditions module [失败]安装前需要先安装下面几个包才可以避免这个问题 ...

  6. mybatis查询sql时,在不分页的情况下,自动加了limit导致接口报错

    今天在开发过程中,我遇到了很奇怪的问题.自己写的代码明明没有分页进行查询,但是打印出来的sql缺有limit 导致我getone的时候,出现了二个limit,导致接口报错. ### Cause: or ...

  7. Linux安装软件时90%的人会遇到这个报错,如何解决?

    提示 Could not get lock /var/lib/dpkg/lock 报错? 有些小伙伴在使用 apt 包管理器更新或安装软件时,可能会遇到过诸如以下的错误提示: E: Could not ...

  8. 在Android工程中加入AIDL文件时,gen目录生成的文件报错-问题解决

    from://http://blog.csdn.net/watt520/article/details/10099047 今天在弄清除缓存的东东,按照网上别人的方法,创建了一个AIDL文件,这个时候发 ...

  9. web自动化时,sendkeys输入长文本时浏览器响应慢或错误时处理

    在做某个测试时,要在文本框中输入大量的文本,文件内容如下: "-----BEGIN CERTIFICATE-----\nMIIBozCCAQwCAQEwDQYJKoZIhvcNAQEFBQA ...

  10. react className 有多个值时的处理 / react 样式使用 百分比(%) 报错

    1.react className 有多个值时的处理 <fieldset className={`${styles.formFieldset} ${styles.formItem}`}> ...

随机推荐

  1. [ansible]建立ssh互信

    创建密钥 # 创建基于rsa算法的密钥,也可以创建ed25519算法的密钥,性能比rsa高 # 一般直接回车即可 ssh-keygen -t rsa 少量建立互信 如果主机数不多的话,可以手动建立互信 ...

  2. 个人用C#编写的壁纸管理器 - 开源研究系列文章

    今天介绍一下笔者自己用C#开发的一个小工具软件:壁纸管理器. 开发这个小工具的初衷是因为Windows操作系统提供的功能个人不满意,而且现在闲着,所以就随意写了个代码.如果对读者有借鉴参考作用就更好了 ...

  3. 文心一言 VS 讯飞星火 VS chatgpt (80)-- 算法导论7.4 5题

    五.如果用go语言,当输入数据已经"几乎有序"时,插入排序速度很快.在实际应用中,我们可以利用这一特点来提高快速排序的速度.当对一个长度小于 k 的子数组调用快速排序时,让它不做任 ...

  4. 数据可视化【原创】vue+arcgis+threejs 实现海量建筑物房屋渲染,性能优化

    本文适合对vue,arcgis4.x,threejs,ES6较熟悉的人群食用. 先报备一下版本号 "vue": "^2.6.11" "@arcgis/ ...

  5. Esxi 8 更换Nvme硬盘后 如何迁移Esxi主机和虚拟机到新硬盘

    Esxi 8 更换Nvme硬盘后 如何迁移Esxi主机和虚拟机到新硬盘 因为去年底开始SSD和内存大幅降价,ITGeeker技术奇客就想着给自己的小主机升个级,换个三星1G的980硬盘,再加了一根32 ...

  6. C#中的ConcurrentExclusiveSchedulerPair类

    为什么使用ConcurrentExclusiveSchedulerPair? 现实生活中的例子是一个停车场的入口和出口,多辆车可以同时进入和离开停车场,但是只有一个车辆可以进入或离开一次. 这时候就需 ...

  7. 构建iOS交叉编译环境

    要进行高级的iOS编程,我们需要很多工具链来帮我们完成这一目的 构建iOS交叉编译环境: 1.新建一个iphone交叉编译虚拟机 2. 为我们的虚拟机添加第二个网卡,设为host-only来达到能与宿 ...

  8. 2.9 PE结构:重建导入表结构

    脱壳修复是指在进行加壳保护后的二进制程序脱壳操作后,由于加壳操作的不同,有些程序的导入表可能会受到影响,导致脱壳后程序无法正常运行.因此,需要进行修复操作,将脱壳前的导入表覆盖到脱壳后的程序中,以使程 ...

  9. Prometheus + Grafana 搭建监控系统

    前言 本文主要记录下如何使用 Prometheus + Grafana 搭建对各种服务的性能监控,涵盖对 Prometheus.Grafana 的基本介绍,以及如何使用二者进行对 Linux.MySQ ...

  10. C++ STL 容器简单讲解

    STL 简单讲解 网上有很多很好的资料可以参考 而直接看标准是最准确清晰的 vector stack queue / priority_queue deque array map / multimap ...