REPORT ZZBGS002 MESSAGE-ID Z1
                NO STANDARD PAGE HEADING
                LINE-COUNT 65
                LINE-SIZE  132.

*---------------------------------------------------------------------*
* Emne:            Program Mananager, showing directory list from Unix*
*                  and posibility to select and do things with the    *
*                  selected file                                      *
*                                                                     *
* Beskrivelse:     With an C-call you have access to UNIX. thes is    *
*                  used to call standad unix operating system calls   *
*                  'ls'.                                              *
*                  Remember that you have SAP authorization on Unix   *
*                  so be careful out there.                           *
*                                                                     *
* Autorisation:    None                                               *
*                                                                     *
* Customisering:   No customizing                                     *
*                                                                     *
* Parametre:       Filename incl. path                                *
*                                                                     *
* Releaseskifte:   Check you are alowed to use C calls                *
*                                                                     *
* Programmør:      Benny G. Sørensen                                  *
*                                                                     *
* SAP Release:     3.0x                                               *
*---------------------------------------------------------------------*

*---------------------------------------------------------------------*
* Global Variables.                                                   *
*---------------------------------------------------------------------*
DATA: BEGIN OF TABL OCCURS 0,
          LINE(132),
      END OF TABL.

DATA: PARCOM_LOC(100) TYPE C.

*
DATA: NAME(45) TYPE C,
      SIZE(10) TYPE C,
      DATE(12) TYPE C,
      OFFSET   LIKE SY-FDPOS,
      LINE     LIKE TABL-LINE,
      SUM(16)  TYPE C.

DATA: FILE(45) TYPE C.
FIELD-SYMBOLS: <FIELD>.

*-------------------------------------------------------------------*
* Parameters.                                                       *
*-------------------------------------------------------------------*
SELECTION-SCREEN SKIP 2.
PARAMETERS: PARCOM(45) TYPE C LOWER CASE.

*-------------------------------------------------------------------*
* Validate parameter.                                               *
*-------------------------------------------------------------------*
AT SELECTION-SCREEN.
  CONDENSE: PARCOM NO-GAPS.

*-------------------------------------------------------------------*
* TOP-OF-PAGE.                                                      *
*-------------------------------------------------------------------*
TOP-OF-PAGE.
  PERFORM WRITE_PAGE_HEADING.

*-------------------------------------------------------------------*
* INITIALIZATION.                                                   *
*-------------------------------------------------------------------*
INITIALIZATION.
  PARCOM = '/usr/sap/tmp/*'.            "Only default value

*-------------------------------------------------------------------*
* START-OF-SELECTION.                                               *
*-------------------------------------------------------------------*
START-OF-SELECTION.
  PERFORM MAKE_LOC.
  PERFORM COLLECT_DATA.
  PERFORM FILE_LIST.

*-------------------------------------------------------------------*
* AT LINE-SELECTION.                                                *
*-------------------------------------------------------------------*
AT LINE-SELECTION.
DATA: PATH(255) TYPE C.

  CLEAR FILE.
  FILE = SY-LISEL+55.
  REPLACE '|' WITH SPACE INTO FILE.

  IF SY-LISEL+1(1) = 'd'.
     PATH = FILE.
     PATH+200 = '/*'.
     CONDENSE PATH NO-GAPS.
     SUBMIT ZZBGS002
       WITH PARCOM = PATH
       AND RETURN.
  ENDIF.

  IF SY-LISEL+1(1) NE '-'   .
    EXIT.
  ENDIF.
*  SUBMIT < your own file browser, not included on this Web page >
*     WITH PARCOM = FILE
*     AND RETURN.

*---------------------------------------------------------------------*
* FORM MAKE_LOC.                                                      *
*---------------------------------------------------------------------*
FORM MAKE_LOC.
  CLEAR: PARCOM_LOC.
  PARCOM_LOC(7)    = 'ls -ld '.
  PARCOM_LOC+7(45) = PARCOM.
ENDFORM.

*---------------------------------------------------------------------*
* FORM COLLECT_DATA.                                                  *
*---------------------------------------------------------------------*
FORM COLLECT_DATA.
  REFRESH TABL.
  CALL 'SYSTEM' ID 'COMMAND' FIELD PARCOM_LOC
                ID 'TAB'     FIELD TABL-*SYS*.
ENDFORM.

*-------------------------------------------------------------------*
* FORM FILE_LIST.                                                   *
*-------------------------------------------------------------------*
FORM FILE_LIST.
  FORMAT RESET.
  CLEAR SUM.
  LOOP AT TABL.
    CLEAR LINE.
    LINE = TABL-LINE.
    WRITE /2 LINE.
    PERFORM VERTICAL_LINES.
    SUM = SUM + SIZE.
  ENDLOOP.
  WRITE:/1(132) SY-ULINE.
ENDFORM.

*-------------------------------------------------------------------*
* FORM WRITE_PAGE_HEADING.                                          *
*-------------------------------------------------------------------*
FORM WRITE_PAGE_HEADING.
  WRITE:/1(132) SY-ULINE.
  PERFORM VERTICAL_LINES.
  FORMAT INTENSIFIED.
  WRITE: /2(131) SPACE COLOR 1.
  WRITE:  2    SY-DATUM COLOR 1.
  WRITE: 35 'File Manager' COLOR 1.
  PERFORM VERTICAL_LINES.
  WRITE:/1(132) SY-ULINE.
  PERFORM VERTICAL_LINES.
  FORMAT INTENSIFIED.
  WRITE: /2(131) SPACE  COLOR 3.
  PERFORM VERTICAL_LINES.
  FORMAT RESET.
  WRITE:/1(132) SY-ULINE.
ENDFORM.

*-------------------------------------------------------------------*
* FORM VERTICAL_LINES.                                              *
*-------------------------------------------------------------------*
FORM VERTICAL_LINES.
  PERFORM WRITE_VLINE USING ' '  1.
  PERFORM WRITE_VLINE USING ' '  132.
ENDFORM.


*-------------------------------------------------------------------*
* WRITE_VLINE.                                                      *
*-------------------------------------------------------------------*
FORM WRITE_VLINE USING MODE POS.
  IF MODE NE 'T'.
    FORMAT INTENSIFIED.
  ENDIF.
  POSITION POS.
  WRITE: SY-VLINE.
  IF MODE NE 'T'.
    FORMAT RESET.
  ENDIF.
ENDFORM.