PS 创建网络 工作 组件


**创建网络
      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.
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值