Created by Jerry Wang, last modified on Apr 27, 2015

假设需要查找指定时间段内,包含指定关键字的BDOC列表。
执行report,指定时间间隔和关键字:

report下方显示进度条:

执行完毕后打印所有匹配的BDOC id:

report source code:

REPORT zscan_bdoc_via_keyword.PARAMETERS: start TYPE smw3_bdoc-snd_date OBLIGATORY DEFAULT sy-datlo,end   TYPE smw3_bdoc-snd_date OBLIGATORY DEFAULT sy-datlo,keyword TYPE string LOWER CASE OBLIGATORY DEFAULT 'CRMA'.DATA: lv_bdoc_id TYPE smw3_bdoc1-bdoc_id VALUE 'FA163E8EAB031EE496D7B1616132B3D2',lt_header  TYPE STANDARD TABLE OF smw3_bdoc,lv_xml     TYPE xstring,lv_count   TYPE i,lv_string  TYPE string.START-OF-SELECTION.PERFORM main.FORM main.SELECT * INTO TABLE lt_header FROM smw3_bdoc WHERE snd_date >= start AND snd_date <= end.IF sy-subrc <> 0.WRITE: / 'No BDOC exists for given time period.'.RETURN.ENDIF.lv_count = lines( lt_header ).LOOP AT lt_header ASSIGNING FIELD-SYMBOL(<header>).PERFORM display_progress USING sy-tabix.PERFORM get_bdoc_ext_via_id USING <header>-bdoc_id CHANGING lv_xml.CALL FUNCTION 'ECATT_CONV_XSTRING_TO_STRING'EXPORTINGim_xstring = lv_xmlIMPORTINGex_string  = lv_string.FIND keyword IN lv_string.IF sy-subrc = 0.WRITE: / 'found search keyword in BDOC: ' , <header>-bdoc_id.ENDIF.CLEAR: lv_xml, lv_string.ENDLOOP.ENDFORM.FORM get_bdoc_ext_via_id USING iv_id TYPE smw3_bdoc1-bdoc_id CHANGING cv_xml TYPE any.DATA: wa_smw3_bdoc TYPE smw3_fhd,l_dtyp       TYPE smw3_ddic1,bdoc_ext     TYPE REF TO data.FIELD-SYMBOLS: <b_ext> TYPE any.CALL METHOD cl_smw_bdocstore=>get_bdocEXPORTINGbdoc_id         = iv_idget_bdoc_header = 'X'IMPORTINGbdoc_header     = wa_smw3_bdocEXCEPTIONSOTHERS          = 4.ASSERT sy-subrc = 0.IF wa_smw3_bdoc-ddic2 IS INITIAL."MESSAGE s006(smw3)." No BDoc extension available (no messaging BDoc).WRITE: / 'Not BDOC extension avaible for BDOC id: ' , lv_bdoc_id.EXIT.ENDIF.* create data refsl_dtyp = wa_smw3_bdoc-ddic2 .CREATE DATA bdoc_ext TYPE (l_dtyp).ASSIGN: bdoc_ext->*        TO <b_ext>.CLEAR: <b_ext>.CALL METHOD cl_smw_bdocstore=>get_bdocEXPORTINGbdoc_id           = iv_idget_bdoc_header   = ' 'get_body_ext      = 'X'IMPORTINGbdoc_body_ext     = <b_ext>EXCEPTIONSinvalid_bdoc_id   = 1inconsistent_body = 2failed            = 3OTHERS            = 4.CHECK sy-subrc = 0.PERFORM get_xml_source USING <b_ext> CHANGING cv_xml.CLEAR: <b_ext>, bdoc_ext.ENDFORM.FORM display_progress USING iv_percent.DATA: lv_percent type i,lv_text TYPE string.lv_percent = iv_percent * 100 / lv_count.lv_text = 'In process... ' && lv_percent && '%'.CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'EXPORTINGPERCENTAGE = lv_percenttext = lv_text.eNDFORM.FORM get_xml_source USING is_ext TYPE any CHANGING cv_xml TYPE xstring.DATA:*    x_xml_tab        TYPE swr_t_html,lv_rc            TYPE sy-subrc,lref_document    TYPE REF TO if_ixml_document,lref_data_as_dom TYPE REF TO if_ixml_element.*  Maps a ABAP variable into a DOM structureCALL FUNCTION 'SDIXML_DATA_TO_DOM'EXPORTINGname         = 'MESSAGE'dataobject   = is_ext*     CONTROL      =IMPORTINGdata_as_dom  = lref_data_as_domCHANGINGdocument     = lref_document*     TYPE_HANDLE  =EXCEPTIONSillegal_name = 1OTHERS       = 2.ASSERT sy-subrc = 0.CALL METHOD lref_document->append_childEXPORTINGnew_child = lref_data_as_domRECEIVINGrval      = lv_rc.ASSERT sy-subrc = 0.* SDIXML_DOM_TO_XMLCALL FUNCTION 'SDIXML_DOM_TO_XML'EXPORTINGdocument      = lref_documentIMPORTINGxml_as_string = cv_xmlEXCEPTIONSOTHERS        = 1.ASSERT sy-subrc = 0.ENDFORM.



查找包含指定关键字的BDOC相关推荐

  1. linux查找包含指定关键字的文件

    命令形式: grep -R --include="*.cpp" key dir命令含义: 在dir目录下递归查找所有.cpp文件中的关键字key举例: grep -r --incl ...

  2. 在整个数据库中查找包含某关键字的所有存储过程

    当我们对数据表进行修改时,比如删除某个字段.我们必须保证所有用到该字段的存储过程都必须做相应的修改.因此我们如果能用一条SQL语句来查找出所有包含该字段名称的存储过程,那将是非常方便的: --查找包含 ...

  3. Python查找包含指定字符串的所有文件

    代码功能: 查找包含指定字符串的所有文件. 技术要点: 1)广度优先遍历目录树: 2)检查文件中是否包含特定的字符串. 运行效果: 温馨提示 进入公众号,通过菜单"最新资源"==& ...

  4. [linux命令]查找包含指定内容的文件

    内容查找.查找内容.查找包含指定内容的文件 文章目录 格式1:grep -r "指定内容" 目录 格式2:grep -r -l "指定内容" 目录 格式3:fi ...

  5. python批量处理excel提取包含指定关键字的行

    python批量处理excel提取包含指定关键字的行 当我们有大量excel表格需要批处理,目标为提取包含指定关键字的行,可用本文代码,环境为windows python依赖安装 安装好python后 ...

  6. linux模糊查询特定后缀名文件,linux中查找包含指定内容的文件

    查找包含指定内容的文件就是用grep这个命令 grep 'name' -r / grep '指定内容' -r 目录 上述命令就是在根目录下递归查找包含name内容的文件 -r 递归查找文件 -e 从文 ...

  7. linux命令 查找包含指定字符串的文件

    1.非递归搜索包含指定字符串的文件 grep 查找在当前目录下,包含mirrors.aliyuncs.com字符串的文件 grep mirrors.aliyuncs.com ./* 查找结果: 2.递 ...

  8. ES分组聚合:计算每个tag下的商品数量且某个filed包含指定关键字,分组,平均,每个tags下的平均价格,排序,指定范围区间

    1.第一个分析需求:计算每个tag下的商品数量 GET /ecommerce/product/_search {"aggs": {"group_by_tags" ...

  9. Python查找包含指定字符串的所有Office文档

    需要安装扩展库python-docx.openpyxl和python-pptx,代码不适用于Office2003和更早的版本. 参考代码: 测试xlsx文件内容: 测试docx文件内容: 测试pptx ...

最新文章

  1. linux无法设置日期 不允许的操作,如何解决系统时间无法修改的问题
  2. 原生安全二倍速:探秘基础设施的内生“免疫系统“
  3. 实验九 根据材料编程
  4. mongoose 验证
  5. python右键没有idle编辑了_python右键Edit with IDLE
  6. IntelliJ中的键盘快捷键
  7. MaxCompute SQL原理解析及性能调优
  8. 深入解析final关键字的用法
  9. centos7 安装sql_在Linux Distribution CentOS 7上安装SQL Server vNext CTP
  10. OCR文字识别技术总结(三)
  11. 《前端JavaScript面试技巧》
  12. 关于模板类中,子类无法访问父类成员问题的解决方法
  13. 开心豆少儿英语好吗,收费怎么样,一年多少钱的学费
  14. 案例分享:Qt+Arm+Fpga医疗肾镜(又名内窥镜)(实时影像、冻结、拍照、白平衡、九宫格、录像、背光调整、硬件光源调整、光源手动自动调整、物理按键)
  15. 《2018中国区块链行业发展白皮书》发布
  16. java案例-实现斗地主游戏案例
  17. FC下常用软件的安装配置
  18. 世界各国产品认证标致详解CCC/CCEE/CCIB/CE/CQC/CSA/ETL/FCC/GS/UL/PCT/TUV/EMC/MPR/TCO/
  19. 系统架构与5G异构云无线入网关键技术(物联网电子类外文翻译)
  20. [unity] 音频的二进制流转化为audioclip的两种方式

热门文章

  1. poj-1979 dfs
  2. 数据结构与算法之二叉搜索树
  3. (转)Android中尺寸单位杂谈
  4. 通过注册表修改远程桌面默认3389端口
  5. 产生线程安全的原因(1)(操作系统)
  6. session 和cookie的理解
  7. android平台使用java动态生成公私钥,并导出证书文件
  8. 机器学习实验中的编程技术(part1)--numpy
  9. 分类素材(part3)--python机器学习基础教程(下)
  10. python观察日志(part18)--遍历文件夹下文件并判断后缀