前台:MI01
*&创建盘点凭证 MI01
*&---------------------------------------------------------------------*
DATA: IT_ITEM LIKE TABLE OF BAPI_PHYSINV_COUNT_ITEMS WITH HEADER LINE,
RET_MSG LIKE TABLE OF BAPIRET2 WITH HEADER LINE,
G_INVDOC LIKE IKPF-IBLNR.
*&--------------------------------------------------------------------*
*& SEKECTION-SCREEN
*&--------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
PARAMETERS:P_WERKS LIKE MARD-WERKS DEFAULT \'RYL5\',
P_LGORT LIKE MARD-LGORT DEFAULT \'3100\',
P_MATNR LIKE MARD-MATNR DEFAULT \'0609990060199112\',
P_DATE LIKE SY-DATUM DEFAULT \'20140618\'.
SELECTION-SCREEN END OF BLOCK BLK1.
*&---------------------------------------------------------------------*
*& START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
*& 创建盘点凭证
PERFORM CREATE_INVENTORY_DOCUMENT.
*&---------------------------------------------------------------------*
*& Form CREATE_INVENTORY_DOCUMENT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CREATE_INVENTORY_DOCUMENT .
DATA:L_HEAD TYPE BAPI_PHYSINV_CREATE_HEAD,
ITEM LIKE TABLE OF BAPI_PHYSINV_CREATE_ITEMS WITH HEADER LINE .
L_HEAD-PLANT = P_WERKS.
L_HEAD-STGE_LOC = P_LGORT.
L_HEAD-DOC_DATE = P_DATE.
L_HEAD-PLAN_DATE = P_DATE. "盘点日期
L_HEAD-PLAN_DATE = P_DATE. "凭证日期
* GS_HEAD-PLANT = P_WERKS."工厂
* GS_HEAD-STGE_LOC = P_LGORT."库存地点
* GS_HEAD-PLAN_DATE = P_BLDAT."盘点日期
* GS_HEAD-DOC_DATE = P_GIDAT."凭证日期
* GS_HEAD-PHYS_INV_NO = P_INVNU."实际库存编号
* GS_HEAD-PHYS_INV_REF = P_XBLNI."库存盘点参考
*SPEC_STOCK 特殊库存标识
*POST_BLOCK 由于实际盘点而冻结记帐
*FREEZEBOOKINV 冻结帐面库存
*DEL_BATCHES XLVOCA 包括带有删除标识的批量
*GROUPING_TYPE 分组标准类型
* GT_ITEM-MATERIAL = GT_IT_DATA-MATNR. "物料号码
* GT_ITEM-BATCH = GT_IT_DATA-CHARG. "批次编号
** GT_ITEM-STOCK_TYPE = GT_IT_DATA-BSTAR. "库存类型(1~4)
* APPEND GT_ITEM.
* CLEAR GT_ITEM.
ITEM-MATERIAL = P_MATNR.
ITEM-STOCK_TYPE = 1.
APPEND ITEM.
CLEAR ITEM.
CALL FUNCTION \'BAPI_MATPHYSINV_CREATE_MULT\'
EXPORTING
HEAD = L_HEAD
TABLES
ITEMS = ITEM[]
RETURN = RET_MSG.
PERFORM COMMIT_OPERATION.
ENDFORM. " CREATE_INVENTORY_DOCUMENT
*&---------------------------------------------------------------------*
*& Form COMMIT_OPERATION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM COMMIT_OPERATION .
READ TABLE RET_MSG WITH KEY TYPE = \'E\'.
IF SY-SUBRC <> 0.
CALL FUNCTION \'BAPI_TRANSACTION_COMMIT\'
EXPORTING
WAIT = \'X\'.
READ TABLE RET_MSG INDEX 1.
IF SY-SUBRC = 0.
WRITE:/ \'document:\',RET_MSG-MESSAGE_V1.
ENDIF.
ELSE.
LOOP AT RET_MSG.
WRITE:/ \'erro message:\',RET_MSG-MESSAGE.
ENDLOOP.
ENDIF.
ENDFORM. " COMMIT_OPERATION
系统根据账面库存数量和用户输入的盘点数量,计算出差额。检查无误后,点击保存按钮,屏幕左下角会显示凭证保存成功的信息
【BAPI】
REPORT YLM_TEST012.
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
PARAMETERS:P_WERKS LIKE MARD-WERKS DEFAULT \'RYL5\',
P_LGORT LIKE MARD-LGORT DEFAULT \'3100\',
P_MATNR LIKE MARD-MATNR DEFAULT \'0609990060199012\',
P_CHARG TYPE ISEG-CHARG DEFAULT \'2013102799\',
P_ERFMG TYPE ISEG-ERFMG DEFAULT \'999\',
P_MEINS TYPE MEINS DEFAULT \'CTL\',
P_IBLNR TYPE IKPF-IBLNR DEFAULT \'100000173\',
P_DATE TYPE IKPF-BLDAT DEFAULT \'20140618\',
P_GJAHR TYPE IKPF-GJAHR DEFAULT \'2014\'.
SELECTION-SCREEN END OF BLOCK BLK1.
DATA:
GT_RETURN_CODE LIKE TABLE OF BAPIRET2 WITH HEADER LINE, "创建凭证返回信息
GT_RETURN_CODE2 LIKE TABLE OF BAPIRET2 WITH HEADER LINE, "创建凭证返回信息
GT_ITEM LIKE ISEG OCCURS 0 WITH HEADER LINE,
GT_BAPI_ITEM LIKE BAPI_PHYSINV_COUNT_ITEMS OCCURS 0 WITH HEADER LINE,
GT_BAPI_ITEM2 LIKE BAPI_PHYSINV_POST_ITEMS
OCCURS 0 WITH HEADER LINE.
DATA: GV_DATUM LIKE IKPF-BLDAT, "盘点日期
GV_IBLNR LIKE IKPF-IBLNR, "盘点凭证号
GV_GJAHR LIKE IKPF-GJAHR. "会计年度
GT_BAPI_ITEM-ITEM = 1. "行号
GT_BAPI_ITEM-MATERIAL = P_MATNR."物料编码
GT_BAPI_ITEM-BATCH = P_CHARG."批次
GT_BAPI_ITEM-ENTRY_QNT = P_ERFMG."录入系统实盘数
GT_BAPI_ITEM-ENTRY_UOM = P_MEINS."计量单位
CASE P_ERFMG.
WHEN 0.
GT_BAPI_ITEM-ZERO_COUNT = \'X\'.
WHEN OTHERS.
ENDCASE.
APPEND GT_BAPI_ITEM.
GT_BAPI_ITEM2-ITEM = 1. "行号
GT_BAPI_ITEM2-MATERIAL = P_MATNR."物料编码
GT_BAPI_ITEM2-BATCH = P_CHARG. "批次
APPEND GT_BAPI_ITEM2.
**************调用bapi,相当于MI04录入实盘数
GV_IBLNR = P_IBLNR."盘点凭证
GV_DATUM = P_DATE."盘点日期
GV_GJAHR = P_GJAHR."会计年度
CALL FUNCTION \'BAPI_MATPHYSINV_COUNT\'
EXPORTING
PHYSINVENTORY = GV_IBLNR
FISCALYEAR = GV_GJAHR
COUNT_DATE = GV_DATUM
TABLES
ITEMS = GT_BAPI_ITEM
RETURN = GT_RETURN_CODE.
CALL FUNCTION \'BAPI_TRANSACTION_COMMIT\'
EXPORTING
WAIT = \'X\'.
*
**************调用bapi,相当于MI07差异过帐
CALL FUNCTION \'BAPI_MATPHYSINV_POSTDIFF\'
EXPORTING
PHYSINVENTORY = GV_IBLNR
FISCALYEAR = GV_GJAHR
PSTNG_DATE = GV_DATUM
TABLES
ITEMS = GT_BAPI_ITEM2
RETURN = GT_RETURN_CODE2.
CALL FUNCTION \'BAPI_TRANSACTION_ROLLBACK\'.
* EXPORTING
* WAIT = \'X\'.