You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则表达式提取SAP Form Routine的参数及名称?

SAP Form Routine 例程名称与参数的正则提取方案

需求概述

需要从SAP FORM签名中精准提取两类信息:

  • 例程名称(如示例中的get_vbrk_data)
  • USING、CHANGING关键字对应的参数列表,每个参数需包含参数名与数据类型

示例FORM签名:

FORM get_vbrk_data USING cs_bil_number TYPE VBELN CHANGING cs_vbrk TYPE vbrk cs_vbak TYPE vbak.

正则提取方案

采用分阶段匹配的方式,比单一正则更灵活易维护:

阶段1:提取例程名称与整体参数文本

用以下正则捕获核心信息:

^FORM\s+(\w+)\s+(.*)\.$
  • 分组1:直接获取例程名称
  • 分组2:捕获包含USING/CHANGING的完整参数字段

阶段2:拆分参数类型与具体参数

先对阶段1得到的参数字段,用此正则拆分USING/CHANGING段:

\b(USING|CHANGING)\s+((?:\w+\s+TYPE\s+\w+\s*)+)

再对每个段内的参数列表,用以下正则拆分单个参数的名称与类型:

(\w+)\s+TYPE\s+(\w+)

提取示例(基于给定FORM签名)

  1. 阶段1结果

    • 例程名称:get_vbrk_data
    • 参数文本:USING cs_bil_number TYPE VBELN CHANGING cs_vbrk TYPE vbrk cs_vbak TYPE vbak
  2. 阶段2结果

    • USING参数:
      • 参数名:cs_bil_number,类型:VBELN
    • CHANGING参数:
      • 参数名:cs_vbrk,类型:vbrk
      • 参数名:cs_vbak,类型:vbak

可运行代码示例(Python)

import re

form_signature = "FORM get_vbrk_data USING cs_bil_number TYPE VBELN CHANGING cs_vbrk TYPE vbrk cs_vbak TYPE vbak."

# 提取例程名称和参数文本
main_pattern = re.compile(r'^FORM\s+(\w+)\s+(.*)\.$')
main_match = main_pattern.match(form_signature)

if main_match:
    routine_name = main_match.group(1)
    params_text = main_match.group(2)
    
    # 拆分USING/CHANGING参数段
    segment_pattern = re.compile(r'\b(USING|CHANGING)\s+((?:\w+\s+TYPE\s+\w+\s*)+)')
    segments = segment_pattern.findall(params_text)
    
    result = {
        "routine_name": routine_name,
        "parameters": {}
    }
    
    # 拆分单个参数的名称与类型
    param_pattern = re.compile(r'(\w+)\s+TYPE\s+(\w+)')
    for seg_type, seg_params in segments:
        params = param_pattern.findall(seg_params)
        result["parameters"][seg_type] = [{"name": p[0], "type": p[1]} for p in params]
    
    print(result)

输出结果:

{
    "routine_name": "get_vbrk_data",
    "parameters": {
        "USING": [{"name": "cs_bil_number", "type": "VBELN"}],
        "CHANGING": [{"name": "cs_vbrk", "type": "vbrk"}, {"name": "cs_vbak", "type": "vbak"}]
    }
}

内容的提问来源于stack exchange,提问作者hech1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 04:55:24