如何在表达式后搜索字符串/变量

2020-09-02 02:14发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我正在研究一个程序,该程...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我正在研究一个程序,该程序可以优化报告,作为我大学的一个项目。 因此,它会扫描报告并尝试自动修复它们。 我将尝试通过一个例子来解释我的问题:

[随机码]

使用键bdatj = l_jah
bumon = l_mon二进制搜索将表l_t009b读入wa_t009b。

[随机码]

所以我的问题是,如何找到" bdatj"和" bumon"? 我尝试过这样的事情:

将报告v_name读入source_rep。

在table source_rep中忽略正则表达式'(WITH KEY =?)'的所有出现IGNORING CASE RESULTS results_tab。

但是,老实说,我不知道'密钥名称'就不知道如何获得密钥。

有想法吗?

问候

ABAP开发

4条回答
My梦
2020-09-02 02:25 .采纳回答

我认为您可以搜索read语句,然后从中得出列名:

 READ REPORT'您的报告'INTO来源。
 * sources = VALUE#((line ='使用键bdatj = l_jah将表l_t009b读取到wa_t009b中)
 *(行='xxxxx = aaaaa')
 *(line ='bumon = l_mon二进制搜索。')
 *)。
 在表源中查找正则表达式'(读取表)。*(带键)(。* \ =)'的所有事件
   在角色模式下
   忽略案例
   结果code_lines。
 "连接多个密钥
 循环至code_lines INTO DATA(code_line)。
   count = code_line-line。
   temp_result = VALUE#(src_line = code_line-line
                          tab_name = segment(val = condense(shift_left(val = sources [code_line-line] -line
                                                                          位= code_line-submatches [1] -offset + code_line-submatches [1] -length))
                                              指数= 1
                                              sep =``)
                          code_line =子字符串(val =来源[code_line-line] -line
                                                 off = code_line-submatches [3] -offset))。
   APPEND temp_result至temp_results分配字段符号()。
   当count <=行(源)。
     如果shift_left(val =  -code_lineplaces = strlen( -code_line -1)='。'。
       出口。
     其他。
       计数=计数+ 1。
        -code_line = | { -code_line} {condense(sources [count] -line)} |。
     万一。
   结束。
 结局。
 "获取密钥列
 循环到temp_results进入temp_result。
   清除:collect_tab。
   做。
     尝试。
         collect_tab = VALUE#(基本collect_tab(segment(val = condense(temp_result-code_line)
                                                            索引= sy-index
                                                            sep =``)))。
       捕捉cx_sy_strg_par_val。
         出口。
     ENDTRY。
   ENDDO。
   在table_line ='='处将LOOP AT在collect_tab放入DATA(word)中。
     最终=值#(基本最终(src_line = temp_result-src_line
                                   tab_name = temp_result-tab_name
                                   code_line = collect_tab [sy-tabix-1]))。
   结局。
 结局。
 

一周热门 更多>