*&---------------------------------------------------------------------*
*& Report ZMMR118
*&---------------------------------------------------------------------*
*& Author : NathanSun
*& Create Date : 2019-06-26
*& Program Type : Report
*& Description : 工单退料程序
*&---------------------------------------------------------------------*
REPORT ZMMR118.
*&---------------------------------------------------------------------*
*& 包含 YN_TEST02_TOP
*&---------------------------------------------------------------------*
TABLES:AUFK,MATDOC.
TYPE-POOLS:SLIS,T001W.
"定义ALV输出所需变量
DATA: S_LAYOUT TYPE SLIS_LAYOUT_ALV,
GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA GOODSMVT_HEADER LIKE BAPI2017_GM_HEAD_01 .
DATA GOODSMVT_CODE LIKE BAPI2017_GM_CODE .
DATA GOODSMVT_HEADRET LIKE BAPI2017_GM_HEAD_RET .
DATA MATERIALDOCUMENT LIKE BAPI2017_GM_HEAD_RET-MAT_DOC .
DATA MATDOCUMENTYEAR LIKE BAPI2017_GM_HEAD_RET-DOC_YEAR .
DATA GOODSMVT_ITEM LIKE BAPI2017_GM_ITEM_CREATE OCCURS 0 WITH HEADER LINE.
DATA RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.
DATA: GT_EXDATA TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.
DATA: IW_CELLCOLOR TYPE LVC_T_SCOL WITH HEADER LINE.
DATA L_FILENAME TYPE STRING .
DATA L_MUBAN TYPE STRING .
DATA GV_FULLPATH TYPE STRING .
DATA GV_PATH TYPE STRING .
DATA GV_NAME TYPE STRING .
DATA:FLAG TYPE C .
TYPES: BEGIN OF GTS_DATA,
CKBOX TYPE C, "选择列
AUFNR TYPE AFKO-AUFNR, "工单
RSNUM TYPE AUFM-RSNUM, "预留
RSPOS TYPE AUFM-RSPOS, "项目编号
MATNR_S TYPE AUFM-MATNR, "物料(工单组件)
WERKS TYPE AUFM-WERKS, "组件发料工厂
LGORT TYPE AUFM-LGORT, "发料库位
CHARG TYPE AUFM-CHARG, "发料批次
DWERK TYPE AFPO-DWERK, "生产工厂
MATNR TYPE AFPO-MATNR, "物料(工单产品)
BWART TYPE AUFM-BWART, "移动类型(库存管理)
MENGS TYPE AUFM-MENGE, "实际已发数量
MENGE TYPE AUFM-MENGE, "已发料数量
MENGE_T TYPE AUFM-MENGE, "本次退料数量
WERKS_T TYPE AUFM-WERKS, "退料工厂
LGORT_T TYPE AUFM-LGORT, "退料库位
CHARG_T TYPE AUFM-CHARG, "退料批次
BLDAT TYPE MATDOC-BLDAT, "凭证日期
BUDAT TYPE MATDOC-BUDAT, "过账日期
FLAG TYPE ZTGDTL-FLAG, "已过帐标识
MBLNR TYPE ZTGDTL-MBLNR, "凭证编号
MESSAGE TYPE BAPI_MSG, "报错信息
CELLCOLOR TYPE LVC_T_SCOL, "单元格颜色
END OF GTS_DATA.
DATA: GT_DATA TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATA: GT_DATA_A TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATA: GT_SAVE TYPE TABLE OF ZTGDTL WITH HEADER LINE.
DATA: MESSAGE TYPE BAPI_MSG. "报错信息.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
PARAMETERS P_RD1 RADIOBUTTON GROUP GP1 DEFAULT 'X' USER-COMMAND MXX."用来隐藏 p_AUFNR
PARAMETERS P_RD2 RADIOBUTTON GROUP GP1 ."用来显示 p_AUFNR
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME.
PARAMETERS P_AUFNR TYPE AUFK-AUFNR MODIF ID MXY .
PARAMETERS P_AUFN2 TYPE AUFK-AUFNR MODIF ID MXZ .
PARAMETERS P_BLDAT TYPE MATDOC-BLDAT MODIF ID MXZ . "凭证日期
PARAMETERS P_BUDAT TYPE MATDOC-BUDAT MODIF ID MXZ . "过账日期
PARAMETERS P_BOX TYPE C AS CHECKBOX MODIF ID MXZ.
SELECTION-SCREEN END OF BLOCK B2.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN .
"控制下拉列表(文本框也是一样)的必输性:外观上打钩,但不自动校验
IF P_RD1 = 'X' AND SCREEN-GROUP1 = 'MXY'.
"显示
SCREEN-ACTIVE = '1'.
SCREEN-REQUIRED = '2'."外观上打钩,但不自动校验
MODIFY SCREEN.
ELSEIF SCREEN-GROUP1 = 'MXY'. "
"隐藏
SCREEN-ACTIVE = '0'.
SCREEN-REQUIRED = '2'.
MODIFY SCREEN.
ENDIF.
IF P_RD2 = 'X' AND SCREEN-GROUP1 = 'MXZ'.
"显示
SCREEN-ACTIVE = '1'.
SCREEN-REQUIRED = '2'."外观上打钩,但不自动校验
MODIFY SCREEN.
ELSEIF SCREEN-GROUP1 = 'MXZ'. "
"隐藏
SCREEN-ACTIVE = '0'.
SCREEN-REQUIRED = '2'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
AT SELECTION-SCREEN ON P_AUFNR.
IF P_RD1 IS NOT INITIAL"手动检验:但当点击单选按钮与复选框 C2 时,不校验
AND SY-UCOMM <> 'MXX' AND SY-UCOMM <> 'DDD' AND P_AUFNR IS INITIAL.
MESSAGE E055(00).
ENDIF.
*
AT SELECTION-SCREEN ON P_AUFN2.
IF P_RD2 IS NOT INITIAL"手动检验:但当点击单选按钮与复选框 C2 时,不校验
AND SY-UCOMM <> 'MXX' AND SY-UCOMM <> 'DDD' AND P_AUFN2 IS INITIAL.
MESSAGE E055(00).
ENDIF.
*
AT SELECTION-SCREEN ON P_BLDAT.
IF P_RD2 IS NOT INITIAL"手动检验:但当点击单选按钮与复选框 C2 时,不校验
AND SY-UCOMM <> 'MXX' AND SY-UCOMM <> 'DDD' AND P_BLDAT IS INITIAL.
MESSAGE E055(00).
ENDIF.
*
AT SELECTION-SCREEN ON P_BUDAT.
IF P_RD2 IS NOT INITIAL"手动检验:但当点击单选按钮与复选框 C2 时,不校验
AND SY-UCOMM <> 'MXX' AND SY-UCOMM <> 'DDD' AND P_BUDAT IS INITIAL.
MESSAGE E055(00).
ENDIF.
*&---------------------------------------------------------------------*
*& Form SCREEN_SETTING
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM SCREEN_SETTING .
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FOM_GETDATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FOM_GETDATA .
CLEAR GT_DATA[] .
IF P_RD1 IS NOT INITIAL.
SELECT
AFPO~AUFNR
AFPO~MATNR
AFPO~DWERK
AUFM~MATNR AS MATNR_S
AUFM~RSNUM
AUFM~RSPOS
AUFM~BWART
AUFM~WERKS
AUFM~LGORT
AUFM~CHARG
AUFM~MENGE
AUFM~WERKS AS WERKS_T
AUFM~LGORT AS LGORT_T
AUFM~CHARG AS CHARG_T
INTO CORRESPONDING FIELDS OF TABLE GT_DATA[]
FROM AFPO
INNER JOIN AUFM ON AFPO~AUFNR = AUFM~AUFNR
WHERE AFPO~AUFNR = P_AUFNR
AND AUFM~BWART IN ( '261' , '262' )
.
SORT GT_DATA[] BY AUFNR MATNR_S WERKS LGORT CHARG RSNUM RSPOS BWART.
GT_DATA_A[] = GT_DATA[] .
DELETE ADJACENT DUPLICATES FROM GT_DATA[] COMPARING AUFNR MATNR_S WERKS LGORT CHARG RSNUM RSPOS.
LOOP AT GT_DATA.
*已发料数量
CLEAR GT_DATA-MENGE.
LOOP AT GT_DATA_A WHERE AUFNR = GT_DATA-AUFNR
AND MATNR_S = GT_DATA-MATNR_S
AND WERKS = GT_DATA-WERKS
AND LGORT = GT_DATA-LGORT
AND CHARG = GT_DATA-CHARG
AND RSNUM = GT_DATA-RSNUM
AND RSPOS = GT_DATA-RSPOS
.
IF GT_DATA_A-BWART = '261'.
GT_DATA-MENGE = GT_DATA-MENGE + GT_DATA_A-MENGE .
ELSE .
GT_DATA-MENGE = GT_DATA-MENGE - GT_DATA_A-MENGE .
ENDIF.
CLEAR GT_DATA_A .
ENDLOOP.
*实际已发数量
LOOP AT GT_DATA_A WHERE AUFNR = GT_DATA-AUFNR
AND MATNR_S = GT_DATA-MATNR_S
AND WERKS = GT_DATA-WERKS
AND LGORT = GT_DATA-LGORT
.
IF GT_DATA_A-BWART = '261'.
GT_DATA-MENGS = GT_DATA-MENGS + GT_DATA_A-MENGE .
ELSE .
GT_DATA-MENGS = GT_DATA-MENGS - GT_DATA_A-MENGE .
ENDIF.
CLEAR GT_DATA_A .
ENDLOOP.
MODIFY GT_DATA .
CLEAR GT_DATA .
ENDLOOP.
ELSE .
IF P_BOX IS NOT INITIAL.
SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_DATA[] FROM ZTGDTL
WHERE AUFNR = P_AUFN2
.
ELSE .
SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_DATA[] FROM ZTGDTL
WHERE AUFNR = P_AUFN2
AND FLAG = ''
.
ENDIF.
LOOP AT GT_DATA.
GT_DATA-BLDAT = P_BLDAT .
GT_DATA-BUDAT = P_BUDAT .
MODIFY GT_DATA .
CLEAR GT_DATA .
ENDLOOP.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_DISPLAY .
CLEAR S_LAYOUT.
S_LAYOUT-ZEBRA = 'X'.
* S_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
S_LAYOUT-COLTAB_FIELDNAME = 'CELLCOLOR'. "单元格颜色内表字段
* s_layout-box_fieldname = 'BOX'.
PERFORM FRM_FILL_FIELD .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_SAVE = 'A'
IS_LAYOUT = S_LAYOUT
IT_FIELDCAT = GT_FIELDCAT
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_SET'
* i_callback_html_top_of_page = 'HTML_TOP_OF_PAGE'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
TABLES
T_OUTTAB = GT_DATA[].
ENDFORM.
FORM FRM_FILL_FIELD .
DATA: WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
DEFINE FILL_FIELD.
WA_FIELDCAT-FIELDNAME = &1.
WA_FIELDCAT-SELTEXT_L = &2.
IF WA_FIELDCAT-FIELDNAME = 'CKBOX' .
WA_FIELDCAT-CHECKBOX = 'X'.
WA_FIELDCAT-EDIT = 'X'.
ENDIF.
IF WA_FIELDCAT-FIELDNAME = 'MENGE_T' .
WA_FIELDCAT-REF_TABNAME = 'AUFM'.
WA_FIELDCAT-REF_FIELDNAME = 'MENGE'.
WA_FIELDCAT-OUTPUTLEN = '13'.
WA_FIELDCAT-EDIT = 'X'.
ENDIF .
IF WA_FIELDCAT-FIELDNAME = 'LGORT_T' .
WA_FIELDCAT-EDIT = 'X'.
ENDIF .
IF WA_FIELDCAT-FIELDNAME = 'PLNBEZ'
OR WA_FIELDCAT-FIELDNAME = 'MATNR'
OR WA_FIELDCAT-FIELDNAME = 'MATNR_S'
.
WA_FIELDCAT-REF_TABNAME = 'MARA'.
WA_FIELDCAT-REF_FIELDNAME = 'MATNR'.
ENDIF.
IF WA_FIELDCAT-FIELDNAME = 'ARKTX' OR WA_FIELDCAT-FIELDNAME = 'WAKTX' .
WA_FIELDCAT-REF_TABNAME = 'VBAP'.
WA_FIELDCAT-REF_FIELDNAME = 'ARKTX'.
ENDIF.
IF WA_FIELDCAT-FIELDNAME = 'AUFNR' .
WA_FIELDCAT-REF_TABNAME = 'AUFK'.
WA_FIELDCAT-REF_FIELDNAME = 'AUFNR'.
ENDIF.
IF WA_FIELDCAT-FIELDNAME = 'BLDAT'
OR WA_FIELDCAT-FIELDNAME = 'BUDAT'
.
WA_FIELDCAT-REF_TABNAME = 'MATDOC'.
WA_FIELDCAT-REF_FIELDNAME = 'BLDAT'.
* WA_FIELDCAT-EDIT = 'X'.
ENDIF.
IF WA_FIELDCAT-FIELDNAME = 'MESSAGE' .
WA_FIELDCAT-OUTPUTLEN = '100'.
ENDIF.
APPEND WA_FIELDCAT TO GT_FIELDCAT.
CLEAR WA_FIELDCAT.
END-OF-DEFINITION.
IF P_RD1 IS NOT INITIAL.
FILL_FIELD :
'CKBOX' '选择列',
'AUFNR' '工单',
'DWERK' '生产工厂',
'MATNR' '物料(工单产品)',
'MATNR_S' '物料(工单组件)',
'RSNUM' '预留',
'RSPOS' '项目编号',
'MENGS' '实际已发数量',
'WERKS' '组件发料工厂',
'LGORT' '发料库位',
'CHARG' '发料批次',
'MENGE' '已发料数量',
'MENGE_T' '本次退料数量',
'WERKS_T' '退料工厂',
'LGORT_T' '退料库位',
'CHARG_T' '退料批次'.
ELSE.
FILL_FIELD :
'CKBOX' '选择列',
'AUFNR' '工单',
'DWERK' '生产工厂',
'MATNR' '物料(工单产品)',
'MATNR_S' '物料(工单组件)',
'RSNUM' '预留',
'RSPOS' '项目编号',
'MENGS' '实际已发数量',
'WERKS' '组件发料工厂',
'LGORT' '发料库位',
'CHARG' '发料批次',
'MENGE' '已发料数量',
'MENGE_T' '本次退料数量',
'WERKS_T' '退料工厂',
'LGORT_T' '退料库位',
'CHARG_T' '退料批次',
'BLDAT' '凭证日期',
'BUDAT' '过账日期',
'FLAG' '已过帐标识',
'MBLNR' '凭证编号',
'MESSAGE' '报错信息'.
ENDIF.
ENDFORM.
FORM PF_STATUS_SET USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'STANDARD_FULLSCREEN'.
ENDFORM.
FORM USER_COMMAND USING I_UCOMM LIKE SY-UCOMM
IS_SELFIELD TYPE SLIS_SELFIELD.
DATA: REF TYPE REF TO CL_GUI_ALV_GRID.
DATA : LV_STABLE TYPE LVC_S_STBL. "刷新稳定性
RANGES: L_WERKS FOR T001W-WERKS.
RANGES: L_MATNR FOR MARA-MATNR.
DATA:L_BUKRS TYPE T001K-BUKRS.
LV_STABLE-ROW = '1'.
LV_STABLE-COL = '1'.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = REF.
CALL METHOD REF->CHECK_CHANGED_DATA.
CASE I_UCOMM.
WHEN 'ALL'.
LOOP AT GT_DATA.
GT_DATA-CKBOX = 'X' .
MODIFY GT_DATA .
CLEAR GT_DATA .
ENDLOOP.
WHEN 'SAL'.
LOOP AT GT_DATA.
GT_DATA-CKBOX = '' .
MODIFY GT_DATA .
CLEAR GT_DATA .
ENDLOOP.
WHEN 'ZSAVE'.
IF P_RD1 IS NOT INITIAL.
CLEAR GT_SAVE[] .
LOOP AT GT_DATA WHERE CKBOX IS NOT INITIAL .
MOVE-CORRESPONDING GT_DATA TO GT_SAVE .
APPEND GT_SAVE .
CLEAR GT_DATA .
CLEAR GT_SAVE .
ENDLOOP.
IF SY-SUBRC = 0.
MODIFY ZTGDTL FROM TABLE GT_SAVE[] .
COMMIT WORK .
MESSAGE '保存成功!'TYPE 'S' .
ELSE.
MESSAGE '请选择条目!'TYPE 'S' DISPLAY LIKE 'W'.
ENDIF.
ELSE.
MESSAGE '当前功能不可用!'TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.
WHEN 'ZRUN'.
CLEAR GOODSMVT_HEADER .
CLEAR GOODSMVT_CODE .
GOODSMVT_HEADER-PSTNG_DATE = P_BUDAT. "过账日期
GOODSMVT_HEADER-DOC_DATE = P_BLDAT. "凭证日期
GOODSMVT_HEADER-PR_UNAME = SY-UNAME. "用户名
GOODSMVT_HEADER-REF_DOC_NO = P_AUFN2. "参考凭证-工单号
GOODSMVT_CODE = '05' .
CLEAR GOODSMVT_ITEM[] .
IF P_RD2 IS NOT INITIAL.
LOOP AT GT_DATA WHERE CKBOX IS NOT INITIAL .
GOODSMVT_ITEM-MATERIAL_LONG = GT_DATA-MATNR_S. "物料编码
GOODSMVT_ITEM-PLANT = GT_DATA-WERKS_T. "工厂
GOODSMVT_ITEM-STGE_LOC = GT_DATA-LGORT_T. "入库仓库
GOODSMVT_ITEM-BATCH = GT_DATA-CHARG_T. "批次
GOODSMVT_ITEM-RESERV_NO = GT_DATA-RSNUM. "预留
GOODSMVT_ITEM-RES_ITEM = GT_DATA-RSPOS. "项目编号
GOODSMVT_ITEM-ENTRY_QNT = GT_DATA-MENGE_T. "入库数量
GOODSMVT_ITEM-MOVE_TYPE = '262'. "移动类型
APPEND GOODSMVT_ITEM .
CLEAR GOODSMVT_ITEM .
CLEAR GT_DATA .
ENDLOOP.
IF SY-SUBRC = 0.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
GOODSMVT_HEADER = GOODSMVT_HEADER
GOODSMVT_CODE = GOODSMVT_CODE
IMPORTING
GOODSMVT_HEADRET = GOODSMVT_HEADRET
MATERIALDOCUMENT = MATERIALDOCUMENT
MATDOCUMENTYEAR = MATDOCUMENTYEAR
TABLES
GOODSMVT_ITEM = GOODSMVT_ITEM
RETURN = RETURN.
CLEAR MESSAGE .
SORT RETURN BY MESSAGE .
DELETE ADJACENT DUPLICATES FROM RETURN[] COMPARING MESSAGE.
LOOP AT RETURN WHERE TYPE = 'E'.
MESSAGE = MESSAGE && RETURN-MESSAGE .
ENDLOOP.
IF SY-SUBRC = 0 .
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
LOOP AT GT_DATA WHERE CKBOX IS NOT INITIAL .
GT_DATA-MESSAGE = MESSAGE .
CLEAR IW_CELLCOLOR .
IW_CELLCOLOR-FNAME = 'MESSAGE'.
IW_CELLCOLOR-COLOR-COL = 6.
IW_CELLCOLOR-COLOR-INT = 0.
IW_CELLCOLOR-COLOR-INV = 0.
APPEND IW_CELLCOLOR TO GT_DATA-CELLCOLOR.
MODIFY GT_DATA.
CLEAR GT_DATA.
ENDLOOP.
MESSAGE '操作失败!'TYPE 'S' DISPLAY LIKE 'E'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
CLEAR GT_SAVE[] .
LOOP AT GT_DATA WHERE CKBOX IS NOT INITIAL .
GT_DATA-MBLNR = MATERIALDOCUMENT .
GT_DATA-FLAG = 'X'.
MOVE-CORRESPONDING GT_DATA TO GT_SAVE .
APPEND GT_SAVE .
MODIFY GT_DATA.
CLEAR GT_DATA.
CLEAR GT_SAVE .
ENDLOOP.
MODIFY ZTGDTL FROM TABLE GT_SAVE[] .
COMMIT WORK .
MESSAGE '操作成功!'TYPE 'S' .
ENDIF.
ELSE.
MESSAGE '请选择条目!'TYPE 'S' DISPLAY LIKE 'W'.
ENDIF.
ELSE.
MESSAGE '当前功能不可用!'TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.
ENDCASE.
CALL METHOD REF->REFRESH_TABLE_DISPLAY
EXPORTING
IS_STABLE = LV_STABLE.
ENDFORM.
AT SELECTION-SCREEN.
PERFORM SCREEN_SETTING.
START-OF-SELECTION.
PERFORM FOM_GETDATA .
PERFORM FRM_DISPLAY.
相关自建表
MANDT | X | MANDT | CLNT | 3 | 0 | 集团 |
AUFNR | X | AUFNR | CHAR | 12 | 0 | 订单号 |
MATNR_S | X | CHAR | 40 | 0 | 物料(工单组件) | |
WERKS | X | CHAR | 4 | 0 | 组件发料工厂 | |
LGORT | X | CHAR | 4 | 0 | 发料库位 | |
CHARG | X | CHAR | 10 | 0 | 发料批次 | |
RSNUM | X | RSNUM | NUMC | 10 | 0 | 预留/相关需求的编号 |
RSPOS | X | RSPOS | NUMC | 4 | 0 | 预留 / 相关需求的项目编号 |
DWERK | CHAR | 4 | 0 | 生产工厂 | ||
MATNR | CHAR | 40 | 0 | 物料(工单产品) | ||
MENGS | MENGE_D | QUAN | 13 | 3 | 数量 | |
MENGE | MENGE_D | QUAN | 13 | 3 | 数量 | |
MENGE_T | MENGE_D | QUAN | 13 | 3 | 数量 | |
WERKS_T | CHAR | 4 | 0 | 退料工厂 | ||
LGORT_T | CHAR | 4 | 0 | 退料库位 | ||
CHARG_T | CHAR | 10 | 0 | 退料批次 | ||
FLAG | CHAR | 1 | 0 | 状态 | ||
MBLNR | MBLNR | CHAR | 10 | 0 | 物料凭证编号 |