ABAPMFBF过账到质量检验库存类型Demo
Posted SAP剑客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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录频处理的方式就显示苍白了。
一旦有问题,就会自动弹出“提取错误”的屏幕。
所以,最后...
以上是关于ABAPMFBF过账到质量检验库存类型Demo的主要内容,如果未能解决你的问题,请参考以下文章