参考https://blog.csdn.net/weixin_45607495/article/details/128411215
FUNCTION ZIF_PP_REPMANCONFI_C_MTS.
*"----------------------------------------------------------------------
*"*"局部接口:
*" IMPORTING
*" VALUE(BCKFLTYPE) TYPE BCKFLTYPE OPTIONAL
*" VALUE(LV_MATNR) TYPE MATNR OPTIONAL
*" VALUE(LV_WERKS) TYPE WERKS_D OPTIONAL
*" VALUE(LV_VERID) TYPE VERID OPTIONAL
*" VALUE(LV_PSDAT) TYPE DATUM DEFAULT SY-DATUM
*" VALUE(LV_DOCDT) TYPE DATUM DEFAULT SY-DATUM
*" VALUE(LV_LGORT) TYPE LGORT_D OPTIONAL
*" VALUE(LV_MENGE) TYPE SA_ERFMG OPTIONAL
*" VALUE(LV_GM_CODE) TYPE GM_CODE DEFAULT 02
*" VALUE(LV_HEADTXT) TYPE BKTXT OPTIONAL
*" EXPORTING
*" VALUE(LV_MBLNR) TYPE MBLNR
*" VALUE(LV_ERRFLAG) TYPE BAPI_CORU_RETURN-TYPE
*" VALUE(LV_MESSAGE) TYPE BAPI_MSG
*"----------------------------------------------------------------------
DATA: LS_BFLUSHFLAGS TYPE BAPI_RM_FLG,
LS_BFLUSHDATAGEN TYPE BAPI_RM_DATGEN,
LT_GOODSMOVEMENTS TYPE TABLE OF BAPI2017_GM_ITEM_CREATE,
LS_GOODSMOVEMENTS TYPE BAPI2017_GM_ITEM_CREATE,
LS_BFLUSHDATAMTS TYPE BAPI_RM_DATSTOCK,
LS_RETURN TYPE BAPIRET2,
LV_CONFIRMATION TYPE BAPI_RM_DATKEY-CONFIRMATION,
ls_matnr TYPE mara-matnr.
*BOM EXPLORE
DATA : BEGIN OF T_STB OCCURS 0.
INCLUDE STRUCTURE STPOX.
DATA END OF T_STB.
DATA : BEGIN OF T_TOPMAT OCCURS 0.
INCLUDE STRUCTURE CSTMAT.
DATA END OF T_TOPMAT.
DATA: lt_return TYPE TABLE OF bapiret2.
"$. Region 物料是否存在
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = LV_MATNR
IMPORTING
OUTPUT = LV_MATNR.
SELECT matnr INTO ls_matnr FROM MARA WHERE MATNR = LV_MATNR.
ENDSELECT.
IF sy-SUBRC <> 0.
LV_ERRFLAG = 'E'.
LV_MESSAGE = '物料' && LV_MATNR && '找不到,请确认物料是否准确'.
return .
ENDIF.
"$. Endregion 物料是否存在
"$. Region 物料档案是否存在
CALL FUNCTION 'BAPI_MAT_BOM_EXISTENCE_CHECK'
EXPORTING
material = lv_matnr
plant = LV_WERKS
bomusage = '1'
* valid_from_date = valid_from_date
* valid_to_date = valid_to_date
TABLES
RETURN = lt_return.
IF lt_return IS INITIAL.
LV_ERRFLAG = 'S'.
ELSE.
LV_ERRFLAG = 'E'.
LV_MESSAGE = '物料' && LV_MATNR && '有效BOM不存在'.
return .
ENDIF.
"$. Endregion 物料档案是否存在
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
AUFSW = 'X'
CAPID = 'PP01'
DATUV = SY-DATUM
MEHRS = SPACE "'1' "P_MEHRS'
MDMPS = SPACE
EMENG = 1
POSTP = 'L'
* STLAL =
* STLAN = '1'
MTNRV = LV_MATNR
werks = LV_WERKS
IMPORTING
TOPMAT = T_TOPMAT
* DSTST = IDSTST
TABLES
STB = T_STB
* MATCAT = T_MATCAT
EXCEPTIONS
ALT_NOT_FOUND = 1
CALL_INVALID = 2
MATERIAL_NOT_FOUND = 3
MISSING_AUTHORIZATION = 4
NO_BOM_FOUND = 5
NO_PLANT_DATA = 6
NO_SUITABLE_BOM_FOUND = 7
CONVERSION_ERROR = 8
OTHERS = 9.
"$. Region 产线获取
data:lMDV01 TYPE mkal-MDV01.
select mdv01 into lMDV01 from mkal
where matnr = LV_MATNR and WERKS = LV_WERKS and verid = LV_VERID.
ENDSELECT.
"$. Endregion 产线获取
DATA:lmeinh TYPE marm-MEINH.
select SINGLE MEINH into lmeinh from marm where matnr = lv_matnr.
*抬头的赋值:
LS_BFLUSHFLAGS-BCKFLTYPE = BCKFLTYPE. "11:个别组件消耗反冲 01:最后反冲 02:报告点反冲 10:个别作业反冲
LS_BFLUSHDATAGEN-MATERIALNR = LV_MATNR. "物料
LS_BFLUSHDATAGEN-PRODPLANT = LV_WERKS. "工厂
LS_BFLUSHDATAGEN-PLANPLANT = LV_WERKS. "工厂
LS_BFLUSHDATAGEN-STORAGELOC = LV_LGORT. "库存地点
LS_BFLUSHDATAGEN-PRODVERSION = LV_VERID. "生产版本
LS_BFLUSHDATAGEN-PRODLINE = lMDV01."产线
LS_BFLUSHDATAGEN-POSTDATE = LV_PSDAT. "过账日期
LS_BFLUSHDATAGEN-DOCDATE = LV_DOCDT. "凭证日期
LS_BFLUSHDATAGEN-BACKFLQUANT = LV_MENGE.
LS_BFLUSHDATAGEN-DOCHEADERTXT = LV_HEADTXT.
LS_BFLUSHDATAGEN-UNITOFMEASURE = lmeinh. "单位
LS_BFLUSHDATAGEN-ORDERCOSTS = 'X'. "标识: 订单成本的过帐
* LS_BFLUSHDATAMTS-REPPOINT = lv_REPPOINT.
* ls_bflushflags-components_type = COMPONENTS_TYPE. 不需要报告点反冲
*https://blog.csdn.net/weixin_45607495/article/details/128411215*
DATA:l_LGORT LIKE MARD-LGORT.
SELECT ELPRO into l_LGORT
FROM mkal where matnr = lv_matnr and werks = lv_werks and verid = lv_verid.
ENDSELECT.
* 行项目赋值:
LOOP AT t_stb.
LS_GOODSMOVEMENTS-STGE_LOC = L_LGORT. "库存地点来源前台
LS_GOODSMOVEMENTS-MATERIAL = T_STB-IDNRK. "组件物料编码
LS_GOODSMOVEMENTS-ENTRY_UOM = T_STB-MEINS. "单位
LS_GOODSMOVEMENTS-PLANT = T_STB-WERKS. "工厂
LS_GOODSMOVEMENTS-ENTRY_QNT = T_STB-MNGLG * LV_MENGE. "实际过账数量
LS_GOODSMOVEMENTS-PROD_DATE = SY-DATUM. "生产日期
LS_GOODSMOVEMENTS-MOVE_TYPE = '261'."IT_SMVT-MOVE_TYPE'. "移动类型
APPEND LS_GOODSMOVEMENTS TO LT_GOODSMOVEMENTS.
ENDLOOP.
LS_GOODSMOVEMENTS-STGE_LOC = L_LGORT. "库存地点来源前台
LS_GOODSMOVEMENTS-MATERIAL = LV_MATNR. "物料编码
LS_GOODSMOVEMENTS-ENTRY_UOM = LMEINH. "单位
LS_GOODSMOVEMENTS-PLANT = LV_WERKS. "工厂
LS_GOODSMOVEMENTS-ENTRY_QNT = LV_MENGE. "实际过账数量
LS_GOODSMOVEMENTS-PROD_DATE = SY-DATUM. "生产日期
LS_GOODSMOVEMENTS-MOVE_TYPE = '131'."IT_SMVT-MOVE_TYPE'. "移动类型
APPEND LS_GOODSMOVEMENTS TO LT_GOODSMOVEMENTS.
* “调用BAPI进行过账
CLEAR:LS_RETURN,
LV_CONFIRMATION.
CALL FUNCTION 'BAPI_REPMANCONF1_CREATE_MTS'
EXPORTING
BFLUSHFLAGS = LS_BFLUSHFLAGS
BFLUSHDATAGEN = LS_BFLUSHDATAGEN
* BFLUSHDATAMTS = LS_BFLUSHDATAMTS
IMPORTING
CONFIRMATION = LV_CONFIRMATION
RETURN = LS_RETURN
TABLES
GOODSMOVEMENTS = LT_GOODSMOVEMENTS.
IF LV_CONFIRMATION IS NOT INITIAL. "冲销成功
LV_ERRFLAG = 'S'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
CLEAR: LV_MBLNR.
* “取物料凭证号
DO 5 TIMES.
SELECT SINGLE BELNR INTO LV_MBLNR FROM BLPP WHERE PRTNR = LV_CONFIRMATION .
IF SY-SUBRC EQ 0 AND LV_MBLNR IS NOT INITIAL.
LV_ERRFLAG = 'S'.
LV_MESSAGE = LS_RETURN-MESSAGE.
EXIT.
ELSE.
WAIT UP TO 1 SECONDS.
ENDIF.
ENDDO.
IF LV_MBLNR IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
LV_ERRFLAG = 'E'.
LV_MESSAGE = LS_RETURN-MESSAGE.
ENDIF.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
LV_ERRFLAG = 'E'.
LV_MESSAGE = LS_RETURN-MESSAGE.
ENDIF.
* "$. Region 报工后收货
* data:GMHEAD LIKE BAPI2017_GM_HEAD_01,"头结构
* GMCODE LIKE BAPI2017_GM_CODE,"头结构
* MTHEAD LIKE BAPI2017_GM_HEAD_RET,"输出结构
* MAT_DOC LIKE BAPI2017_GM_HEAD_RET-MAT_DOC,"物料凭证号
* ITPT LIKE TABLE OF BAPI2017_GM_ITEM_CREATE WITH HEADER LINE,"明细表
* BERRMSG LIKE TABLE OF BAPIRET2 WITH HEADER LINE."输出信息
*
* IF LV_ERRFLAG = 'S'.
* GMHEAD-HEADER_TXT = lv_headtxt."抬头文本
* GMHEAD-PSTNG_DATE = SY-DATUM.."凭证中的过帐日期
* GMHEAD-DOC_DATE = SY-DATUM.."凭证中的凭证日期
* GMCODE-GM_CODE = LV_GM_CODE."代码
*
* ITPT-STGE_LOC = LV_LGORT.
* ITPT-PLANT = lv_werks.
* ITPT-MATERIAL = LV_MATNR."物料号
* ITPT-ENTRY_QNT = LV_MENGE."数量(根据自己所需要数量进行调整)
** ITPT-ORDERID = PPORDERBG-ORDERNUMBER."重复制造无 生产订单
** ITPT-SERIALNO_AUTO_NUMBERASSIGNMENT = 'X'."序列号自动输入
* ITPT-ITEM_TEXT = LV_HEADTXT."'项目文本'."项目文本
* ITPT-MOVE_TYPE = '131'. "MOVE_TYPE ."'101'."移动类型
* ITPT-MVT_IND = 'F'. "移动标识
* ITPT-STCK_TYPE = ''."库存类型(根据自己所需要库存类型进行调整)
* ITPT-ORDER_ITNO = '1'. "行项目1,2,3
* ITPT-LINE_ID = '1'. "凭证行的唯一标识 1,2,3
* APPEND ITPT.
*
** CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
** EXPORTING
** goodsmvt_header = gmhead
** goodsmvt_code = gmcode
** IMPORTING
** goodsmvt_headret = mthead
** materialdocument = mat_doc
** TABLES
** goodsmvt_item = itpt
** RETURN = berrmsg.
* ENDIF.
* "$. Endregion 报工后收货
* IF MAT_DOC IS NOT INITIAL.
* LV_ERRFLAG = 'S'.
* LV_MBLNR = MAT_DOC.
* ELSE.
* LV_ERRFLAG = 'E'.
* LOOP AT BERRMSG WHERE TYPE = 'E'.
* LV_MESSAGE = BERRMSG-MESSAGE.
* ENDLOOP.
* ENDIF.
ENDFUNCTION.

442

被折叠的 条评论
为什么被折叠?



