【采购订单】利用BAPI创建PO后丢失消息输出
生活随笔
收集整理的這篇文章主要介紹了
【采购订单】利用BAPI创建PO后丢失消息输出
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
背景:有一些公司采購訂單的創(chuàng)建不是單純通過手動ME21N進(jìn)行的,而是批量通過BAPI(BAPI_PO_CREATE1)來創(chuàng)建,這個(gè)時(shí)候會有一個(gè)問題,PO成功創(chuàng)建之后利用顯示功能(ME23N)無法打印預(yù)覽后臺配置的格式,提示如下消息:“沒有發(fā)現(xiàn)信息(請檢查輸入)”,詳見下圖所示:
原因則是“消息”里面沒有自動創(chuàng)建消息數(shù)據(jù)。
以至于批量打印的時(shí)候無法進(jìn)行選擇顯示(ME9F)。
檢查后臺配置均無任何問題(SPRO-物料管理-采購-消息-輸出控制),這里不做詳述。
檢查后臺配置沒有發(fā)現(xiàn)問題,手動處理也沒有問題,BAPI中也暫時(shí)沒有找到相應(yīng)的參數(shù)。
暫定處理方案——更新NAST表。
參考代碼:
REPORT ZTEST_PO. DATA:HEAD LIKE BAPIMEPOHEADER, "采購訂單抬頭數(shù)據(jù)HEADX LIKE BAPIMEPOHEADERX, "采購訂單抬頭數(shù)據(jù)(更改參數(shù))LT_HEADER_TEXT LIKE TABLE OF BAPIMEPOTEXTHEADER WITH HEADER LINE,ITEM LIKE TABLE OF BAPIMEPOITEM WITH HEADER LINE, "采購訂單項(xiàng)目ITEMX LIKE TABLE OF BAPIMEPOITEMX WITH HEADER LINE, "采購訂單項(xiàng)目數(shù)據(jù)(更改參數(shù))POACCOUNT LIKE TABLE OF BAPIMEPOACCOUNT WITH HEADER LINE, "采購訂單的帳戶分配字段POACCOUNTX LIKE TABLE OF BAPIMEPOACCOUNTX WITH HEADER LINE, "采購訂單的帳目分配字段 (更改工具條)POCOND LIKE BAPIMEPOCOND OCCURS 0 WITH HEADER LINE, "價(jià)格條件POCONDX LIKE BAPIMEPOCONDX OCCURS 0 WITH HEADER LINE,POSERVICES TYPE TABLE OF BAPIESLLC WITH HEADER LINE,POSRVACCVS TYPE TABLE OF BAPIESKLC WITH HEADER LINE,LT_POPARTNER TYPE TABLE OF BAPIEKKOP WITH HEADER LINE,DOCUMENT LIKE BAPIMEPOHEADER-PO_NUMBER,RETURN LIKE TABLE OF BAPIRET2 WITH HEADER LINE. "采購憑證號 DATA: L_EBELP TYPE EKPO-EBELP, "采購憑證的項(xiàng)目編號L_STNO TYPE STUNR. DATA:GS_WAERS TYPE LFM1-WAERS,GS_MEINS TYPE MARA-MEINS. DATA:LW_GCJZNQ TYPE ZMM_GCJZNQ. DATA:LS_VBFA TYPE VBFA. DATA : E_MESSAGE TYPE CHAR255. DATA : I_HEAD TYPE ZVS_LD.I_HEAD-LIFNR = '0000200001'. I_HEAD-EKORG = '1001'. I_HEAD-BUKRS = '1010'. I_HEAD-VEDAT = SY-DATUM. I_HEAD-TXT_K01 = '測試PO'. I_HEAD-ZZCGKH = '00000231'. I_HEAD-WAERS = 'CNY'.CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'EXPORTINGINPUT = I_HEAD-LIFNRIMPORTINGOUTPUT = I_HEAD-LIFNR.IF GS_WAERS = ''.SELECT SINGLE WAERSFROM LFM1INTO GS_WAERSWHERE LIFNR = I_HEAD-LIFNRAND EKORG = I_HEAD-EKORG. ENDIF.HEAD-DOC_TYPE = 'ZNB1'. HEADX-DOC_TYPE = 'X'.HEAD-PURCH_ORG = I_HEAD-EKORG. HEADX-PURCH_ORG = 'X'.HEAD-CREAT_DATE = SY-DATUM. HEADX-CREAT_DATE = 'X'.HEAD-CREATED_BY = SY-UNAME. HEADX-CREATED_BY = 'X'.HEAD-PUR_GROUP = '000'. HEADX-PUR_GROUP = 'X'.HEAD-COMP_CODE = I_HEAD-BUKRS. HEADX-COMP_CODE = 'X'.HEAD-CURRENCY = GS_WAERS. HEADX-CURRENCY = 'X'.HEAD-DOC_DATE = I_HEAD-VEDAT. HEADX-DOC_DATE = 'X'.HEAD-VENDOR = I_HEAD-LIFNR. HEADX-VENDOR = 'X'.HEAD-PO_REL_IND = 'X'. HEADX-PO_REL_IND = 'X'.HEAD-LANGU = SY-LANGU. HEADX-LANGU = 'X'.HEAD-STATUS = 'I'. HEADX-STATUS = 'X'.SELECT SINGLE ZTERMINTO HEAD-PMNTTRMSFROM LFM1WHERE LIFNR = HEAD-VENDORAND EKORG = HEAD-PURCH_ORG. HEADX-PMNTTRMS = 'X'.IF I_HEAD-TXT_K01 <> ''.LT_HEADER_TEXT-TEXT_FORM = '*'.LT_HEADER_TEXT-TEXT_ID = 'F01'.LT_HEADER_TEXT-TEXT_LINE = I_HEAD-TXT_K01.APPEND LT_HEADER_TEXT.CLEAR LT_HEADER_TEXT. ENDIF.LT_POPARTNER-PARTNERDESC = 'C1'. LT_POPARTNER-LANGU = '1'. LT_POPARTNER-BUSPARTNO = I_HEAD-ZZCGKH. APPEND LT_POPARTNER.DATA:LT_WYT3 LIKE TABLE OF WYT3 WITH HEADER LINE. SELECT *FROM WYT3"合作伙伴功能INTO TABLE LT_WYT3WHERE LIFNR = I_HEAD-LIFNRAND EKORG = I_HEAD-EKORGAND PARVW = 'C1'. LOOP AT LT_WYT3 WHERE PERNR <> I_HEAD-ZZCGKH.LT_POPARTNER-PARTNERDESC = 'C1'.LT_POPARTNER-LANGU = '1'.LT_POPARTNER-BUSPARTNO = LT_WYT3-PERNR.LT_POPARTNER-DELETE_IND = 'X'.APPEND LT_POPARTNER. ENDLOOP.L_STNO = 0. DATA : IT_ITEM TYPE ZVS_LDITEM.*LOOP AT IT_ITEM. IT_ITEM-MATNR = '21040230001'. IT_ITEM-EBELP = '10'. IT_ITEM-WERKS = '1011'. IT_ITEM-LGORT = 'ZF00'. IT_ITEM-MENGE = 10. IT_ITEM-NETPR = 4500.IF IT_ITEM-MATNR IS NOT INITIAL.CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'EXPORTINGINPUT = IT_ITEM-MATNRIMPORTINGOUTPUT = IT_ITEM-MATNREXCEPTIONSLENGTH_ERROR = 1OTHERS = 2. ENDIF. "物料主數(shù)據(jù)默認(rèn)計(jì)量單位 CLEAR : GS_MEINS. SELECT SINGLE MEINS FROM MARA INTO GS_MEINSWHERE MATNR = IT_ITEM-MATNR.ITEM-PO_ITEM = IT_ITEM-EBELP. ITEMX-PO_ITEM = IT_ITEM-EBELP. ITEMX-PO_ITEMX = 'X'.ITEM-MATERIAL = IT_ITEM-MATNR. ITEMX-MATERIAL = 'X'.ITEM-PLANT = IT_ITEM-WERKS. "工廠 ITEMX-PLANT = 'X'. "工廠*ITEM-ITEM_CAT = 'L'. *ITEMX-ITEM_CAT = 'X'.ITEM-STGE_LOC = IT_ITEM-LGORT. ITEMX-STGE_LOC = 'X'.ITEM-TAX_CODE = 'J2'."稅代碼 ITEMX-TAX_CODE = 'X'. "稅代碼ITEM-QUANTITY = IT_ITEM-MENGE. ITEMX-QUANTITY = 'X'.ITEM-PO_UNIT = GS_MEINS. ITEMX-PO_UNIT = 'X'.ITEM-NET_PRICE = IT_ITEM-NETPR. ITEMX-NET_PRICE = 'X'.ITEM-PRICE_UNIT = 1. ITEMX-PRICE_UNIT = 'X'.ITEM-INFO_UPD = ''. "標(biāo)識: 更新信息記錄 ITEMX-INFO_UPD = 'X'.ITEM-AGREEMENT = '4600000347'. ITEMX-AGREEMENT = 'X'.ITEM-AGMT_ITEM = IT_ITEM-EBELP. ITEMX-AGMT_ITEM = 'X'.APPEND: ITEM,ITEMX. CLEAR: ITEM,ITEMX. * 價(jià)格條件 ADD 1 TO L_STNO. POCOND-ITM_NUMBER = IT_ITEM-EBELP. POCONDX-ITM_NUMBER = IT_ITEM-EBELP. POCONDX-ITM_NUMBERX = 'X'. POCOND-COND_ST_NO = L_STNO. POCONDX-COND_ST_NO = 'X'. POCOND-COND_TYPE = 'PB00'. POCONDX-COND_TYPE = 'X'. POCOND-COND_VALUE = IT_ITEM-NETPR. POCONDX-COND_VALUE = 'X'. POCOND-CURRENCY = I_HEAD-WAERS. POCONDX-CURRENCY = 'X'. POCOND-COND_UNIT = GS_MEINS. * POCOND-COND_UNIT = <ITAB>-BPRME. POCONDX-COND_UNIT = 'X'. POCOND-COND_P_UNT = 1. POCONDX-COND_P_UNT = 'X'. POCOND-NUMCONVERT = 1."<ITAB>-NUMCONVERT. POCONDX-NUMCONVERT = 'X'. POCOND-DENOMINATO = 1."<ITAB>-DENOMINATO. POCONDX-DENOMINATO = 'X'. POCOND-CHANGE_ID = 'U'. POCONDX-CHANGE_ID = 'X'. APPEND POCOND. APPEND POCONDX.CLEAR: POCOND,POCONDX,ITEM,ITEMX,POACCOUNT,POACCOUNTX,POSERVICES. SORT POCOND BY ITM_NUMBER. SORT POCONDX BY ITM_NUMBER.CALL FUNCTION 'BAPI_PO_CREATE1'EXPORTINGPOHEADER = HEADPOHEADERX = HEADX * no_price_from_po = 'X'NO_MESSAGING = 'X'NO_MESSAGE_REQ = 'X'TESTRUN = ''IMPORTINGEXPPURCHASEORDER = DOCUMENTTABLESRETURN = RETURNPOITEM = ITEM[]POITEMX = ITEMX[]POACCOUNT = POACCOUNT[]POACCOUNTX = POACCOUNTX[]POSERVICES = POSERVICES[]POSRVACCESSVALUES = POSRVACCVS[]POCOND = POCONDPOCONDX = POCONDX * POPARTNER = LT_POPARTNERPOTEXTHEADER = LT_HEADER_TEXT. LOOP AT RETURN WHERE TYPE = 'E' OR TYPE = 'A'.EXIT. ENDLOOP. IF SY-SUBRC = 0.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.LOOP AT RETURN WHERE TYPE = 'E' OR TYPE = 'A'.IF RETURN-ID = 'BAPI' AND RETURN-NUMBER = '001'.ELSEIF RETURN-ID = 'MEPO' AND RETURN-NUMBER = '000'.ELSE.CONCATENATE E_MESSAGE RETURN-MESSAGEINTO E_MESSAGE.ENDIF.ENDLOOP.WRITE : / E_MESSAGE. ELSE.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGWAIT = 'X'.WRITE : / 'PO:' , DOCUMENT."更新消息輸出DATA : LW_NAST TYPE NAST.LW_NAST-KAPPL = 'EF'.LW_NAST-OBJKY = DOCUMENT.LW_NAST-KSCHL = 'NEU'.LW_NAST-SPRAS = SY-LANGU.LW_NAST-PARNR = I_HEAD-LIFNR.LW_NAST-PARVW = 'LF'.LW_NAST-ERDAT = SY-DATUM.LW_NAST-ERUHR = SY-UZEIT.LW_NAST-NACHA = '1'."打印輸出LW_NAST-VSZTP = '4'."立即發(fā)送LW_NAST-LDEST = 'LP01'."輸出設(shè)備LW_NAST-DIMME = 'X'."立即打印LW_NAST-DELET = 'X'."打印后刪除LW_NAST-OBJTYPE = 'BUS2012'."對象類型LW_NAST-DATVR = SY-DATUM.LW_NAST-UHRVR = SY-UZEIT.LW_NAST-USNAM = SY-UNAME.LW_NAST-VSTAT = '1'.IF LW_NAST IS NOT INITIAL. * insert nast FROM TABLE lt_nast ACCEPTING DUPLICATE KEYS.MODIFY NAST FROM LW_NAST.IF SY-SUBRC = 0 .WRITE : / 'Output Create OK'.ENDIF.ENDIF. ENDIF.CLEAR:L_EBELP,ITEM[],ITEM,ITEMX[],ITEMX,POCOND[],POCONDX,POACCOUNT,POACCOUNT[],POACCOUNTX[],POACCOUNTX,POSERVICES[],POSRVACCVS[],RETURN[],DOCUMENT,HEAD,HEADX.創(chuàng)建完成后可以滿足現(xiàn)有需求,但是方法比較蠢,希望有別的好方法的朋友可以告知一下,拜謝。
?
總結(jié)
以上是生活随笔為你收集整理的【采购订单】利用BAPI创建PO后丢失消息输出的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转】NAST表的使用
- 下一篇: BAPI创建预留