根据关键字搜索指定的SAP CRM中间件BDOC
发布日期:2021-06-30 14:06:23
浏览次数:2
分类:技术文章
本文共 3433 字,大约阅读时间需要 11 分钟。
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(). PERFORM display_progress USING sy-tabix. PERFORM get_bdoc_ext_via_id USING -bdoc_id CHANGING lv_xml. CALL FUNCTION 'ECATT_CONV_XSTRING_TO_STRING' EXPORTING im_xstring = lv_xml IMPORTING ex_string = lv_string. FIND keyword IN lv_string. IF sy-subrc = 0. WRITE: / 'found search keyword in BDOC: ' , -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: TYPE any. CALL METHOD cl_smw_bdocstore=>get_bdoc EXPORTING bdoc_id = iv_id get_bdoc_header = 'X' IMPORTING bdoc_header = wa_smw3_bdoc EXCEPTIONS OTHERS = 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 refs l_dtyp = wa_smw3_bdoc-ddic2 . CREATE DATA bdoc_ext TYPE (l_dtyp). ASSIGN: bdoc_ext->* TO . CLEAR: . CALL METHOD cl_smw_bdocstore=>get_bdoc EXPORTING bdoc_id = iv_id get_bdoc_header = ' ' get_body_ext = 'X' IMPORTING bdoc_body_ext = EXCEPTIONS invalid_bdoc_id = 1 inconsistent_body = 2 failed = 3 OTHERS = 4. CHECK sy-subrc = 0. PERFORM get_xml_source USING CHANGING cv_xml. CLEAR: , 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' EXPORTING PERCENTAGE = lv_percent text = 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 structure CALL FUNCTION 'SDIXML_DATA_TO_DOM' EXPORTING name = 'MESSAGE' dataobject = is_ext* CONTROL = IMPORTING data_as_dom = lref_data_as_dom CHANGING document = lref_document* TYPE_HANDLE = EXCEPTIONS illegal_name = 1 OTHERS = 2. ASSERT sy-subrc = 0. CALL METHOD lref_document->append_child EXPORTING new_child = lref_data_as_dom RECEIVING rval = lv_rc. ASSERT sy-subrc = 0.* SDIXML_DOM_TO_XML CALL FUNCTION 'SDIXML_DOM_TO_XML' EXPORTING document = lref_document IMPORTING xml_as_string = cv_xml EXCEPTIONS OTHERS = 1. ASSERT sy-subrc = 0.ENDFORM.
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
转载地址:https://jerry.blog.csdn.net/article/details/104009708 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年05月01日 11时14分16秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Android生命周期
2019-05-01
Android进度条自定义——类似ProgressDialog效果的Dialog
2019-05-01
Android 之 ContentProvider 与 ContentResolver
2019-05-01
【接口自动化】
2019-05-01
SpringBoot搭建一个Web工程
2019-05-01
Spring Boot 安全框架 Shiro 入门
2019-05-01
如何用一句话激怒互联网人?
2019-05-01
用 Python 爬了点你们喜欢的电影
2019-05-01
推荐一位川大零基础转行 Python 的人生勇士
2019-05-01
讲真,做Python一定不要只会一个方向!
2019-05-01
Python 2大限来了!113天后自生自灭,官方不再维护更新
2019-05-01
GitHub 热榜第一的 Python 抢票神器!节假日能用上
2019-05-01
1.6w 星开源项目,但作者月薪却不到 5K
2019-05-01
Python解惑之:整数比较
2019-05-01
Python解惑之:True与False
2019-05-01
你要的微信小程序终于来了
2019-05-01
我的2016书单
2019-05-01
冷眼看小程序
2019-05-01
为什么执行 x in range(y) 如此快?
2019-05-01
看完这篇文章你还不理解 Python 装饰器,只有一种可能...
2019-05-01