C223生产版本 BAPI

作者:斌将军 约 4 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, PP, 开发, 生产
C223生产版本 BAPI - 封面图
C223生产版本 BAPI - 封面图

1、事务代码: C223

###

C223生产版本 BAPI - 封面图
C223生产版本 BAPI - 封面图
C223生产版本 BAPI - 封面图
C223生产版本 BAPI - 封面图

## 2、调用函数CM_FV_PROD_VERS_DB_UPDATE

"-----------------------------@斌将军-----------------------------DATA:lt_mkal_i TYPE TABLE OF mkal, lt_mkal_u TYPE TABLE OF mkal, lt_mkal_d TYPE TABLE OF mkal, ls_mkal TYPE mkal, lt_mkal_aend TYPE TABLE OF mkal_aend, ls_mkal_aend TYPE mkal_aend.

SELECT matnr, werks, veridFROM mkalINTO TABLE @DATA(lt_makl)FOR ALL ENTRIES IN @t_inputWHERE matnr = @t_input-matnr AND werks = @t_input-werks AND verid = @t_input-verid.

SORT lt_makl BY matnr werks verid.

SELECT *FROM mkal_aendINTO TABLE @DATA(lt_aend)FOR ALL ENTRIES IN @t_inputWHERE matnr = @t_input-matnr AND werks = @t_input-werks AND verid = @t_input-verid.

SORT lt_aend BY matnr werks verid zaehl DESCENDING.

CLEAR:ls_mkal.ls_mkal-matnr = '000000160000000019'."LV_MATNR."物料编号ls_mkal-werks = '1011'."IS_MKAL-WERKS."工厂ls_mkal-verid = 'JS20'."IS_MKAL-VERID."生产版本ls_mkal-text1 = '333333'."IS_MKAL-TEXT1."生产版本的短文本ls_mkal-bdatu = '99991231'."IS_MKAL-BDATU."生产版本的有效期截止日期ls_mkal-adatu = sy-datum."IS_MKAL-ADATU."生产版本的有效期起始日期ls_mkal-stlal = '01'."IS_MKAL-STLAL."可选的 BOMls_mkal-stlan = '1'."IS_MKAL-STLAN."BOM 用途ls_mkal-plnty = 'N'."IS_MKAL-PLNTY."任务清单类型ls_mkal-plnnr = '50000357'."IS_MKAL-PLNNR."任务清单组键值ls_mkal-alnal = '1'."IS_MKAL-ALNAL."组计数器* LS_MKAL-SERKZ = ''."IS_MKAL-SERKZ."版本允许的重复制造* LS_MKAL-MDV01 = ''."IS_MKAL-MDV01."用于重复制造的生产线* LS_MKAL-ELPRO = ''."IS_MKAL-ELPRO."对组件提出发货仓储地点* LS_MKAL-ALORT = ''."IS_MKAL-ALORT."重复生产的收货库存地点ls_mkal-prfg_f = '1'."检查生产版本的状态ls_mkal-prfg_s = '1'."BOM - 检查生产版本的状态*ls_mkal-PRFG_R = '1'."重复生产的收货库存地点*ls_mkal-PRFG_G = '1'."重复生产的收货库存地点ls_mkal-prdat = sy-datum."出品版本的最后测试日期ls_mkal-bstma = 99999999."截至批量大小 READ TABLE lt_makl INTO DATA(ls_makl) WITH KEY matnr = '000000160000000019' werks = '1011' verid = 'JS20' BINARY SEARCH.IF sy-subrc EQ 0."存在就更新 APPEND ls_mkal TO lt_mkal_u. READ TABLE lt_aend INTO DATA(ls_aend) WITH KEY matnr = '000000160000000019' werks = '1011' verid = 'JS20' BINARY SEARCH. IF sy-subrc EQ 0. CLEAR:ls_mkal_aend. ls_mkal_aend-matnr = ls_aend-matnr."物料编号 ls_mkal_aend-werks = ls_aend-werks."工厂 ls_mkal_aend-verid = ls_aend-verid."生产版本 ls_mkal_aend-zaehl = ls_aend-zaehl + 1."计数参数 ls_mkal_aend-datuv = ls_mkal-adatu."有效起始日期 ls_mkal_aend-datub = ls_mkal-bdatu."有效截止日期 ls_mkal_aend-andat = ls_aend-andat."日期记录创建于 ls_mkal_aend-annam = ls_aend-annam."创建记录的用户 ls_mkal_aend-aedat = sy-datum."上次更改日期 ls_mkal_aend-aenam = sy-uname."更改对象的人员姓名 ls_mkal_aend-vbkz = 'U'." ENDIF. APPEND ls_mkal_aend TO lt_mkal_aend.

ELSE."不存在就创建 APPEND ls_mkal TO lt_mkal_i.

CLEAR:ls_mkal_aend. ls_mkal_aend-matnr = '000000160000000019'."物料编号 ls_mkal_aend-werks = '1011'."工厂 ls_mkal_aend-verid = 'JS20'."生产版本 ls_mkal_aend-zaehl = 1."计数参数 ls_mkal_aend-datuv = ls_mkal-adatu."有效起始日期 ls_mkal_aend-datub = ls_mkal-bdatu."有效截止日期 ls_mkal_aend-andat = sy-datum."日期记录创建于 ls_mkal_aend-annam = sy-uname."创建记录的用户 ls_mkal_aend-vbkz = 'I'." APPEND ls_mkal_aend TO lt_mkal_aend. ENDIF. CALL FUNCTION 'CM_FV_PROD_VERS_DB_UPDATE' TABLES it_mkal_i = lt_mkal_i "创建 it_mkal_u = lt_mkal_u "修改 it_mkal_d = lt_mkal_d "删除 it_mkal_aend = lt_mkal_aend.

*DATA(gv_info) = TEXT-002.IF sy-subrc EQ 0. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'.* ES_RETURN-RETYP = 'S'.* ES_RETURN-REMSG = '生产版本修改成功'. WRITE:'success'.ELSE. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.* ES_RETURN-RETYP = 'E'.* ES_RETURN-REMSG = GV_INFO.* WRITE:gv_info.ENDIF.

"-----------------------------@斌将军-----------------------------

斌将军

关于作者:斌将军

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

来源说明:本文内容由「C223生产版本BAPI.md」整理生成,仅用于内部技术分享与学习交流。