SAP系统中如何在ABAP开发过程中寻找增强点?

     增强(Enhancement)在SAP ABAP开发中主要有以下几种方法:

  1. 第一代:基于源码增强(子过程 subroutine) 这种方法需要修改源代码,通过在现有程序中插入新的子过程来实现增强功能。

  2. 第二代:基于函数出口增强(Function Module) 这种增强方法通过在现有函数模块中插入新的出口来实现。

  3. 第三代:基于类的增强(BADI) BADI(Business Add-In)是一种基于类的增强方法,允许开发者在不修改核心代码的情况下实现自定义功能。文章中介绍了如何创建和实现BADI,以及如何在多个BADI实现中选择调用哪一个。

  4. 第四代:Enhancement-Point Enhancement-Point是一种更先进的增强方法,它允许开发者在程序中直接插入新的代码段。这种方法类似于User Exit,可以直接使用程序中已定义的变量,而不需要通过接口传递参数。

     这些增强方法为SAP ABAP开发者提供了灵活的扩展和定制功能的方式,能够在不破坏原有系统稳定性的前提下,实现新的业务需求。

以下简单介绍几种查询增强点方法:

方法一

     执行ABAP性能分析事务码SE30,运行TCODE如MB1B,点Evaluate后,查看运行时间分析评估结果,点击页签:命中清单。找以“exit”开头的SAP Function,如:EXIT_SAPMM07M_001,这个FUNCTION就是事务码:MB1B提供的一个出口。鼠标双击:双击’001‘

此INCLUDE程序就是增强程序,至于如何查看这个增强是属于哪个SMOD,可查询MODSAP这个表(SAP Enhancements).

方法二

找BADI的方法。

    先执行事务码:SE24,查看类对象:CL_EXITHANDLER, 在其方法:

GET_INSTANCE的( CALL METHOD CL_EXITHANDLER=>GET_CLASS_NAME_BY_INTERFACE)打上一个断点。

    接下来运行事务代码如MIGO,当有BADI时将会被执行,这时在DEBUG模式下,会进入类CL_EXITHANDLER 的GET_INSTANCE 方法,按F6执行这个方法之后,点参数EXIT_NAME查看其对应的值,所有的方法实现都在此类对象中,此时就是我们所要找的BADI如MB_MIGO_BADI。

实现BADI的方法

进入SE19,选择Create Implementation中的Classic BADi

另一种方法

查找源程序,在程序中查找代码段 CL_EXITHANDLER => GET_INSTANCE

就可以找到该程序所用到的BADI。

方法三

通过开发类找出口

以ME21N事务代码为例,进入TCODE后,选择点系统 -》状态 -》程序名称,双击后进入到程序中,再点菜单栏中的 转到 -》属性,找到开发类的名称,比如ME21N的开发类是‘ME’。

如果是找出口,则到SMOD事务代码中,点 加强边的按纽,在开发类中输入‘ME’,回车后就会显示出所有的出口。见下图:

找BADI也是同样的过程,只是到SE18中去确定BADI。          此方法找出来的出口,不是针对某个程序特定需求的出口,而是把开发类所对应的出口全找出来,所以还要通过自己的判断找到所需求的出口。

     不过,SAP 最新的隐式增强技术不需要这么麻烦了,如对于函数G_SET_GET_ALL_VALUES需在其最后处增加一段代码,进入SE37,操作如下:

之后一步一步操作即可创建自己特定需求的代码。这种方法一般在子程序或函数模块中实施增强。

### 配置 FastAPI 中的 `strict-origin-when-cross-origin` CORS 设置 为了配置 FastAPI 应用程序中的 `strict-origin-when-cross-origin` 跨域资源共享 (CORS),可以利用 FastAPI 提供的强大中间件功能来实现这一。具体来说,通过自定义 `CORSMiddleware` 的参数能够满足这一需求。 下面是一个具体的例子展示如何设置: ```python from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware app = FastAPI() origins = [ "http://localhost", "http://localhost:8080", ] app.add_middleware( CORSMiddleware, allow_origins=origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], expose_headers=['Content-Type', 'Authorization'], ) @app.get("/") async def main(): return {"message": "Hello World"} ``` 上述代码片段展示了基本的 CORS 配置方法[^1]。然而要特别针对 `strict-origin-when-cross-origin` 进行配置,则需要进一步调整响应头以确保当请求来自不同源时只返回原始站地址作为Referer值;而同源情况下则保持完整的URL路径不变。这可以通过修改服务器端发送给客户端的特定HTTP头部字段完成,在FastAPI中可通过扩展现有的中间件逻辑或创建新的依赖项注入器来达成目的。 对于更复杂的场景,如果希望严格控制跨站请求的安全策略并遵循 `strict-origin-when-cross-origin` 行为模式,建议深入研究官方文档以及相关RFC标准文件获取更多信息[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员在路上...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值