**创建网络
DATA:GT_METHOD_PROJECT TYPE STANDARD TABLE OF BAPI_METHOD_PROJECT WITH HEADER LINE.
DATA:GT_NETWORK TYPE STANDARD TABLE OF BAPI_NETWORK WITH HEADER LINE.
DATA:GT_ACTIVITY TYPE STANDARD TABLE OF BAPI_NETWORK_ACTIVITY WITH HEADER LINE.
DATA:GT_MESSAGE_TABLE TYPE STANDARD TABLE OF BAPI_METH_MESSAGE WITH HEADER LINE.
DATA:GS_RETURN TYPE BAPIRETURN1.
DATA: L_ACTIVITY TYPE CN_VORNR,
L_AUFNR TYPE AUFNR,
L_OBJECTKEY TYPE OBJIDEXT.
CLEAR: L_ACTIVITY, L_AUFNR.
*****添加组件
DATA:LT_COMP TYPE TABLE OF BAPI_NETWORK_COMP_ADD.
DATA:LS_COMP TYPE BAPI_NETWORK_COMP_ADD.
DATA:LT_MESSAGE TYPE TABLE OF BAPI_METH_MESSAGE.
DATA:LS_MESSAGE TYPE BAPI_METH_MESSAGE.
DATA:LV_NETWORK TYPE BAPI_NETWORK_LIST-NETWORK.
DATA:LS_RETURN TYPE BAPIRET2.
DATA:LS_ITEM TYPE ZESAPMM054S.
DATA:LV_PSPHI TYPE PRPS-PSPHI.
LOOP AT PR_ITEM INTO LS_ITEM.
LS_COMP-ACTIVITY = '0010'.
LS_COMP-ITEM_CAT = 'L'.
LS_COMP-TYPE_OF_PUR_RESV = '5'.
LS_COMP-MATERIAL = LS_ITEM-MATERIAL."'000000000088880012'. "物料
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = LS_COMP-MATERIAL
IMPORTING
OUTPUT = LS_COMP-MATERIAL.
LS_COMP-ENTRY_QUANTITY = LS_ITEM-QUANTITY. "数量
LS_COMP-BASE_UOM = LS_ITEM-UNIT. "计量单位
"LS_COMP-REQ_DATE = LS_ITEM-PREQ_DATE."需求日期
LS_COMP-REQ_DATE = LS_ITEM-DELIV_DATE.
LS_COMP-PRICE = LS_ITEM-PREQ_PRICE."价格
LS_COMP-PUR_GROUP = LS_ITEM-PUR_GROUP."采购组
"LS_COMP-PURCH_ORG = '1046'."采购组织
APPEND LS_COMP TO LT_COMP.
ENDLOOP.
LOOP AT PR_ACCOUNT INTO REC_PRACCOUNT.
ENDLOOP.
GT_NETWORK-NETWORK = '100000000001'.
GT_NETWORK-NETWORK_TYPE = 'Z180'.
GT_NETWORK-PLANT = LS_ITEM-PLANT. "工厂
GT_NETWORK-WBS_ELEMENT = REC_PRACCOUNT-WBS_ELEMENT.
GT_NETWORK-MRP_CONTROLLER = '006'.
"GT_NETWORK-PROJECT_DEFINITION = 'T2101300000000000'.
CALL FUNCTION 'CONVERSION_EXIT_ABPSN_INPUT'
EXPORTING
INPUT = REC_PRACCOUNT-WBS_ELEMENT
IMPORTING
OUTPUT = REC_PRACCOUNT-WBS_ELEMENT.
SELECT SINGLE POST1 INTO GT_NETWORK-SHORT_TEXT
FROM PRPS
WHERE POSID = REC_PRACCOUNT-WBS_ELEMENT.
SELECT SINGLE PSPHI INTO LV_PSPHI
FROM PRPS
WHERE POSID = REC_PRACCOUNT-WBS_ELEMENT.
SELECT SINGLE PSPID INTO GT_NETWORK-PROJECT_DEFINITION
FROM PROJ
WHERE PSPNR = LV_PSPHI.
GT_NETWORK-PRIORITY = 'W'.
APPEND GT_NETWORK.
GT_METHOD_PROJECT-REFNUMBER = '000001'.
GT_METHOD_PROJECT-OBJECTTYPE = 'NETWORK'.
GT_METHOD_PROJECT-METHOD = 'CREATE'.
GT_METHOD_PROJECT-OBJECTKEY = '100000000001'.
APPEND GT_METHOD_PROJECT.
GT_METHOD_PROJECT-REFNUMBER = '00000'.
GT_METHOD_PROJECT-OBJECTTYPE = ''.
GT_METHOD_PROJECT-METHOD = 'SAVE'.
GT_METHOD_PROJECT-OBJECTKEY = ''.
APPEND GT_METHOD_PROJECT.
CLEAR GS_RETURN.
CALL FUNCTION 'BAPI_NETWORK_MAINTAIN'
IMPORTING
RETURN = GS_RETURN
TABLES
I_METHOD_PROJECT = GT_METHOD_PROJECT[]
I_NETWORK = GT_NETWORK[]
" I_ACTIVITY = GT_ACTIVITY[]
E_MESSAGE_TABLE = GT_MESSAGE_TABLE[].
IF GS_RETURN-TYPE = 'E' OR GS_RETURN-TYPE = 'A'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ROLLBACK WORK.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
ENDIF.
***添加工作
REFRESH GT_METHOD_PROJECT.
REFRESH GT_NETWORK[].
REFRESH GT_ACTIVITY[].
READ TABLE GT_MESSAGE_TABLE WITH KEY METHOD = 'Create' OBJECT_TYPE = 'Network'.
CONCATENATE GT_MESSAGE_TABLE-INTERNAL_OBJECT_ID '0010' INTO L_OBJECTKEY.
GT_METHOD_PROJECT-REFNUMBER = '000001'.
GT_METHOD_PROJECT-OBJECTTYPE = 'NETWORKACTIVITY'.
GT_METHOD_PROJECT-METHOD = 'CREATE'.
GT_METHOD_PROJECT-OBJECTKEY = L_OBJECTKEY.
APPEND GT_METHOD_PROJECT.
GT_METHOD_PROJECT-REFNUMBER = ''.
GT_METHOD_PROJECT-OBJECTTYPE = ''.
GT_METHOD_PROJECT-METHOD = 'SAVE'.
GT_METHOD_PROJECT-OBJECTKEY = ''.
APPEND GT_METHOD_PROJECT.
GT_ACTIVITY-NETWORK = GT_MESSAGE_TABLE-INTERNAL_OBJECT_ID.
GT_ACTIVITY-ACTIVITY ='0010'.
"GT_ACTIVITY-WORK_ACTIVITY = ''.
GT_ACTIVITY-CONTROL_KEY = 'PS01'.
GT_ACTIVITY-DESCRIPTION = '物资采购'.
APPEND GT_ACTIVITY.
* GT_NETWORK-NETWORK = GT_MESSAGE_TABLE-INTERNAL_OBJECT_ID..
* GT_NETWORK-NETWORK_TYPE = 'Z180'.
* GT_NETWORK-PLANT = '2802'.
* GT_NETWORK-MRP_CONTROLLER = '006'.
* GT_NETWORK-SHORT_TEXT = '123'.
* GT_NETWORK-PROJECT_DEFINITION = 'T2101300000000000'.
* GT_NETWORK-WBS_ELEMENT = 'T-21013'.
* GT_NETWORK-PRIORITY = 'W'.
* APPEND GT_NETWORK.
WAIT UP TO 1 SECONDS.
CLEAR GS_RETURN.
CALL FUNCTION 'BAPI_NETWORK_MAINTAIN'
IMPORTING
RETURN = GS_RETURN
TABLES
I_METHOD_PROJECT = GT_METHOD_PROJECT[]
I_NETWORK = GT_NETWORK[]
I_ACTIVITY = GT_ACTIVITY[]
E_MESSAGE_TABLE = GT_MESSAGE_TABLE[].
IF GS_RETURN-TYPE = 'E' OR GS_RETURN-TYPE = 'A'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ROLLBACK WORK.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
ENDIF.
WAIT UP TO 1 SECONDS.
LV_NETWORK = GT_MESSAGE_TABLE-INTERNAL_OBJECT_ID+0(12).
CALL FUNCTION 'BAPI_NETWORK_COMP_ADD'
EXPORTING
NUMBER = LV_NETWORK
IMPORTING
RETURN = LS_RETURN
TABLES
I_COMPONENTS_ADD = LT_COMP
E_MESSAGE_TABLE = LT_MESSAGE.
READ TABLE LT_MESSAGE INTO LS_MESSAGE WITH KEY MESSAGE_TYPE = 'E'.
IF SY-SUBRC NE 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
"BREAK-POINT.
SELECT SINGLE BANFN INTO SAP_PR_ID
FROM EBKN
WHERE NPLNR = LV_NETWORK.
DATA:LT_EBAN1 TYPE TABLE OF EBAN.
DATA:LS_EBAN1 TYPE EBAN.
SELECT * INTO CORRESPONDING FIELDS OF TABLE LT_EBAN1
FROM EBAN
WHERE BANFN = SAP_PR_ID.
LOOP AT LT_EBAN1 INTO LS_EBAN1.
READ TABLE PR_ITEM INTO LS_ITEM WITH KEY PREQ_ITEM = LS_EBAN1-BNFPO.
IF SY-SUBRC EQ 0 .
LS_EBAN1-ZWYSBM = LS_ITEM-ZWYSBM.
ENDIF.
MODIFY LT_EBAN1 FROM LS_EBAN1 INDEX SY-TABIX.
ENDLOOP.
IF LT_EBAN1[] IS NOT INITIAL.
MODIFY EBAN FROM TABLE LT_EBAN1 .
COMMIT WORK AND WAIT .
ENDIF.
IF SAP_PR_ID IS NOT INITIAL.
DATA: LV_AUFNR TYPE BAPI_NETWORK_LIST-NETWORK,
LV_SYS_STATUS TYPE BAPI_SYSTEM_STATUS-SYSTEM_STATUS,
" LS_RETURN1 TYPE BAPIRETURN1,
es_return TYPE BAPIRETURN1,
LT_RESULT TYPE TABLE OF BAPI_STATUS_RESULT,
LV_MESSAGE TYPE STRING.
CLEAR: ES_RETURN.
LV_AUFNR = LV_NETWORK.
LV_SYS_STATUS = 'REL'.
CALL FUNCTION 'BAPI_PS_INITIALIZATION'.
CALL FUNCTION 'BAPI_BUS2002_SET_STATUS'
EXPORTING
NUMBER = LV_AUFNR
* UNDO_SYSTEM_STATUS =
* UNDO_USER_STATUS =
SET_SYSTEM_STATUS = LV_SYS_STATUS
* SET_USER_STATUS =
IMPORTING
RETURN = ES_RETURN
TABLES
* I_ACTIVITY_SYSTEM_STATUS =
* I_ACTIVITY_USER_STATUS =
E_RESULT = LT_RESULT.
IF ES_RETURN-TYPE CA 'AEX'.
LV_MESSAGE = ES_RETURN-MESSAGE.
ENDIF.
IF LV_MESSAGE IS INITIAL.
CALL FUNCTION 'BAPI_PS_PRECOMMIT'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
CODE = 'S'.
MESSAGE = '项目采购申请创建是成功'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
"IF IV_POPUP_FLAG = 'X'.
CODE = 'E'.
MESSAGE = '网络下达失败'.
"ENDIF.
ENDIF.
* CODE = 'S'.
* MESSAGE = '项目采购申请创建是成功'.
ELSE.
CODE = 'E'.
MESSAGE = '项目采购申请创建失败'.
ENDIF.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ROLLBACK WORK.
CODE = 'E'.
MESSAGE = LS_MESSAGE-MESSAGE_TEXT.
ENDIF.
ENDIF.
ENDIF.