1. 程式人生 > >MB02 儲存時增強:修改物料憑證擡頭文字後更新對應的會計憑證文字

MB02 儲存時增強:修改物料憑證擡頭文字後更新對應的會計憑證文字

mb02儲存時呼叫了MB_CHANGE_DOCUMENT修改物料憑證 MB_CHANGE_DOCUMENT中呼叫了badi的方法if_mb_document_badi_sap->mb_document_change 可以看到這裡呼叫了BADI mb_document_badi_sap,但是這個badi僅供sap內部使用。 所以使用隱式增強,由於函式MB_CHANGE_DOCUMENT是在update task中呼叫的,所以在程式MM07MFF0_FCODE_BEARBEITEN的form fcode_bearbeiten開頭增強。 程式碼:(FI_DOCUMENT_CHANGE不好用,使用CHANGE_DOCUMENT)*修改擡頭文字時修改對應的會計憑證文字 data : lv_bktxt type mkpf-bktxt, lv_awkey type bkpf-awkey, ls_bkpf2 type bkpf, lv_msg(255).DATA: lt_bkdf TYPE TABLE OF bkdf, lt_bkpf TYPE TABLE OF bkpf, ls_bkpf TYPE bkpf, lt_bsec TYPE TABLE OF bsec, lt_bsed TYPE TABLE OF bsed, lt_bseg TYPE TABLE OF bseg, lt_bset TYPE TABLE OF bset. if sy-tcode = 'MB02' and ( mseg-werks = '2300' or mseg-werks = '2330' ) and sy-ucomm = 'BU'. select single bktxt into lv_bktxt from mkpf where mblnr = mkpf-mblnr and mjahr = mkpf-mjahr. lv_awkey = mkpf-mblnr && '%'. if sy-subrc = 0 and lv_bktxt ne mkpf-bktxt. select single bukrs belnr gjahr into corresponding fields of ls_bkpf2 from bkpf where awkey like lv_awkey and bukrs = mseg-werks and gjahr = mkpf-mjahr. if sy-subrc = 0. ls_bkpf-mandt = sy-mandt. ls_bkpf-bukrs = ls_bkpf2-bukrs. ls_bkpf-gjahr = ls_bkpf2-gjahr. ls_bkpf-belnr = ls_bkpf2-belnr. ls_bkpf-bktxt = mkpf-bktxt. APPEND ls_bkpf TO lt_bkpf. CALL FUNCTION 'CHANGE_DOCUMENT' TABLES t_bkdf = lt_bkdf t_bkpf = lt_bkpf t_bsec = lt_bsec t_bsed = lt_bsed t_bseg = lt_bseg t_bset = lt_bset . commit work and wait. endif. endif. endif.