CREATE SO BY PO
FUNCTION ZXCSD_CREATE_SO_BY_PO.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(IV_EBELN) TYPE EKKO-EBELN OPTIONAL
*" VALUE(IV_STAMP) TYPE TIMESTAMPL OPTIONAL
*" EXPORTING
*" VALUE(OV_VBELN) TYPE VBAK-VBELN
*" VALUE(OV_MSG_TYP) TYPE BAPI_MTYPE
*" VALUE(OV_MSG) TYPE BAPI_MSG
*"----------------------------------------------------------------------
"break jiatai_lcx.
***用于异步检查是否已经更新完毕
DATA:LV_COUNT TYPE I.
CLEAR LV_COUNT.
LV_COUNT = 0.
DO 10 TIMES.
WAIT UP TO 1 SECONDS.
SELECT SINGLE * INTO @DATA(WA_EKKO)
FROM EKKO
WHERE EBELN = @IV_EBELN.
SELECT SINGLE *
INTO @DATA(LS_ZSDLJT007)
FROM ZLJSDT007
WHERE EBELN = @IV_EBELN
AND STAMP = @IV_STAMP
.
IF WA_EKKO-EBELN IS NOT INITIAL AND LS_ZSDLJT007-EBELN = IV_EBELN AND LS_ZSDLJT007-STAMP = IV_STAMP.
EXIT.
ENDIF.
LV_COUNT = LV_COUNT + 1.
ENDDO.
****等待10秒检查数据是否已经进入数据库。如果没有进入则无意义 结束创建过程
IF LV_COUNT EQ 10.
RETURN.
ENDIF.
SELECT SINGLE BSTKD INTO @DATA(LV_BSTKD)
FROM VBKD
WHERE BSTKD = @IV_EBELN.
***检查SO是否创建 存在就更改 否则就创建
IF SY-SUBRC EQ 0.
PERFORM FRM_CHANGE_SO USING IV_EBELN
CHANGING OV_VBELN
OV_MSG_TYP
OV_MSG.
ELSE.
PERFORM FRM_CREATE_SO USING IV_EBELN
CHANGING OV_VBELN
OV_MSG_TYP
OV_MSG..
ENDIF.
DATA:LT_ZLJSDT007 TYPE STANDARD TABLE OF ZLJSDT007 .
DATA:LS_ZLJSDT007 TYPE ZLJSDT007.
REFRESH LT_ZLJSDT007.
CLEAR LS_ZLJSDT007.
LS_ZLJSDT007-EBELN = IV_EBELN.
LS_ZLJSDT007-STAMP = IV_STAMP.
LS_ZLJSDT007-MSG_TYPE = OV_MSG_TYP.
LS_ZLJSDT007-MESSAGE = OV_MSG.
APPEND LS_ZLJSDT007 TO LT_ZLJSDT007.
MODIFY ZLJSDT007 FROM TABLE LT_ZLJSDT007.
IF OV_MSG_TYP = 'S'.
UPDATE ZLJSDT007 SET MSG_TYPE = 'S'
MESSAGE = ''
WHERE EBELN = IV_EBELN
AND STAMP <= IV_STAMP.
ENDIF.
ENDFUNCTION.
FORM FRM_CHANGE_SO USING IV_EBELN TYPE EKKO-EBELN
CHANGING OV_VBELN TYPE VBAK-VBELN
OV_MSG_TYP TYPE BAPI_MTYPE
OV_MSG TYPE BAPI_MSG.
DATA:
LS_H_INX TYPE BAPISDH1X,
LT_ITEM_IN TYPE STANDARD TABLE OF BAPISDITM,
LS_ITEM_IN TYPE BAPISDITM,
LT_ITEM_INX TYPE STANDARD TABLE OF BAPISDITMX,
LS_ITEM_INX TYPE BAPISDITMX,
LS_COND_IN TYPE BAPICOND,
LT_COND_IN TYPE STANDARD TABLE OF BAPICOND,
LS_COND_INX TYPE BAPICONDX,
LT_COND_INX TYPE STANDARD TABLE OF BAPICONDX,
ORDER_SCHEDULES_IN LIKE BAPISCHDL OCCURS 0 WITH HEADER LINE, "计划行
ORDER_SCHEDULES_INX LIKE BAPISCHDLX OCCURS 0 WITH HEADER LINE,
LT_RETURN TYPE STANDARD TABLE OF BAPIRET2.
DATA:LV_SUS TYPE C.
DATA:LV-VBELN TYPE VBAK-VBELN.
SELECT * INTO TABLE @DATA(LT_ZXCSD008
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(IV_EBELN) TYPE EKKO-EBELN OPTIONAL
*" VALUE(IV_STAMP) TYPE TIMESTAMPL OPTIONAL
*" EXPORTING
*" VALUE(OV_VBELN) TYPE VBAK-VBELN
*" VALUE(OV_MSG_TYP) TYPE BAPI_MTYPE
*" VALUE(OV_MSG) TYPE BAPI_MSG
*"----------------------------------------------------------------------
"break jiatai_lcx.
***用于异步检查是否已经更新完毕
DATA:LV_COUNT TYPE I.
CLEAR LV_COUNT.
LV_COUNT = 0.
DO 10 TIMES.
WAIT UP TO 1 SECONDS.
SELECT SINGLE * INTO @DATA(WA_EKKO)
FROM EKKO
WHERE EBELN = @IV_EBELN.
SELECT SINGLE *
INTO @DATA(LS_ZSDLJT007)
FROM ZLJSDT007
WHERE EBELN = @IV_EBELN
AND STAMP = @IV_STAMP
.
IF WA_EKKO-EBELN IS NOT INITIAL AND LS_ZSDLJT007-EBELN = IV_EBELN AND LS_ZSDLJT007-STAMP = IV_STAMP.
EXIT.
ENDIF.
LV_COUNT = LV_COUNT + 1.
ENDDO.
****等待10秒检查数据是否已经进入数据库。如果没有进入则无意义 结束创建过程
IF LV_COUNT EQ 10.
RETURN.
ENDIF.
SELECT SINGLE BSTKD INTO @DATA(LV_BSTKD)
FROM VBKD
WHERE BSTKD = @IV_EBELN.
***检查SO是否创建 存在就更改 否则就创建
IF SY-SUBRC EQ 0.
PERFORM FRM_CHANGE_SO USING IV_EBELN
CHANGING OV_VBELN
OV_MSG_TYP
OV_MSG.
ELSE.
PERFORM FRM_CREATE_SO USING IV_EBELN
CHANGING OV_VBELN
OV_MSG_TYP
OV_MSG..
ENDIF.
DATA:LT_ZLJSDT007 TYPE STANDARD TABLE OF ZLJSDT007 .
DATA:LS_ZLJSDT007 TYPE ZLJSDT007.
REFRESH LT_ZLJSDT007.
CLEAR LS_ZLJSDT007.
LS_ZLJSDT007-EBELN = IV_EBELN.
LS_ZLJSDT007-STAMP = IV_STAMP.
LS_ZLJSDT007-MSG_TYPE = OV_MSG_TYP.
LS_ZLJSDT007-MESSAGE = OV_MSG.
APPEND LS_ZLJSDT007 TO LT_ZLJSDT007.
MODIFY ZLJSDT007 FROM TABLE LT_ZLJSDT007.
IF OV_MSG_TYP = 'S'.
UPDATE ZLJSDT007 SET MSG_TYPE = 'S'
MESSAGE = ''
WHERE EBELN = IV_EBELN
AND STAMP <= IV_STAMP.
ENDIF.
ENDFUNCTION.
FORM FRM_CHANGE_SO USING IV_EBELN TYPE EKKO-EBELN
CHANGING OV_VBELN TYPE VBAK-VBELN
OV_MSG_TYP TYPE BAPI_MTYPE
OV_MSG TYPE BAPI_MSG.
DATA:
LS_H_INX TYPE BAPISDH1X,
LT_ITEM_IN TYPE STANDARD TABLE OF BAPISDITM,
LS_ITEM_IN TYPE BAPISDITM,
LT_ITEM_INX TYPE STANDARD TABLE OF BAPISDITMX,
LS_ITEM_INX TYPE BAPISDITMX,
LS_COND_IN TYPE BAPICOND,
LT_COND_IN TYPE STANDARD TABLE OF BAPICOND,
LS_COND_INX TYPE BAPICONDX,
LT_COND_INX TYPE STANDARD TABLE OF BAPICONDX,
ORDER_SCHEDULES_IN LIKE BAPISCHDL OCCURS 0 WITH HEADER LINE, "计划行
ORDER_SCHEDULES_INX LIKE BAPISCHDLX OCCURS 0 WITH HEADER LINE,
LT_RETURN TYPE STANDARD TABLE OF BAPIRET2.
DATA:LV_SUS TYPE C.
DATA:LV-VBELN TYPE VBAK-VBELN.
SELECT * INTO TABLE @DATA(LT_ZXCSD008