Skip to Content
0
Former Member
Jun 01, 2016 at 03:06 AM

bapi create po system give message no. bm035

576 Views

Deal all,

when i use bapi 'BAPI_PO_CREATE1' create po, system give me a error message no. bm035(Measurement unit & has no ISO code). I don't konw how to sorve it. But when i use T-code ME21N to create po, it create suceeed. Is my code wrong? This is my code, please anybody give me some advice, Thanks.

FORM generate_free_po .

DATA: lv_ebeln LIKE ekko-ebeln , lv_adrnr LIKE t001w-adrnr. .

CLEAR:poheader,poheaderx. .

REFRESH:poitem,poitemx,pocondheader,pocondheaderx, .

poschedule,poschedulex,poaddrdelivery,poreturn,pocomponents,pocomponentsx. .

LOOP AT gt_freepo INTO gs_freepo. .

ON CHANGE OF gs_freepo-ebeln. .

IF poheader IS NOT INITIAL. .

PERFORM exec_bapi_po USING lv_ebeln ''. .

ENDIF. .

CLEAR:poheader,poheaderx,lv_ebeln. .

REFRESH:poreturn,poitem,poitemx,pocondheader,pocondheaderx,poschedule,poschedulex. .

lv_ebeln = gs_freepo-ebeln. ""po header .

poheader-po_number = gs_freepo-ebeln . "po number .

poheader-comp_code = gs_freepo-bukrs. "company code .

poheader-doc_type = gs_freepo-bsart. ""document type .

poheader-vendor = gs_freepo-lifnr. ""vendor * .

poheader-currency = gs_freepo-waers. "waers .

poheader-purch_org = gs_freepo-ekorg. ""pur_org .

poheader-pur_group = gs_freepo-ekgrp. ""pur_group .

poheader-creat_date = sy-datum. .

poheader-created_by = sy-uname . .

poheader-langu = sy-langu. .

poheader-doc_date = sy-datum. .

poheader-item_intvl = '00010' . .

poheader-status = 'I' . "PO FROM BAPI .

"" po header flag .

poheaderx-po_number = 'X' . .

poheaderx-comp_code = 'X' . .

poheaderx-doc_type = 'X' . .

poheaderx-vendor = 'X'. .

poheaderx-purch_org = 'X' . .

poheaderx-pur_group = 'X' . .

poheaderx-creat_date = 'X'. .

poheaderx-created_by = 'X'. .

poheaderx-langu = 'X' . .

poheaderx-doc_date = 'X'. .

poheaderx-item_intvl = 'X'. .

poheaderx-status = 'X' . .

poheaderx-vat_cntry = 'X' . .

ENDON. .

""po item .

CLEAR:poitem. .

poitem-po_item = gs_freepo-ebelp. "EKPO 采购凭证的项目编号 .

poitem-material = gs_freepo-matnr . " MATERIAL .

poitem-plant = gs_freepo-werks. "工厂 .

poitem-stge_loc = gs_freepo-lgort . "LOCATION .

poitem-quantity = gs_freepo-menge. "采购订单数量 .

SELECT SINGLE bstme INTO poitem-po_unit FROM mara WHERE matnr = gs_freepo-matnr..

* poitem-po_unit = gs_freepo-meins. "PO_UNIT .

poitem-short_text = gs_freepo-txz01. "短文本 .

poitem-item_cat = gs_freepo-pstyp. "Item Catagory .

poitem-free_item = 'X'. ""免费项目 .

""*--------------------------------------------------------------------- .

poitem-net_price = gs_freepo-kbetr. "单价 .

poitem-price_unit = gs_freepo-kpein. "单价单位 .

poitem-plan_del = 0 . .

poitem-preq_name = sy-uname. .

poitem-period_ind_expiration_date = sy-datum . .

* poitem-po_price = '2'. .

APPEND poitem. .

""po item flag .

CLEAR:poitemx. .

poitemx-po_item = gs_freepo-ebelp. .

poitemx-po_itemx = 'X'. .

poitemx-material = 'X'. .

poitemx-plant = 'X'. .

poitemx-stge_loc = 'X'. .

poitemx-quantity = 'X'. .

poitemx-po_unit = 'X'. .

poitemx-net_price = 'X'. .

poitemx-price_unit = 'X'. .

poitemx-preq_name = 'X'. .

poitemx-period_ind_expiration_date = 'X'. .

poitemx-item_cat = 'X'. .

poitemx-free_item = 'X'. .

* poitemx-po_price = 'X'. .

APPEND poitemx. .

""schedule .

CLEAR:poschedule. .

poschedule-po_item = gs_freepo-ebelp. .

poschedule-sched_line = gs_freepo-ebelp. .

poschedule-del_datcat_ext = 'D'. "交货日期的类别 .

poschedule-delivery_date = gs_freepo-eeind. "EKPO 交货日期 .

poschedule-quantity = gs_freepo-menge. "采购订单数量 .

APPEND poschedule. .

"""schedule flag .

CLEAR:poschedulex. .

poschedulex-po_item = gs_freepo-ebelp. .

poschedulex-sched_line = gs_freepo-ebelp. .

poschedulex-del_datcat_ext = 'X'. .

poschedulex-delivery_date = 'X'. .

poschedulex-quantity = 'X'. .

APPEND poschedulex. .

""pocondheader .

CLEAR:pocondheader. .

pocondheader-cond_type = 'PBXX' . .

pocondheader-condition_no = gs_freepo-ebeln. .

pocondheader-itm_number = gs_freepo-ebelp. .

pocondheader-cond_value = gs_freepo-kbetr. .

pocondheader-currency = gs_freepo-koein. .

pocondheader-cond_p_unt = gs_freepo-kpein. .

pocondheader-cond_unit = gs_freepo-kmein. .

pocondheader-change_id = 'U'. .

pocondheader-cond_st_no = 1 . .

SELECT SINGLE umrez umren INTO (pocondheader-numconvert,pocondheader-denominato) FROM marm WHERE matnr = gs_freepo-matnr AND meinh = gs_freepo-meins. .

APPEND pocondheader . .

""pocondheader flag .

CLEAR:pocondheaderx. .

pocondheaderx-cond_type = 'X' . .

pocondheaderx-condition_no = gs_freepo-ebeln. .

pocondheaderx-itm_number = gs_freepo-ebelp. .

pocondheaderx-cond_st_no = 1 . .

pocondheaderx-cond_value = 'X'. .

pocondheaderx-currency = 'X'. .

pocondheaderx-cond_p_unt = 'X'. .

pocondheaderx-cond_unit = 'X'. .

pocondheaderx-change_id = 'X'. .

pocondheaderx-numconvert = 'X'. .

pocondheaderx-denominato = 'X'. .

APPEND pocondheaderx . .

"""address .

CLEAR: poaddrdelivery,lv_adrnr . .

poaddrdelivery-po_item = gs_freepo-ebelp. .

SELECT SINGLE adrnr INTO lv_adrnr FROM t001w WHERE werks = gs_freepo-werks. .

poaddrdelivery-addr_no = lv_adrnr . .

APPEND poaddrdelivery. .

ENDLOOP. .

IF poheader IS NOT INITIAL. .

PERFORM exec_bapi_po USING lv_ebeln ''. .

ENDIF. ENDFORM. .

FORM exec_bapi_po USING l_ebeln LIKE ekko-ebeln l_flag TYPE c. .

DATA: no_price_from_po LIKE bapiflag-bapiflag. .

CALL FUNCTION 'BAPI_PO_CREATE1' .

EXPORTING poheader = poheader .

poheaderx = poheaderx .

* no_price_from_po = no_price_from_po .

TABLES return = poreturn .

poitem = poitem .

poitemx = poitemx .

pocondheader = pocondheader .

pocondheaderx = pocondheaderx .

poschedulex = poschedulex .

poschedule = poschedule .

pocomponents = pocomponents .

pocomponentsx = pocomponentsx .

poaddrdelivery = poaddrdelivery. .

READ TABLE poreturn WITH KEY type = 'E'. .

IF sy-subrc EQ 0. .

CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. .

ELSE. .

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. .

ENDIF. .

ENDFORM. " EXEC_BAPI_PO