ME31K 创建框架协议

作者:斌将军 约 6 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, MM, WM, 仓库管理, 开发, 数据工程, 物料管理
ME31K 创建框架协议 - 封面图
ME31K 创建框架协议 - 封面图

在实际业务需求中,需要和供应商签订协议。

此文档使用BAPI:BAPI_CONTRACT_CREATE创建协议

事务代码:ME31K

ME31K 创建框架协议 - 封面图
ME31K 创建框架协议 - 封面图

输入抬头信息

ME31K 创建框架协议 - 封面图
ME31K 创建框架协议 - 封面图

行项目

ME31K 创建框架协议 - 封面图
ME31K 创建框架协议 - 封面图

行项目详细内容

ME31K 创建框架协议 - 封面图
ME31K 创建框架协议 - 封面图

保存即可

## 3.1调用BAPI

ME31K 创建框架协议 - 封面图
ME31K 创建框架协议 - 封面图

抬头

ME31K 创建框架协议 - 封面图
ME31K 创建框架协议 - 封面图

行项目

ME31K 创建框架协议 - 封面图
ME31K 创建框架协议 - 封面图

导入BAPI

ME31K 创建框架协议 - 封面图
ME31K 创建框架协议 - 封面图

## 3.2问题解决

### **3.2.1 SUBOBJECT_NOT_FOUND**

在创建时报错,

ME31K 创建框架协议 - 封面图
ME31K 创建框架协议 - 封面图

错误位置在此处,子对象没找到

ME31K 创建框架协议 - 封面图
ME31K 创建框架协议 - 封面图

GOOGLE到相关解决方案

ME31K 创建框架协议 - 封面图
ME31K 创建框架协议 - 封面图

事务代码:SLG0

新增对象COND,对象文本Condition technique (ERP)

ME31K 创建框架协议 - 封面图
ME31K 创建框架协议 - 封面图

选中对象,双击子对象

子对象名称MAINTENANCE,文本Maintenance of Condition records

ME31K 创建框架协议 - 封面图
ME31K 创建框架协议 - 封面图

再次运行,发现已经不报错了,问题解决

### **3.2.2 保存增强点BADI_IM_PRF_SAVE_OA**

ME31K 创建框架协议 - 封面图
ME31K 创建框架协议 - 封面图

### **3.2.3 长文本增强**

ME31K 创建框架协议 - 封面图
ME31K 创建框架协议 - 封面图

当长文本做修改后,需要传给另外一个程序中使用,找了四代增强点,传输长文本。

ME31K 创建框架协议 - 封面图
ME31K 创建框架协议 - 封面图

## 3.3源代码

"-----------------------------@斌将军-----------------------------DATA:GS_HEADER TYPE BAPIMEOUTHEADER, GS_HEADERX TYPE BAPIMEOUTHEADERX, GV_NUMBER TYPE BAPIMEOUTHEADER-NUMBER, GS_EXP_HEADER TYPE BAPIMEOUTHEADER, GT_ITEM TYPE TABLE OF BAPIMEOUTITEM, GS_ITEM TYPE BAPIMEOUTITEM, GT_ITEMX TYPE TABLE OF BAPIMEOUTITEMX, GS_ITEMX TYPE BAPIMEOUTITEMX, GT_RETURN TYPE TABLE OF BAPIRET2, GS_RETURN TYPE BAPIRET2.

DATA:LV_MESSAGE TYPE CHAR200, LV_CHECK TYPE CHAR1.

"抬头CLEAR:GS_HEADER.*GS_HEADER-NUMBER = GWA_OUT-EBELN. "合同号GS_HEADER-VENDOR = '0070002292'."供应商GS_HEADER-DOC_TYPE = 'YZXY'. "协议类型GS_HEADER-COMP_CODE = '2000'. "公司代码GS_HEADER-DOC_DATE = '20191129'. "协议日期GS_HEADER-VPER_START = '20191129'. "协议起始日期GS_HEADER-VPER_END = '20191229'. "协议截至日期GS_HEADER-PURCH_ORG = '2000'. "采购组织GS_HEADER-PUR_GROUP = 'CG9'. "采购组GS_HEADER-ACUM_VALUE = '1'. "目标值GS_HEADER-CURRENCY = 'CNY'. "货币GS_HEADER-COLLECT_NO = 'CT'. "汇总号GS_HEADER-LANGU = SY-LANGU.

CLEAR:GS_HEADERX.*GS_HEADERX-NUMBER = ABAP_TRUE. "合同号GS_HEADERX-VENDOR = ABAP_TRUE. "供应商GS_HEADERX-DOC_TYPE = ABAP_TRUE. "协议类型GS_HEADERX-COMP_CODE = ABAP_TRUE. "公司代码GS_HEADERX-DOC_DATE = ABAP_TRUE. "协议日期GS_HEADERX-VPER_START = ABAP_TRUE. "协议起始日期GS_HEADERX-VPER_END = ABAP_TRUE. "协议截至日期GS_HEADERX-PURCH_ORG = ABAP_TRUE. "采购组织GS_HEADERX-PUR_GROUP = ABAP_TRUE. "采购组GS_HEADERX-ACUM_VALUE = ABAP_TRUE. "目标值GS_HEADERX-CURRENCY = ABAP_TRUE. "货币GS_HEADERX-COLLECT_NO = ABAP_TRUE. "汇总号GS_HEADERX-LANGU = ABAP_TRUE.

"行项目CLEAR:GS_ITEM.GS_ITEM-ITEM_NO = '10'. "行号GS_ITEM-EMATERIAL = '000000000000231829'."物料号GS_ITEM-SHORT_TEXT = '铝板'. "短文本GS_ITEM-MATL_GROUP = 'CRC09'. "物料组GS_ITEM-PLANT = '2000'. "工厂GS_ITEM-STGE_LOC = '1006'. "库存地点GS_ITEM-TARGET_QTY = '1'. "目标数量GS_ITEM-PO_UNIT = 'KG'."订单单位GS_ITEM-PO_UNIT_ISO = 'KG'."ISO代码中的定单单位GS_ITEM-NET_PRICE = '1'. "净价GS_ITEM-PRICE_UNIT = '1'. "价格单位 每GS_ITEM-ORDERPR_UN = 'KG'. "订单价格单位(采购)GS_ITEM-ORDERPR_UN_ISO = 'KG'. "订单价格单位(采购)GS_ITEM-TAX_CODE = 'JF'. "销售/购买税代码GS_ITEM-VAL_TYPE = 'CR'. "评估类型*GS_ITEM-ACCTASSCAT = 'U'."科目分配类别*GS_ITEM-ITEM_CAT = 0."项目类别APPEND GS_ITEM TO GT_ITEM.

CLEAR:GS_ITEMX.GS_ITEMX-ITEM_NO = '10'. "行号GS_ITEMX-ITEM_NOX = ABAP_TRUE. "行号GS_ITEMX-EMATERIAL = ABAP_TRUE. "物料号*GS_ITEMX-MATERIAL = ABAP_TRUE. "物料号GS_ITEMX-SHORT_TEXT = ABAP_TRUE. "短文本GS_ITEMX-MATL_GROUP = ABAP_TRUE. "物料组GS_ITEMX-PLANT = ABAP_TRUE. "工厂GS_ITEMX-STGE_LOC = ABAP_TRUE. "库存地点GS_ITEMX-TARGET_QTY = ABAP_TRUE. "目标数量GS_ITEMX-PO_UNIT = ABAP_TRUE.GS_ITEMX-PO_UNIT_ISO = ABAP_TRUE.GS_ITEMX-NET_PRICE = ABAP_TRUE. "净价GS_ITEMX-PRICE_UNIT = ABAP_TRUE. "价格单位GS_ITEMX-ORDERPR_UN = ABAP_TRUE.GS_ITEMX-ORDERPR_UN_ISO = ABAP_TRUE.GS_ITEMX-TAX_CODE = ABAP_TRUE.GS_ITEMX-VAL_TYPE = ABAP_TRUE. "评估类型*GS_ITEMX-ACCTASSCAT = ABAP_TRUE. "科目分配类别*GS_ITEMX-ITEM_CAT = ABAP_TRUE. "项目类别APPEND GS_ITEMX TO GT_ITEMX.

CALL FUNCTION 'BAPI_CONTRACT_CREATE' EXPORTING HEADER = GS_HEADER HEADERX = GS_HEADERX* VENDOR_ADDRESS =* TESTRUN =* TECHNICAL_DATA = IMPORTING PURCHASINGDOCUMENT = GV_NUMBER EXP_HEADER = GS_EXP_HEADER TABLES RETURN = GT_RETURN ITEM = GT_ITEM ITEMX = GT_ITEMX* ACCOUNT =* ACCOUNTPROFITSEGMENT =* ACCOUNTX =* DELIVERY_ADDRESS =* ITEM_COND_VALIDITY =* ITEM_COND_VALIDITYX =* ITEM_CONDITION =* ITEM_CONDITIONX =* ITEM_COND_SCALE_VALUE =* ITEM_COND_SCALE_QUAN =* ITEM_TEXT =* HEADER_TEXT =* HEAD_COND_VALIDITY =* HEAD_COND_VALIDITYX =* HEAD_CONDITION =* HEAD_CONDITIONX =* HEAD_COND_SCALE_VAL =* HEAD_COND_SCALE_QUAN =* PARTNER =* PARTNERX =* EXTENSIONIN =* EXTENSIONOUT = .

LV_CHECK = 'S'.LOOP AT GT_RETURN INTO GS_RETURN WHERE TYPE = 'A' OR TYPE = 'E'. LV_MESSAGE = LV_MESSAGE && GS_RETURN-MESSAGE. LV_CHECK = 'E'.ENDLOOP.

IF LV_CHECK = 'S'. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'X'. WRITE:GV_NUMBER.ELSE. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.ENDIF."-----------------------------@斌将军-----------------------------
斌将军

关于作者:斌将军

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「ME31K创建框架协议.md」整理生成,仅用于内部技术分享与学习交流。