SE18查看badi LE_SHP_DELIVERY_PROC.
我们会发现系统对这个badi有实现了一个类.下面我们会参考这个类的方法实现我们的需求.如图.
1.SE19创建badi LE_SHP_DELIVERY_PROC的实现: ZI_SHP_DELIVERY_PROC.
再创建增强实现: ZIM_SHP_DELIVERY_PROC.之后如下图,比较它与SE18的区别.
2.双击接口类型的方法: CHANGE_FIELD_ATTRIBUTES. 实现它,代码如下:
method IF_EX_LE_SHP_DELIVERY_PROC~CHANGE_FIELD_ATTRIBUTES.
data: ls_field_attributes type shp_screen_attributes,
ls_xvbup type vbupvb.
if is_likp-vbeln = '0080003022'.
ls_field_attributes-name = 'LIPSD-G_LFIMG'. "屏幕字段为‘交货数量’,修改其属性为不可输入.
ls_field_attributes-input = 0.
append ls_field_attributes to ct_field_attributes.
endif.
endmethod.
*******************************************************例2
初次写BADI,如图,我是如下步骤:
1、找到系统VL02N的BADI,“DELIVERY_PUBLISH”;
2、在SE19下创建“ZDELIVERY_PUBLISH”;
3、双击“PUBLISH_BEFORE_COMMIT”中写入图二的测试代码;
4、激活程序,设置断点;
然后在VL02N中执行发货过账操作,但是程序无法在断点处停顿,请问是不是哪个步骤丢失了?
BADI是不是找到后,加进去代码就可以使用?
你要定义一个实例来调用这个类接口。比如:
data: L_object type ref to <class_name>. (一般情况下为你这个实施中的接口名) 。