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.