入库过账

FUNCTION ZPP_BAPI_PRODUCT_STOCK_IN.
*"----------------------------------------------------------------------
*"*"本地接口:
*" EXPORTING
*" VALUE(CZ_MESS) TYPE CHAR40
*" TABLES
*" INPUT STRUCTURE ZPP_BAPI_PRODUCT_STOCK_INPUT
*" OUTPUT STRUCTURE ZPP_BAPI_PRODUCT_STOCK_OUTPUT
*"---------------------------------------------------------------------- DATA: GOODSMVT_HEADER TYPE BAPI2017_GM_HEAD_01,
GOODSMVT_CODE TYPE BAPI2017_GM_CODE,
GOODSMVT_HEADRET TYPE BAPI2017_GM_HEAD_RET,
MATERIALDOCUMENT TYPE BAPI2017_GM_HEAD_RET-MAT_DOC,
MATDOCUMENTYEAR TYPE BAPI2017_GM_HEAD_RET-DOC_YEAR,
GOODSMVT_ITEM TYPE STANDARD TABLE OF BAPI2017_GM_ITEM_CREATE,
GOODSMVT_SERIALNUMBER TYPE STANDARD TABLE OF BAPI2017_GM_SERIALNUMBER,
RETURN TYPE STANDARD TABLE OF BAPIRET2 ,
W_CRETURN TYPE BAPIRET2,
W_GOODSMVT_ITEM TYPE BAPI2017_GM_ITEM_CREATE,
W_GOODSMVT_SERIALNUMBER TYPE BAPI2017_GM_SERIALNUMBER,
W_RETURN TYPE BAPIRET2.
* 接口调用日志
DATA: LT_LOG TYPE STANDARD TABLE OF ZZT_INFLOG,
LW_LOG TYPE ZZT_INFLOG. CLEAR:GOODSMVT_HEADER,
GOODSMVT_CODE,
GOODSMVT_HEADRET,
MATERIALDOCUMENT,
MATDOCUMENTYEAR,
GOODSMVT_ITEM ,
RETURN,W_RETURN,
GOODSMVT_SERIALNUMBER,
W_GOODSMVT_SERIALNUMBER."LT_TPMSG,LT_RETMSG. REFRESH:GOODSMVT_ITEM,RETURN,GOODSMVT_SERIALNUMBER.
"事物码
GOODSMVT_CODE-GM_CODE = ''. "MB31
* **********gm_code取值含义*******
* *******01 MB01
* *******02 MB31
* *******03 MB1A
* *******04 MB1B
* *******05 MB1C
* *******06 MB11
* *******07 MB04
"头
GOODSMVT_HEADER-HEADER_TXT = INPUT-BKTXT.
GOODSMVT_HEADER-PSTNG_DATE = SY-DATUM.
GOODSMVT_HEADER-DOC_DATE = SY-DATUM.
"明细
DATA:LV_ENTRY_QNT TYPE I.
CLEAR: LV_ENTRY_QNT,INPUT.
LV_ENTRY_QNT = LINES( INPUT ).
READ TABLE INPUT INDEX .
IF SY-SUBRC EQ .
W_GOODSMVT_ITEM-MOVE_TYPE = ''.
W_GOODSMVT_ITEM-STCK_TYPE = 'F'.
W_GOODSMVT_ITEM-MVT_IND = 'F'.
W_GOODSMVT_ITEM-PLANT = INPUT-WERKS.
W_GOODSMVT_ITEM-ORDERID = INPUT-AUFNR.
W_GOODSMVT_ITEM-ENTRY_QNT = LV_ENTRY_QNT.
*** 生产订单信息
SELECT SINGLE PWERK LGORT MATNR MEINS
INTO (W_GOODSMVT_ITEM-PLANT,W_GOODSMVT_ITEM-STGE_LOC,W_GOODSMVT_ITEM-MATERIAL,W_GOODSMVT_ITEM-ENTRY_UOM)
FROM AFPO
WHERE AUFNR = INPUT-AUFNR. APPEND W_GOODSMVT_ITEM TO GOODSMVT_ITEM.
ENDIF.
*** 称重数据更新
IF INPUT-SERNR IS INITIAL AND INPUT-BRGEW IS INITIAL AND INPUT-GEWEI IS INITIAL.
CZ_MESS = 'E:序列号 或 重量 或 单位为空!'.
ELSE.
UPDATE EQUI SET AEDAT = SY-DATUM
AENAM = SY-UNAME
BRGEW = INPUT-BRGEW
GEWEI = INPUT-GEWEI
WHERE EQUNR = INPUT-SERNR.
IF SY-SUBRC EQ .
CZ_MESS = 'S:产品重量数据传输成功!'.
COMMIT WORK.
ELSE.
CZ_MESS = 'E:产品重量数据传输失败!'.
ENDIF.
ENDIF. LOOP AT INPUT.
W_GOODSMVT_SERIALNUMBER-MATDOC_ITM = ''.
W_GOODSMVT_SERIALNUMBER-SERIALNO = INPUT-SERNR.
APPEND W_GOODSMVT_SERIALNUMBER TO GOODSMVT_SERIALNUMBER.
ENDLOOP. "执行操作
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
GOODSMVT_SERIALNUMBER = GOODSMVT_SERIALNUMBER
RETURN = RETURN
. READ TABLE RETURN WITH KEY TYPE = 'E' INTO W_RETURN.
IF SY-SUBRC <> . CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
IF MATERIALDOCUMENT IS NOT INITIAL.
OUTPUT-FLAG = 'S'.
OUTPUT-NOTES = '成品入库成功!'.
OUTPUT-MBLNR = MATERIALDOCUMENT.
APPEND OUTPUT.
ENDIF.
***填写日志
CLEAR LW_LOG.
LW_LOG-INTTY = 'SI'.
LW_LOG-DIRECT = ''.
LW_LOG-INFTX = '扫码自动入库&更新重量'.
LW_LOG-OKEY1 = MATERIALDOCUMENT.
LW_LOG-OKEY2 = CZ_MESS.
LW_LOG-IKEY1 = INPUT-AUFNR.
LW_LOG-IKEY2 = INPUT-WERKS.
LW_LOG-IKEY3 = INPUT-SERNR.
LW_LOG-IKEY4 = INPUT-BRGEW.
LW_LOG-LOGST = 'S'. "日志状态
LW_LOG-LOGTX = '成品扫码入库成功!'. "日志文本
LW_LOG-CAFUN = 'ZPP_BAPI_PRODUCT_STOCK_IN'. "调用函数
APPEND LW_LOG TO LT_LOG.
CLEAR OUTPUT.
ELSE. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. OUTPUT-FLAG = 'E'.
CONCATENATE '成品入库失败:' W_RETURN-MESSAGE INTO OUTPUT-NOTES.
APPEND OUTPUT. CLEAR LW_LOG.
LW_LOG-INTTY = 'SI'.
LW_LOG-DIRECT = ''.
LW_LOG-INFTX = '扫码自动入库&更新重量'.
* LW_LOG-OKEY1 = .
LW_LOG-OKEY2 = CZ_MESS.
LW_LOG-IKEY1 = INPUT-AUFNR.
LW_LOG-IKEY2 = INPUT-WERKS.
LW_LOG-IKEY3 = INPUT-SERNR.
LW_LOG-IKEY4 = INPUT-BRGEW.
LW_LOG-LOGST = 'E'. "日志状态
LW_LOG-LOGTX = OUTPUT-NOTES. "日志文本
LW_LOG-CAFUN = 'ZPP_BAPI_PRODUCT_STOCK_IN'. "调用函数
APPEND LW_LOG TO LT_LOG.
CLEAR OUTPUT.
ENDIF. IF INPUT[] IS NOT INITIAL.
CALL FUNCTION
TABLES
IT_LOG = LT_LOG
.
IF SY-SUBRC EQ .
COMMIT WORK.
ENDIF.
ENDIF.
CLEAR:INPUT[]. ENDFUNCTION.
05-11 14:06