sapdev logo background
sapdev logo sapdev logo
Comments

Display files on SAP Application Server(UNIX)




View file on the application server(UNIX). Used in conjunction with ZUNIXFILES which displays all directorys/files on the application server. Simple copy and paste the following code into a new ABAP report program.

*....................................................................
*: Title:        Browse file on Unix.                               :
*:                                                                  :
*: Description:  Using internal System Call we gain access to UNIX. :
*:               The program uses the standard Unix command 'cat' to:
*:               browse the file                                    :
*:                                                                  :
*:               The program lets you browse a file record of up to :
*:               500 chars wide.                                    :
*:                                                                  :
*:..................................................................:

REPORT ZBROWSEFILE MESSAGE-ID Z1
                   NO STANDARD PAGE HEADING
                   LINE-COUNT 65
                   LINE-SIZE  80.

DATA: BEGIN OF TABL OCCURS 0,
      LINE(560),
      END OF TABL.

DATA: PARCOM_LOC LIKE RS37A-LINE.
DATA: COLOR TYPE I.
DATA: COUNT(16) TYPE C.

*-------------------------------------------------------------------*
* Parameters.                                                       *
*-------------------------------------------------------------------*
SELECTION-SCREEN SKIP 2.
  PARAMETERS: PARCOM LIKE RS37A-LINE.

*-------------------------------------------------------------------*
* Validering af parametre.                                          *
*-------------------------------------------------------------------*

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

*-------------------------------------------------------------------*
* INITIALIZATION.                                                   *
*-------------------------------------------------------------------*
INITIALIZATION.
  PARCOM = '/usr/sap/trans/* '.

*-------------------------------------------------------------------*
* START-OF-SELECTION.                                               *
*-------------------------------------------------------------------*
START-OF-SELECTION.

PERFORM MAKE_LOC.
  PERFORM COLLECT_DATA.
  PERFORM WRITE_FILE_CONTENT.
  PERFORM WRITE_NUMBER_OF_CONTENT.

*---------------------------------------------------------------------*
* FORM MAKE_LOC.                                                      *
*---------------------------------------------------------------------*
FORM MAKE_LOC.
  CLEAR: PARCOM_LOC.
  PARCOM_LOC(4)    = 'cat '.
  PARCOM_LOC+4(245) = PARCOM.
ENDFORM.

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

*-------------------------------------------------------------------*
* FORM WRITE_FILE_CONTENT.                                          *
*-------------------------------------------------------------------*
FORM WRITE_FILE_CONTENT.

* The following data item needs to be renamed as the     "DEVK910117
* special character used is no longer valid.             "DEVK910117
*DATA: L�NGDE        LIKE SY-FDPOS.                      "DEVK910117
 DATA: LAENGDE       LIKE SY-FDPOS.                      "DEVK910117

LOOP AT TABL.
*   L�NGDE = STRLEN( TABL-LINE ).                        "DEVK910117
    LAENGDE = STRLEN( TABL-LINE ).                       "DEVK910117
*   IF L�NGDE GE 0.                                      "DEVK910117
    IF LAENGDE GE 0.                                     "DEVK910117
       PERFORM COLORLINE USING '  0' TABL-LINE+0(69).
       PERFORM STREGER_3.
    ENDIF.
*   IF L�NGDE GE 70.                                     "DEVK910117
    IF LAENGDE GE 70.                                    "DEVK910117
       PERFORM COLORLINE USING ' 70' TABL-LINE+69(70).
       PERFORM STREGER_3.
    ENDIF.
*   IF L�NGDE GE 140.                                    "DEVK910117
    IF LAENGDE GE 140.                                   "DEVK910117
       PERFORM COLORLINE USING '140' TABL-LINE+139(70).
       PERFORM STREGER_3.
    ENDIF.
*   IF L�NGDE GE 210.                                    "DEVK910117
    IF LAENGDE GE 210.                                   "DEVK910117
       PERFORM COLORLINE USING '210' TABL-LINE+209(70).
       PERFORM STREGER_3.
    ENDIF.
*   IF L�NGDE GE 280.                                    "DEVK910117
    IF LAENGDE GE 280.                                   "DEVK910117
      PERFORM COLORLINE USING '280' TABL-LINE+279(70).
       PERFORM STREGER_3.
    ENDIF.
*   IF L�NGDE GE 350.                                    "DEVK910117
    IF LAENGDE GE 350.                                   "DEVK910117
       PERFORM COLORLINE USING '350' TABL-LINE+349(70).
       PERFORM STREGER_3.
    ENDIF.
*   IF L�NGDE GE 420.                                    "DEVK910117
    IF LAENGDE GE 420.                                   "DEVK910117
       PERFORM COLORLINE USING '420' TABL-LINE+419(70).
       PERFORM STREGER_3.
    ENDIF.
*   IF L�NGDE GE 490.                                    "DEVK910117
    IF LAENGDE GE 490.                                   "DEVK910117
       PERFORM COLORLINE USING '490' TABL-LINE+489(70).
       PERFORM STREGER_3.
    ENDIF.
*   IF L�NGDE GE 560.                                    "DEVK910117
    IF LAENGDE GE 560.                                   "DEVK910117
* The following can only pass over at most one byte      "DEVK910117
* because the table line length is only 560. An error    "DEVK910117
* results on compilation because it is currently         "DEVK910117
* trying to pass over something which does not exist.    "DEVK910117
* It is better to pass over just the one byte than       "DEVK910117
* nothing at all.                                        "DEVK910117
*      PERFORM COLORLINE USING '560' TABL-LINE+559(70).  "DEVK910117
       PERFORM COLORLINE USING '560' TABL-LINE+559(01).  "DEVK910117
       PERFORM STREGER_3.
    ENDIF.
  ENDLOOP.
  WRITE:/1(80) SY-ULINE.
ENDFORM.

*-------------------------------------------------------------------*
* FORM WRITE_PAGE_HEADING.                                          *
*-------------------------------------------------------------------*
FORM WRITE_PAGE_HEADING.

   WRITE:/1(80) SY-ULINE.
   PERFORM STREGER_2.
   FORMAT INTENSIFIED.
   WRITE: /2(79) SPACE       COLOR 1.
   WRITE:  2    SY-DATUM     COLOR 1.
   WRITE: 15    PARCOM(65)   COLOR 1.
   PERFORM STREGER_2.
   WRITE:/1(80) SY-ULINE.
   PERFORM STREGER_2.
   FORMAT INTENSIFIED.
   WRITE: /2(79) SPACE COLOR 3.
   WRITE:   2    'Offset' COLOR 3,
           10    '0....+....1....+....2....+....3....+....' COLOR 3,
           50    '4....+....5....+....6....+....' COLOR 3.
   PERFORM STREGER_3.
   FORMAT RESET.
   WRITE:/1(80) SY-ULINE.
ENDFORM.

*-------------------------------------------------------------------*
* FORM STREGER_2.                                                   *
*-------------------------------------------------------------------*
FORM STREGER_2.
   PERFORM WRITE_VLINE USING ' '  1.
   PERFORM WRITE_VLINE USING ' '  80.
ENDFORM.

*-------------------------------------------------------------------*
* FORM STREGER_3.                                                   *
*-------------------------------------------------------------------*
FORM STREGER_3.
   PERFORM WRITE_VLINE USING ' '  1.
   PERFORM WRITE_VLINE USING ' '  9.
   PERFORM WRITE_VLINE USING ' '  80.
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.

*-------------------------------------------------------------------*
* FORM COLORLINE.                                                   *
*-------------------------------------------------------------------*
FORM COLORLINE USING TEXT1 TEXT2.
   ON CHANGE OF SY-TABIX.
      COLOR = COLOR + 1.
      COLOR = COLOR MOD 2.
   ENDON.
   FORMAT RESET.
   IF COLOR = 1.
      WRITE: /2(79) SPACE COLOR 2.
      IF TEXT1 = '  0'.
         WRITE: 3 TEXT1 COLOR 2, 11 TEXT2 COLOR 2.
      ELSE.
         WRITE: 3 TEXT1 COLOR 2, 10 TEXT2 COLOR 2.
      ENDIF.
   ELSE.
      WRITE: /2(79) SPACE COLOR 4.
      IF TEXT1 = '  0'.
         WRITE: 3 TEXT1 COLOR 4, 11 TEXT2 COLOR 4.
      ELSE.
         WRITE: 3 TEXT1 COLOR 4, 10 TEXT2 COLOR 4.
      ENDIF.
   ENDIF.
ENDFORM.

*-------------------------------------------------------------------*
* FORM WRITE_NUMBER_OF_CONTENT.                                     *
*-------------------------------------------------------------------*
FORM WRITE_NUMBER_OF_CONTENT.
   DESCRIBE TABLE TABL LINES COUNT.

   FORMAT RESET. CONDENSE COUNT.
   RESERVE 3 LINES.
   WRITE:/1(80) SY-ULINE.
   WRITE:/1(80) SY-ULINE.
   WRITE: /2(79) SPACE                         COLOR 2.
   WRITE: 2      'Number of records in file:'  COLOR 2,
          29     COUNT                         COLOR 2.
   PERFORM STREGER_2.
   WRITE:/1(80) SY-ULINE.
ENDFORM.                                        .



comments powered by Disqus