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. 2020应届生:今年秋招也太太太太太难了吧!
  2. 手写一个简单的HashMap,搞定挑剔面试官
  3. MyEclipse6.0注册码算法代码,MyEclipse7.0注册码算法代码
  4. OpenTelemetry 简析
  5. 会java学scala多久_Scala中超时的未来
  6. 全校师生放6天春假;清华大学设立天文系;郭守敬望远镜光谱数突破千万;《自然》发表最新发现;百度败诉需道歉;这就是今天的大新闻...
  7. html css实现登录注册页面,基于HTML5+css+JS_的精美登陆注册界面
  8. abp angular 和mvc_MVC - abp-angular - 博客园
  9. 【蓝桥结果填空】:时间显示
  10. Python和Matlab小波分析
  11. APICloud平台使用融云模块实现音视频通话实践经验总结分享
  12. TTL和RS232之间的详细对比转
  13. 【C++11】之 emplace_back() 与 push_back() 的区别
  14. 目标检测YOLO实战应用案例100讲-基于多尺度特征融合的水下小目标检测方法研究
  15. (随笔备忘)装系统—— centos7下制作U盘启动盘还是失败待试,换大白菜
  16. BinaryWriter
  17. QQ浏览器如何安装油猴插件
  18. 计算机怎么删除我的苹果设备管理器,怎么删除电脑我的苹果设备管理器
  19. spring成神之路第二十九篇:BeanFactory 扩展(BeanFactoryPostProcessor、BeanDefinitionRegistryPostProcessor)...
  20. 将PPT转化为长图(长截图)【Python方法】

热门文章

  1. 用户日志留存所采用的技术手段
  2. 创业思路(1) - 收藏夹分享平台
  3. maven 常用的插件
  4. http 请求(tomcat) 返回 错误页面信息
  5. 【word2vec】篇三:基于Negative Sampling 的 CBOW 模型和 Skip-gram 模型
  6. R语言观察日志(part3)--repeat循环
  7. 20应用统计考研复试要点(part10)--应用多元分析
  8. livecharts中仪表盘_LiveCharts文档-3开始-4可用的图表
  9. 爬了菊姐的两万条评论,竟发现菊粉都是这样的人!
  10. 在用 Eclipse 搭建 SAP Commerce Cloud 调试环境时,错误和正确的 buildfile