Registration

Dear SAP Community Member,
In order to fully benefit from what the SAP Community has to offer, please register at:
http://scn.sap.com
Thank you,
The SAP Community team.
Skip to end of metadata
Go to start of metadata
Error rendering macro 'code': Invalid value specified for parameter 'lang'
DESCRIPTION: PLANT MAINTENANCE NETWORK UPDATE PROGRAM ************************************************************************
* 1/ Report Name: UPDATE NETWORK FROM ORDER
************************************************************************
* REPORT ZMROB_UPDATE_NETWORK.
************************************************************************
* 2/ Description/ Program functions:
* This program will sum up the planned work, actual work of the orders
* under activity and update the Network - Activity data with that value.
* The Network - Activity data will also be updated with the earliest
* start date and latest finish date of the the orders of Network -
* Activity.
************************************************************************
REPORT ZMROB_UPDATE_NETWORK MESSAGE-ID ZGEN_EWS_MESSAGES
                             NO STANDARD PAGE HEADING.
************************************************************************
* Table Declarations                                                   *
************************************************************************
TABLES : AUFK,   "Order master data
         AFVC,   "Operation within an order
         PROJ.   "Project definition
************************************************************************
*INCLUDE PROGRAM
************************************************************************
*INCLUDE ZIF_ROUTINES.
************************************************************************
*CONSTANTS
************************************************************************
CONSTANTS: C_AUTYP_20 LIKE AUFK-AUTYP VALUE '20', "Order Cat for Network
           C_AUTYP_30 LIKE AUFK-AUTYP VALUE '30', "Order Cat for Order
           C_ONLY_ACTIVE TYPE  XFELD VALUE 'X',   "Only Active flag
           C_SPRAS LIKE SY-LANGU VALUE 'E',       "Logon Language
           C_REL(3) VALUE 'REL',                  "Released Network
           C_CNF(3) VALUE 'CNF',                  "Status Confirmed
           C_X(1) VALUE 'X',                      "Flag
           C_UPDATE VALUE 'A',               "Update in Call transaction
           C_TCODE LIKE TSTC-TCODE VALUE 'CN22',  "Transaction code
           C_A LIKE CRHD-OBJTY VALUE 'A',         "Object type
           C_CONV_FACT(4) TYPE P DECIMALS 2 VALUE '1.00',  "Conv. factor
           C_COMMA(1) VALUE ',',                   "Comma
           C_SPACE(1) VALUE ' '.                   "Space
************************************************************************
*PROGRAM VARIABLES
************************************************************************
DATA: V_LINE LIKE  BSVX-STTXT,    "Line
      V_MODE VALUE 'N',           "Mode in Call transaction
      V_TEXT(50),                 "Error Text
      V_NETWRK TYPE I,            "Number of network
      V_NETWRK_UPD TYPE I,        "Number of network updated
      V_REPID  LIKE SY-REPID,     "Current program ID
      V_TITLE  LIKE SY-TITLE.     "Current program name
************************************************************************
*INTERNAL TABLES
************************************************************************
* To store valid networks retrieved according to the values entered in
* the selection screen as search criteria
DATA: BEGIN OF I_NETWORK OCCURS 0,
          AUFNR LIKE AUFK-AUFNR,      "Network Number
          OBJNR LIKE AUFK-OBJNR,      "Object Number
          VAPLZ LIKE AUFK-VAPLZ,      "Work center
          WAWRK LIKE AUFK-WAWRK,      "Plant
          AUFPL LIKE AFKO-AUFPL,      "Routing Number
          AUFNT LIKE AFKO-AUFNT,      "Super network
      END OF I_NETWORK.
* To store networks entered in the selection screen
DATA: BEGIN OF I_SEL_NETWORK OCCURS 0,
          AUFNR LIKE AUFK-AUFNR,      "Network number
      END OF I_SEL_NETWORK.
* To store valid activity retrieved according to the values entered in
* the selection screen as per search criteria
DATA: BEGIN OF I_SEL_ACTIVITY OCCURS 0,
          VORNR LIKE AFVC-VORNR,      "Operation number
      END OF I_SEL_ACTIVITY.
* To store activity entered in the selection screen
DATA: BEGIN OF I_SEL_ACTVT OCCURS 0,
          VORNR LIKE AFVC-VORNR,      "Operation number
      END OF I_SEL_ACTVT.
* To store valid orders retrieved according to the values entered in
* the selection screen as per search criteria
DATA: BEGIN OF I_SEL_ORDER OCCURS 0,
          AUFNR LIKE AUFK-AUFNR,      "Order Number
      END OF I_SEL_ORDER.
* To store orders entered in the selection screen
DATA: BEGIN OF I_SEL_ORD OCCURS 0,
          AUFNR LIKE AUFK-AUFNR,      "Order Number
      END OF I_SEL_ORD.
* To store valid plant retrieved according to the values entered in
* the selection screen as per search criteria
DATA: BEGIN OF I_SEL_PLANT OCCURS 0,
          WERKS LIKE T001W-WERKS,    "Plant
      END OF I_SEL_PLANT.
* To store plant entered in the selection screen
DATA: BEGIN OF I_SEL_PLNT OCCURS 0,
          WERKS LIKE T001W-WERKS,    "Plant
      END OF I_SEL_PLNT.
* To store valid control key retrieved according to the values
* entered in the selection screen as per search criteria
DATA: BEGIN OF I_SEL_CTLKY OCCURS 0,
          STEUS LIKE T430-STEUS,     "Control key
      END OF I_SEL_CTLKY.
* To store control key entered in the selection screen
DATA: BEGIN OF I_SEL_CTRLKEY OCCURS 0,
          STEUS LIKE T430-STEUS,      "Control key
      END OF I_SEL_CTRLKEY.
* To store valid sub networks with plants, work center
DATA: BEGIN OF I_SUB_NETWORK OCCURS 0,
          AUFNR LIKE AUFK-AUFNR,      "Network
          OBJNR LIKE AUFK-OBJNR,      "Object Number
          VAPLZ LIKE AUFK-VAPLZ,      "Work center
          WAWRK LIKE AUFK-WAWRK,      "Plant
          AUFPL LIKE AFKO-AUFPL,      "Routing Number
          AUFNT LIKE AFKO-AUFNT,      "Super Network
      END OF I_SUB_NETWORK.
* To store valid super networks
DATA: BEGIN OF I_SUP_NETWORK OCCURS 0,
          AUFNR LIKE AUFK-AUFNR,      "Network
          OBJNR LIKE AUFK-OBJNR,      "Object Number
          VAPLZ LIKE AUFK-VAPLZ,      "Work Center
          WAWRK LIKE AUFK-WAWRK,      "Plant
          AUFPL LIKE AFKO-AUFPL,      "Routing Number
          AUFNT LIKE AFKO-AUFNT,      "Super network
      END OF I_SUP_NETWORK.
* To store valid plants
DATA: BEGIN OF I_PLANT OCCURS 0,
        AUFNR LIKE AUFK-AUFNR,        "Network
        VAPLZ LIKE AUFK-VAPLZ,        "Work Center
        WAWRK LIKE AUFK-WAWRK,        "Plant
      END OF I_PLANT.
*To store sub networks of super networks entered in selection screen
DATA: BEGIN OF I_TEMP_SUBNET OCCURS 0,
        AUFNR LIKE AFKO-AUFNR,        "Network
        AUFPL LIKE AFKO-AUFPL,        "Routing Number
        AUFNT LIKE AFKO-AUFNT,        "Super Network
        OBJNR LIKE AUFK-OBJNR,        "Object Number
      END OF I_TEMP_SUBNET.
*To store activities of the selected netwroks
DATA: BEGIN OF I_ACTIVITY OCCURS 0,
        AUFPL LIKE AFVC-AUFPL,        "Routing Number
        APLZL LIKE AFVC-APLZL,        "Counter for Order
        VORNR LIKE AFVC-VORNR,        "Operation Number
        ARBID LIKE AFVC-ARBID,        "Object ID of the resource
      END OF I_ACTIVITY.
*To store activities under the networks
DATA: BEGIN OF I_NET_ACTIVITY OCCURS 0,
        AUFNR LIKE AFKO-AUFNR,        "Network
        AUFPL LIKE AFVC-AUFPL,        "Routing Number
        APLZL LIKE AFVC-APLZL,        "Counter for Order
        VORNR LIKE AFVC-VORNR,        "Operation Number
      END OF I_NET_ACTIVITY.
*To store orders of the selected netwroks - activities
DATA : BEGIN OF I_ORDER OCCURS 0,
         AUFNR LIKE AFKO-AUFNR,      "Order Number
         AUFPL LIKE AFKO-AUFPL,      "Routing Number
         AUFNT LIKE AFKO-AUFNT,      "Super Network
         AUFPT LIKE AFKO-AUFPT,      "Routing no of operations
         APLZT LIKE AFKO-APLZT,      "General counter for Order
       END OF I_ORDER.
*To store orders under network - activities
DATA : BEGIN OF I_NET_ACT_ORDER OCCURS 0,
         AUFNR LIKE AFKO-AUFNT,      "Network
         AUFPT LIKE AFKO-AUFPT,      "Routing Number for Network
         APLZT LIKE AFKO-APLZT,      "General Counter for Order
         VORNR LIKE AFVC-VORNR,      "Activity
         ORDNO LIKE AFKO-AUFNR,      "Order Number
         AUFPL LIKE AFKO-AUFPL,      "Routing number for Order Operation
       END OF I_NET_ACT_ORDER.
*To store planned work, actual work, start date and finish date of
*operations under orders
DATA : BEGIN OF I_PLANNED_WORK OCCURS 0,
         AUFPL LIKE AFVV-AUFPL,      "Routing Number for Order Operation
         APLZL LIKE AFVV-APLZL,      "General counter for Order
         ARBEI LIKE AFVV-ARBEI,      "Planned work
         ISMNW LIKE AFVV-ISMNW,      "Actual work
         ISDD LIKE AFVV-ISDD,        "Start date
         IEDD LIKE AFVV-IEDD,         "End date
      END OF I_PLANNED_WORK.
*To store planned work, actual work, start date and finish date of
*orders under network-activities
DATA : BEGIN OF I_NET_ACT_ORD_WORK OCCURS 0,
         AUFNR LIKE AFKO-AUFNR,       "Network
         VORNR LIKE AFVC-VORNR,       "Activity
         ORDNO LIKE AFKO-AUFNR,       "Order
         ARBEI LIKE AFVV-ARBEI,       "Planned work
         ISMNW LIKE AFVV-ISMNW,       "Actual work
         ISDD LIKE AFVV-ISDD,         "Start date
         IEDD LIKE AFVV-IEDD,         "End date
         CNF_FLAG(1),                 "Confirmation flag
      END OF I_NET_ACT_ORD_WORK.
*To store planned work, actual work, start date and finish date of
*activities under network
DATA : BEGIN OF I_NET_ACT_WORK OCCURS 0,
         AUFNR LIKE AFKO-AUFNR,        "Network
         VORNR LIKE AFVC-VORNR,        "Activity
         ARBEI LIKE AFVV-ARBEI,        "Planned work
         ISMNW LIKE AFVV-ISMNW,        "Actual work
         ISDD  LIKE AFVV-ISDD,         "Start date
         IEDD  LIKE AFVV-IEDD,         "End date
         DAUNO LIKE AFVGD-DAUNO,       "Normal Duration
         VAPLZ LIKE AUFK-VAPLZ,        "Work center
         WAWRK LIKE AUFK-WAWRK,        "Plant
         CNF_FLAG(1),                  "Confirmation Flag
      END OF I_NET_ACT_WORK.
*To store object numbers of operations
DATA: BEGIN OF I_OBJNR OCCURS 0,
        AUFPL LIKE AFVC-AUFPL,         "Routing number of operations
        APLZL LIKE AFVC-APLZL,         "General counter for orde
        OBJNR LIKE AFVC-OBJNR,         "Object number
        CNF_FLAG(1),                   "Confirmation flag
      END OF I_OBJNR.
*To store actual work, start date and end date of activities
* under network
DATA : I_NET_ACT_ACTUAL_WRK LIKE CONFCO OCCURS 0 WITH HEADER LINE.
*To store success message of the function module
*CO_RI_CONFIRMATION_CREATE
DATA : I_CONF_SUCCESS LIKE CONFCO OCCURS 0 WITH HEADER LINE.
*To store errors
DATA : I_ERROR_COST LIKE CONFER OCCURS 0 WITH HEADER LINE.
*To store object id of activities
DATA: BEGIN OF I_ARBID OCCURS 0,
        OBJID LIKE CRHD-OBJID,        "Object ID of resource
      END OF I_ARBID.
* To store Actual work for activities
DATA: BEGIN OF I_ACTVT_ACT_WRK OCCURS 0,
        AUFPL LIKE AFVV-AUFPL,        "Routing No
        APLZL LIKE AFVV-APLZL,        "Counter for Order
        ISMNW LIKE AFVV-ISMNW,        "Actual Work
      END OF I_ACTVT_ACT_WRK.
*To store Actual work for network - activities
DATA: BEGIN OF I_NET_ACTVT_ACT_WRK OCCURS 0,
        AUFNR LIKE AFKO-AUFNR,        "Network
        AUFPL LIKE AFVC-AUFPL,        "Routing Number
        APLZL LIKE AFVC-APLZL,        "Counter for Order
        VORNR LIKE AFVC-VORNR,        "Operation Number
        ISMNW LIKE AFVV-ISMNW,        "Actual Work
      END OF I_NET_ACTVT_ACT_WRK.
*To store BDC data
DATA : I_BDC_TAB LIKE STANDARD TABLE OF BDCDATA
       INITIAL SIZE 6 WITH HEADER LINE.
*To store messages of Call transaction of a particular network
DATA: I_MSG_TAB LIKE STANDARD TABLE OF BDCMSGCOLL WITH HEADER LINE.
*To store messages of Call transaction of all networks
DATA: I_TEMP_MSG_TAB LIKE I_MSG_TAB OCCURS 0 WITH HEADER LINE.
*To store errors of the function module CO_RI_CONFIRMATION_CREATE
DATA: I_FUNC_ERROR LIKE CONFER OCCURS 0 WITH HEADER LINE.
*To Display the errors
DATA: BEGIN OF I_ERR_REPORT OCCURS 0,
        AUFNR LIKE AUFK-AUFNR,          "Network Number
        VORNR LIKE AFVC-VORNR,          "Activity
        MSGTXT(100),                    "Error message text
      END OF I_ERR_REPORT.
************************************************************************
*SELECTION SCREEN
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001. "Selection
"screen
"for
"Updating
"Network
"from
"Orders
SELECTION-SCREEN SKIP.
* Network
SELECT-OPTIONS S_NETWRK FOR AUFK-AUFNR  MATCHCODE OBJECT AUKO.
SELECTION-SCREEN SKIP.
* Activity
SELECT-OPTIONS S_ACTVT FOR AFVC-VORNR MATCHCODE OBJECT VGN.
SELECTION-SCREEN SKIP.
* Order
SELECT-OPTIONS S_ORDER FOR AUFK-AUFNR MATCHCODE OBJECT ORDE.
SELECTION-SCREEN SKIP.
* Plant
SELECT-OPTIONS S_PLANT FOR PROJ-WERKS.
SELECTION-SCREEN SKIP.
* Control key
SELECT-OPTIONS S_CTLKY FOR AFVC-STEUS.
SELECTION-SCREEN SKIP.
* Checkbox for Planned, Actual, Update Duration
PARAMETERS : CB_PLAN AS CHECKBOX DEFAULT C_X,
             CB_ACTL AS CHECKBOX,
             CB_UPDUR AS CHECKBOX.
SELECTION-SCREEN SKIP.
* Conversion Factor
PARAMETERS : P_CVFACT(4) TYPE P DECIMALS 2 DEFAULT C_CONV_FACT.
SELECTION-SCREEN END OF BLOCK B1.
************************************************************************
*AT SELECTION SCREEN
************************************************************************
AT SELECTION-SCREEN.
* Validate the check boxes Planned and Actual
  PERFORM SUB_VALIDATE_PLANNED.
* Validate the checkbox Update Duration and Conversion factor
  PERFORM SUB_VALIDATE_CONV_FACT.
* Validate Network
AT SELECTION-SCREEN ON S_NETWRK.
  PERFORM SUB_VALIDATE_NETWORK.
* Validate Activity
AT SELECTION-SCREEN ON S_ACTVT.
  PERFORM SUB_VALIDATE_ACTVT.
* Validate Order
AT SELECTION-SCREEN ON S_ORDER.
  PERFORM SUB_VALIDATE_ORDER.
* Validate Plant
AT SELECTION-SCREEN ON S_PLANT.
  PERFORM SUB_VALIDATE_PLANT.
* Validate Control key
AT SELECTION-SCREEN ON S_CTLKY.
  PERFORM SUB_VALIDATE_CTLKY.
************************************************************************
*INITIALIZATION
************************************************************************
* To clear all program variables
  PERFORM SUB_CLEAR_ALL_VARIABLES.
* To clear all internal tables
  PERFORM SUB_CLEAR_ALL_INT_TABLES.
* To refresh all internal tables
  PERFORM SUB_REFRESH_ALL_INT_TABLES.
************************************************************************
*TOP OF PAGE
************************************************************************
TOP-OF-PAGE.
  V_REPID = SY-REPID.      "Report ID
  V_TITLE = SY-TITLE.      "Report Title
* To display report header
*  PERFORM REPORT_HEADER USING V_REPID V_TITLE.
************************************************************************
*START OF SELECTION
************************************************************************
START-OF-SELECTION.
* Retrieve Planned work, Actual Work data for Network-Activity
  PERFORM SUB_EXTRACT_DATA.
* Fill BDC table and do Call transaction CN22 when planned checkbox is
* checked
  IF NOT CB_PLAN IS INITIAL.
    PERFORM SUB_FILL_BDC_TAB.
  ENDIF.
* Update actual work, earliest start date, latest finish date
* and confirmation flag when actual checkbox is checked
  IF NOT CB_ACTL IS INITIAL.
    PERFORM SUB_UPDATE_ACT_WORK.
  ENDIF.
************************************************************************
*END OF SELECTION
************************************************************************
END-OF-SELECTION.
*write selection screen details in output report
* PERFORM SELECTION_SCREEN_REPORT .
* Display Audit report
  PERFORM SUB_AUDIT_REPORT.
* Display Error report
  PERFORM SUB_ERROR_REPORT.
*write report footer
* PERFORM REPORT_FOOTER.
************************************************************************
* FORM            SUB_VALIDATE_PLANNED
************************************************************************
* DESCRIPTION:    Validate whether atleast one of the check boxes
*                 Planned and Actual is checked
*
************************************************************************
* CALLED BY:      ZMROB_UPDATE_NETWORK
* CALLS....:
************************************************************************
FORM SUB_VALIDATE_PLANNED.
  IF CB_PLAN IS INITIAL AND CB_ACTL IS INITIAL.
    MESSAGE E035 WITH
      'At least one Planned or Actual has to be checked'(008).
  ENDIF.
ENDFORM.                    " SUB_VALIDATE_PLANNED
************************************************************************
* ENDFORM      SUB_VALIDATE_PLANNED
************************************************************************
************************************************************************
* FORM            SUB_VALIDATE_CONV_FACT
************************************************************************
* DESCRIPTION:    Validate field Conversion factor when the checkbox
*                 Update Duration is checked
************************************************************************
* CALLED BY:      ZMROB_UPDATE_NETWORK
* CALLS....:
************************************************************************
FORM SUB_VALIDATE_CONV_FACT.
  IF NOT CB_UPDUR IS INITIAL.
    IF P_CVFACT IS INITIAL.
      MESSAGE E035 WITH 'Conversion factor field cannot be blank'(007).
    ELSEIF P_CVFACT %LT= 0.
      MESSAGE E035 WITH
            'Conversion factor cannot be ZERO or NEGATIVE'(015).
    ENDIF.
  ENDIF.
ENDFORM.                    " SUB_VALIDATE_CONV_FACT
************************************************************************
* ENDFORM      SUB_VALIDATE_CONV_FACT
************************************************************************
************************************************************************
* FORM            SUB_VALIDATE_NETWORK
************************************************************************
* DESCRIPTION:    Validate Network
*
************************************************************************
* CALLED BY:      ZMROB_UPDATE_NETWORK
* CALLS....:
************************************************************************
FORM SUB_VALIDATE_NETWORK.
  CLEAR I_SEL_NETWORK.
  REFRESH I_SEL_NETWORK.
* Select the relevant network, Object number, Work center, Plant,
* Routing Number and Super netwok number from AUFK and AFKO based on
* the selection criteria
  SELECT AUFK~AUFNR AUFK~OBJNR AUFK~VAPLZ AUFK~WAWRK
         AFKO~AUFPL AFKO~AUFNT
  INTO TABLE I_NETWORK
  FROM AFKO INNER JOIN AUFK
  ON AFKO~AUFNR = AUFK~AUFNR
  WHERE AUFK~AUFNR IN S_NETWRK
    AND AUFK~AUTYP = C_AUTYP_20.
  READ TABLE S_NETWRK INDEX 1.
  IF SY-SUBRC = 0.
    IF S_NETWRK-HIGH IS INITIAL.
      LOOP AT S_NETWRK.
        I_SEL_NETWORK-AUFNR = S_NETWRK-LOW.
        APPEND I_SEL_NETWORK.
        CLEAR I_SEL_NETWORK.
      ENDLOOP.
    ELSE.
      I_SEL_NETWORK-AUFNR = S_NETWRK-LOW.
      APPEND I_SEL_NETWORK.
      CLEAR I_SEL_NETWORK.
      I_SEL_NETWORK-AUFNR = S_NETWRK-HIGH.
      APPEND I_SEL_NETWORK.
      CLEAR I_SEL_NETWORK.
    ENDIF.
  ENDIF.
  SORT I_NETWORK BY AUFNR.
  LOOP AT I_SEL_NETWORK.
    READ TABLE I_NETWORK WITH KEY AUFNR = I_SEL_NETWORK-AUFNR
                              BINARY SEARCH.
    IF SY-SUBRC %LT%GT 0.
      MESSAGE E035 WITH 'Invalid Network'(002).
    ENDIF.
  ENDLOOP.
  CLEAR I_SEL_NETWORK.
  REFRESH I_SEL_NETWORK.
ENDFORM.                    " SUB_VALIDATE_NETWORK
************************************************************************
* ENDFORM      SUB_VALIDATE_NETWORK
************************************************************************
************************************************************************
* FORM            SUB_VALIDATE_ACTVT
************************************************************************
* DESCRIPTION:    Validate Activity
*
************************************************************************
* CALLED BY:      ZMROB_UPDATE_NETWORK
* CALLS....:
************************************************************************
FORM SUB_VALIDATE_ACTVT.
  CLEAR I_SEL_ACTVT.
  REFRESH I_SEL_ACTVT.
* Select the relevant activity from AFVC based on the selection criteria
  SELECT VORNR
  INTO TABLE I_SEL_ACTIVITY
  FROM AFVC
  WHERE VORNR IN S_ACTVT.
  READ TABLE S_ACTVT INDEX 1.
  IF SY-SUBRC = 0.
    IF S_ACTVT-HIGH IS INITIAL.
      LOOP AT S_ACTVT.
        I_SEL_ACTVT-VORNR = S_ACTVT-LOW.
        APPEND I_SEL_ACTVT.
        CLEAR I_SEL_ACTVT.
      ENDLOOP.
    ELSE.
      I_SEL_ACTVT-VORNR = S_ACTVT-LOW.
      APPEND I_SEL_ACTVT.
      CLEAR I_SEL_ACTVT.
      I_SEL_ACTVT-VORNR = S_ACTVT-HIGH.
      APPEND I_SEL_ACTVT.
      CLEAR I_SEL_ACTVT.
    ENDIF.
  ENDIF.
  SORT I_SEL_ACTIVITY BY VORNR.
  LOOP AT I_SEL_ACTVT.
    READ TABLE I_SEL_ACTIVITY WITH KEY VORNR = I_SEL_ACTVT-VORNR
                              BINARY SEARCH.
    IF SY-SUBRC %LT%GT 0.
      MESSAGE E035 WITH 'Invalid Activity'(003).
    ENDIF.
  ENDLOOP.
  CLEAR: I_SEL_ACTVT, I_SEL_ACTIVITY.
  REFRESH: I_SEL_ACTVT, I_SEL_ACTIVITY.
ENDFORM.                    " SUB_VALIDATE_ACTVT
************************************************************************
* ENDFORM      SUB_VALIDATE_ACTVT
************************************************************************
************************************************************************
* FORM            SUB_VALIDATE_ORDER
************************************************************************
* DESCRIPTION:    Validate Order
*
************************************************************************
* CALLED BY:      ZMROB_UPDATE_NETWORK
* CALLS....:
************************************************************************
FORM SUB_VALIDATE_ORDER.
  CLEAR I_SEL_ORD.
  REFRESH I_SEL_ORD.
* Select the relevant order from AUFK based on the selection criteria
  SELECT AUFNR
  INTO TABLE I_SEL_ORDER
  FROM AUFK
  WHERE AUFNR IN S_ORDER
    AND AUTYP = C_AUTYP_30.
  READ TABLE S_ORDER INDEX 1.
  IF SY-SUBRC = 0.
    IF S_ORDER-HIGH IS INITIAL.
      LOOP AT S_ORDER.
        I_SEL_ORD-AUFNR = S_ORDER-LOW.
        APPEND I_SEL_ORD.
        CLEAR I_SEL_ORD.
      ENDLOOP.
    ELSE.
      I_SEL_ORD-AUFNR = S_ORDER-LOW.
      APPEND I_SEL_ORD.
      CLEAR I_SEL_ORD.
      I_SEL_ORD-AUFNR = S_ORDER-HIGH.
      APPEND I_SEL_ORD.
      CLEAR I_SEL_ORD.
    ENDIF.
  ENDIF.
  SORT I_SEL_ORDER BY AUFNR.
  LOOP AT I_SEL_ORD.
    READ TABLE I_SEL_ORDER WITH KEY AUFNR = I_SEL_ORD-AUFNR
                              BINARY SEARCH.
    IF SY-SUBRC %LT%GT 0.
      MESSAGE E035 WITH ' Invalid Order'(004).
    ENDIF.
  ENDLOOP.
  CLEAR: I_SEL_ORD, I_SEL_ORDER.
  REFRESH: I_SEL_ORD, I_SEL_ORDER.
ENDFORM.                    " SUB_VALIDATE_ORDER
************************************************************************
* ENDFORM      SUB_VALIDATE_ORDER
************************************************************************
************************************************************************
* FORM            SUB_VALIDATE_PLANT
************************************************************************
* DESCRIPTION:    Validate Plant
*
************************************************************************
* CALLED BY:      ZMROB_UPDATE_NETWORK
* CALLS....:
************************************************************************
FORM SUB_VALIDATE_PLANT.
  CLEAR I_SEL_PLNT.
  REFRESH I_SEL_PLNT.
* Select the relevant plant from T001W based on the selection criteria
  SELECT WERKS
  INTO TABLE I_SEL_PLANT
  FROM T001W
  WHERE WERKS IN S_PLANT.
  READ TABLE S_PLANT INDEX 1.
  IF SY-SUBRC = 0.
    IF S_PLANT-HIGH IS INITIAL.
      LOOP AT S_PLANT.
        I_SEL_PLNT-WERKS = S_PLANT-LOW.
        APPEND I_SEL_PLNT.
        CLEAR I_SEL_PLNT.
      ENDLOOP.
    ELSE.
      I_SEL_PLNT-WERKS = S_PLANT-LOW.
      APPEND I_SEL_PLNT.
      CLEAR I_SEL_PLNT.
      I_SEL_PLNT-WERKS = S_PLANT-HIGH.
      APPEND I_SEL_PLNT.
      CLEAR I_SEL_PLNT.
    ENDIF.
  ENDIF.
  SORT I_SEL_PLANT BY WERKS.
  LOOP AT I_SEL_PLNT.
    READ TABLE I_SEL_PLANT WITH KEY WERKS = I_SEL_PLNT-WERKS
                              BINARY SEARCH.
    IF SY-SUBRC %LT%GT 0.
      MESSAGE E035 WITH 'Invalid Plant'(005).
    ENDIF.
  ENDLOOP.
  CLEAR: I_SEL_PLNT, I_SEL_PLANT.
  REFRESH: I_SEL_PLNT, I_SEL_PLANT.
ENDFORM.                    " SUB_VALIDATE_PLANT
************************************************************************
* ENDFORM      SUB_VALIDATE_PLANT
************************************************************************
************************************************************************
* FORM            SUB_VALIDATE_CTLKY
************************************************************************
* DESCRIPTION:    Validate Control key
*
************************************************************************
* CALLED BY:      ZMROB_UPDATE_NETWORK
* CALLS....:
************************************************************************
FORM SUB_VALIDATE_CTLKY.
  CLEAR I_SEL_CTRLKEY.
  REFRESH I_SEL_CTRLKEY.
* Select the relevant control key from T430 based on the selection
* criteria
  SELECT STEUS
  INTO TABLE I_SEL_CTLKY
  FROM T430
  WHERE STEUS IN S_CTLKY.
  READ TABLE S_CTLKY INDEX 1.
  IF SY-SUBRC = 0.
    IF S_CTLKY-HIGH IS INITIAL.
      LOOP AT S_CTLKY.
        I_SEL_CTRLKEY-STEUS = S_CTLKY-LOW.
        APPEND I_SEL_CTRLKEY.
        CLEAR I_SEL_CTRLKEY.
      ENDLOOP.
    ELSE.
      I_SEL_CTRLKEY-STEUS = S_CTLKY-LOW.
      APPEND I_SEL_CTRLKEY.
      CLEAR I_SEL_CTRLKEY.
      I_SEL_CTRLKEY-STEUS = S_CTLKY-HIGH.
      APPEND I_SEL_CTRLKEY.
      CLEAR I_SEL_CTRLKEY.
    ENDIF.
  ENDIF.
  SORT I_SEL_CTLKY BY STEUS.
  LOOP AT I_SEL_CTRLKEY.
    READ TABLE I_SEL_CTLKY WITH KEY STEUS = I_SEL_CTRLKEY-STEUS
                              BINARY SEARCH.
    IF SY-SUBRC %LT%GT 0.
      MESSAGE E035 WITH 'Invalid Control key'(006).
    ENDIF.
  ENDLOOP.
  CLEAR: I_SEL_CTRLKEY, I_SEL_CTLKY.
  REFRESH: I_SEL_CTRLKEY, I_SEL_CTLKY.
ENDFORM.                    " SUB_VALIDATE_CTLKY
************************************************************************
* ENDFORM      SUB_VALIDATE_CTLKY
************************************************************************
************************************************************************
* FORM            SUB_CLEAR_ALL_VARIABLES
************************************************************************
* DESCRIPTION:    To clear all program variables
*
************************************************************************
* CALLED BY:      ZMROB_UPDATE_NETWORK
* CALLS....:
************************************************************************
FORM SUB_CLEAR_ALL_VARIABLES.
  CLEAR:  V_LINE,
          V_TEXT,
          V_NETWRK,
          V_NETWRK_UPD,
          V_REPID,
          V_TITLE.
ENDFORM.                    " SUB_CLEAR_ALL_VARIABLES
************************************************************************
* ENDFORM      SUB_CLEAR_ALL_VARIABLES
************************************************************************
************************************************************************
* FORM            SUB_CLEAR_ALL_INT_TABLES
************************************************************************
* DESCRIPTION:    To clear all internal tables
*
************************************************************************
* CALLED BY:      ZMROB_UPDATE_NETWORK
* CALLS....:
************************************************************************
FORM SUB_CLEAR_ALL_INT_TABLES.
  CLEAR:  I_NETWORK,
          I_SEL_NETWORK,
          I_SEL_ACTIVITY,
          I_SEL_ACTVT,
          I_SEL_ORDER,
          I_SEL_ORD,
          I_SEL_PLANT,
          I_SEL_PLNT,
          I_SEL_CTLKY,
          I_SEL_CTRLKEY,
          I_SUB_NETWORK,
          I_SUP_NETWORK,
          I_PLANT,
          I_TEMP_SUBNET,
          I_ACTIVITY,
          I_NET_ACTIVITY,
          I_ORDER,
          I_NET_ACT_ORDER,
          I_PLANNED_WORK,
          I_NET_ACT_ORD_WORK,
          I_NET_ACT_WORK,
          I_OBJNR,
          I_NET_ACT_ACTUAL_WRK,
          I_CONF_SUCCESS,
          I_ERROR_COST,
          I_ARBID,
          I_ACTVT_ACT_WRK,
          I_NET_ACTVT_ACT_WRK,
          I_BDC_TAB,
          I_MSG_TAB,
          I_TEMP_MSG_TAB,
          I_FUNC_ERROR,
          I_ERR_REPORT.
ENDFORM.                    " SUB_CLEAR_ALL_INT_TABLES
************************************************************************
* ENDFORM      SUB_CLEAR_ALL_INT_TABLES
************************************************************************
************************************************************************
* FORM            SUB_REFRESH_ALL_INT_TABLES
************************************************************************
* DESCRIPTION:    To refresh all internal tables
*
************************************************************************
* CALLED BY:      ZMROB_UPDATE_NETWORK
* CALLS....:
************************************************************************
FORM SUB_REFRESH_ALL_INT_TABLES.
  REFRESH:  I_SUB_NETWORK,
            I_SUP_NETWORK,
            I_PLANT,
            I_TEMP_SUBNET,
            I_ACTIVITY,
            I_NET_ACTIVITY,
            I_ORDER,
            I_NET_ACT_ORDER,
            I_PLANNED_WORK,
            I_NET_ACT_ORD_WORK,
            I_NET_ACT_WORK,
            I_OBJNR,
            I_NET_ACT_ACTUAL_WRK,
            I_CONF_SUCCESS,
            I_ERROR_COST,
            I_ARBID,
            I_ACTVT_ACT_WRK,
            I_NET_ACTVT_ACT_WRK,
            I_BDC_TAB,
            I_MSG_TAB,
            I_TEMP_MSG_TAB,
            I_FUNC_ERROR,
            I_ERR_REPORT.
ENDFORM.                    " SUB_REFRESH_ALL_INT_TABLES
************************************************************************
* ENDFORM      SUB_REFRESH_ALL_INT_TABLES
************************************************************************
************************************************************************
* FORM            SUB_EXTRACT_DATA
************************************************************************
* DESCRIPTION:    Retrieve Planned work, Actual Work data for
*                 Network-Activity
************************************************************************
* CALLED BY:      ZMROB_UPDATE_NETWORK
* CALLS....:      SUB_GET_ALL_SUB_NETWORK
*                 SUB_GET_REL_NETWORK
*                 SUB_GET_ACTIVITY
*                 SUB_GET_ORDER
*                 SUB_GET_PLANNED_WORK
*                 SUB_GET_ACTUAL_WORK
************************************************************************
FORM SUB_EXTRACT_DATA.
* Get all Sub Network for the chosen network
  PERFORM SUB_GET_ALL_SUB_NETWORK.
* Get all released Sub Network for the chosen network
  PERFORM SUB_GET_REL_NETWORK.
* Get all Activity
  PERFORM SUB_GET_ACTIVITY.
* Get all Order
  PERFORM SUB_GET_ORDER.
* Get Planned work, Actual work, Start Date and End Date
  PERFORM SUB_GET_PLANNED_WORK.
* Get Actual work
  PERFORM SUB_GET_ACTUAL_WORK.
ENDFORM.                    " SUB_EXTRACT_DATA
************************************************************************
* ENDFORM      SUB_EXTRACT_DATA
************************************************************************
************************************************************************
* FORM            SUB_GET_ALL_SUB_NETWORK
************************************************************************
* DESCRIPTION:    Get all Sub Network
*
************************************************************************
* CALLED BY:      SUB_EXTRACT_DATA
* CALLS....:
************************************************************************
FORM SUB_GET_ALL_SUB_NETWORK.
* Populate I_SUB_NETWORK with sub-ordinate networks
* Populate I_SUP_NETWORK with super networks
  LOOP AT I_NETWORK.
    IF I_NETWORK-AUFNT IS INITIAL.
      I_SUP_NETWORK = I_NETWORK.
      APPEND I_SUP_NETWORK.
    ELSE.
      I_SUB_NETWORK = I_NETWORK.
      APPEND I_SUB_NETWORK.
    ENDIF.
  ENDLOOP.
  CLEAR: I_SUB_NETWORK, I_SUP_NETWORK.
  IF NOT I_SUB_NETWORK[] IS INITIAL.
* Get the Plant and Work center of the corresponding super network
* of the sub network
    SELECT AUFNR VAPLZ WAWRK
    INTO TABLE I_PLANT
    FROM AUFK
    FOR ALL ENTRIES IN I_SUB_NETWORK
    WHERE AUFNR = I_SUB_NETWORK-AUFNT.
* Modity I_SUB_NETWORK with Plant and Work center of corresponding
* sub network
    SORT I_PLANT BY AUFNR.
    LOOP AT I_SUB_NETWORK.
      READ TABLE I_PLANT WITH KEY AUFNR = I_SUB_NETWORK-AUFNT
                                  BINARY SEARCH.
      IF SY-SUBRC = 0.
        I_SUB_NETWORK-VAPLZ = I_PLANT-VAPLZ.
        I_SUB_NETWORK-WAWRK = I_PLANT-WAWRK.
        MODIFY I_SUB_NETWORK TRANSPORTING VAPLZ WAWRK
            WHERE AUFNT = I_PLANT-AUFNR.
      ENDIF.
    ENDLOOP.
  ENDIF.
  CLEAR: I_PLANT, I_SUB_NETWORK.
  REFRESH I_PLANT.
* Get the sub networks of the super networks
  IF NOT I_SUP_NETWORK[] IS INITIAL.
    SELECT AFKO~AUFNR AFKO~AUFPL AFKO~AUFNT AUFK~OBJNR
    INTO TABLE I_TEMP_SUBNET
    FROM AFKO INNER JOIN AUFK
    ON AFKO~AUFNR = AUFK~AUFNR
    FOR ALL ENTRIES IN I_SUP_NETWORK
    WHERE AFKO~AUFNT = I_SUP_NETWORK-AUFNR.
  ENDIF.
  SORT I_SUB_NETWORK BY AUFNR.
  SORT I_SUP_NETWORK BY AUFNR.
* Append the sub network (with plant and work center) of
* super networks in I_SUB_NETWORK
  LOOP AT I_TEMP_SUBNET.
    READ TABLE I_SUB_NETWORK WITH KEY AUFNR = I_TEMP_SUBNET-AUFNR
                                    BINARY SEARCH.
    IF SY-SUBRC %LT%GT 0.
      READ TABLE I_SUP_NETWORK WITH KEY AUFNR = I_TEMP_SUBNET-AUFNT
                                      BINARY SEARCH.
      IF SY-SUBRC = 0.
        I_SUB_NETWORK-AUFNR = I_TEMP_SUBNET-AUFNR.
        I_SUB_NETWORK-VAPLZ = I_SUP_NETWORK-VAPLZ.
        I_SUB_NETWORK-WAWRK = I_SUP_NETWORK-WAWRK.
        I_SUB_NETWORK-AUFNT = I_SUP_NETWORK-AUFNR.
        I_SUB_NETWORK-AUFPL = I_TEMP_SUBNET-AUFPL.
        I_SUB_NETWORK-OBJNR = I_TEMP_SUBNET-OBJNR.
        APPEND I_SUB_NETWORK.
      ENDIF.
    ENDIF.
  ENDLOOP.
  CLEAR: I_TEMP_SUBNET, I_SUP_NETWORK, I_SUB_NETWORK.
  REFRESH: I_TEMP_SUBNET.
  IF I_SUB_NETWORK[] IS INITIAL.
    MESSAGE I035 WITH 'No Subordinate network selected'(011).
    LEAVE LIST-PROCESSING.
  ENDIF.
ENDFORM.                    " SUB_GET_ALL_SUB_NETWORK
************************************************************************
* ENDFORM      SUB_GET_ALL_SUB_NETWORK
************************************************************************
************************************************************************
* FORM            SUB_GET_REL_NETWORK
************************************************************************
* DESCRIPTION:    Get all released Sub-ordinate Networks
*
************************************************************************
* CALLED BY:      SUB_EXTRACT_DATA
* CALLS....:      FUNCTION 'STATUS_TEXT_EDIT'
************************************************************************
FORM SUB_GET_REL_NETWORK.
  LOOP AT I_SUB_NETWORK.
    CALL FUNCTION 'STATUS_TEXT_EDIT'
      EXPORTING
*       CLIENT                  = SY-MANDT
*       FLG_USER_STAT           = ' '
        OBJNR                   = I_SUB_NETWORK-OBJNR
        ONLY_ACTIVE             = C_ONLY_ACTIVE
        SPRAS                   = C_SPRAS
*       BYPASS_BUFFER           = ' '
      IMPORTING
*       ANW_STAT_EXISTING       =
*       E_STSMA                 =
        LINE                    = V_LINE
*       USER_LINE               =
*       STONR                   =
      EXCEPTIONS
        OBJECT_NOT_FOUND        = 1
        OTHERS                  = 2.
    IF SY-SUBRC %LT%GT 0.
      MESSAGE I035 WITH 'Error in getting Status of the Network'(009).
      LEAVE LIST-PROCESSING.
    ELSE.
* if status released
*     IF V_LINE CN C_REL.
      IF V_LINE CS C_REL.
      ELSE.
* if status not released
        DELETE I_SUB_NETWORK WHERE AUFNR = I_SUB_NETWORK-AUFNR.
      ENDIF.
      CLEAR V_LINE.
    ENDIF.
  ENDLOOP.
  IF I_SUB_NETWORK[] IS INITIAL.
    MESSAGE I035 WITH 'No Released Subordinate network selected'(012).
    LEAVE LIST-PROCESSING.
  ENDIF.
  CLEAR V_LINE.
ENDFORM.                    " SUB_GET_REL_NETWORK
************************************************************************
* ENDFORM      SUB_GET_REL_NETWORK
************************************************************************
************************************************************************
* FORM            SUB_GET_ACTIVITY
************************************************************************
* DESCRIPTION:    Get all Activity
*
************************************************************************
* CALLED BY:      SUB_EXTRACT_DATA
* CALLS....:
************************************************************************
FORM SUB_GET_ACTIVITY.
* Get the activity of the corresponding routing numbers
  SELECT AUFPL APLZL VORNR ARBID
  INTO TABLE I_ACTIVITY
  FROM AFVC
  FOR ALL ENTRIES IN I_SUB_NETWORK
  WHERE AUFPL = I_SUB_NETWORK-AUFPL
    AND VORNR IN S_ACTVT
    AND WERKS IN S_PLANT
    AND STEUS IN S_CTLKY.
  IF NOT I_ACTIVITY[] IS INITIAL.
* Get existing Actual work for activities
    SELECT AUFPL APLZL ISMNW
    INTO TABLE I_ACTVT_ACT_WRK
    FROM AFVV
    FOR ALL ENTRIES IN I_ACTIVITY
    WHERE AUFPL = I_ACTIVITY-AUFPL
      AND APLZL = I_ACTIVITY-APLZL.
* Populate int. table I_NET_ACTVT_ACT_WRK with Actual work for
* Network - Activities
    SORT I_SUB_NETWORK BY AUFPL.
    SORT I_ACTIVITY BY AUFPL APLZL.
    SORT I_ACTVT_ACT_WRK BY AUFPL APLZL.
    LOOP AT I_ACTVT_ACT_WRK.
      READ TABLE I_SUB_NETWORK WITH KEY AUFPL = I_ACTVT_ACT_WRK-AUFPL
                                  BINARY SEARCH.
      IF SY-SUBRC = 0.
        I_NET_ACTVT_ACT_WRK-AUFNR = I_SUB_NETWORK-AUFNR.
      ENDIF.
      I_NET_ACTVT_ACT_WRK-AUFPL = I_ACTVT_ACT_WRK-AUFPL.
      I_NET_ACTVT_ACT_WRK-APLZL = I_ACTVT_ACT_WRK-APLZL.
      READ TABLE I_ACTIVITY WITH KEY AUFPL = I_ACTVT_ACT_WRK-AUFPL
                                     APLZL = I_ACTVT_ACT_WRK-APLZL
                                     BINARY SEARCH.
      IF SY-SUBRC = 0.
        I_NET_ACTVT_ACT_WRK-VORNR = I_ACTIVITY-VORNR.
      ENDIF.
      I_NET_ACTVT_ACT_WRK-ISMNW = I_ACTVT_ACT_WRK-ISMNW.
      APPEND I_NET_ACTVT_ACT_WRK.
      CLEAR I_NET_ACTVT_ACT_WRK.
    ENDLOOP.
* Get the valid Object id
    SELECT OBJID
    INTO TABLE I_ARBID
    FROM CRHD
    FOR ALL ENTRIES IN I_ACTIVITY
    WHERE OBJTY = C_A
      AND OBJID = I_ACTIVITY-ARBID.
* Populate I_NET_ACTIVITY with Activity of corresponding Network
    SORT I_SUB_NETWORK BY AUFPL.
    SORT I_ACTIVITY BY AUFPL VORNR.
    LOOP AT I_ACTIVITY.
      READ TABLE I_SUB_NETWORK WITH KEY AUFPL = I_ACTIVITY-AUFPL
                                  BINARY SEARCH.
      IF SY-SUBRC = 0.
        I_NET_ACTIVITY-AUFNR = I_SUB_NETWORK-AUFNR.
        I_NET_ACTIVITY-AUFPL = I_SUB_NETWORK-AUFPL.
        I_NET_ACTIVITY-APLZL = I_ACTIVITY-APLZL.
        I_NET_ACTIVITY-VORNR = I_ACTIVITY-VORNR.
        APPEND I_NET_ACTIVITY.
        CLEAR I_NET_ACTIVITY.
      ENDIF.
    ENDLOOP.
  ELSE.
    MESSAGE I035 WITH 'No Activity found for selected networks'(013).
    LEAVE LIST-PROCESSING.
  ENDIF.
ENDFORM.                    " SUB_GET_ACTIVITY
************************************************************************
* ENDFORM      SUB_GET_ACTIVITY
************************************************************************
************************************************************************
* FORM            SUB_GET_ORDER
************************************************************************
* DESCRIPTION:    Get all Order
*
************************************************************************
* CALLED BY:      SUB_EXTRACT_DATA
* CALLS....:
************************************************************************
FORM SUB_GET_ORDER.
  IF NOT I_NET_ACTIVITY[] IS INITIAL.
* Get all Orders
    SELECT AUFNR AUFPL AUFNT AUFPT APLZT
    INTO TABLE I_ORDER
    FROM AFKO
    FOR ALL ENTRIES IN I_NET_ACTIVITY
    WHERE AUFNT = I_NET_ACTIVITY-AUFNR
    AND AUFPT = I_NET_ACTIVITY-AUFPL
    AND APLZT = I_NET_ACTIVITY-APLZL
    AND AUFNR IN S_ORDER.
* Populate I_NET_ACT_ORDER with Orders of corresponding
* Network - Activity
    SORT I_NET_ACTIVITY BY AUFNR AUFPL APLZL.
    SORT I_ORDER BY AUFNT AUFPT APLZT AUFNR AUFPL.
    LOOP AT I_ORDER.
      READ TABLE I_NET_ACTIVITY WITH KEY AUFNR = I_ORDER-AUFNT
                                         AUFPL = I_ORDER-AUFPT
                                         APLZL = I_ORDER-APLZT
                                         BINARY SEARCH.
      IF SY-SUBRC = 0.
        I_NET_ACT_ORDER-AUFNR = I_ORDER-AUFNT.
        I_NET_ACT_ORDER-AUFPT = I_ORDER-AUFPT.
        I_NET_ACT_ORDER-APLZT = I_ORDER-APLZT.
        I_NET_ACT_ORDER-VORNR = I_NET_ACTIVITY-VORNR.
        I_NET_ACT_ORDER-ORDNO = I_ORDER-AUFNR.
        I_NET_ACT_ORDER-AUFPL = I_ORDER-AUFPL.
        APPEND I_NET_ACT_ORDER.
        CLEAR I_NET_ACT_ORDER.
      ENDIF.
    ENDLOOP.
    SORT I_NET_ACT_ORDER BY AUFNR AUFPT APLZT VORNR.
    LOOP AT I_NET_ACTIVITY.
      READ TABLE I_NET_ACT_ORDER WITH KEY AUFNR = I_NET_ACTIVITY-AUFNR
                                          AUFPT = I_NET_ACTIVITY-AUFPL
                                          APLZT = I_NET_ACTIVITY-APLZL
                                          VORNR = I_NET_ACTIVITY-VORNR
                                          BINARY SEARCH.
      IF SY-SUBRC %LT%GT 0.
        CLEAR I_NET_ACT_ORDER.
        I_NET_ACT_ORDER-AUFNR = I_NET_ACTIVITY-AUFNR.
        I_NET_ACT_ORDER-AUFPT = I_NET_ACTIVITY-AUFPL.
        I_NET_ACT_ORDER-APLZT = I_NET_ACTIVITY-APLZL.
        I_NET_ACT_ORDER-VORNR = I_NET_ACTIVITY-VORNR.
        APPEND I_NET_ACT_ORDER.
        CLEAR I_NET_ACT_ORDER.
      ENDIF.
    ENDLOOP.
    IF I_ORDER[] IS INITIAL.
      MESSAGE I035 WITH
          'No Order found for selected networks - activities'(014).
      LEAVE LIST-PROCESSING.
    ENDIF.
  ENDIF.
ENDFORM.                    " SUB_GET_ORDER
************************************************************************
* ENDFORM      SUB_GET_ORDER
************************************************************************
************************************************************************
* FORM            SUB_GET_PLANNED_WORK
************************************************************************
* DESCRIPTION:    Get Planned work, Actual work, Start Date and End Date
*
************************************************************************
* CALLED BY:      SUB_EXTRACT_DATA
* CALLS....:      FUNCTION 'STATUS_TEXT_EDIT'
************************************************************************
FORM SUB_GET_PLANNED_WORK.
  DATA: LV_PLAN_WORK LIKE AFVV-ARBEI,
        LV_NORM_DUR LIKE AFVGD-DAUNO,
        LV_ACT_WORK LIKE AFVV-ISMNW,
        LV_START_DATE LIKE AFVV-ISDD,
        LV_END_DATE LIKE AFVV-IEDD,
        LV_CNF_FLAG(1).
  IF NOT I_NET_ACT_ORDER[] IS INITIAL.
* Get Planned work, Actual work, Start date and End date
* of all Order operations
    SELECT AUFPL APLZL ARBEI ISMNW ISDD IEDD
    INTO TABLE I_PLANNED_WORK
    FROM AFVV
    FOR ALL ENTRIES IN I_NET_ACT_ORDER
    WHERE AUFPL = I_NET_ACT_ORDER-AUFPL.
  ENDIF.
  IF NOT I_PLANNED_WORK[] IS INITIAL.
* Get Object number of all Order operatins
    SELECT AUFPL APLZL OBJNR
    INTO TABLE I_OBJNR
    FROM AFVC
    FOR ALL ENTRIES IN I_PLANNED_WORK
    WHERE AUFPL = I_PLANNED_WORK-AUFPL
      AND APLZL = I_PLANNED_WORK-APLZL.
  ENDIF.
  IF NOT I_OBJNR[] IS INITIAL.
* Check Confirmation status of the object numbers
    LOOP AT I_OBJNR.
      CALL FUNCTION 'STATUS_TEXT_EDIT'
        EXPORTING
*       CLIENT                  = SY-MANDT
*       FLG_USER_STAT           = ' '
          OBJNR                   = I_OBJNR-OBJNR
          ONLY_ACTIVE             = C_ONLY_ACTIVE
          SPRAS                   = C_SPRAS
*       BYPASS_BUFFER           = ' '
        IMPORTING
*       ANW_STAT_EXISTING       =
*       E_STSMA                 =
          LINE                    = V_LINE
*       USER_LINE               =
*       STONR                   =
        EXCEPTIONS
          OBJECT_NOT_FOUND        = 1
          OTHERS                  = 2.
      IF SY-SUBRC %LT%GT 0.
        MESSAGE I035 WITH 'Error in getting Confirmation Status'(010).
        LEAVE LIST-PROCESSING.
      ELSE.
        IF V_LINE CS C_CNF.
* If status confirmed
          I_OBJNR-CNF_FLAG = C_X.
          MODIFY I_OBJNR TRANSPORTING CNF_FLAG WHERE OBJNR = I_OBJNR-OBJNR.
        ENDIF.
        CLEAR I_OBJNR.
        CLEAR V_LINE.
      ENDIF.
    ENDLOOP.
  ENDIF.
* Populate an internal table with Planned work, actual work, start date,
* end date at Network-Activity-Order level by summing up the planned
* work and actual work value of all operations under an
* Network-activity-order. The start date is populated with the earliest
* start date of all order operatins and end date is populated with the
* latest end date of all order operations.
  SORT I_NET_ACT_ORDER BY AUFPL.
  SORT I_PLANNED_WORK BY AUFPL APLZL.
  SORT I_OBJNR BY AUFPL APLZL.
  LOOP AT I_PLANNED_WORK.
    LV_PLAN_WORK = LV_PLAN_WORK + I_PLANNED_WORK-ARBEI.
    LV_ACT_WORK = LV_ACT_WORK + I_PLANNED_WORK-ISMNW.
    IF LV_START_DATE IS INITIAL.
      IF NOT I_PLANNED_WORK-ISDD IS INITIAL.
        LV_START_DATE = I_PLANNED_WORK-ISDD.
      ENDIF.
    ENDIF.
    IF LV_END_DATE IS INITIAL.
      IF NOT I_PLANNED_WORK-IEDD IS INITIAL.
        LV_END_DATE = I_PLANNED_WORK-IEDD.
      ENDIF.
    ENDIF.
    IF NOT I_PLANNED_WORK-ISDD IS INITIAL.
      IF I_PLANNED_WORK-ISDD %LT LV_START_DATE.
        LV_START_DATE = I_PLANNED_WORK-ISDD.
      ENDIF.
    ENDIF.
    IF NOT I_PLANNED_WORK-IEDD IS INITIAL.
      IF I_PLANNED_WORK-IEDD %GT LV_END_DATE.
        LV_END_DATE = I_PLANNED_WORK-IEDD.
      ENDIF.
    ENDIF.
    READ TABLE I_OBJNR WITH KEY AUFPL = I_PLANNED_WORK-AUFPL
                                APLZL = I_PLANNED_WORK-APLZL
                                BINARY SEARCH.
    IF I_OBJNR-CNF_FLAG IS INITIAL.
      LV_CNF_FLAG = C_X.
    ENDIF.
    AT END OF AUFPL.
      READ TABLE I_NET_ACT_ORDER WITH KEY AUFPL = I_PLANNED_WORK-AUFPL
                                    BINARY SEARCH.
      I_NET_ACT_ORD_WORK-AUFNR = I_NET_ACT_ORDER-AUFNR.
      I_NET_ACT_ORD_WORK-VORNR = I_NET_ACT_ORDER-VORNR.
      I_NET_ACT_ORD_WORK-ORDNO = I_NET_ACT_ORDER-ORDNO.
      I_NET_ACT_ORD_WORK-ARBEI = LV_PLAN_WORK.
      I_NET_ACT_ORD_WORK-ISMNW = LV_ACT_WORK.
      I_NET_ACT_ORD_WORK-ISDD = LV_START_DATE.
      I_NET_ACT_ORD_WORK-IEDD = LV_END_DATE.
      IF LV_CNF_FLAG IS INITIAL.
        I_NET_ACT_ORD_WORK-CNF_FLAG = C_X.
      ENDIF.
      APPEND I_NET_ACT_ORD_WORK.
      CLEAR I_NET_ACT_ORD_WORK.
      CLEAR: LV_PLAN_WORK, LV_ACT_WORK, LV_START_DATE,
             LV_END_DATE, LV_CNF_FLAG.
    ENDAT.
  ENDLOOP.
  SORT I_NET_ACT_ORD_WORK BY AUFNR VORNR.
  LOOP AT I_NET_ACT_ORDER.
    READ TABLE I_NET_ACT_ORD_WORK WITH KEY AUFNR = I_NET_ACT_ORDER-AUFNR
                                           VORNR = I_NET_ACT_ORDER-VORNR
                                           BINARY SEARCH.
    IF SY-SUBRC %LT%GT 0.
      CLEAR  I_NET_ACT_ORD_WORK.
      I_NET_ACT_ORD_WORK-AUFNR = I_NET_ACT_ORDER-AUFNR.
      I_NET_ACT_ORD_WORK-VORNR = I_NET_ACT_ORDER-VORNR.
      APPEND I_NET_ACT_ORD_WORK.
      CLEAR  I_NET_ACT_ORD_WORK.
    ENDIF.
  ENDLOOP.
* Populate an internal table with Planned work, actual work, start date,
* end date, work center, plant, normal duration and
* confirmation flag at Network-Activity level by summing up the planned
* work and actual work value of all orders under an
* Network-activity. The start date is populated with the earliest
* start date of all orders and end date is populated with the
* latest end date of all orders.
  SORT I_NET_ACT_ORD_WORK BY AUFNR VORNR ORDNO.
  SORT I_SUB_NETWORK BY AUFNR.
  SORT I_NET_ACTIVITY BY AUFNR VORNR AUFPL APLZL.
  SORT I_ACTIVITY BY AUFPL APLZL.
  SORT I_ARBID BY OBJID.
  LOOP AT I_NET_ACT_ORD_WORK.
    LV_PLAN_WORK = LV_PLAN_WORK + I_NET_ACT_ORD_WORK-ARBEI.
    LV_ACT_WORK = LV_ACT_WORK + I_NET_ACT_ORD_WORK-ISMNW.
    IF LV_START_DATE IS INITIAL.
      LV_START_DATE = I_NET_ACT_ORD_WORK-ISDD.
    ENDIF.
    IF LV_END_DATE IS INITIAL.
      LV_END_DATE = I_NET_ACT_ORD_WORK-IEDD.
    ENDIF.
    IF I_NET_ACT_ORD_WORK-ISDD %LT LV_START_DATE.
      LV_START_DATE = I_NET_ACT_ORD_WORK-ISDD.
    ENDIF.
    IF I_NET_ACT_ORD_WORK-IEDD %GT LV_END_DATE.
      LV_END_DATE = I_NET_ACT_ORD_WORK-IEDD.
    ENDIF.
    IF I_NET_ACT_ORD_WORK-CNF_FLAG IS INITIAL.
      LV_CNF_FLAG = C_X.
    ENDIF.
    AT END OF VORNR.
      READ TABLE I_SUB_NETWORK WITH KEY AUFNR = I_NET_ACT_ORD_WORK-AUFNR
                                BINARY SEARCH.
      I_NET_ACT_WORK-AUFNR = I_NET_ACT_ORD_WORK-AUFNR.
      I_NET_ACT_WORK-VORNR = I_NET_ACT_ORD_WORK-VORNR.
      I_NET_ACT_WORK-ARBEI = LV_PLAN_WORK.
      I_NET_ACT_WORK-ISMNW = LV_ACT_WORK.
      I_NET_ACT_WORK-ISDD = LV_START_DATE.
      I_NET_ACT_WORK-IEDD = LV_END_DATE.
      I_NET_ACT_WORK-WAWRK = I_SUB_NETWORK-WAWRK.
      READ TABLE I_NET_ACTIVITY WITH KEY AUFNR = I_NET_ACT_WORK-AUFNR
                                         VORNR = I_NET_ACT_WORK-VORNR
                                         BINARY SEARCH.
      IF SY-SUBRC = 0.
        READ TABLE I_ACTIVITY WITH KEY AUFPL = I_NET_ACTIVITY-AUFPL
                                       APLZL = I_NET_ACTIVITY-APLZL
                                       BINARY SEARCH.
        IF SY-SUBRC = 0.
          READ TABLE I_ARBID WITH KEY OBJID = I_ACTIVITY-ARBID
                                      BINARY SEARCH.
          IF SY-SUBRC %LT%GT 0.
            I_NET_ACT_WORK-VAPLZ = I_SUB_NETWORK-VAPLZ.
          ENDIF.
        ENDIF.
      ENDIF.
      IF LV_CNF_FLAG IS INITIAL.
        I_NET_ACT_WORK-CNF_FLAG = C_X.
      ENDIF.
      IF NOT CB_UPDUR IS INITIAL.
        LV_NORM_DUR = LV_PLAN_WORK * ( P_CVFACT / 100 ).
        I_NET_ACT_WORK-DAUNO = LV_NORM_DUR..
      ENDIF.
      APPEND I_NET_ACT_WORK.
      CLEAR I_NET_ACT_WORK.
      CLEAR: LV_PLAN_WORK, LV_ACT_WORK, LV_START_DATE,
             LV_END_DATE, LV_CNF_FLAG, LV_NORM_DUR.
    ENDAT.
  ENDLOOP.
ENDFORM.                    " SUB_GET_PLANNED_WORK
************************************************************************
* ENDFORM      SUB_GET_PLANNED_WORK
************************************************************************
************************************************************************
* FORM            SUB_GET_ACTUAL_WORK
************************************************************************
* DESCRIPTION:    Get Actual work
*
************************************************************************
* CALLED BY:      SUB_EXTRACT_DATA
* CALLS....:
************************************************************************
FORM SUB_GET_ACTUAL_WORK.
  DATA: LV_START_DATE LIKE CONFCO-START_DATE,
        LV_END_DATE LIKE CONFCO-END_DATE,
        LV_ACT_WORK LIKE AFVV-ISMNW.
* Populate an internal table with actual work, start date,
* end date and Confirmation flag at Network-Activity level
* by summing up the planned
* work and actual work value of all orders under an
* Network-activity. The start date is populated with the earliest
* start date of all orders and end date is populated with the
* latest end date of all orders.
  SORT I_NET_ACTVT_ACT_WRK BY AUFNR VORNR.
  LOOP AT I_NET_ACT_WORK.
    LV_START_DATE = I_NET_ACT_WORK-ISDD.
    LV_END_DATE = I_NET_ACT_WORK-IEDD.
* Check the existing actual work value for Network - activities
    READ TABLE I_NET_ACTVT_ACT_WRK WITH KEY AUFNR = I_NET_ACT_WORK-AUFNR
                                            VORNR = I_NET_ACT_WORK-VORNR
                                            BINARY SEARCH.
    LV_ACT_WORK = I_NET_ACT_WORK-ISMNW - I_NET_ACTVT_ACT_WRK-ISMNW.
    IF LV_ACT_WORK %LT 0.
      LV_ACT_WORK = 0.
    ENDIF.
    I_NET_ACT_ACTUAL_WRK-ORDER = I_NET_ACT_WORK-AUFNR.
    I_NET_ACT_ACTUAL_WRK-ACTIVITY = I_NET_ACT_WORK-VORNR.
    I_NET_ACT_ACTUAL_WRK-FIN_CONF = I_NET_ACT_WORK-CNF_FLAG.
    I_NET_ACT_ACTUAL_WRK-END_DATE = LV_END_DATE.
    I_NET_ACT_ACTUAL_WRK-START_DATE = LV_START_DATE.
    I_NET_ACT_ACTUAL_WRK-ACT_WORK = LV_ACT_WORK.
    APPEND I_NET_ACT_ACTUAL_WRK.
    CLEAR I_NET_ACT_ACTUAL_WRK.
    CLEAR: LV_START_DATE, LV_END_DATE, LV_ACT_WORK.
  ENDLOOP.
ENDFORM.                    " SUB_GET_ACTUAL_WORK
************************************************************************
* ENDFORM      SUB_GET_ACTUAL_WORK
************************************************************************
************************************************************************
* FORM            SUB_FILL_BDC_TAB
************************************************************************
* DESCRIPTION:    Fill BDC table and do Call transaction
*
************************************************************************
* CALLED BY:      ZMROB_UPDATE_NETWORK
* CALLS....:      SUB_POPULATE_BDC_TAB
************************************************************************
FORM SUB_FILL_BDC_TAB.
  DATA: LV_NETWRK LIKE AFKO-AUFNR,
        LV_ARBEI(8),
        LV_DAUNO(6).
* Fill BDC table
  LOOP AT I_NET_ACT_WORK.
    IF LV_NETWRK IS INITIAL.
      LV_NETWRK = I_NET_ACT_WORK-AUFNR.
      PERFORM SUB_POPULATE_BDC_TAB USING :
        '1' 'SAPLCOKO' '2000',
        ' ' 'BDC_CURSOR' 'CAUFVD-AUFNR',
        ' ' 'BDC_OKCODE' '=LIST',
        ' ' 'CAUFVD-AUFNR' I_NET_ACT_WORK-AUFNR.
      PERFORM SUB_POPULATE_BDC_TAB USING:
        '1' 'SAPLCOVG' '2000',
        ' ' 'BDC_CURSOR' 'VSNETEXT-NPLNR',
        ' ' 'BDC_OKCODE' '=POSI',
        ' ' 'BDC_SUBSCR' 'SAPLCOVG'.
    ENDIF.
    IF I_NET_ACT_WORK-AUFNR = LV_NETWRK.
      LV_ARBEI = I_NET_ACT_WORK-ARBEI.
      LV_DAUNO = I_NET_ACT_WORK-DAUNO.
      PERFORM SUB_POPULATE_BDC_TAB USING :
        '1' 'SAPLCOVG' '2200',
        ' ' 'BDC_OKCODE' '=ENT1',
        ' ' 'BDC_CURSOR' 'AFVGD-VORNR',
        ' ' 'AFVGD-VORNR' I_NET_ACT_WORK-VORNR.
      PERFORM SUB_POPULATE_BDC_TAB USING :
        '1' 'SAPLCOVG' '2000',
        ' ' 'BDC_SUBSCR' 'SAPLCOVG',
        ' ' 'BDC_CURSOR' 'AFVGD-DAUNO(01)'.
      IF NOT I_NET_ACT_WORK-VAPLZ IS INITIAL.
        PERFORM SUB_POPULATE_BDC_TAB USING :
        ' ' 'AFVGD-ARBPL(01)' I_NET_ACT_WORK-VAPLZ.
      ENDIF.
      PERFORM SUB_POPULATE_BDC_TAB USING :
        ' ' 'AFVGD-WERKS(01)' I_NET_ACT_WORK-WAWRK,
        ' ' 'AFVGD-ARBEI(01)' LV_ARBEI.
      IF NOT CB_UPDUR IS INITIAL.
        PERFORM SUB_POPULATE_BDC_TAB USING :
          ' ' 'AFVGD-DAUNO(01)' LV_DAUNO.
      ENDIF.
      PERFORM SUB_POPULATE_BDC_TAB USING :
        ' ' 'BDC_OKCODE' '=POSI'.
      AT END OF AUFNR.
* The okcode of the last activity of a network is
* changed to save
        I_BDC_TAB-FVAL = '=BU'.
        MODIFY I_BDC_TAB INDEX SY-TABIX TRANSPORTING FVAL.
        V_NETWRK = V_NETWRK + 1.
* Call transaction CN22
        CALL TRANSACTION C_TCODE
          USING I_BDC_TAB
          MODE V_MODE
          UPDATE C_UPDATE
          MESSAGES INTO I_MSG_TAB.
        IF SY-SUBRC = 0.
          V_NETWRK_UPD = V_NETWRK_UPD + 1.
        ELSE.
          IF NOT I_MSG_TAB[] IS INITIAL.
            READ TABLE I_MSG_TAB INDEX 1.
            CALL FUNCTION 'FORMAT_MESSAGE'
              EXPORTING
                ID              = I_MSG_TAB-MSGID
*               LANG            = '-D'
                NO              = I_MSG_TAB-MSGNR
                V1              = I_MSG_TAB-MSGV1
                V2              = I_MSG_TAB-MSGV2
                V3              = I_MSG_TAB-MSGV3
                V4              = I_MSG_TAB-MSGV4
              IMPORTING
                MSG             = V_TEXT
              EXCEPTIONS
                NOT_FOUND       = 1
                OTHERS          = 2.
            IF SY-SUBRC %LT%GT 0.
*             MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*                   WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
            ENDIF.
          ENDIF.
          CLEAR I_MSG_TAB.
          I_ERR_REPORT-AUFNR = I_NET_ACT_WORK-AUFNR.
          I_ERR_REPORT-MSGTXT = V_TEXT.
          APPEND I_ERR_REPORT.
          CLEAR I_ERR_REPORT.
          CLEAR V_TEXT.
        ENDIF.
        CLEAR : I_BDC_TAB, I_MSG_TAB, LV_NETWRK.
        REFRESH : I_BDC_TAB, I_MSG_TAB.
      ENDAT.
    ENDIF.
  ENDLOOP.
ENDFORM.                    " SUB_FILL_BDC_TAB
************************************************************************
* ENDFORM      SUB_FILL_BDC_TAB
************************************************************************
************************************************************************
* FORM            SUB_POPULATE_BDC_TAB
************************************************************************
* DESCRIPTION:    Populate BDC Table
*
************************************************************************
* CALLED BY:      SUB_FILL_BDC_TAB
* CALLS....:
************************************************************************
* PARAMETERS:  -%GT INPUT...: FLAG, VAR1, VAR2
*              %LT- OUTBOUND:
************************************************************************
FORM SUB_POPULATE_BDC_TAB USING    FLAG
                                   VAR1
                                   VAR2.
  CLEAR I_BDC_TAB.
  IF FLAG = '1'.
    I_BDC_TAB-PROGRAM = VAR1.
    I_BDC_TAB-DYNPRO = VAR2.
    I_BDC_TAB-DYNBEGIN = 'X'.
  ELSE.
    I_BDC_TAB-FNAM = VAR1.
    I_BDC_TAB-FVAL = VAR2.
  ENDIF.
  APPEND I_BDC_TAB.
ENDFORM.                    " SUB_POPULATE_BDC_TAB
************************************************************************
* ENDFORM      SUB_POPULATE_BDC_TAB
************************************************************************
************************************************************************
* FORM            SUB_UPDATE_ACT_WORK
************************************************************************
* DESCRIPTION:    Update actual work, earliest start date, latest
*                 finish date and confirmation flag
************************************************************************
* CALLED BY:      ZMROB_UPDATE_NETWORK
* CALLS....:      FUNCTION 'CO_RI_CONFIRMATION_CREATE'
*                 FUNCTION 'K_MESSAGE_TRANSFORM'
************************************************************************
FORM SUB_UPDATE_ACT_WORK.
* Update actual work, earliest start date, latest finish date
* and confirmation flag through the function module
* CO_RI_CONFIRMATION_CREATE
  CALL FUNCTION 'CO_RI_CONFIRMATION_CREATE'
    EXPORTING
      CREATE_ERROR_POOL           = C_X
      TEST                        = C_SPACE
      APPLICATION                 = C_AUTYP_20
*     TASK_NUMBER                 = 0
      NO_TRANSFER_FOR_LOCKS       = C_X
*   IMPORTING
*     ERROR_COUNTER               =
*     ERROR_POOL                  =
*     NO_ERROR_POOL_CREATED       =
*     RESERVE_COUNT               =
    TABLES
      CONFIRMATIONS               = I_NET_ACT_ACTUAL_WRK
      ERRORS                      = I_FUNC_ERROR
      CONFIRMATIONS_SUCCESS       = I_CONF_SUCCESS
      ERRORS_COST                 = I_ERROR_COST
*     ERRORS_LOCK                 =
    EXCEPTIONS
      WRONG_APPLICATION           = 1
      OTHERS                      = 2.
  IF SY-SUBRC %LT%GT 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*           WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
* Error message text is converted into system language
* through the function module K_MESSAGE_TRANSFORM.
* Converted message is inserted into an int. table
  IF NOT I_FUNC_ERROR[] IS INITIAL.
    LOOP AT I_FUNC_ERROR.
      CALL FUNCTION 'K_MESSAGE_TRANSFORM'
        EXPORTING
          PAR_LANGU               = SY-LANGU
          PAR_MSGID               = I_FUNC_ERROR-MESSAGE_ID
          PAR_MSGNO               = I_FUNC_ERROR-MESSAGE_NO
*         PAR_MSGTY               =
*         PAR_MSGV1               =
*         PAR_MSGV2               =
*         PAR_MSGV3               =
*         PAR_MSGV4               =
*         PAR_TOTAL               =
        IMPORTING
          PAR_MSGTX               = V_TEXT
        EXCEPTIONS
          NO_MESSAGE_FOUND        = 1
          PAR_MSGID_MISSING       = 2
          PAR_MSGNO_MISSING       = 3
          PAR_MSGTY_MISSING       = 4
          OTHERS                  = 5.
      IF SY-SUBRC %LT%GT 0.
        EXIT.
      ENDIF.
      I_ERR_REPORT-AUFNR = I_FUNC_ERROR-ORDER.
      I_ERR_REPORT-VORNR = I_FUNC_ERROR-ACTIVITY.
      I_ERR_REPORT-MSGTXT = V_TEXT.
      APPEND I_ERR_REPORT.
      CLEAR I_ERR_REPORT.
      CLEAR V_TEXT.
    ENDLOOP.
  ENDIF.
ENDFORM.                    " SUB_UPDATE_ACT_WORK
************************************************************************
* ENDFORM      SUB_UPDATE_ACT_WORK
************************************************************************
************************************************************************
* FORM            SELECTION_SCREEN_REPORT
************************************************************************
* DESCRIPTION:    Write selection screen details in output report
*
************************************************************************
* CALLED BY:      ZMROB_UPDATE_NETWORK
* CALLS....:
************************************************************************
*FORM SELECTION_SCREEN_REPORT.
*
*DATA: LV_PARAM(58).
*
** Write Networks entered in the selection screen in output report
*CLEAR W_SELECTION_SCREEN.
*
*IF NOT S_NETWRK[] IS INITIAL.
*  READ TABLE S_NETWRK INDEX 1.
*  IF NOT S_NETWRK-HIGH IS INITIAL.
*    CLEAR W_SELECTION_SCREEN.
*    W_SELECTION_SCREEN-ZDESCR = 'Network'(016).
*    W_SELECTION_SCREEN-ZLOW = S_NETWRK-LOW.
*    APPEND W_SELECTION_SCREEN TO I_SELECTION_SCREEN.
*
*    CLEAR W_SELECTION_SCREEN.
*    W_SELECTION_SCREEN-ZDESCR = 'Network'(016).
*    W_SELECTION_SCREEN-ZLOW = S_NETWRK-HIGH.
*    APPEND W_SELECTION_SCREEN TO I_SELECTION_SCREEN.
*    CLEAR W_SELECTION_SCREEN.
*  ELSE.
*    LOOP AT S_NETWRK.
*      CONCATENATE LV_PARAM S_NETWRK-LOW INTO LV_PARAM
*                            SEPARATED BY C_COMMA.
*    ENDLOOP.
*    SHIFT LV_PARAM LEFT.
*    CLEAR W_SELECTION_SCREEN.
*    W_SELECTION_SCREEN-ZDESCR = 'Network'(016).
*    W_SELECTION_SCREEN-ZLOW = LV_PARAM.
*    APPEND W_SELECTION_SCREEN TO I_SELECTION_SCREEN.
*    CLEAR W_SELECTION_SCREEN.
*    CLEAR LV_PARAM.
*  ENDIF.
*ENDIF.
*
** Write Activities entered in the selection screen in output report
*CLEAR W_SELECTION_SCREEN.
*
*IF NOT S_ACTVT[] IS INITIAL.
*  READ TABLE S_ACTVT INDEX 1.
*  IF NOT S_ACTVT-HIGH IS INITIAL.
*    CLEAR W_SELECTION_SCREEN.
*    W_SELECTION_SCREEN-ZDESCR = 'Activity'(017).
*    W_SELECTION_SCREEN-ZLOW = S_ACTVT-LOW.
*    APPEND W_SELECTION_SCREEN TO I_SELECTION_SCREEN.
*
*    CLEAR W_SELECTION_SCREEN.
*    W_SELECTION_SCREEN-ZDESCR = 'Activity'(017).
*    W_SELECTION_SCREEN-ZLOW = S_ACTVT-HIGH.
*    APPEND W_SELECTION_SCREEN TO I_SELECTION_SCREEN.
*    CLEAR W_SELECTION_SCREEN.
*  ELSE.
*    LOOP AT S_ACTVT.
*      CONCATENATE LV_PARAM S_ACTVT-LOW INTO LV_PARAM
*                            SEPARATED BY C_COMMA.
*    ENDLOOP.
*    SHIFT LV_PARAM LEFT.
*    CLEAR W_SELECTION_SCREEN.
*    W_SELECTION_SCREEN-ZDESCR = 'Activity'(017).
*    W_SELECTION_SCREEN-ZLOW = LV_PARAM.
*    APPEND W_SELECTION_SCREEN TO I_SELECTION_SCREEN.
*    CLEAR W_SELECTION_SCREEN.
*    CLEAR LV_PARAM.
*  ENDIF.
*ENDIF.
*
** Write Orders entered in the selection screen in output report
*CLEAR W_SELECTION_SCREEN.
*
*IF NOT S_ORDER[] IS INITIAL.
*  READ TABLE S_ORDER INDEX 1.
*  IF NOT S_ORDER-HIGH IS INITIAL.
*    CLEAR W_SELECTION_SCREEN.
*    W_SELECTION_SCREEN-ZDESCR = 'Order'(018).
*    W_SELECTION_SCREEN-ZLOW = S_ORDER-LOW.
*    APPEND W_SELECTION_SCREEN TO I_SELECTION_SCREEN.
*
*    CLEAR W_SELECTION_SCREEN.
*    W_SELECTION_SCREEN-ZDESCR = 'Order'(018).
*    W_SELECTION_SCREEN-ZLOW = S_ORDER-HIGH.
*    APPEND W_SELECTION_SCREEN TO I_SELECTION_SCREEN.
*    CLEAR W_SELECTION_SCREEN.
*  ELSE.
*    LOOP AT S_ORDER.
*      CONCATENATE LV_PARAM S_ORDER-LOW INTO LV_PARAM
*                            SEPARATED BY C_COMMA.
*    ENDLOOP.
*    SHIFT LV_PARAM LEFT.
*    CLEAR W_SELECTION_SCREEN.
*    W_SELECTION_SCREEN-ZDESCR = 'Order'(018).
*    W_SELECTION_SCREEN-ZLOW = LV_PARAM.
*    APPEND W_SELECTION_SCREEN TO I_SELECTION_SCREEN.
*    CLEAR W_SELECTION_SCREEN.
*    CLEAR LV_PARAM.
*  ENDIF.
*ENDIF.
*
** Write Plants entered in the selection screen in output report
*CLEAR W_SELECTION_SCREEN.
*
*IF NOT S_PLANT[] IS INITIAL.
*  READ TABLE S_PLANT INDEX 1.
*  IF NOT S_PLANT-HIGH IS INITIAL.
*    CLEAR W_SELECTION_SCREEN.
*    W_SELECTION_SCREEN-ZDESCR = 'Plant'(019).
*    W_SELECTION_SCREEN-ZLOW = S_PLANT-LOW.
*    APPEND W_SELECTION_SCREEN TO I_SELECTION_SCREEN.
*
*    CLEAR W_SELECTION_SCREEN.
*    W_SELECTION_SCREEN-ZDESCR = 'Plant'(019).
*    W_SELECTION_SCREEN-ZLOW = S_PLANT-HIGH.
*    APPEND W_SELECTION_SCREEN TO I_SELECTION_SCREEN.
*    CLEAR W_SELECTION_SCREEN.
*  ELSE.
*    LOOP AT S_PLANT.
*      CONCATENATE LV_PARAM S_PLANT-LOW INTO LV_PARAM
*                            SEPARATED BY C_COMMA.
*    ENDLOOP.
*    SHIFT LV_PARAM LEFT.
*    CLEAR W_SELECTION_SCREEN.
*    W_SELECTION_SCREEN-ZDESCR = 'Plant'(019).
*    W_SELECTION_SCREEN-ZLOW = LV_PARAM.
*    APPEND W_SELECTION_SCREEN TO I_SELECTION_SCREEN.
*    CLEAR LV_PARAM.
*    CLEAR W_SELECTION_SCREEN.
*  ENDIF.
*ENDIF.
*
** Write Control keys entered in the selection screen in output report
*CLEAR W_SELECTION_SCREEN.
*
*IF NOT S_CTLKY[] IS INITIAL.
*  READ TABLE S_CTLKY INDEX 1.
*  IF NOT S_CTLKY-HIGH IS INITIAL.
*    CLEAR W_SELECTION_SCREEN.
*    W_SELECTION_SCREEN-ZDESCR = 'Control key'(020).
*    W_SELECTION_SCREEN-ZLOW = S_CTLKY-LOW.
*    APPEND W_SELECTION_SCREEN TO I_SELECTION_SCREEN.
*
*    CLEAR W_SELECTION_SCREEN.
*    W_SELECTION_SCREEN-ZDESCR = 'Control key'(020).
*    W_SELECTION_SCREEN-ZLOW = S_CTLKY-HIGH.
*    APPEND W_SELECTION_SCREEN TO I_SELECTION_SCREEN.
*    CLEAR W_SELECTION_SCREEN.
*  ELSE.
*    LOOP AT S_CTLKY.
*      CONCATENATE LV_PARAM S_CTLKY-LOW INTO LV_PARAM
*                            SEPARATED BY C_COMMA.
*    ENDLOOP.
*    SHIFT LV_PARAM LEFT.
*    CLEAR W_SELECTION_SCREEN.
*    W_SELECTION_SCREEN-ZDESCR = 'Control key'(020).
*    W_SELECTION_SCREEN-ZLOW = LV_PARAM.
*    APPEND W_SELECTION_SCREEN TO I_SELECTION_SCREEN.
*    CLEAR LV_PARAM.
*    CLEAR W_SELECTION_SCREEN.
*  ENDIF.
*ENDIF.
*
** Write Checkbox values entered in the selection screen in output
*CLEAR W_SELECTION_SCREEN.
*W_SELECTION_SCREEN-ZDESCR = 'Planned'(021).
*W_SELECTION_SCREEN-ZLOW = CB_PLAN.
*APPEND W_SELECTION_SCREEN TO I_SELECTION_SCREEN.
*
*CLEAR W_SELECTION_SCREEN.
*W_SELECTION_SCREEN-ZDESCR = 'Actual'(022).
*W_SELECTION_SCREEN-ZLOW = CB_ACTL.
*APPEND W_SELECTION_SCREEN TO I_SELECTION_SCREEN.
*
*CLEAR W_SELECTION_SCREEN.
*W_SELECTION_SCREEN-ZDESCR = 'Update Duration'(023).
*W_SELECTION_SCREEN-ZLOW = CB_UPDUR.
*APPEND W_SELECTION_SCREEN TO I_SELECTION_SCREEN.
*
** Write Conv. factor entered in the selection screen in output report
*WRITE P_CVFACT TO LV_PARAM.
*CONDENSE LV_PARAM NO-GAPS.
*CLEAR W_SELECTION_SCREEN.
*W_SELECTION_SCREEN-ZDESCR = 'Conversion Factor'(024).
*W_SELECTION_SCREEN-ZLOW = LV_PARAM.
*APPEND W_SELECTION_SCREEN TO I_SELECTION_SCREEN.
*CLEAR W_SELECTION_SCREEN.
*
** selection screen details are printed on output report in standard
** format
*PERFORM SELECTION_SCREEN_DETAILS TABLES I_SELECTION_SCREEN
*                                 USING V_REPID  "program name
*                                       V_TITLE. "title
*
*ENDFORM.                    " SELECTION_SCREEN_REPORT
*
************************************************************************
* ENDFORM      SELECTION_SCREEN_REPORT
************************************************************************
************************************************************************
* FORM            SUB_AUDIT_REPORT
************************************************************************
* DESCRIPTION:    Display Audit report
*
************************************************************************
* CALLED BY:      ZMROB_UPDATE_NETWORK
* CALLS....:
************************************************************************
FORM SUB_AUDIT_REPORT.
  DATA: LV_REC_PROC TYPE I.
  DESCRIBE TABLE I_NET_ACT_WORK LINES LV_REC_PROC.
  SKIP.
  WRITE: /'Number of Records Processed : '(025), LV_REC_PROC.
  WRITE: /'Number of Network Selected  : '(026), V_NETWRK.
  WRITE: /'Number of Network Updated   : '(027), V_NETWRK_UPD.
ENDFORM.                    " SUB_AUDIT_REPORT
************************************************************************
* ENDFORM      SUB_AUDIT_REPORT
************************************************************************
************************************************************************
* FORM            SUB_ERROR_REPORT
************************************************************************
* DESCRIPTION:    Display error report
*
************************************************************************
* CALLED BY:      ZMROB_UPDATE_NETWORK
* CALLS....:
************************************************************************
FORM SUB_ERROR_REPORT.
  SKIP.
  LOOP AT I_ERR_REPORT.
    WRITE: / I_ERR_REPORT-AUFNR, ' ', I_ERR_REPORT-VORNR, ' ',
              I_ERR_REPORT-MSGTXT.
  ENDLOOP.
ENDFORM.                    " SUB_ERROR_REPORT
************************************************************************
* ENDFORM      SUB_ERROR_REPORT
************************************************************************

*Selection texts
*----------------------------------------------------------
* CB_ACTL         Actual
* CB_PLAN         Plan
* CB_UPDUR         Update Duration
* P_CVFACT         Validate field Conversion Fact
* S_ACTVT         Activity
* S_CTLKY         Control Key
* S_NETWRK         Network
* S_ORDER         Maintenance Order
* S_PLANT         Plant

*Messages
*----------------------------------------------------------
*
* Message class: ZGEN_EWS_MESSAGES
*035

*Selection texts
*----------------------------------------------------------
* CB_ACTL         Actual
* CB_PLAN         Plan
* CB_UPDUR         Update Duration
* P_CVFACT         Validate field Conversion Fact
* S_ACTVT         Activity
* S_CTLKY         Control Key
* S_NETWRK         Network
* S_ORDER         Maintenance Order
* S_PLANT         Plant

*Messages
*----------------------------------------------------------
*
* Message class: ZGEN_EWS_MESSAGES
*035

*Selection texts
*----------------------------------------------------------
* CB_ACTL         Actual
* CB_PLAN         Plan
* CB_UPDUR         Update Duration
* P_CVFACT         Validate file
* S_ACTVT         Activity
* S_CTLKY         Control Key
* S_NETWRK         Network
* S_ORDER         Maintenance
* S_PLANT         Plant

*Messages
*----------------------------------------------------------
*
* Message class: ZGEN_EWS_MESSAGES
*035

  • No labels