该问题通常是因为在调用BAPI_CONTRACT_CREATE函数时,没有正确指定物料号或账目分配类别导致的。以下是一个示例代码,可以解决这个问题:
DATA: ls_contract LIKE LINE OF lt_contract.
ls_contract-doc_type = 'MK'. ls_contract-contract_type = 'MK'. ls_contract-vendor = '10000001'. ls_contract-contr_descr = 'Test Contract'. ls_contract-material = 'MATERIAL1'. "指定物料号 ls_contract-po_item = '00010'. ls_contract-po_unit = 'EA'. ls_contract-target_qty = '1.000'. ls_contract-acctasscat = 'K'. "指定账目分配类别
APPEND ls_contract TO lt_contract.
CALL FUNCTION 'BAPI_CONTRACT_CREATE' EXPORTING contracthdr = ls_contract_header TABLES contractitems = lt_contract EXCEPTIONS OTHERS = 1.
IF sy-subrc = 0. COMMIT WORK. MESSAGE 'Contract created successfully' TYPE 'S'. ELSE. ROLLBACK WORK. MESSAGE 'Error creating contract' TYPE 'E'. ENDIF.
在上面的代码中,我们指定了物料号和账目分配类别,这样就可以避免这个错误了。