以下根据系统实例做的最终效果:1、SE11建立数据表,主要是用于存放附加的数据;MANDTMANDTCLNT30客户端MBLNRMBLNRCHAR100物料凭证编号MJAHRMJAHRNUMC40物料凭证年度ZEILEMBLPONUMC40物料凭证中的项目BADI_ERFMGERFMGQUAN133以输入单位计的数量BADI_ERFMEERFMEUNIT30条目单位2、建立结构,在屏幕数据交换时使用3、建立表类型设置关键字段:4、SE80建立函数组创建屏幕1000,设计格式,插入附加字段创建function:ZJIM_BADI_EXAMPLE_GET_DATA*"----------------------------------------------------------------------*"*"Localinterface:*"EXPORTING*"REFERENCE(ES_MIGO_BADI_SCREEN_FIELDS)TYPE*"ZJIM_BADI_EXAMPLE_SCREEN_FIELD*"----------------------------------------------------------------------*Getalldatafromfieldsofexternalscreen*Firstmoveallcustomer-fieldsMOVE-CORRESPONDINGzjim_badi_examplTOes_migo_badi_screen_fields.*SecondmoveallGOITEM-fields(displayedonexternalscreen)function:ZJIM_BADI_EXAMPLE_PUT_DATA*"----------------------------------------------------------------------*"*"Localinterface:*"IMPORTING*"REFERENCE(IS_MIGO_BADI_SCREEN_FIELDS)TYPE*"ZJIM_BADI_EXAMPLE_SCREEN_FIELD*"----------------------------------------------------------------------*Putalldatafromfieldstoexternalscreen*Firstfillallcustomer-fieldsMOVE-CORRESPONDINGis_migo_badi_screen_fieldsTOZJIM_badi_exampl.*secondfillallGOITEM-fields(displayedonexternalscreen)function:ZJIM_BADI_EXAMPLE_UPDATE_DATA*"----------------------------------------------------------------------*"*"Updatefunctionmodule:*"*"*"Localinterface:*"TABLES*"IT_MIGO_BADI_EXAMPLESTRUCTUREZJIM_BADI_EXAMPL*"----------------------------------------------------------------------*Databseupdate:INSERTzjim_BADI_EXAMPLFROMTABLEIT_MIGO_BADI_EXAMPLE.IFsy-subrc<>0.MESSAGEa398(00)WITH'ErrorupdateMIGO_BADI_EXAMPL'.ENDIF.INCLUDE:LZJIM_BADI001TOPTABLES:Zjim_badi_exampl.到这里增强的准备工作就做完了,下面开始创建实现:5、SE19创建实现6、创建执行类ZCL_IM_JIM_MIGO_BADI,激活ZJIM_MIGO_BADI双击类维护类属性GT_EXTDATA用于数据交换,类型为ZJIM_TY_T_EXTDATA表类型,7、激活以下方法并维护:methodIF_EX_MB_MIGO_BADI~INIT.*RegristrationofBAdI-Implementation:*AppendclassattributeGF_CLASS_ID(='MIGO_BADI_IMPLEMENTATION1')to*regristrationtable.APPENDgf_class_idTOct_init.endmethod.METHODIF_EX_MB_MIGO_BADI~PBO_DETAIL.DATA:ls_extdataTYPEzjim_badi_example_screen_field.*Thischeckisobligatory,otherwisetheprogramflowisincorrect*(IftherewouldbemorethanoneimplementationofBAdIMB_MIGO_BADI,*onlyonesubscreenwouldbedisplayed).CHECKi_class_id=gf_class_id.*ShowscreenonlyifthereisanitemCHECKi_line_id<>0.*Externalsubscreen:*ThecontentofglobalfieldG_NO_INPUT(setinmethodMODE_SET)will*influencethenumberofexternalsubsreen:ifg_no_inputisinitial.e_cprog='SAPLZJIM_BADI001'(006)."程序名为定义的函数组的名称前加“SAPL“。e_dynnr='1000'."Externalfields:Inpute_heading='ZJIM'(004)."显示标签的名称endif.*SetG_LINE_ID(=line_idofitemdisplayedondetail-tabstrip)g_line_id=i_line_id.*ReaddataREADTABLEgt_extdataINTOls_extdataWITHTABLEKEYline_id=i_line_id.*Exportdatatofunctiongroup(fordisplayonsubscreen)CALLFUNCTION'ZJIM_BADI_EXAMPLE_PUT_DATA'EXPORTINGis_migo_badi_screen_fields=ls_extdata.ENDMETHOD."IF_EX_MB_MIGO_BADI~PBO_DETAILMETHODIF_EX_MB_MIGO_BADI~PAI_DETAIL.*-----------------------------------------------------------------------*ChangingparameterE_FORCE_CHANGEcanbesetto'X'.Inthiscase*methodLINE_MODIFYiscalled.*ATTENTION:*DONOTSETparameterE_FORCE_CHANGE=...