首页 > 编程知识 正文

双线性随动强化模型,凸优化中文版pdf

时间:2023-05-04 06:30:00 阅读:149333 作者:3653

BADI的全名是Business Add-in,其主要技术是基于ABAP的对象进行扩展。 SAP中BADI的维护事务代码是SE18和SE19,SE18主要是BADI对象的创建和维护,SE19用来维护BADI的实例,如何实现BADI对象的功能

SAP的BADI可能因系统版本而异,R/3的BADI称为Classic BADI,在SAP Netweaver上,ABAP升级到7.0版,BADI增强端口对象虽然保留了Classic BADI的功能,但是classic SAP的BADI不仅可以扩展标准功能系统,还可以直接在定制程序中调用。

1、自定义BADI对象的创建及维护实例

本节介绍如何定制BADI对象并在ABAP程序中调用该对象。 通过实例可以方便地了解BADI维护工具的具体操作和相关属性。

1输入事务代码SE18,进入BADI Builder维护界面,选择“power point”(增强点)单选按钮,在输入栏中输入定制的对象名称。 此处,以“ZBADI_TEST001”为例,如下图所示。

2单击“文档”工具栏上的“创建”按钮,将显示“创建增强端口”对话框,您需要管理对象名称和说明,如下图所示。

3单击“确认”按钮,保存“增强点”对象,进入“增强点对象属性维护”页面,选择第四个选项卡“增强点元素定义”,如下图所示。

4单击“创建”空白按钮时,将显示“创建BADI定义”对话框,提示您保留定制BADI的名称和说明。 在此输入ZBADI_TEST001,如下图所示。

5单击“确定”按钮后,操作页面列表中将显示添加了BADI定义的对象,如下图所示。

6单击菜单中的“接口”节点,界面定义维护字段将显示在屏幕的右侧。 在接口字段中输入定制接口名称ZBADI_TEST_F01,如下所示:

7将光标放在接口字段上,按回车键,显示“类/接口不存在。 是否要创建对象? ”的消息。 中选择所需的族。

8单击“是”按钮,保存界面对象并进入类别生成器的“维护”页面。 在此页的“方法”字段中维护自定义方法。 在此定义“打印”名称,如下图所示。

9单击类别生成器工具栏中的“参数”按钮,转至所选方法的参数维护页。 定义" PRINT "方法的输入和输出参数,如下图所示。 参数名称分别为输入和输出。

10保存并激活以上操作,返回BADI定义页面,在BADI对象列表中选择第二个节点“实现”,然后右键单击该节点以显示“创建BADI实现”菜单选项,如下图所示。

11将显示“createenhancementimplementation”对话框。 其中新的增强实例名称为ZBADI_TEST001_IMP,具体如下图所示。

在此创建的“增强实施”也可以通过SE19进行显示维护。

12输入" createenhancementimplementation "完成点“确认”后,将显示“创建BADI实现”对话框。 在此,将BADI的实现名称设为" ZBADI_TEST001 ",将实现类名设为" zbadi_te "

13确认后,如图所示进入“Enhancement Implementation”维护画面。

14双击与实现类对应的方法“ZBADI_TEST_F01~PRINT”,系统将询问您是否要创建该实例。 单击“确认”按钮后,将创建新的实例。 该方法对应的实例维护界面如下图所示。

在本例中,创建接口时,可以设置方法的INPUT和OUTPUT两个参数,然后在程序中直接调用它们。 相关代码如下。

methodzbadi _ test _ f01~print.concatenate '输入: ' INPUT INTO OUTPUT. ENDMETHOD. 15中创建的badi必须直接在ABAP程序中调用,如下所示

report ztest _ badi _ 001.data : badi1typereftozbadi _ test _ f01,'引用接口对象BADI2 TYPE REF TO ZBADI_TEST001_

CLASS."参照实施类DATA : INSTR TYPE STRING, OUTSTR TYPE STRING.START-OF-SELECTION. CREATE OBJECT BADI2. "创建一个类的实例 BADI1 = BADI2. "对实例赋值 INSTR = 'Test'. CALL METHOD BADI1->PRINT "调用BADI所生成的类方法 EXPORTING INPUT = INSTR IMPORTING OUTPUT = OUTSTR. WRITE : OUTSTR.

 

2、如何查找系统中的BADI

SAP中的源码,相关BADI增强都是通过方法“CL_EXITHANDLER=>GET INSTANCE”来调用的,以客户维护事务代码VD02为例,作相关步骤的讲解:

<1>在VD02的操作页面中执行主菜单中的“系统”-“状态”命令来查看该事务代码的源码程序,可以发现VD02的程序名称为“SAPMF02D”。

<2>进入到程序“SAPMF02D”的代码查看页面,单击工具栏中的“查找”按钮,输入系统调用BADI的方法的前几个字母“CL_EXIT”,如图所示:

<3>单击“确定”按钮后,显示查找的结果:

以上述结果中的某段为例,比如BADI对象为EXIT_NAME的参数“CUSTOMER_ADD_DATA”。

* Instanz setzen CALL METHOD CL_EXITHANDLER=>GET_INSTANCE exporting " TP 563352 exit_name = 'CUSTOMER_ADD_DATA' " TP 563352 null_instance_accepted = 'X' " TP 563352 CHANGING INSTANCE = G_ADDITIONAL_DATA.

还有些代码是直接调用BADI中的类,该类在方法取用时为一个参数的形式,如下图所示:

遇到这类代码,可以直接双击查找的订单,查看源码所在的位置,然后双击类关联的参数,将可以看到参数的定义代码,所查找的类名称通常是以“CL_EX_”作为开头的,BADI名则截取后面的部分。以本例在销售订单中创建事务代码VA01的关联程序中找到了BADI类:if_ex_oij_el_tsw_details,则其关联的BADI对象名称为“oij_el_tsw_details”。

STATICS: l_exit TYPE REF TO if_ex_oij_el_tsw_details. IF l_exit IS INITIAL. CALL METHOD cl_exithandler=>get_instance CHANGING instance = l_exit. ENDIF.

所找到的BADI对象可以通过事务代码SE18来查看,以BADI:CUSTOMER_ADD_DATA为例,可以看到其对应的接口类为IF_EX_CUSTOMER_ADD_DATA,如下图所示:

除了通过上面的方法外,也可以通过SE80来查看增强对象,SAP的所有程序都被分配到了一个开发类,例如XD02对应的开发类就是VS,在SE80查看该开发类调用的增强,如下图所示:

3、通过BADI实现客户主数据控制功能的建立

以上面找到的增强对象“CUSTOMER_ADD_DATA”为例,该BADI是在XD02中找到的,关联的业务肯定是与客户主数据的创建和维护有关系,增强实现具体如下。

<1>输入事务代码SE19,输入BADI对象名称“CUSTOMER_ADD_DATA”,如下图所示:

<2>点击“创建实施”按钮,弹出对话框,维护BADI定义的Enhancement Implementation的名称和描述,这里定义为“ZCUSTOMER_ADD_DATA”。

<3>单击“确认”之后需要进一步维护新建BADI对象的实施对象名称及实施类,本例中定义BADI的实施对象名称为“ZCUSTOMER_ADD_DATA”,实施类名称为“ZCL_IM_ZCUSTOMER_ADD_DATA”,然后在下拉菜单中选择该BADI的实施类为“CUSTOMER_ADD_DATA”。

<4>单击“确定”按钮,进入BADI实施对象的维护页面,新建的实施类继承了原有BADI对象所对应的实施类的所有方法,如下图所示:


<5>新建的BADI实施类继承了所有的方法,双击列表中某一个方法,将进入其ABAP编辑页面,可以由用户编写自定义的代码。双击实施类或者通过事务代码SE24可以查看该类所有方法的接口参数信息。

以方法“CHECK_ALL_DATA”为例,从名称上看可以获悉该方法应该适用于对客户数据的检查,查看接口参数,几乎包括了客户主数据维护的所有信息,如下图所示:

下面举例说明,在客户保存的时候,检查该客户的地址信息是否已经维护,当地址信息为空时,提示不允许保存。客户对应的地址信息数据存储在物理表KNA1-STRAS字段中,可以推断其对应的接口参数为S_KNA1-STRAS,双击“CHECK_ALL_DATA”方法,进入到ABAP维护界面,如下图所示:

维护代码:

METHOD IF_EX_CUSTOMER_ADD_DATA~CHECK_ALL_DATA. IF S_KNA1-STRAS IS INITIAL. MESSAGE E001(00) WITH '客户的地址信息不可以为空!'. ENDIF. ENDMETHOD.

保存并激活增强代码即可。

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。