面辅料入库暂收BAPI(MIGO过账的BAPI BAPI_GOODSMVT_CREATE)
*&---------------------------------------------------------------------*
*& Form BAPI_GOODSMVT_CREATE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM BAPI_GOODSMVT_CREATE .
***********gmcode-gm_code取值含义*******
********01 MB01
********02 MB31
********03 MB1A
********04 MB1B
********05 MB1C
********06 MB11
********07 MB04
DATA:LT_GOODSMVT_HEADER LIKE TABLE OF BAPI2017_GM_HEAD_01,
LS_GOODSMVT_HEADER LIKE LINE OF LT_GOODSMVT_HEADER,
LT_GOODSMVT_CODE LIKE TABLE OF BAPI2017_GM_CODE,
LS_GOODSMVT_CODE LIKE LINE OF LT_GOODSMVT_CODE,
LT_TESTRUN LIKE TABLE OF BAPI2017_GM_GEN-TESTRUN,
LS_TESTRUN LIKE LINE OF LT_TESTRUN,
LT_GOODSMVT_ITEM TYPE TABLE OF BAPI2017_GM_ITEM_CREATE,
LS_GOODSMVT_ITEM TYPE BAPI2017_GM_ITEM_CREATE,
LT_GOODSMVT_SERIALNUMBER LIKE TABLE OF BAPI2017_GM_SERIALNUMBER,
LS_GOODSMVT_SERIALNUMBER LIKE LINE OF LT_GOODSMVT_SERIALNUMBER,
LT_RETURN TYPE TABLE OF BAPIRET2,
LS_RETURN LIKE LINE OF LT_RETURN.
"输出参数
DATA:LT_GOODSMVT_HEADRET TYPE BAPI2017_GM_HEAD_RET,
* LS_GOODSMVT_HEADRET LIKE LINE OF LT_GOODSMVT_HEADRET,
L_MATERIALDOCUMENT TYPE BAPI2017_GM_HEAD_RET-MAT_DOC,
L_MATDOCUMENTYEAR TYPE BAPI2017_GM_HEAD_RET-DOC_YEAR.
DATA:LT_OUTPUT_FOR_BAPI TYPE TABLE OF TY_OUTPUT.
LOOP AT GT_OUTPUT ASSIGNING FIELD-SYMBOL(<FW_ALV>) WHERE SLBOX EQ 'X'..
APPEND <FW_ALV> TO LT_OUTPUT_FOR_BAPI.
ENDLOOP.
SORT LT_OUTPUT_FOR_BAPI BY EBELN.
"按采购订单来生成BAPI,一条采购订单抬头(包括所有的行项目)生成一张凭证
LOOP AT LT_OUTPUT_FOR_BAPI ASSIGNING FIELD-SYMBOL(<FW_BAPI>) WHERE SLBOX EQ 'X'.
AT NEW EBELN.
"HEAD
LS_GOODSMVT_HEADER-PSTNG_DATE = P_BUDAT.
LS_GOODSMVT_HEADER-DOC_DATE = P_BLDAT.
LS_GOODSMVT_HEADER-PR_UNAME = SY-UNAME.
* LS_GOODSMVT_HEADER-HEADER_TXT = <FW_BAPI>-BKTXT.
APPEND LS_GOODSMVT_HEADER TO LT_GOODSMVT_HEADER.
LS_GOODSMVT_CODE-GM_CODE = '01'.
ENDAT.
"ITEM
LS_GOODSMVT_ITEM-MATERIAL_EXTERNAL = <FW_BAPI>-MATNR.
LS_GOODSMVT_ITEM-PLANT = <FW_BAPI>-WERKS.
LS_GOODSMVT_ITEM-MOVE_TYPE = '103'.
LS_GOODSMVT_ITEM-MVT_IND = 'B'.
LS_GOODSMVT_ITEM-ENTRY_QNT = <FW_BAPI>-MENGE_BCZSSL.
LS_GOODSMVT_ITEM-UNLOAD_PT = <FW_BAPI>-LGORT."ADD BY HANDLH 2018.5.23
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
INPUT = <FW_BAPI>-MEINS
* LANGUAGE = SY-LANGU
IMPORTING
OUTPUT = LS_GOODSMVT_ITEM-ENTRY_UOM
EXCEPTIONS
UNIT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
* LS_GOODSMVT_ITEM-STGE_LOC = <FW_BAPI>-LGORT.
LS_GOODSMVT_ITEM-PO_NUMBER = <FW_BAPI>-EBELN.
LS_GOODSMVT_ITEM-PO_ITEM = <FW_BAPI>-EBELP.
DATA:
GV_SGTXT TYPE BAPI2017_GM_ITEM_CREATE-ITEM_TEXT.
CLEAR GV_SGTXT.
GV_SGTXT = <FW_BAPI>-BKTXT.
LS_GOODSMVT_ITEM-ITEM_TEXT = GV_SGTXT.
* LS_GOODSMVT_ITEM-stck_type = 'X'."
APPEND LS_GOODSMVT_ITEM TO LT_GOODSMVT_ITEM.
CLEAR:LS_GOODSMVT_ITEM.
AT END OF EBELN.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
GOODSMVT_HEADER = LS_GOODSMVT_HEADER
GOODSMVT_CODE = LS_GOODSMVT_CODE
* TESTRUN = ' '
* GOODSMVT_REF_EWM =
IMPORTING
GOODSMVT_HEADRET = LT_GOODSMVT_HEADRET
MATERIALDOCUMENT = L_MATERIALDOCUMENT
MATDOCUMENTYEAR = L_MATDOCUMENTYEAR
TABLES
GOODSMVT_ITEM = LT_GOODSMVT_ITEM
* GOODSMVT_SERIALNUMBER = LT_GOODSMVT_SERIALNUMBER
RETURN = LT_RETURN
* GOODSMVT_SERV_PART_DATA =
* EXTENSIONIN =
.
READ TABLE LT_RETURN INTO LS_RETURN WITH KEY TYPE = 'E'.
IF SY-SUBRC = 0."说明有错误
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
LOOP AT GT_OUTPUT ASSIGNING <FW_ALV> WHERE EBELN = <FW_BAPI>-EBELN AND SLBOX EQ 'X'.
MOVE GC_LIGHT_R TO <FW_ALV>-STATUS."红灯
MOVE LS_RETURN-MESSAGE TO <FW_ALV>-MESSAGE."错误消息
ENDLOOP.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
LOOP AT GT_OUTPUT ASSIGNING <FW_ALV> WHERE EBELN = <FW_BAPI>-EBELN AND SLBOX EQ 'X'.
MOVE GC_LIGHT_G TO <FW_ALV>-STATUS."绿灯
MOVE L_MATERIALDOCUMENT TO <FW_ALV>-MBLNR."绿灯
MOVE '过账成功' TO <FW_ALV>-MESSAGE."错误消息
ENDLOOP.
ENDIF.
CLEAR:LT_GOODSMVT_HEADER,
LT_GOODSMVT_CODE,
LT_TESTRUN,
LT_GOODSMVT_ITEM,
LT_GOODSMVT_SERIALNUMBER,
LT_RETURN,
LT_GOODSMVT_HEADRET,
L_MATERIALDOCUMENT,
L_MATDOCUMENTYEAR.
ENDAT.
ENDLOOP.
PERFORM REFRESH_ALV.
ENDFORM.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架