REPORT ZPPRTE001 LINE-SIZE 170
                 LINE-COUNT 65
                 NO STANDARD PAGE HEADING
                 MESSAGE-ID MG.

*----------------------------------------------------------------------*
* Program     :  ZPPRTE001                                             *
* Author      :  Patrick,Song                                          *
* Date        :  Jul 05, 2008                                          *
* Code type   :  conversion                                            *
* Version     :  new creation                                          *
* (interface/conversion/on-line transaction/report)                    *
*                                                                      *
*----------------------------------------------------------------------*
* Error handling :                                                     *
*----------------------------------------------------------------------*
* 1.                                                                   *
*                                                                      *
*----------------------------------------------------------------------*
* Change log :                                                         *
*----------------------------------------------------------------------*
* CR#       :                                                          *
* Corr. no. :                                                          *
* Date      :                                                          *
* Author    :                                                          *
* Change    :                                                          *
*                                                                      *
*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*
* Table declaration
*&---------------------------------------------------------------------*
TABLES: MARA,                  " Material number
        MAKT,                  " Material description
        MAPL,                  " Assignment of Task Lists to Materials
        MARC,                  " Plant data for material
        MAST,                  " Material to BOM Link
        QPMT,                  " Master Inspection Characteristics Texts
        T001W,                 " Plant data
        TCF10,                 " PRT control key
        STPO,                  " BOM item
        CRHD,                  " Work Center Header
        CRTX,                  " Text for the Work Center or PRT
        CRVS_A,
        T430.                  " Operation/Activity control key

*&---------------------------------------------------------------------*
* Subrouting declaration
*&---------------------------------------------------------------------*
TYPE-POOLS: KCDE.
INCLUDE   : ZBCDWI000 .

*&---------------------------------------------------------------------*
* selection screen define
*&---------------------------------------------------------------------*
* define block a1 for screen 1000
SELECTION-SCREEN BEGIN OF BLOCK A1 WITH FRAME TITLE TEXT-HB1.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: P_RTGPRT RADIOBUTTON GROUP RTG DEFAULT 'X'.
SELECTION-SCREEN COMMENT 03(45TEXT-PT1 FOR FIELD P_RTGPRT.
PARAMETERS: P_RTGRB  RADIOBUTTON GROUP RTG .
SELECTION-SCREEN COMMENT 50(45TEXT-PT2 FOR FIELD P_RTGRB.
SELECTION-SCREEN END   OF LINE.
SELECTION-SCREEN END OF BLOCK A1.

SELECTION-SCREEN BEGIN OF BLOCK A3 WITH FRAME TITLE TEXT-HB1.
PARAMETERS: P_STLAN LIKE MAST-STLAN DEFAULT  '1'  NO-DISPLAY.
PARAMETERS: P_VERWE LIKE PLKOD-VERWE DEFAULT '1'  NO-DISPLAY.
PARAMETERS: P_STATU LIKE PLKOD-STATU DEFAULT '4'  NO-DISPLAY.
SELECTION-SCREEN END OF BLOCK A3.

* define block a2 for screen 1000
SELECTION-SCREEN BEGIN OF BLOCK A2 WITH FRAME TITLE TEXT-HB2.
PARAMETER:  P_RTG  LIKE RLGRAP-FILENAME OBLIGATORY.
PARAMETER:  P_PRT  LIKE RLGRAP-FILENAME .
PARAMETER:  BEGCOL TYPE I DEFAULT 1     NO-DISPLAY.
PARAMETER:  BEGROW TYPE I DEFAULT 1     NO-DISPLAY.
PARAMETER:  ENDCOL TYPE I DEFAULT 100   NO-DISPLAY.
PARAMETER:  ENDROW TYPE I DEFAULT 32000 NO-DISPLAY.
SELECTION-SCREEN END OF BLOCK A2.
PARAMETERS: P_RESULT AS CHECKBOX DEFAULT SPACE .

*&---------------------------------------------------------------------*
* globe parameters declaration
*&---------------------------------------------------------------------*
* define table to store tempoary data
DATA INT_TAB     TYPE KCDE_INTERN_STRUC OCCURS 0 WITH HEADER LINE.

DATABEGIN OF FILE_RTG OCCURS 1000.
** these fields of routing data collection - ST
DATA: BOM_MATERIAL          LIKE BAPI1012_MTK_C-MATERIAL.              " BOM Material
DATA: MAKTX                 LIKE MAKT-MAKTX.                           " Material Description
DATA: PLANT                 LIKE BAPI1012_TSK_C-PLANT.                 " Plant
DATA: GROUP_COUNTER         LIKE BAPI1012_TSK_C-GROUP_COUNTER.         " Group Counter
DATA: ACTIVITY              LIKE BAPI1012_OPR_C-ACTIVITY.              " Activity
DATA: WORK_CNTR             LIKE BAPI1012_OPR_C-WORK_CNTR.             " Work center
DATA: PLANT2                LIKE BAPI1012_TSK_C-PLANT.                 " Plant for W/C
DATA: CONTROL_KEY           LIKE BAPI1012_OPR_C-CONTROL_KEY.           " Task list usage
DATA: DESCRIPTION           LIKE BAPI1012_OPR_C-DESCRIPTION.           " Description
DATA: BASE_QUANTITY         LIKE BAPI1012_OPR_C-BASE_QUANTITY.         " Base Quantity
DATA: STD_VALUE_01          LIKE BAPI1012_OPR_C-STD_VALUE_01.          " Preparation Time
DATA: STD_VALUE_02          LIKE BAPI1012_OPR_C-STD_VALUE_02.          " Labor Time
DATA: STD_VALUE_03          LIKE BAPI1012_OPR_C-STD_VALUE_03.          " Machine Time
DATA: MAX_NO_OF_SPLITS      LIKE BAPI1012_OPR_C-MAX_NO_OF_SPLITS.      " Maximum number of splits
DATA: MATERIAL              LIKE BAPI1012_COM_C-MATERIAL.              " Components
DATA: STANDARD_QUEUE_TIME   LIKE BAPI1012_OPR_C-STANDARD_QUEUE_TIME.   " Standard queue time
DATA: STANDARD_QUEUE_TIME_UNIT LIKE BAPI1012_OPR_C-STANDARD_QUEUE_TIME_UNIT.
DATAMETHOD                LIKE BAPI1012_CHA_C-METHOD .               " Inspection Method
** these fields of routing data collection - EN
DATA: TASK_LIST_GROUP       LIKE BAPI1012_TSK_C-TASK_LIST_GROUP.       " Key for Task List Group
DATA: IND_SPLITTING_REQRD   LIKE BAPI1012_OPR_C-IND_SPLITTING_REQRD.   " Required splitting
DATA: OPERATION_ID          LIKE BAPI1012_OPR_C-OPERATION_ID.          " Operation_id
DATA: TASK_LIST_USAGE       LIKE BAPI1012_TSK_C-TASK_LIST_USAGE.       " Task list usage
DATA: TASK_LIST_STATUS      LIKE BAPI1012_TSK_C-TASK_LIST_STATUS.      " Task_list_status
DATA: STANDARD_TEXT_KEY     LIKE BAPI1012_OPR_C-STANDARD_TEXT_KEY.     " Standard Key Text
DATA: STD_VALUE_04          LIKE BAPI1012_OPR_C-STD_VALUE_04.          " PowerTime
DATA: STD_VALUE_05          LIKE BAPI1012_OPR_C-STD_VALUE_05.          " Maintain Time
DATA: STD_VALUE_06          LIKE BAPI1012_OPR_C-STD_VALUE_06.          " Other time
DATA: USERFIELDS_KEYWORD_ID LIKE BAPI1012_OPR_C-USERFIELDS_KEYWORD_ID. " Keyword Code
DATA: USERFIELD_CH20_00     LIKE BAPI1012_OPR_C-USERFIELD_CH20_00.     " Whokshop
DATA: USERFIELD_CH20_01     LIKE BAPI1012_OPR_C-USERFIELD_CH20_01." Class 01
DATA: USERFIELD_CH10_02     LIKE BAPI1012_OPR_C-USERFIELD_CH10_02." Class 02
DATA: USERFIELD_CH10_03     LIKE BAPI1012_OPR_C-USERFIELD_CH10_03." Class 03
DATA: USERFIELD_QUAN_04     LIKE BAPI1012_OPR_C-USERFIELD_QUAN_04.     " Convert frequence
DATA: SORTED_BY             LIKE BAPI1012_OPR_C-SORTED_BY.             " Sort Term for Non-Stock Info Records
DATA: COST_ELEM             LIKE BAPI1012_OPR_C-COST_ELEM.             " Cost Element
DATA: PURCH_ORG             LIKE BAPI1012_OPR_C-PURCH_ORG.             " Purchasing Organization
DATA: PURCH_GROUP           LIKE BAPI1012_OPR_C-PURCH_GROUP.           " Purchasing group for external processing
DATA: MATL_GROUP            LIKE BAPI1012_OPR_C-MATL_GROUP.            " Material Group
DATAEND   OF FILE_RTG.

DATABEGIN OF RTG_UPL OCCURS 0.
DATA: BOM_MATERIAL(018).          " BOM Material
DATA: MAKTX(040).                 " Material Description
DATA: PLANT(004).                 " Plant
DATA: GROUP_COUNTER(002).         " Group Counter
DATA: ACTIVITY(004).              " Activity
DATA: WORK_CNTR(008).             " Work center
DATA: PLANT2(004).                " Plant for W/C
DATA: CONTROL_KEY(004).           " Task list usage
DATA: DESCRIPTION(040).           " Description
DATA: BASE_QUANTITY(017).         " Base Quantity
DATA: STD_VALUE_01(013).          " Preparation Time
DATA: STD_VALUE_02(013).          " Labor Time
DATA: STD_VALUE_03(013).          " Machine Time
DATA: MAX_NO_OF_SPLITS(003).      " Maximum number of splits
DATA: MATERIAL(018).              " Components
DATA: STANDARD_QUEUE_TIME(013).   " Standard queue time
DATA: STANDARD_QUEUE_TIME_UNIT(003).
DATAMETHOD(008) .               " Inspection Method
DATAEND   OF RTG_UPL .

DATABEGIN OF FILE_PRT OCCURS 1000.
** these fields of PRT data collection - ST
DATA: BOM_MATERIAL           LIKE BAPI1012_MTK_C-MATERIAL.              " BOM Material
DATA: MAKTX                  LIKE MAKT-MAKTX.                           " Material Description
DATA: PLANT                  LIKE BAPI1012_TSK_C-PLANT.                 " Plant
DATA: GROUP_COUNTER          LIKE BAPI1012_TSK_C-GROUP_COUNTER.         " Group Counter
DATA: ACTIVITY               LIKE BAPI1012_OPR_C-ACTIVITY.              " Activity
DATA: ACTIVITY_PRT           LIKE BAPI1012_PRT_C-ACTIVITY.              " Activity PRT
DATA: MISCELLANEOUS          LIKE BAPI1012_PRT_C-MISCELLANEOUS.         " ProdResourceTools
DATA: OBJECT_ID_CIM_RESOURCE LIKE BAPI1012_PRT_C-OBJECT_ID_CIM_RESOURCE .
DATA: TASK_LIST_GROUP        LIKE BAPI1012_TSK_C-TASK_LIST_GROUP.       " Key for Task List Group
DATAEND   OF FILE_PRT .

*--* define internal table for error store
DATABEGIN OF I_ERROR OCCURS 0.
DATA: BOM_MATERIAL LIKE FILE_RTG-BOM_MATERIAL.
DATA: PLANT        LIKE FILE_RTG-PLANT.
DATA: WORK_CNTR    LIKE FILE_RTG-WORK_CNTR.
DATA: CONTROL_KEY  LIKE FILE_RTG-CONTROL_KEY.
DATA: MATERIAL     LIKE FILE_RTG-MATERIAL.
DATAFIELD(030).
DATAVALUE(030).
DATAMESSAGE(040).
DATA: SELK(001) .
DATAEND   OF I_ERROR.

DATABEGIN OF I_MAT OCCURS 0.
DATA: BOM_MATERIAL LIKE FILE_RTG-BOM_MATERIAL.
DATAEND OF I_MAT .

DATABEGIN OF I_WC OCCURS 0 .
DATA: WORK_CNTR    LIKE FILE_RTG-WORK_CNTR.
DATA: PLANT        LIKE FILE_RTG-PLANT.
DATAEND OF I_WC .

DATABEGIN OF I_ROUTING OCCURS 0.
DATA: BOM_MATERIAL    LIKE FILE_RTG-BOM_MATERIAL.
DATA: MAKTX(040).     " Material Description
DATA: PLANT           LIKE FILE_RTG-PLANT.
DATA: TASK_LIST_GROUP LIKE BAPI1012_TSK_C-TASK_LIST_GROUP.       " Key for Task List Group
DATA: GROUP_COUNTER   LIKE FILE_RTG-GROUP_COUNTER.
DATAEND   OF I_ROUTING .

DATABEGIN OF I_DELETION OCCURS 0.
DATA: BOM_MATERIAL    LIKE FILE_RTG-BOM_MATERIAL.
DATA: MAKTX(040).     " Material Description
DATA: PLANT           LIKE FILE_RTG-PLANT.
DATA: PLNNR           LIKE MAPL-PLNNR.
DATA: GROUP_COUNTER   LIKE FILE_RTG-GROUP_COUNTER.
DATAEND   OF I_DELETION .

*--* define internal table for BAPI Processing

** Task list header data in CREATE-BAPI for routings
DATABEGIN OF TASK OCCURS 0.
        INCLUDE STRUCTURE BAPI1012_TSK_C.
DATAEND OF TASK.

** Material task list assignment in CREATE-BAPI for routings
DATABEGIN OF MATERIALTASKALLOCATION OCCURS 0.
        INCLUDE STRUCTURE BAPI1012_MTK_C.
DATAEND OF MATERIALTASKALLOCATION.

** Task list sequences in CREATE-BAPI for routings
DATABEGIN OF SEQUENCE OCCURS 0.
        INCLUDE STRUCTURE BAPI1012_SEQ_C.
DATAEND OF SEQUENCE.

** Operations in CREATE-BAPI for routings
DATABEGIN OF OPERATION OCCURS 0.
        INCLUDE STRUCTURE BAPI1012_OPR_C.
DATAEND OF OPERATION.

** Sub operations in CREATE-BAPI for routings
DATABEGIN OF SUBOPERATION OCCURS 0.
        INCLUDE STRUCTURE BAPI1012_SUB_OPR_C.
DATAEND OF SUBOPERATION.

** Reference to operation set in CREATE-BAPI for routings
DATABEGIN OF REFERENCEOPERATION OCCURS 0.
        INCLUDE STRUCTURE BAPI1012_REF_OPR_C.
DATAEND OF REFERENCEOPERATION.

** Component assignment in CREATE-BAPI for routing
DATABEGIN OF PRODUCTIONRESOURCE OCCURS 0.
        INCLUDE STRUCTURE BAPI1012_PRT_C.
DATAEND OF PRODUCTIONRESOURCE.

** PRT assignments in CREATE-BAPI for routings
DATABEGIN OF COMPONENTALLOCATION OCCURS 0.
        INCLUDE STRUCTURE BAPI1012_COM_C.
DATAEND OF COMPONENTALLOCATION.

** Inspection Characteristics in CREATE-BAPI for routings
DATABEGIN OF INSPCHARACTERISTIC OCCURS 0.
        INCLUDE STRUCTURE BAPI1012_CHA_C.
DATAEND OF INSPCHARACTERISTIC.

* define BOM Number for details data getting
DATA: STR_STLNR TYPE STPO-STLNR .

** Text assignment (int. format) for Direct Input in the EWB
DATABEGIN OF TEXTALLOCATION OCCURS 0.
        INCLUDE STRUCTURE BAPI1012_TXT_HDR_C.
DATAEND OF TEXTALLOCATION.

** Long text lines in CREATE-BAPI for routings
DATABEGIN OF TEXTROUTING OCCURS 0.
        INCLUDE STRUCTURE BAPI1012_TXT_C.
DATAEND OF TEXTROUTING.

** Return parameter
DATABEGIN OF RETURN OCCURS 0.
        INCLUDE STRUCTURE BAPIRET2.
DATAEND OF RETURN.

DATA: S_STATUS        TYPE SLIS_FORMNAME VALUE 'STANDARD_ST01'.
DATA: S_USER_COMMAND  TYPE SLIS_FORMNAME VALUE 'USER_COMMAND-ALV'.
*----------------------------------------------------------------------*
* Global program variables                                             *
*----------------------------------------------------------------------*
* * Variables used for Standard Title


*--* define functional data for BAPI processing
DATAGROUP        TYPE BAPI1012_TSK_C-TASK_LIST_GROUP,
      GROUPCOUNTER TYPE BAPI1012_TSK_C-GROUP_COUNTER,
      TESTRUN      TYPE BAPIFLAG,
      PROFILE      LIKE BAPI1012_CONTROL_DATA-PROFILE,
      BOMUSAGE     LIKE BAPI1012_CONTROL_DATA-BOM_USAGE,
      APPLICATION  LIKE BAPI1012_CONTROL_DATA-APPLICATION.

*-* define message table for routing deletion & remove
DATA: BDCDATA      LIKE BDCDATA    OCCURS 0 WITH HEADER LINE.
DATA: MESSTAB      LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.


* store uploaded and processed result
DATABEGIN OF AUDIT.
DATA: FILESIZE       TYPE I.        " # size of local file
DATA: LIN_PROC       TYPE I.        " # of lines processed
DATA: LIN_TOTAL      TYPE I.        " # of lines total
DATA: RTG_ENTRIES    TYPE I.        " # of Routing Entries
DATA: RTG_DUPLICATE  TYPE I.        " # of Routing duplicated Entries
DATA: RTG_CREATE     TYPE I.        " # of Routing created
DATA: RTG_ERROR      TYPE I.        " # of Routing Created error

DATA: LIN_PRTRTG     TYPE I.        " # of PRT Line of Routing
DATAEND OF AUDIT.

DATA: FNAME_RTG  TYPE STRING.      " input file name for routing
DATA: FNAME_PRT  TYPE STRING.      " input file name for prt

DATA: STR_OBJTY     LIKE CRTX-OBJTY VALUE 'FH' .
DATA: STR_STEUF     LIKE TCF10-STEUF .

*-* define parameter to store line count
DATALINE TYPE I.

*&---------------------------------------------------------------------*
* top-of-page.
*&---------------------------------------------------------------------*
TOP-OF-PAGE.
  IF I_ERROR[] IS INITIAL.
    PERFORM PAGE_HEADER.
    PERFORM OUTPUT_COLUMN_HEADING.       " Print column heading
  ENDIF .
*&---------------------------------------------------------------------*
* initialization.
*&---------------------------------------------------------------------*
INITIALIZATION.

  REFRESH: FILE_RTG, RETURN,    TEXTROUTING,          TEXTALLOCATION,
           INSPCHARACTERISTIC,  COMPONENTALLOCATION,  PRODUCTIONRESOURCE,
           REFERENCEOPERATION,  SUBOPERATION,         OPERATION,
           SEQUENCE,     TASK,  MATERIALTASKALLOCATION.
  CLEAR  : FILE_RTG, RETURN,    TEXTROUTING,          TEXTALLOCATION,
           INSPCHARACTERISTIC,  COMPONENTALLOCATION,  PRODUCTIONRESOURCE,
           REFERENCEOPERATION,  SUBOPERATION,         OPERATION,
           SEQUENCE,     TASK,  MATERIALTASKALLOCATION.
  CLEAR  : AUDIT .

  N = 157 .

*&---------------------------------------------------------------------*
* at selection-screen.
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_RTG .
  PERFORM GET_RTG_FILENAME .

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PRT .
  PERFORM GET_PRT_FILENAME .

AT SELECTION-SCREEN .

  IF NOT P_RTGPRT IS INITIAL .
    IF P_PRT IS INITIAL .
      MESSAGE E899 WITH TEXT-EE0 .
    ENDIF .
  ENDIF .
*&---------------------------------------------------------------------*
* start-of-selection.
*&---------------------------------------------------------------------*
START-OF-SELECTION.

** get start time
*  PERFORM GET_START_TIME .

** get uploading data
  PERFORM GET_UPLOADING_DATA TABLES FILE_RTG
                           CHANGING FNAME_RTG FNAME_PRT AUDIT-FILESIZE.
** check uploading data
  PERFORM CHECK_UPLOAD_DATA .
** display result
  PERFORM DISPLAY_RESULT .

*&---------------------------------------------------------------------*
* end-of-selection.
*&---------------------------------------------------------------------*
END-OF-SELECTION.
*  IF   SY-UNAME EQ 'T31920'
*    OR SY-UNAME EQ 'A31920'
*    OR SY-UNAME EQ 'ABAP06'
*    OR SY-UNAME EQ 'WANGYP'
*    OR SY-UNAME CA '31920'.
*    SET PF-STATUS 'TLB'.
*  ELSE.
*    SET PF-STATUS 'TLB' EXCLUDING 'RTGDEL'.
*  ENDIF .
  SET PF-STATUS 'TLB'.
** get end time
*  PERFORM GET_END_TIME .


*&---------------------------------------------------------------------*
* end-of-page.
*&---------------------------------------------------------------------*
*END-OF-PAGE.
*  PERFORM PAGE_FOOTER .

*&---------------------------------------------------------------------*
* at user-command.
*&---------------------------------------------------------------------*
AT USER-COMMAND.

  CASE SY-UCOMM.
    WHEN 'RTGCRT'.
      IF NOT I_ROUTING[] IS INITIAL AND I_ERROR[] IS INITIAL .
        PERFORM POPUP_TO_CONFIRM USING TEXT-HH1 TEXT-Q01.
        IF L_ANSWER = '1'.
          WRITE:/ TEXT-R01 COLOR COL_KEY, TEXT-R02 COLOR COL_KEY,
                  TEXT-R03 COLOR COL_KEY, TEXT-R04 COLOR COL_KEY.
          ULINE.
          PERFORM BAPI_ROUTING_CREATE TABLES FILE_RTG.
          REFRESH: I_ROUTING .
          CLEAR  : I_ROUTING .
        ENDIF .
      ELSEIF I_ROUTING[] IS INITIAL .
        MESSAGE TEXT-E06 TYPE 'S'.
      ELSE.
        MESSAGE TEXT-E09 TYPE 'S'.
      ENDIF.
    WHEN 'RTGDEL'.
      IF NOT I_DELETION[] IS INITIAL .
        PERFORM POPUP_TO_CONFIRM USING TEXT-HH1 TEXT-Q02.
        IF L_ANSWER = '1'.
          WRITE:/10 TEXT-R01 COLOR COL_KEY, TEXT-R02 COLOR COL_KEY,
                    TEXT-R03 COLOR COL_KEY, TEXT-R04 COLOR COL_KEY.
          ULINE .
          PERFORM DELETE_ROUTING TABLES I_DELETION .
          REFRESH: I_DELETION .
          CLEAR  : I_DELETION .
          CLEAR  : AUDIT-RTG_DUPLICATE .
        ENDIF .
      ENDIF .
    WHEN OTHERS .
  ENDCASE.


*&---------------------------------------------------------------------*
*&      Form  get_filename
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_RTG_FILENAME .

  CALL FUNCTION 'WS_FILENAME_GET'             "Get file name
       EXPORTING
*            DEF_FILENAME     = ' '
*            DEF_PATH         = ' '
             MASK             = ',*.* ,*.*.'
             MODE             = '0'
             TITLE            = 'Get File name'
       IMPORTING
             FILENAME         = P_RTG
*            RC               =
       EXCEPTIONS
             INV_WINSYS       = 1
             NO_BATCH         = 2
             SELECTION_CANCEL = 3
             SELECTION_ERROR  = 4
             OTHERS           = 5.
  IF SY-SUBRC <> 0.
*            MESSAGE E016 WITH P_PATH.
  ENDIF.

ENDFORM.                    " get_filename
*&---------------------------------------------------------------------*
*&      Form  get_uploading_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_UPLOADING_DATA TABLES ITAB CHANGING FNAME_RTG FNAME_PRT FILESIZE.

** call function to get path and name if parameter is initial
  IF P_RTG IS INITIAL.
    CALL FUNCTION 'F4_FILENAME'
      IMPORTING
        FILE_NAME = P_RTG.
  ENDIF .
* get filename for uploading PRT data of routing creation if required
  IF NOT P_RTGPRT IS INITIAL AND P_PRT IS INITIAL.
    CALL FUNCTION 'F4_FILENAME'
      IMPORTING
        FILE_NAME = P_PRT.
  ENDIF.
  FNAME_RTG = P_RTG .
  FNAME_PRT = P_PRT .

*" Upload basic routing data
  PERFORM GET_UPLOADED_ROUTING_DATA .

*" Upload PRT data for routing if required
  IF NOT P_RTGPRT IS INITIAL .
    PERFORM GET_UPLOADED_PRTOOLS_DATA .
  ENDIF .

*-* Check internal table
  IF FILE_RTG[] IS INITIAL.
    MESSAGE TEXT-M01 TYPE 'S'.
  ELSE.
    DESCRIBE TABLE FILE_RTG LINES AUDIT-LIN_TOTAL .
  ENDIF.

*-* sort by material and plant
  SORT FILE_RTG BY BOM_MATERIAL PLANT ACTIVITY.

ENDFORM.                    " get_uploading_data