1、MIGO供应商批次增强MIGO增强增强最终效果:在MIGO界面新增一个页签用于输入供应商批次号.1、 SE11建立数据表用于存储供应商批次,表结构如下:MANDTMANDTCLNT30客户端MBLNRMBLNRCHAR100物料凭证编号MJAHRMJAHRNUMC40物料凭证年度ZEILEMBLPONUMC40物料凭证中的项目LICHAZLICHACHAR300供应商批次EBELNEBELNCHAR100采购凭证号EBELPEBELPNUMC50采购凭证的项目编号MATNRMATNRCHAR180物料号WERKSWERKS_DCHAR40工厂LGORTLGORT_DCHAR40库存地点CHAR
2、GCHARG_DCHAR100批号2、 建立结构,在屏幕数据交换时使用3、建立表类型设置关键字段:4、SE80建立函数组创建屏幕1000,设计格式,插入供应商批次字段创建function:zmigo_103_get_dataFUNCTIONzmigo_103_get_data.*-*Localinterface:*EXPORTING*VALUE(ES_MIGO_BADI_SCREEN_FIELDS)TYPEZSMIGO_103*-*Getalldatafromfieldsofexternalscreen*Firstmoveallcustomer-fieldsMOVE-CORRESPONDING
3、zmigo_103TOes_migo_badi_screen_fields.ENDFUNCTION.function: ZMIGO_103_PUT_DATAFUNCTIONZMIGO_103_PUT_DATA.*-*Localinterface:*IMPORTING*VALUE(IS_MIGO_BADI_SCREEN_FIELDS)TYPEZSMIGO_103OPTIONAL*-*Putalldatafromfieldstoexternalscreen*Firstfillallcustomer-fieldsMOVE-CORRESPONDINGis_migo_badi_screen_fields
4、TOZMIGO_103.ENDFUNCTION.function:ZMIGO_103_UPDATE_DATAFUNCTIONzmigo_103_update_data.*-*Localinterface:*TABLES*IT_MIGO_BADI_EXAMPLESTRUCTUREZMIGO_103OPTIONAL*-INSERTzmigo_103FROMTABLEit_migo_badi_example.IFsy-subrc0.MESSAGEa398(00)WITH收货批次更新失败.ENDIF.ENDFUNCTION.5、 SE19创建实现6、 创建执行类ZCL_IM_103_MIGO_BADI
5、,激活Z103_MIGO_BADI双击类维护类属性维护下列方法,激活所有,运行T_code MIGO 就可以看到第一个图的效果了。在创建执行类的时候所有方法里面会对应生成相应的代码,有些方法用不到,就注释掉不然激活的时候会报错。methodIF_EX_MB_MIGO_BADIINIT.*RegristrationofBAdI-Implementation:*AppendclassattributeGF_CLASS_ID(=MIGO_BADI_IMPLEMENTATION1)to*regristrationtable.APPENDgf_class_idTOct_init.endmethod.ME
6、THODif_ex_mb_migo_badipbo_detail.DATA:ls_extdataTYPEzsmigo_103.*Thischeckisobligatory,otherwisetheprogramflowisincorrect*(IftherewouldbemorethanoneimplementationofBAdIMB_MIGO_BADI,*onlyonesubscreenwouldbedisplayed).CHECKi_class_id=gf_class_id.*ShowscreenonlyifthereisanitemCHECKi_line_id0.*Externalsu
7、bscreen:*ThecontentofglobalfieldG_NO_INPUT(setinmethodMODE_SET)will*influencethenumberofexternalsubsreen:IFg_no_inputISINITIALANDg_bwart=103.e_cprog=SAPLZMIGO_103.e_dynnr=1000.Externalfields:Inpute_heading=收货批次.ENDIF.*101移动类型也增加输入lanyf2016-1-13DEVK921012IFg_no_inputISINITIALANDg_bwart=101.e_cprog=SA
8、PLZMIGO_103.e_dynnr=1000.Externalfields:Inpute_heading=收货批次.ENDIF.IFg_no_inputISINITIALANDg_bwart=105.e_cprog=SAPLZMIGO_103.e_dynnr=1000.Externalfields:Inpute_heading=供应商批次.ENDIF.*SetG_LINE_ID(=line_idofitemdisplayedondetail-tabstrip)g_line_id=i_line_id.*ReaddataREADTABLEgt_extdataINTOls_extdataWITH
9、TABLEKEYline_id=i_line_id.*Exportdatatofunctiongroup(fordisplayonsubscreen)CALLFUNCTIONZMIGO_103_PUT_DATAEXPORTINGis_migo_badi_screen_fields=ls_extdata.ENDMETHOD.IF_EX_MB_MIGO_BADIPBO_DETAILMETHODif_ex_mb_migo_badipai_detail.*-*ChangingparameterE_FORCE_CHANGEcanbesettoX.Inthiscase*methodLINE_MODIFYi
10、scalled.*ATTENTION:*DONOTSETparameterE_FORCE_CHANGE=.Inthiscaseyoumight*overwriteparameterE_FORCE_CHANGEofanotherBAdIimplementation.*-DATA:ls_extdata_newTYPEzsmigo_103,ls_extdata_oldTYPEzsmigo_103.*OnlyifalineexistsCHECKi_line_id0.*GetdatafromexternalscreenCALLFUNCTIONZMIGO_103_GET_DATAIMPORTINGes_m
11、igo_badi_screen_fields=ls_extdata_new.*ComparenewdatawitholddataREADTABLEgt_extdataINTOls_extdata_oldWITHTABLEKEYline_id=i_line_id.ls_extdata_new-line_id=i_line_id.IFls_extdata_oldls_extdata_new.*Iftherewereanychanges,itsobligatorytoforceMIGOtotrigger*methodLINE_MODIFY.e_force_change=X.ENDIF.ENDMETH
12、OD.IF_EX_MB_MIGO_BADIPAI_DETAILMETHODif_ex_mb_migo_badiline_modify.DATA:ls_extdata_oldTYPEzsmigo_103,ls_extdata_newTYPEzsmigo_103,ls_migo_badi_examplTYPEzmigo_103,l_subrcTYPEsy-subrc.*Getexternaldatafrominternaltable:READTABLEgt_extdataINTOls_extdata_oldWITHTABLEKEYline_id=i_line_id.l_subrc=sy-subrc
13、.*Updatedataininternaltable:IFl_subrc0.*Lineisnew:IfGOITEMhasareferencetoamaterialdocument,*thealreadyexistingexternaldatacanberead.IFNOTcs_goitem-mblnrISINITIALANDNOTcs_goitem-mjahrISINITIALANDNOTcs_goitem-zeileISINITIAL.IFcs_goitem-bwart=103orcs_goitem-bwart=101.增强101收货批次2016-1-13SELECTSINGLE*FROM
14、zmigo_103INTOls_migo_badi_examplWHEREmblnr=cs_goitem-mblnrANDmjahr=cs_goitem-mjahrANDzeile=cs_goitem-zeile.IFsy-subrc=0.MOVE-CORRESPONDINGls_migo_badi_examplTOls_extdata_new.ENDIF.ELSEIFcs_goitem-bwart=105orcs_goitem-bwart=101.增强101收货批次2016-1-13SELECTSINGLE*FROMzmigo_103INTOls_migo_badi_exampl*WHERE
15、ebeln=cs_goitem-ebeln*ANDebelp=cs_goitem-ebelpWHEREmjahr=cs_goitem-lfbjaANDmblnr=cs_goitem-lfbnrANDzeile=cs_goitem-lfpos.IFsy-subrc=0.MOVE-CORRESPONDINGls_migo_badi_examplTOls_extdata_new.ENDIF.ENDIF.ENDIF.ls_extdata_new-line_id=i_line_id.INSERTls_extdata_newINTOTABLEgt_extdata.ELSE.*Lineexists:Gete
16、xternaldataenteredonBAdI-subscreeen,butonly*ifline_modifywascalledfortheitemdisplayedinthe*detailtabstrip.CHECKg_line_id=i_line_id.CALLFUNCTIONZMIGO_103_GET_DATAIMPORTINGes_migo_badi_screen_fields=ls_extdata_new.ls_extdata_new-line_id=i_line_id.*ifls_extdata_new-sgtxtls_extdata_old-sgtxt.*Fieldwasch
17、angedonexternalscreen*cs_goitem-sgtxt=ls_extdata_new-sgtxt.*else.*TakedatafromGOITEM*ls_extdata_new-sgtxt=cs_goitem-sgtxt.*endif.MODIFYTABLEgt_extdataFROMls_extdata_new.ENDIF.IFcs_goitem-bwart=105ORcs_goitem-bwart=101.SELECTSINGLElichaINTOcs_goitem-lichaFROMzmigo_103WHEREebeln=cs_goitem-ebelnANDebel
18、p=cs_goitem-ebelpANDmjahr=cs_goitem-lfbjaANDmblnr=cs_goitem-lfbnrANDzeile=cs_goitem-lfpos.ENDIF.ENDMETHOD.IF_EX_MB_MIGO_BADILINE_MODIFYMETHODIF_EX_MB_MIGO_BADILINE_DELETE.DELETETABLEgt_extdataWITHTABLEKEYline_id=i_line_id.ENDMETHOD.IF_EX_MB_MIGO_BADILINE_DELETEMETHODIF_EX_MB_MIGO_BADIRESET.*Clearall
19、internaldata:CLEAR:gt_extdata,g_no_input,gs_exdata_header,G_BWART,G_XS,g_cancel,g_line_id.ENDMETHOD.IF_EX_MB_MIGO_BADIRESETMETHODif_ex_mb_migo_badipost_document.DATA:ls_migo_badi_exampleTYPEzmigo_103,lt_migo_badi_exampleTYPETABLEOFzmigo_103,ls_extdataTYPEzsmigo_103,ls_xmsegTYPEmseg,l_xcharTYPEmarc-x
20、char.FIELD-SYMBOLS:TYPEzsmigo_103.*TransactionMIGOwillnowpostamaterialdocument.*AnyerrorshereMUSTbeissuedasA-message(better:X-message)*CopydatafrommaterialdocumentintointernaltableLOOPATgt_extdataINTOls_extdata.IFg_cancelISINITIAL.READTABLEit_msegINTOls_xmsegWITHKEYline_id=ls_extdata-line_id.ELSE.RE
21、ADTABLEit_msegINTOls_xmsegWITHKEYsmbln=ls_extdata-mblnrsmblp=ls_extdata-zeilesjahr=ls_extdata-mjahr.ENDIF.IFsy-subrcISINITIAL.IF(ls_xmseg-bwart=103ORls_xmseg-bwart=101)ANDls_xmseg-werks=1000.MOVE-CORRESPONDINGls_extdataTOls_migo_badi_example.*MOVE-CORRESPONDINGls_xmsegTOls_migo_badi_example.ls_migo_
22、badi_example-mblnr=ls_xmseg-mblnr.ls_migo_badi_example-zeile=ls_xmseg-zeile.ls_migo_badi_example-mjahr=ls_xmseg-mjahr.ls_migo_badi_example-ebeln=ls_xmseg-ebeln.ls_migo_badi_example-ebelp=ls_xmseg-ebelp.ls_migo_badi_example-matnr=ls_xmseg-matnr.ls_migo_badi_example-werks=ls_xmseg-werks.ls_migo_badi_example-lgort=ls_xmseg-lgort.ls_migo_badi_example-charg=ls_xmseg-charg.*判断是否为必填SELECTSINGLExchpfINTOl_xcharFROMmarcWHEREmatnr=ls_xmseg-matnrANDwerks=ls_xmseg-werksANDxchpf.IFls_extdata-lichaISINITIAL.IFl_xcharISNOTI
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1