REPORT ZREADATR NO STANDARD PAGE HEADING LINE-SIZE 132. ************************************************************************ * The program reads a transport data file, and using some simple filters * displays the contents. To see an abap source, first create a transport * using se01 with an entry like: LIMU REPS SAPMSYST, then analyze it. * This program does not handle data files bigger than 65535 bytes. * I tested a slightly different version of this program as well, that * changed some data in the data file, and imported it back - and it * worked. But be careful with that, it can screw your system big time! ************************************************************************ * Get the filename PARAMETERS: FILE(40) LOWER CASE OBLIGATORY DEFAULT '/usr/sap/trans/data/R901111.ZZZ'. * Find out the size of the transport file DATA: L(132), F(50) VALUE '/tmp/azaz'. DATA: FILT(56) VALUE 'ls -l'. DATA: A, B(10) TYPE N. FILT+6 = FILE. OPEN DATASET F FOR OUTPUT IN TEXT MODE FILTER FILT. CLOSE DATASET F. OPEN DATASET F FOR INPUT IN TEXT MODE. READ DATASET F INTO L. IF SY-SUBRC <> 0. WRITE: / 'File does not exist'.EXIT. ENDIF. DELETE DATASET F. CONDENSE L. SPLIT L AT ' ' INTO A A A A B A A A A. IF B IS INITIAL OR B CN '0123456789 '. WRITE: / 'File does not exist'. ENDIF. IF B > 65535. WRITE: / 'File size is too big for this program'. EXIT. ENDIF. B = B - 11. * Read an process the transport file DATA: LL(65535) TYPE C. DATA: I TYPE I, J TYPE I, K TYPE I. DATA: X(11), Q(83), Y(3). DATA: BEGIN OF STRUCC, 1(5), 2(1) TYPE X, 3(2), 4(3), 5(72), END OF STRUCC. OPEN DATASET FILE IN BINARY MODE FOR INPUT. READ DATASET FILE INTO LL. DO B TIMES. I = SY-INDEX - 1. X = LL+I. IF X CP '+ ++++ +++'. Y = X+2. IF Y NA ' abcdefghijklmnopqrstxwz1234567890ABCDEFGHIJKLMNOPQRSTXWZ+=-/?*><'. K = I - J. Q = LL+J(K). STRUCC = Q. WRITE: / STRUCC-1, STRUCC-2, STRUCC-3, STRUCC-5. J = I. ENDIF. ENDIF. ENDDO.