ABAP QM 生产完工入库的质量检验 的增强怎么做求参考案例
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ABAP QM 生产完工入库的质量检验 的增强怎么做求参考案例相关的知识,希望对你有一定的参考价值。
1,生产完工入库的质量检验
需求:某项目客户要求,同一个成品物料号,正常生产批次完工入库后需要质检,而混批生产完工入库后不再需要质检,直接进入非限制使用库存。所谓的混批,是指将之前已经生产出来的该物料的多个批次库存,质检释放库存后,因业务需要再次投入生产线,混批生产出一个新的该物料批次(自己造自己)。
分析:很明显,同一个物料号只能启用一个04检验类型(或者复制04后创建的新的检验类型),并且一旦启用04检验类型,SAP系统不管你是正常批次生产还是混批生产,完工入库之后必有检验批产生,没办法做到正常批次入库进入质检库存,而混批生产完工入库后直接进入非限制使用库存。
正常批次生产和混批生产工单类型是不同的。
建议:1)启用04,工单完工入库之后全部进入质检库存产生检验批。但是业务上对于混批生产订单完工入库之后产生的检验不做检验,直接去SAP系统里做一笔QA11的事务,把质检库存释放出来。不过该建议业务部门还是不能接受,虽然QA11的操作比较简单,工作量不大,但是业务部门还是希望混批场景根本无检验批产生。
2)最后给出的建议是:为物料号启用04检验类型,但是在工单完工入库的标准程序里增加代码做增强,在触发04检验批之前先检查工单类型是不是混批生产的工单,如果是,就不触发04类型的检验批,库存直接进入非限制使用库存。SAP有标准功能可以根据不同的工单类型分配不同的检验类型,但是这个只对03(生产过程的检验)起作用,对于04检验类型是不起作用的。
02就是我的问题,求大牛给个参考案例!
ABAPMFBF过账到质量检验库存类型Demo
MFBF过账到质量检验库存类型
比如上图,现在要针对某个重复制造的品号生产入库时入到质量检验库存类型,通过现有BAPI“BAPI_REPMANCONF1_CREATE_MTS”貌似无法实现,为保险起见,这里我测试使用BDC的方式,若有BAPI能实现上述功能便再好不过了,希望做过的小伙伴留言告知一下。
1、生产实绩入库
[Code]
*&---------------------------------------------------------------------*
*& Report ZTEST_MFBF
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZTEST_MFBF.
* Batchinputdata of single transaction
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
* messages of call transaction
DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
DATA: T_RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.
DATA : LV_MBLNR TYPE SYMSGV,
L_ERFMG TYPE CHAR10,
LV_MSG TYPE BAPI_MSG.
START-OF-SELECTION.
CLEAR L_ERFMG.
L_ERFMG = 1."数量
CONDENSE L_ERFMG NO-GAPS.
PERFORM DYNPRO USING :
'X' 'SAPLBARM' '0800',
' ' 'BDC_OKCODE' '=PARA',
' ' 'RM61B-RB_BAUGR' 'X', "装配反冲
' ' 'RM61B-BUDAT' '20220501', "过账日期
' ' 'RM61B-BLDAT' '20220501', "凭证日期
' ' 'RM61B-MATNR' 'A-1X517-15000', "物料编号
' ' 'RM61B-WERKS' 'CN31', "工厂
' ' 'RM61B-VERID' '1000', "版本
' ' 'RM61B-ERFMG' L_ERFMG, "数量
'X' 'SAPLBARM' '0150',
' ' 'BDC_OKCODE' '=GOON',
' ' 'RM61B-RADIOQU' 'X', "质量检验
'X' 'SAPLBARM' '0800',
' ' 'BDC_OKCODE' '=ISTDA',
* ' ' 'RM61B-RB_BAUGR' 'X',
'X' 'SAPLCOWB' '0130',
' ' 'BDC_OKCODE' '=WEIT',
'X' 'SAPLBARM' '0800',
' ' 'BDC_OKCODE' '/EABRT'.
* 'X' 'SAPLBARM' '0171',
* ' ' 'BDC_OKCODE' '=GOON'.
CALL TRANSACTION 'MFBF' USING BDCDATA
* OPTIONS FROM CTU_PARAMS
MODE 'N'
UPDATE 'S'
MESSAGES INTO MESSTAB.
CALL FUNCTION 'CONVERT_BDCMSGCOLL_TO_BAPIRET2'
TABLES
IMT_BDCMSGCOLL = MESSTAB[]
EXT_RETURN = T_RETURN.
CLEAR LV_MSG.
*** 查找成功的物料凭证号
LOOP AT T_RETURN WHERE TYPE EQ 'S'
AND ID EQ 'RM'
AND NUMBER NE ' '
AND MESSAGE_V1 NE ''."如果这个字段有数值就是物料凭证
LV_MBLNR = T_RETURN-MESSAGE_V1.
LV_MSG = T_RETURN-MESSAGE.
ENDLOOP.
*** 没有凭证号就报错并且把所有信息读取
IF LV_MBLNR IS NOT INITIAL.
WRITE : LV_MBLNR,LV_MSG.
ELSE.
DATA : GT_BAPIRET TYPE STANDARD TABLE OF BAPIRET2,
GW_BAPIRET TYPE BAPIRET2.
GT_BAPIRET[] = T_RETURN[].
PERFORM DISPLAY_ERROR.
ENDIF.
*&---------------------------------------------------------------------*
*& Form DISPLAY_ERROR
*&---------------------------------------------------------------------*
* 显示错误
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_ERROR .
DATA: GR_TABLE TYPE REF TO CL_SALV_TABLE.
DATA: LR_COLUMNS TYPE REF TO CL_SALV_COLUMNS.
TRY.
CL_SALV_TABLE=>FACTORY(
IMPORTING
R_SALV_TABLE = GR_TABLE
CHANGING
T_TABLE = GT_BAPIRET ).
CATCH CX_SALV_MSG. "#EC NO_HANDLER
ENDTRY.
LR_COLUMNS = GR_TABLE->GET_COLUMNS( ).
LR_COLUMNS->SET_OPTIMIZE( 'X' ).
GR_TABLE->SET_SCREEN_POPUP(
START_COLUMN = 1
END_COLUMN = 100
START_LINE = 1
END_LINE = 20 ).
GR_TABLE->DISPLAY( ).
ENDFORM. "DISPLAY_ERROR
*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PROGRAM text
* -->DYNPRO text
*----------------------------------------------------------------------*
FORM DYNPRO USING DYNBEGIN FNAM FVAL.
CLEAR BDCDATA.
IF DYNBEGIN = 'X'.
BDCDATA-PROGRAM = FNAM.
BDCDATA-DYNPRO = FVAL.
BDCDATA-DYNBEGIN = 'X'.
ELSE.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
ENDIF.
APPEND BDCDATA.
ENDFORM. "BDC_DYNPRO
2、生产实绩取消
生产实绩取消只要多录频一个点击“中间凭证冲冲销”按钮的步骤即可。
3、注意点
要是后台IMG配置中对于REM参数文件的配置如下图所示(IMG→生产→重复制造→控制→定义重复制造参数文件),勾选了“反冲的错误修正”下面的“在对话模式中执行修正”复选框,那么一旦BOM组件缺料或者其他错误,BDC录频处理的方式就显示苍白了。
一旦有问题,就会自动弹出“提取错误”的屏幕。
所以,最后...
以上是关于ABAP QM 生产完工入库的质量检验 的增强怎么做求参考案例的主要内容,如果未能解决你的问题,请参考以下文章
abap 销售订单修改增强 LV69AFZZ 怎么进行修改 添加代码的呢?