MOVING FILES

Question:
HELLO,
1.FROM ABAP I NEED TO REED FILE ON NETWORK, THEN RENAME IT AND MOVE TO DIFFERENT DIRECTORY ON NETWORK. THIS IS ON MS PLATFORM AND WE USED TO DO IT WITH SYSTEM COMMANDS ON UNIX.
2. WHAT IS BEST APPROACH TO TRANSFER DATA FROM UNIX DIRECTORY TO FILE DIRECTORIES. WE HAVE HISTORICAL FILE
THANKS IN ADVANCE.
Answer:
Here you go:REPORT ZZUPDOWN.
 CONSTANTS: CF_BEGINPAD(20) TYPE C VALUE '/tmp/'.
 DATA: BEGIN OF TA_REC OCCURS 0,
        RECORD TYPE CHAR1024,
       END   OF TA_REC.
 DATA: TB_FILELIST LIKE RSFILLST   OCCURS 0 WITH HEADER LINE.
 DATA: TB_FIELDS   LIKE HELP_VALUE OCCURS 2 WITH HEADER LINE.
 DATA: FL_TABIX    LIKE SY-TABIX.
 DATA: FL_SELECT LIKE HELP_INFO-FLDVALUE.
 DATA: BEGIN OF TB_LIJST OCCURS 0,
         PATH LIKE FILENAME-PATHINTERN,
         NAME LIKE RLGRAP-FILENAME,
         TYPE(10) TYPE C,
        END OF TB_LIJST.
 SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
 SELECTION-SCREEN SKIP.
 SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.
 PARAMETERS: R1_LOC RADIOBUTTON GROUP R1,
             R1_SAP   RADIOBUTTON GROUP R1 DEFAULT 'X'.
 SELECTION-SCREEN END OF BLOCK B2.
 SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-003.
 PARAMETERS: R2_LOC RADIOBUTTON GROUP R2,
             R2_SAP   RADIOBUTTON GROUP R2.
 SELECTION-SCREEN END OF BLOCK B3.
 SELECTION-SCREEN END OF BLOCK B1.
 SELECTION-SCREEN BEGIN OF BLOCK B4 WITH FRAME TITLE TEXT-004.
 SELECTION-SCREEN SKIP.
 SELECTION-SCREEN BEGIN OF BLOCK B5 WITH FRAME TITLE TEXT-005.
 PARAMETERS P_FILE1 LIKE RLGRAP-FILENAME OBLIGATORY DEFAULT '/tmp/'.
 SELECTION-SCREEN END OF BLOCK B5.
 SELECTION-SCREEN BEGIN OF BLOCK B6 WITH FRAME TITLE TEXT-006.
 PARAMETERS P_FILE2 LIKE RLGRAP-FILENAME OBLIGATORY default 'C:\'.
 SELECTION-SCREEN END OF BLOCK B6.
 SELECTION-SCREEN END OF BLOCK B4.
 INITIALIZATION.
 AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE1.
   PERFORM F4_BRONFILE.
 AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE2.
   PERFORM F4_DOELFILE.
 START-OF-SELECTION.
   PERFORM LEES_BRONFILE.
   PERFORM BEWERK_FILE.
   PERFORM SCHRIJF_DOELFILE.
 END-OF-SELECTION.
*&---------------------------------------------------------------------*
 FORM LEES_BRONFILE.
   IF R1_LOC EQ 'X'.
     PERFORM LEES_LOKAAL.
   ELSE.
     PERFORM LEES_SAP.
   ENDIF.
 ENDFORM.                    " lees_bronfile
*&---------------------------------------------------------------------*
 FORM BEWERK_FILE.
 ENDFORM.                    " bewerk_file
*&---------------------------------------------------------------------*
 FORM SCHRIJF_DOELFILE.
   IF R2_LOC EQ 'X'.
     PERFORM SCHRIJF_LOKAAL.
   ELSE.
     PERFORM SCHRIJF_SAP.
   ENDIF.
 ENDFORM.                    " schrijf_doelfile
*&---------------------------------------------------------------------*
 FORM F4_BRONFILE.
*   Opgegeven waarden eerst ophalen van selectieveld
   CLEAR: R1_LOC, R1_SAP.
   PERFORM HAAL_SCHERMPARAMETER USING  'R1_LOC'
                                CHANGING R1_LOC.
   CLEAR P_FILE1.
   PERFORM HAAL_SCHERMPARAMETER USING  'P_FILE1'
                                CHANGING P_FILE1.
   IF R1_LOC EQ 'X'.
     PERFORM F4_LOKAAL CHANGING P_FILE1.
   ELSE.
     PERFORM F4_SAP CHANGING P_FILE1.
   ENDIF.
 ENDFORM.                    " F4_bronfile
*&---------------------------------------------------------------------*
 FORM F4_DOELFILE.
*   Opgegeven waarde in parameter eerst ophalen van selectieveld
   CLEAR: R2_LOC, R2_SAP.
   PERFORM HAAL_SCHERMPARAMETER USING  'R2_LOC'
                                CHANGING R2_LOC.
   CLEAR P_FILE2.
   PERFORM HAAL_SCHERMPARAMETER USING  'P_FILE2'
                                    CHANGING P_FILE2.
   IF R2_LOC EQ 'X'.
     PERFORM F4_LOKAAL CHANGING P_FILE2.
   ELSE.
     PERFORM F4_SAP CHANGING P_FILE2.
   ENDIF.
 ENDFORM.                    " f4_doelfile
*&---------------------------------------------------------------------*
 FORM F4_LOKAAL CHANGING    P_FILE.
   CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
        EXPORTING
             STATIC    = 'X'
        CHANGING
             FILE_NAME = P_FILE.
 ENDFORM.                                                   " F4_LOKAAL
*&---------------------------------------------------------------------*
 FORM F4_SAP CHANGING P_FILENAME.
   DATA FILE LIKE RFPDO-RFBIFILE.
   DATA FL_DIRNAME LIKE RFPDO-RFBIFILE.
   DATA DIRNAME LIKE RSMRGSTR-PATH.
   DATA FILENM  LIKE RSMRGSTR-NAME.
   DATA PATTERN LIKE RSMRGSTR-NAME.
   DATA LISTTITLE(70) TYPE C VALUE
   'Selecteer uw bestand of selecteer een subdirectory .. of root .'.
   DATA TITLE(70) TYPE C VALUE 'Bestanden op SAP-server'.
   DATA FDPOS LIKE SY-FDPOS.
   MOVE P_FILENAME TO FILE.
*   Opgegeven pad en bestand splitsen
   MOVE FILE TO FL_DIRNAME.
   SY-FDPOS = 0.
   WHILE SY-SUBRC IS INITIAL.
     MOVE SY-FDPOS TO FDPOS.
     MOVE ' ' TO FILE+SY-FDPOS(1).
     SEARCH FILE FOR '/'.
   ENDWHILE.
   ADD 1 TO FDPOS.
   MOVE FL_DIRNAME+0(FDPOS) TO DIRNAME.
   MOVE FL_DIRNAME+FDPOS TO FILENM.
   IF FILENM CA '*' OR FILENM IS INITIAL.
     IF NOT FILENM IS INITIAL.
       PATTERN = FILENM.
     ENDIF.
     FILENM = '*'.
   ENDIF.
   REFRESH TB_FILELIST.
   IF DIRNAME IS INITIAL.
     MOVE CF_BEGINPAD TO DIRNAME.
   ENDIF.
   CALL FUNCTION 'SUBST_GET_FILE_LIST'
        EXPORTING
             DIRNAME      = DIRNAME
             FILENM       = FILENM
             PATTERN      = PATTERN
        TABLES
             FILE_LIST    = TB_FILELIST
        EXCEPTIONS
             ACCESS_ERROR = 1
             OTHERS       = 2.
   IF TB_FILELIST[] IS INITIAL.
*     Niets gevonden?
     MESSAGE ID '38' TYPE 'S' NUMBER '0001'
                     WITH 'Bestand of directory bestaat niet'.
     STOP.
   ENDIF.
   REFRESH TB_LIJST.
   CLEAR TB_LIJST.
   LOOP AT TB_FILELIST.
     MOVE: TB_FILELIST-DIRNAME TO TB_LIJST-PATH,
           TB_FILELIST-NAME TO TB_LIJST-NAME,
           TB_FILELIST-TYPE TO TB_LIJST-TYPE.
     APPEND TB_LIJST.
   ENDLOOP.
   SORT TB_LIJST BY NAME.
*   Vullen hulptabel met velden uit database met correct formaat en
*   bijpassende DD-teksten
   CLEAR TB_FIELDS.
   REFRESH TB_FIELDS.
   MOVE: 'FILENAME' TO  TB_FIELDS-TABNAME,
         'PATHINTERN'     TO  TB_FIELDS-FIELDNAME,
          ' '       TO  TB_FIELDS-SELECTFLAG.
   APPEND  TB_FIELDS.
   CLEAR TB_FIELDS.
   MOVE: 'RLGRAP' TO TB_FIELDS-TABNAME,
         'FILENAME'     TO  TB_FIELDS-FIELDNAME,
          'X'       TO  TB_FIELDS-SELECTFLAG.      "Selectieveld
   APPEND  TB_FIELDS.
   CLEAR TB_FIELDS.
*   Popup
   CALL FUNCTION 'HELP_VALUES_GET_NO_DD_NAME'
        EXPORTING
         SELECTFIELD                   = 'PATHINTERN'
         TITEL                         = TITLE
         NO_PERS_HELP_SELECT           = 'X'
         TITLE_IN_VALUES_LIST          = LISTTITLE
         SHOW_ALL_VALUES_AT_FIRST_TIME = 'X'
         WRITE_SELECTFIELD_IN_COLOURS  = 'X'
         NO_DISPLAY_OF_PERS_VALUES     = 'X'
        IMPORTING
             IND                           = FL_TABIX
             SELECT_VALUE                  = FL_SELECT
        TABLES
             FIELDS                        = TB_FIELDS
             FULL_TABLE                    = TB_LIJST
        EXCEPTIONS
             FULL_TABLE_EMPTY              = 1
             NO_TABLESTRUCTURE_GIVEN       = 2
             NO_TABLEFIELDS_IN_DICTIONARY  = 3
             MORE_THEN_ONE_SELECTFIELD     = 4
             NO_SELECTFIELD                = 5
             OTHERS                        = 6.
   IF NOT SY-SUBRC IS INITIAL.
     STOP.
   ENDIF.
   READ TABLE TB_LIJST INDEX FL_TABIX.
   IF TB_LIJST-TYPE EQ 'directory'.
     CASE TB_LIJST-NAME.
       WHEN '. '.
         MOVE CF_BEGINPAD TO P_FILENAME.
       WHEN '..'.
         DATA PAD(40) TYPE C.
         MOVE TB_LIJST-PATH TO PAD.
         SHIFT PAD RIGHT DELETING TRAILING SPACE.
         IF PAD+36(1) EQ '/'.
           MOVE '   ' TO PAD+37(3).
         ELSE.
           MOVE '    ' TO PAD+36(4).
         ENDIF.
         SHIFT PAD LEFT DELETING LEADING SPACE.
         IF PAD+0(20) NE CF_BEGINPAD.
           MOVE CF_BEGINPAD TO P_FILENAME.
         ELSE.
           MOVE PAD TO P_FILENAME.
         ENDIF.
       WHEN OTHERS.
         CONCATENATE TB_LIJST-PATH TB_LIJST-NAME '/' INTO P_FILENAME.
     ENDCASE.
     PERFORM F4_SAP CHANGING P_FILENAME.
   ENDIF.
   CONCATENATE TB_LIJST-PATH TB_LIJST-NAME INTO P_FILENAME.
 ENDFORM.                                                   " F4_sap
*&---------------------------------------------------------------------*
 FORM HAAL_SCHERMPARAMETER USING    VALUE(P_PARAMETER)
                             CHANGING P_FILENAME.
*   Datadeclaraties voor functiebouwsteen 'DYNP_VALUES_READ'
   DATA: SCR_FIELDS LIKE DYNPREAD OCCURS 1 WITH HEADER LINE.
   DATA: DYNAME LIKE  D020S-PROG,
         DYNUMB LIKE  D020S-DNUM.
*   Programmanaam en -nr meegeven
   MOVE: SY-REPID TO DYNAME,
         SY-DYNNR TO DYNUMB.
*   Op te halen parameter meegeven
   TRANSLATE P_PARAMETER TO UPPER CASE.
   MOVE: P_PARAMETER TO SCR_FIELDS-FIELDNAME.
   APPEND SCR_FIELDS.
*   Parameterwaarde ophalen
   CALL FUNCTION 'DYNP_VALUES_READ'
        EXPORTING
             DYNAME                   = DYNAME
             DYNUMB                   = DYNUMB
        TABLES
             DYNPFIELDS               = SCR_FIELDS
        EXCEPTIONS
             INVALID_ABAPWORKAREA     = 1
             INVALID_DYNPROFIELD      = 2
             INVALID_DYNPRONAME       = 3
             INVALID_DYNPRONUMMER     = 4
             INVALID_REQUEST          = 5
             NO_FIELDDESCRIPTION      = 6
             INVALID_PARAMETER        = 7
             UNDEFIND_ERROR           = 8
             DOUBLE_CONVERSION        = 9
             STEPL_NOT_FOUND          = 10
             OTHERS                   = 11.
*   Veldwaarde opnemen
   IF SY-SUBRC IS INITIAL.
     READ TABLE SCR_FIELDS INDEX 1.
     MOVE SCR_FIELDS-FIELDVALUE TO P_FILENAME.
   ENDIF.
 ENDFORM.                    " Get_Screenparameter
*&---------------------------------------------------------------------*
 FORM SCHRIJF_LOKAAL.
   CALL FUNCTION 'WS_DOWNLOAD'
        EXPORTING
             FILENAME            = P_FILE2
             FILETYPE            = 'ASC'
        TABLES
             DATA_TAB            = TA_REC
        EXCEPTIONS
             FILE_OPEN_ERROR     = 1
             FILE_WRITE_ERROR    = 2
             INVALID_FILESIZE    = 3
             INVALID_TABLE_WIDTH = 4
             INVALID_TYPE        = 5
             NO_BATCH            = 6
             UNKNOWN_ERROR       = 7
             OTHERS              = 8.
   IF SY-SUBRC EQ 0.
     WRITE:/ 'File', P_FILE2, ‘has been created.'.
   ENDIF.
 ENDFORM.                    " schrijf_LOKAAL
*&---------------------------------------------------------------------*
 FORM SCHRIJF_SAP.
   OPEN DATASET P_FILE2 FOR OUTPUT IN TEXT MODE.
   IF SY-SUBRC EQ 0.
     LOOP AT TA_REC.
       TRANSFER TA_REC-RECORD TO P_FILE2.
     ENDLOOP.
     CLOSE DATASET P_FILE2.
     IF SY-SUBRC EQ 0.
       WRITE:/ 'SAP-file', P_FILE2, ‘has been created.'.
     ENDIF.
   ENDIF.
 ENDFORM.                    " schrijf_SAP
*&---------------------------------------------------------------------*
 FORM LEES_LOKAAL.
   CALL FUNCTION 'WS_UPLOAD'
        EXPORTING
             FILENAME            = P_FILE1
        TABLES
             DATA_TAB            = TA_REC
        EXCEPTIONS
             CONVERSION_ERROR    = 1
             FILE_OPEN_ERROR     = 2
             FILE_READ_ERROR     = 3
             INVALID_TABLE_WIDTH = 4
             INVALID_TYPE        = 5
             NO_BATCH            = 6
             UNKNOWN_ERROR       = 7
             OTHERS              = 8.
   IF SY-SUBRC NE 0.
     WRITE:/ 'File'  ,P_FILE1, 'could not be opened'.
   ENDIF.
 ENDFORM.                    " read_LOKAAL
*&---------------------------------------------------------------------*
 FORM LEES_SAP.
   OPEN DATASET P_FILE1 FOR INPUT IN TEXT MODE.
   IF SY-SUBRC EQ 0.
     DO.
       CLEAR TA_REC.
       READ DATASET P_FILE1 INTO TA_REC-RECORD.
       IF SY-SUBRC EQ 0.
         APPEND TA_REC.
       ELSE.
         EXIT.
       ENDIF.
     ENDDO.
     CLOSE DATASET P_FILE1.
   ELSE.
     WRITE:/ 'Unix file', P_FILE1 , 'could not be opened.'.
   ENDIF.
 ENDFORM.                    " read_SAP
Best regards, Tim van Steenbergen
Answer:
Zorik: Please clarify: are you going from Unix to MS, Unix to Unix, or MS to Unix or MS to MS. Also is this a job you are creating for ongoing use or a one-time data transfer? I see function 'WS_DOWNLOAD' in this program but not sure if its what you need.
Tim: your program is large. Please give a brief synopsis of what it does.
Robert Crouser
Answer:
The program ZZupdown gives you a selection-screen:
_______________________________________________
R1_LOC o "Here you choose the source:
R1_SAP o "local pc or SPA-system
_______________________________________________
R2_LOC o "Here you choose the target
R2_SAP o "local pc or SPA-system
_______________________________________________
_______________________________________________
P-File1 "Here you select the sourcefile via F4
_______________________________________________
P-File2 "Here you select the targetfile via F4
_______________________________________________
When executing it, your sourcefile gets transfered from your source-choice to the targetfile in the target of your choice.
This program is independent from your os-platform.
A drawback is that it only does one file at the time, but if you like you can modify it further.
Best regards, Tim van Steenbergen
Answer:
Cool!
Robert
Answer:
How do i download this program zzupdown ?.
If it works, its GREAT.
Answer:
You could copy and paste it.

More Articles:

Performance question - Appending internal table?
LSMW / RVINVB10 - Load SD Item Proposals is it possible?
Urgent?
B/G Job's spool request to App.Server?
Sending email from ABAP?
Components of a Production Order?