首页 > 其他分享 >什么是 SAP ABAP Modification-free enhancements

什么是 SAP ABAP Modification-free enhancements

时间:2023-12-02 16:47:24浏览次数:32  
标签:逻辑 enhancements 自定义 sales free ABAP BAdIs SAP order

"Modification-free enhancements" 是 SAP ABAP 中一种开发技术,旨在允许开发者对 SAP 标准对象进行增强而无需进行修改。这种方法可以确保在将来升级或应用支包时,不会影响到已有的修改。Modification-free enhancements 的主要思想是通过使用 Enhancement Framework 提供的工具,如 BAdIs(Business Add-Ins)和隐式增强点,来实现对标准 SAP 代码的扩展而不是直接修改它。

首先,让我们了解一下 Enhancement Framework 的两个主要元素:BAdIs 和增强点。

  1. BAdIs(Business Add-Ins):
    BAdIs 是 SAP 提供的一种强大的扩展机制,允许开发者在标准程序中插入自定义代码。BAdIs 提供了一个框架,开发者可以在预定义的关键点(如方法调用前后)插入自己的逻辑。在 SAP ABAP 中,BAdIs 是通过接口定义的,而实际的实现则是通过类来完成的。这种方式使得在不修改标准代码的情况下,可以引入自定义逻辑。

    举例来说,假设我们要在 SAP 的销售订单创建时执行自定义逻辑。我们可以使用 BAdI BADI_SALES_ORDER,在其预定义的方法中插入我们的代码。这样,在 SAP 更新销售订单的标准代码时,我们的自定义逻辑仍然有效。

    INTERFACE badi_sales_order.
      METHODS if_ex_sales_order~create_before.
    ENDINTERFACE.
    
    CLASS zcl_sales_order_badi DEFINITION.
      PUBLIC SECTION.
        INTERFACES: badi_sales_order.
    ENDCLASS.
    
    CLASS zcl_sales_order_badi IMPLEMENTATION.
      METHOD if_ex_sales_order~create_before.
        " 自定义逻辑
      ENDMETHOD.
    ENDCLASS.
    
  2. 增强点:
    SAP 的增强点是在标准程序中留下的特定位置,允许开发者插入自己的代码。这些增强点通过 Enhancement Framework 管理,可以通过事务码 CMOD 进行配置。增强点允许开发者在标准代码的特定位置添加自定义逻辑,而不会直接修改标准对象。

    例如,在 SAP 的物料主数据维护中,我们可以通过增强点在保存物料数据之前插入自定义逻辑,而无需修改标准的保存逻辑。这样,当 SAP 更新物料主数据维护程序时,我们的自定义逻辑仍然保持有效。

    DATA: lv_material TYPE mara-matnr.
    
    ENHANCEMENT-POINT IMP_BEFORE_SAVE_SPOTS_SPOT.
      " 自定义逻辑
    END-ENHANCEMENT-POINT.
    

通过使用 BAdIs 和增强点,开发者可以在不修改标准代码的情况下实现对 SAP 标准对象的增强。这样的开发方式有助于降低系统维护的复杂性,使得系统更容易升级和保持更新。

然而,需要注意的是,并非所有的情况都可以通过 BAdIs 和增强点来实现修改无关的增强。在某些情况下,可能需要结合其他技术,如隐式扩展(Implicit Enhancements)或用户退出(User Exits)来完成特定的定制需求。总的来说,使用 Modification-free enhancements 技术是一种良好的实践,有助于确保系统的稳定性和可维护性。

标签:逻辑,enhancements,自定义,sales,free,ABAP,BAdIs,SAP,order
From: https://www.cnblogs.com/sap-jerry/p/17871814.html

相关文章

  • SAP ABAP 各种增强技术(Enhancement)概述 - 所谓第一代,第二代,第三代增强技术的出处试
    本文回答笔者这篇教程:如何通过增强(Enhancement)的方式给SAPABAP标准程序增添新功能评论区的读者留言:这个和第一二三四代以及badi增强有什么联系呢?笔者从2007年一月就在SAP中国使用ABAP进行SAP产品开发了,说实话SAP内部不会把ABAP各种增强技术简单得冠之以第一......
  • SAP ABAP 显式增强技术之 New BAdI 的技术原理介绍试读版
    本教程之前的文章,对SAPABAP各种增强技术做了一个概述:122.SAPABAP各种增强技术(Enhancement)概述-所谓第一代,第二代,第三代增强技术的出处是?然后第62篇文章,针对下图红色区域的基于EnhancementFramework增强技术中的隐式增强之ABAP报表增强,做了详细介绍:62.如何......
  • 什么是 SAP ABAP System Change Option
    系统更改选项(SystemChangeOption)是SAP中用于控制对系统中对象的修改权限的一种机制。在SAP系统中,有许多关键的对象,如程序、表、视图等,这些对象的修改需要谨慎操作,以确保系统的稳定性和一致性。系统更改选项提供了一种灵活的方式,允许管理员对系统中的对象进行精细的权限控制,以防......
  • freesql orm 使用 DynamicFilterInfo 拼接日期查询条件时间格式一个难得的经验
    文本到时间条件的转换前端输入1253-3,后台提示"varchar数据类型到datetime数据类型的转换产生一个超出范围的值"经查询,mssql【datetime】数据类型:最大是9999年12月31日,最小是1753年1月1日所以要拼接限制一下,只是if(val.ToDate()<DateTime.MinValue||val.ToDa......
  • ABAP 7.58 中支持任意精度算数的新类
    1.引言通常,有两种对编程语言的改进。第一种是让困难的事情变得简单,第二种是让不可能的事情变为可能。本文介绍的是任意精度算术,它属于第二类:使在ABAP中原本不可能的事情成为可能。过去已经可以在ABAP中使用INT8或DECFLOAT34数据类型进行非常大的数字计算,但还不能进行任意精度的......
  • ABAP Software component SAP_BASIS 下的数据库表 URS02 的用途介绍
    数据库表USR02是SAP系统中的一个重要表,它用于存储用户的验证信息。在ABAP开发中,我们经常需要与此表进行交互,以管理和验证用户的凭据。这张表里一些主要的字段含义罗列如下:BNAME:登录用户名GLTGV:用户在系统生效的起始时间GLTGB:用户在系统生效的截止时间USTYP:用......
  • FreeU-文字生成图片的免费午餐
    title:FreeU-文字生成图片的免费午餐笔记banner_img:https://cdn.studyinglover.com/pic/2023/10/c48e2f490270ef836b26f6d7ed8d7f0e.pngindex_img:https://cdn.studyinglover.com/pic/2023/10/483c5afa7533a2e1dcaf2cf0273c6677.pngdate:2023-10-115:05:00categories:-......
  • All CRM Resources in One Place | Best Open Source CRM Systems 2023 (Free & Paid
    BestOpenSourceCRMSystems2023(Free&PaidSoftware)|CRM.orgAllCRMResourcesinOnePlace|CRM.orgCRMCategoriesNotallCRMsystemsdothesamething.Thereisnobe-all,end-allbestCRMperse.There’saCRMplatformoutthereforevery......
  • FreeRTOS入门教程(任务通知)
    (文章目录)前言本篇文章将带大家学习任务通知的概念和使用方法。一、什么是任务通知FreeRTOS中的任务通知(TaskNotification)是一种轻量级的同步机制,允许一个任务通知另一个任务已发生的事件或条件。这对于多任务系统中的协作和同步非常有用。以下是有关FreeRTOS任务通知的详细......
  • 了解 ESP32 FreeRTOS:初学者指南
    原文:https://www.cnblogs.com/intomcu/p/17297020.html了解ESP32FreeRTOS:初学者指南ESP32FreeRTOS是什么?如何使用FreeRTOS?哪些常用的函数?xTaskCreate()vTaskDelete()vTaskDelay()xTicksToDelay()xSemaphoreCreateBinary()xSemaphoreGive()xSemaphore:要释放的信......