Teknologi

LightBlog

Breaking

LightBlog

Friday, 2 April 2021

Read and Write on App.Server Files Using CL_RSAN_UT_APPSERV_FILE_READER and CL_RSAN_UT_APPSERV_FILE_WRITER

 

Read & Write Operations on App.Server Files Using CL_RSAN_UT_APPSERV_FILE_READER and CL_RSAN_UT_APPSERV_FILE_WRITER

 

Summary

This Post narrates the usage of class CL_RSAN_UT_APPSERV_FILE_READER and CL_RSAN_UT_APPRSERV_WRITER for read/write operations on Application Server Files.



Class Methods used in the sample Code

Class Name

Method

Description

CL_RSAN_UT_FILES

F4

F4 Help for Choosing File Name from GUI or App. Server

CL_RSAN_UT_APPSERV_FILE_WRITER

APPSERVER_FILE_WRITE

Write Data to Specified File on Application Server

CL_RSAN_UT_APPSERV_FILE_READER

APPSERVER_FILE_READ

Read Specified File from Application Server

Sample Code

 

One Form routine in sample code narrates how the list materials selected from MAKT table can be written to application server file.  Another form-routine narrates how to read the contents of file using the methods listed in above table.

Error rendering macro 'code': Invalid value specified for parameter 'com.atlassian.confluence.ext.code.render.InvalidValueException'
*&---------------------------------------------------------------------
* *& REPORT  ZVK_CL_RSAN_UT_APPSERV
* *&
*&---------------------------------------------------------------------
* *& PURPOSE : USE OF CLASS CL_RSAN_UT_APPSERV_FILE_READER &
* *&           CL_RSAN_UT_APPSERV_FILE_WRITER FOR READ/WRITE OPERATIONS
* *&           ON APPLICATION SERVER FILES
*&---------------------------------------------------------------------
 REPORT  ZVK_CL_RSAN_UT_APPSERV.
* ** TEXT ELEMENTS
* * P_MATNR   MATERIAL FROM  TO
* * P_FILENM  - FILE NAME
 TYPE-POOLS : RSANM, ABAP.
 TABLES : MARA.
 TYPES : BEGIN OF TY_MAKT,
            MATNR TYPE MATNR,
            MAKTX TYPE MAKTX,
          END OF TY_MAKT.
 DATA : LT_MAKT TYPE STANDARD TABLE OF TY_MAKT,
         LS_MAKT TYPE TY_MAKT,
         LT_FILE_TABLE TYPE RSANM_FILE_TABLE,
         LS_FILE_TABLE TYPE RSANM_FILE_LINE.
 DATA : LV_APPLSERV         TYPE CHAR01,
         LV_TITLE            TYPE STRING,
         LV_GUI_EXTENSION    TYPE STRING,
         LV_GUI_EXT_FILTER   TYPE STRING,
         LV_CANCELED         TYPE AS4FLAG,
         LV_APPLSERV_LOGICAL TYPE AS4FLAG,
         LV_APPLSERV_AL11    TYPE AS4FLAG,
         LV_FILE_NAME        TYPE STRING,
         LV_LINES_WRITTEN    TYPE I.
 SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
 SELECT-OPTIONS : P_MATNR FOR MARA-MATNR OBLIGATORY.
 SELECTION-SCREEN END OF BLOCK B1.
 SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME.
 PARAMETERS : P_FILENM LIKE IBIPPARMS-PATH OBLIGATORY.
 SELECTION-SCREEN END OF BLOCK B2.
 AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILENM.
   CLEAR : LV_CANCELED , LV_FILE_NAME.
   MOVE 'X' TO LV_APPLSERV.
   MOVE 'Select File from Application Server' TO LV_TITLE.
   MOVE ' ' TO LV_APPLSERV_LOGICAL.
   MOVE 'X' TO LV_APPLSERV_AL11.
   CALL METHOD CL_RSAN_UT_FILES=>F4
     EXPORTING
       I_APPLSERV         = LV_APPLSERV
       I_TITLE            = LV_TITLE
       I_GUI_EXTENSION    = LV_GUI_EXTENSION
       I_GUI_EXT_FILTER   = LV_GUI_EXT_FILTER
       I_APPLSERV_LOGICAL = LV_APPLSERV_LOGICAL
       I_APPLSERV_AL11    = LV_APPLSERV_AL11
     IMPORTING
       E_CANCELED         = LV_CANCELED
     CHANGING
       C_FILE_NAME        = LV_FILE_NAME
     EXCEPTIONS
       FAILED             = 1
       OTHERS             = 2.
   IF SY-SUBRC <> 0.
     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
   ELSE.
     IF LV_CANCELED NE 'X'.
       MOVE LV_FILE_NAME TO P_FILENM.
     ENDIF.
   ENDIF.
 START-OF-SELECTION.
   MOVE P_FILENM TO LV_FILE_NAME.
   PERFORM EXTRACT_DATA.
   PERFORM CONVERT_DATA.
   PERFORM WRITE_DATA_TO_APPSERVER.
   PERFORM READ_DATA_FROM_APPSERVER.
*  &---------------------------------------------------------------------
*  *&      FORM  EXTRACT_DATA
*  &---------------------------------------------------------------------
*  *       TEXT
*  ----------------------------------------------------------------------
 FORM EXTRACT_DATA.
   REFRESH : LT_MAKT.
   SELECT MATNR MAKTX
     FROM MAKT
     INTO TABLE LT_MAKT
     WHERE MATNR IN P_MATNR
     AND   SPRAS EQ SY-LANGU.
   IF SY-SUBRC NE 0.
     MESSAGE 'No data selected' TYPE 'I' DISPLAY LIKE 'E'.
     STOP.
   ENDIF.
 ENDFORM.                    "extract_data
*&---------------------------------------------------------------------
* *&      FORM  CONVERT_DATA
* &---------------------------------------------------------------------
* *       TEXT
* ----------------------------------------------------------------------
 FORM CONVERT_DATA.
   FIELD-SYMBOLS:<FS> TYPE ANY.
   FIELD-SYMBOLS:<FS1> TYPE ANY.
   DATA:LV_LENGTH TYPE I,
         WF_REF TYPE REF TO DATA.
   REFRESH : LT_FILE_TABLE.
   CLEAR   : LS_FILE_TABLE.
   IF LT_MAKT[] IS NOT INITIAL.
     LOOP AT LT_MAKT INTO LS_MAKT.
       DO.
         ASSIGN COMPONENT SY-INDEX OF STRUCTURE LS_MAKT TO <FS>.
         IF SY-SUBRC <> 0.
           APPEND LS_FILE_TABLE TO LT_FILE_TABLE.
           CLEAR LS_FILE_TABLE.EXIT.
         ENDIF.
         LV_LENGTH = 0.
         DESCRIBE FIELD <FS> OUTPUT-LENGTH LV_LENGTH.
         CREATE DATA WF_REF TYPE C LENGTH LV_LENGTH.
         IF WF_REF IS BOUND.
           ASSIGN WF_REF->* TO <FS1>.
           CHECK <FS1> IS ASSIGNED.
           <FS1> = <FS>.
         ENDIF.
         IF SY-INDEX = 1.
           LS_FILE_TABLE = <FS1>.
         ELSE.
           CONCATENATE LS_FILE_TABLE <FS1> INTO LS_FILE_TABLE SEPARATED BY '|'.
         ENDIF.
       ENDDO.
     ENDLOOP.
   ENDIF.
 ENDFORM.                    "convert_data
*&---------------------------------------------------------------------
* *&      FORM  WRITE_DATA_TO_APPSERVER
*&---------------------------------------------------------------------
* * FORM ROUTINE FOR CREATING THE FILE IN APPLICATION SERVER
* * =========================================================
* * PARAMETER I_OVERWRITE HAS RELEVANT IF AN EXISTING FILE IS CHOSEN TO
* * WRITE THE CONTENTS
* * IF VALUE OF PARAMETER I_OVERWRITE IS 'X' THEN FILE IS OVERWRITTEN
* * OTHERWISE THE DATA IS APPENDED TO EXISTING FILE.
* * =========================================================
* ----------------------------------------------------------------------
 FORM WRITE_DATA_TO_APPSERVER.
   IF LT_FILE_TABLE[] IS NOT INITIAL.
     CLEAR : LV_LINES_WRITTEN.
     CALL METHOD CL_RSAN_UT_APPSERV_FILE_WRITER=>APPSERVER_FILE_WRITE
       EXPORTING
         I_FILENAME      = LV_FILE_NAME
         I_OVERWRITE     = ABAP_TRUE
         I_DATA_TAB      = LT_FILE_TABLE
       IMPORTING
         E_LINES_WRITTEN = LV_LINES_WRITTEN
       EXCEPTIONS
         OPEN_FAILED     = 1
         WRITE_FAILED    = 2
         CLOSE_FAILED    = 3
         OTHERS          = 4.
     IF SY-SUBRC <> 0.
       MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                  WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
     ELSE.
       WRITE :/ 'Data written to ',
                LV_FILE_NAME.
       WRITE :/ 'No of Lines Written ',
                LV_LINES_WRITTEN.
     ENDIF.
   ENDIF.
 ENDFORM.                    "write_data_to_appserver
*&---------------------------------------------------------------------
* *&      FORM  READ_DATA_FROM_APPSERVER
* &---------------------------------------------------------------------
* * FORM ROUTINE TO READ THE CONTENTS OF THE FILE IN APPLICATION SERVER
* ----------------------------------------------------------------------
 FORM READ_DATA_FROM_APPSERVER.
   REFRESH : LT_FILE_TABLE.
   CALL METHOD CL_RSAN_UT_APPSERV_FILE_READER=>APPSERVER_FILE_READ
     EXPORTING
       I_FILENAME   = LV_FILE_NAME
     CHANGING
       C_DATA_TAB   = LT_FILE_TABLE
     EXCEPTIONS
       OPEN_FAILED  = 1
       READ_FAILED  = 2
       CLOSE_FAILED = 3
       OTHERS       = 4.
   IF SY-SUBRC <> 0.
     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
   ELSE.
     WRITE :/ 'Contents of file ', LV_FILE_NAME.
     WRITE :/ '================================='.
     LOOP AT LT_FILE_TABLE INTO LS_FILE_TABLE.
       WRITE :/ LS_FILE_TABLE.
     ENDLOOP.
   ENDIF.
 ENDFORM.                    "read_data_from_appserver

No comments:

Post a Comment

Note: only a member of this blog may post a comment.

Adbox