Converting Char string to Text Element Automatically
*&---------------------------------------------------------------------*
*& Report ZSLIN
*&
*&---------------------------------------------------------------------*
*& Report Title : <Description>
*& SAP Release : 6.0
*& Author's Name :
*& Creation Date : 99/99/9999 (DD/MM/YYYY)
*
*& Description : <Description explaining Functionality>
*&<Description explaining Functionality>
*&<Description explaining Functionality>
*&<Description explaining Functionality>
*&---------------------------------------------------------------------*
REPORT ZSLIN.
TYPE-POOLS :SLIS, SLIN.
TYPES: BEGIN OF TY_CODE,
CODE(5000) TYPE C,
END OF TY_CODE.
DATA: IT_OLD TYPE STANDARD TABLE OF TY_CODE,
IT_NEW TYPE STANDARD TABLE OF TY_CODE,
IT_TEXT_OLD TYPE TABLE OF TEXTPOOL,
IT_TEXT_NEW TYPE TABLE OF TEXTPOOL,
WA_TEXT_N TYPE TEXTPOOL,
GV_KEY TYPE n LENGTH 3,
W_SAVE(1) TYPE C.
******************************************************************
* S E L E C T I O N S C R E E N
******************************************************************
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME .
PARAMETERS:
P_REPORT LIKE SY-REPID OBLIGATORY. " Program Name
* P_TABLES AS CHECKBOX,
* P_TYPES AS CHECKBOX,
* P_DATA AS CHECKBOX,
* P_CNSTNT AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK B1.
***********************************************************************
* AT SELECTION SCREEN
***********************************************************************
*AT SELECTION-SCREEN.
* IF P_TABLES = '' AND P_TYPES = '' AND P_DATA = '' AND P_CNSTNT = ''.
* MESSAGE TEXT-001 TYPE 'E'.
* ENDIF.
***********************************************************************
* START OF SELECTION
***********************************************************************
START-OF-SELECTION.
***********
PERFORM CHECK CHANGING W_SAVE.
CHECK W_SAVE EQ 'X'.
PERFORM GETDATA.
PERFORM SAVE.
***********
*&---------------------------------------------------------------------*
*& Form CHECK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CHECK CHANGING W_SAVE.
TYPES: BEGIN OF TY_PROGDIR,
NAME TYPE PROGDIR-NAME , " ABAP Program Name
STATE TYPE PROGDIR-STATE , " ABAP: Program Status (Active, Saved, Transported...)
END OF TY_PROGDIR.
DATA:
LT_PROGDIR TYPE STANDARD TABLE OF TY_PROGDIR.
DATA:
W_FLAG_TYPES TYPE C,
W_FLAG_TABLES TYPE C,
W_FLAG_DATA TYPE C,
W_FLAG_CONSTANT TYPE C,
W_DEVCLASS TYPE TADIR-DEVCLASS, " Package
W_UNAME TYPE TRDIR-UNAM, " Last changed by
W_LOCK TYPE E071-LOCKFLAG, " Lock status or import status of an object entry
* W_SAVE(1) TYPE C,
W_SHIFT1(1) TYPE C VALUE 7,
W_SHIFT2(2) TYPE C VALUE 9.
* W_SAVE(1) TYPE C,
* W_DEVCLASS TYPE TADIR-DEVCLASS. " Package
* Check to see if the program is active or not.
SELECT NAME STATE FROM PROGDIR INTO TABLE LT_PROGDIR
WHERE NAME = P_REPORT.
IF SY-DBCNT > 1.
MESSAGE TEXT-005 TYPE 'I'.
W_SAVE = ''.
LEAVE TO LIST-PROCESSING.
ELSEIF SY-DBCNT = 0.
MESSAGE TEXT-006 TYPE 'I'.
W_SAVE = ''.
LEAVE TO LIST-PROCESSING.
ELSE.
* Check to see if the program is a local private object ($TMP)
SELECT SINGLE DEVCLASS
FROM TADIR
INTO W_DEVCLASS
WHERE PGMID = 'R3TR' AND
OBJECT = 'PROG' AND
OBJ_NAME = P_REPORT.
IF SY-SUBRC = 0 AND W_DEVCLASS = '$TMP'.
* Check the development class of the program.
W_SAVE = 'X'.
ELSE.
SELECT SINGLE UNAM
FROM TRDIR
INTO W_UNAME
WHERE NAME = P_REPORT.
* Check the user who last changed the program.
IF SY-SUBRC = 0 AND W_UNAME <> SY-UNAME.
W_SAVE = ''.
MESSAGE
TEXT-007 TYPE 'I'.
W_SAVE = ''.
LEAVE TO LIST-PROCESSING.
ELSE.
SELECT SINGLE LOCKFLAG
FROM E071
INTO W_LOCK
WHERE ( ( PGMID = 'R3TR' AND OBJECT = 'PROG' ) OR
( PGMID = 'LIMU' AND OBJECT = 'REPS' ) ) AND
OBJ_NAME = P_REPORT.
* Check if the program is assisgned to a transport or not.
IF SY-SUBRC = 0 AND W_LOCK = 'X'.
W_SAVE = 'X'.
ELSE.
MESSAGE TEXT-008 TYPE 'I'.
W_SAVE = ''.
LEAVE TO LIST-PROCESSING.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " CHECK
*&---------------------------------------------------------------------*
*& Form GETDATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GETDATA .
READ REPORT P_REPORT INTO IT_OLD.
IT_NEW[] = IT_OLD[].
READ TEXTPOOL P_REPORT INTO IT_TEXT_OLD.
IT_TEXT_NEW[] = IT_TEXT_OLD[].
DELETE IT_TEXT_NEW WHERE ID NE 'I' OR KEY CA 'wertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'.
SORT IT_TEXT_NEW DESCENDING BY KEY.
READ TABLE IT_TEXT_NEW INTO WA_TEXT_N INDEX 1.
GV_KEY = WA_TEXT_N-KEY.
FREE IT_TEXT_NEW[].
CLEAR WA_TEXT_N.
DATA: IT_RESULT TYPE SLIN_RESULT, " OCCURS 0,
WA_RESULT TYPE SLIN_RESULT WITH HEADER LINE,
RESULTSTAT TYPE SLIN_RESULT_STAT,
STATUS TYPE RSLIN.
TYPES :BEGIN OF ST,
KEY TYPE STRING,
VALUE TYPE STRING,
END OF ST.
TYPES :BEGIN OF ST1,
TXT_NO TYPE N LENGTH 3,
SRC_LINE TYPE N LENGTH 4,
VALUE TYPE STRING,
END OF ST1.
DATA: LINE TYPE SLIN_LINE,
ARGS LIKE TABLE OF LINE-ARGS,
WA_TEXT TYPE STRING,
WA_AGRS TYPE ST,
WA_AGRS1 TYPE ST1,
GT_ARGS TYPE TABLE OF ST1.
STATUS-X_ALL = '' .
STATUS-FLAGS-X_TXT = 'X'.
CALL FUNCTION 'EXTENDED_PROGRAM_CHECK'
EXPORTING
PROGRAM = P_REPORT
COMMENT_FLAG = STATUS-X_ALL
TEST_FLAGS = STATUS-FLAGS
CACHE_USE = 'A'
IMPORTING
RESULT = IT_RESULT
RESULT_STAT = RESULTSTAT
EXCEPTIONS
FATAL_ERROR = 0.
FREE LINE-ARGS[].
FREE WA_RESULT-LINES[].
CLEAR :WA_RESULT, LINE, WA_AGRS.
LOOP AT IT_RESULT INTO WA_RESULT.
LOOP AT WA_RESULT-LINES INTO LINE WHERE KEY = '&1'.
LOOP AT LINE-ARGS INTO WA_AGRS.
WA_TEXT_N-ID = 'I'.
CONDENSE gv_key.
gv_key = gv_key + 1.
WA_TEXT_N-KEY = gv_key.
WA_TEXT_N-LENGTH = strlen( WA_AGRS-VALUE ).
WA_TEXT_N-LENGTH = WA_TEXT_N-LENGTH - 2.
WA_TEXT_N-ENTRY = WA_AGRS-VALUE."+1(WA_TEXT_N-LENGTH).
* WA_AGRS1-VALUE = WA_AGRS-VALUE.
APPEND WA_TEXT_N TO IT_TEXT_NEW.
CLEAR :WA_TEXT_N, WA_AGRS.
ENDLOOP.
FREE LINE-ARGS[].
ENDLOOP.
FREE WA_RESULT-LINES[].
ENDLOOP.
DATA : GV_TEXT TYPE STRING.
LOOP AT IT_TEXT_NEW INTO WA_TEXT_N.
CLEAR GV_TEXT.
CONCATENATE 'TEXT' WA_TEXT_N-KEY INTO GV_TEXT SEPARATED BY '-'.
CONDENSE GV_TEXT.
REPLACE ALL OCCURRENCES OF REGEX WA_TEXT_N-ENTRY
IN TABLE IT_NEW WITH GV_TEXT
RESPECTING CASE.
WA_TEXT_N-ENTRY = WA_TEXT_N-ENTRY+1(WA_TEXT_N-LENGTH).
MODIFY IT_TEXT_NEW FROM WA_TEXT_N TRANSPORTING ENTRY.
ENDLOOP.
* ENDIF.
LOOP AT IT_TEXT_OLD INTO WA_TEXT_N.
APPEND WA_TEXT_N TO IT_TEXT_NEW.
CLEAR WA_TEXT_N.
ENDLOOP.
SORT IT_TEXT_NEW.
ENDFORM. " GETDATA
*&---------------------------------------------------------------------*
*& Form SAVE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SAVE .
DATA:
L_MESSAGE TYPE MESSAGE.
CALL FUNCTION 'PRETTY_PRINTER'
EXPORTING
INCTOO = SPACE
* IMPORTING
* INDENTATION_MAYBE_WRONG = INDENTATION_MAYBE_WRONG
TABLES
NTEXT = IT_NEW
OTEXT = IT_NEW
EXCEPTIONS
ENQUEUE_TABLE_FULL = 1
INCLUDE_ENQUEUED = 2
INCLUDE_READERROR = 3
INCLUDE_WRITEERROR = 4
.
CALL FUNCTION 'ENQUEUE_E_TRDIR'
EXPORTING
MODE_TRDIR = 'X'
NAME = P_REPORT
* X_NAME = ' '
* _SCOPE = '2'
* _WAIT = ' '
* _COLLECT = ' '
EXCEPTIONS
FOREIGN_LOCK = 1
SYSTEM_FAILURE = 2
.
IF SY-SUBRC = 0.
INSERT REPORT P_REPORT FROM IT_NEW.
IF SY-SUBRC = 0.
INSERT TEXTPOOL P_REPORT FROM IT_TEXT_NEW LANGUAGE SY-langU.
IF SY-SUBRC = 0.
WRITE: / TEXT-002.
ELSE.
WRITE: / TEXT-003.
ENDIF.
ELSE.
ROLLBACK WORK.
WRITE: / TEXT-003.
ENDIF.
ELSEIF SY-SUBRC = 1 OR SY-SUBRC = 2 OR SY-SUBRC = 3.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = SY-MSGID
LANG = '-D'
NO = SY-MSGNO
V1 = SY-MSGV1
V2 = SY-MSGV2
V3 = SY-MSGV3
V4 = SY-MSGV4
IMPORTING
MSG = L_MESSAGE
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC = 0.
WRITE:/ L_MESSAGE.
EXIT.
ENDIF.
ENDIF.
* Unlock the program after changing.
CALL FUNCTION 'DEQUEUE_E_TRDIR'
EXPORTING
MODE_TRDIR = 'X'
NAME = P_REPORT.
FREE :IT_TEXT_NEW, IT_TEXT_OLD.
ENDFORM. " SAVE
*&---------------------------------------------------------------------*
*& Report ZSLIN
*&
*&---------------------------------------------------------------------*
*& Report Title : <Description>
*& SAP Release : 6.0
*& Author's Name :
*& Creation Date : 99/99/9999 (DD/MM/YYYY)
*
*& Description : <Description explaining Functionality>
*&<Description explaining Functionality>
*&<Description explaining Functionality>
*&<Description explaining Functionality>
*&---------------------------------------------------------------------*
REPORT ZSLIN.
TYPE-POOLS :SLIS, SLIN.
TYPES: BEGIN OF TY_CODE,
CODE(5000) TYPE C,
END OF TY_CODE.
DATA: IT_OLD TYPE STANDARD TABLE OF TY_CODE,
IT_NEW TYPE STANDARD TABLE OF TY_CODE,
IT_TEXT_OLD TYPE TABLE OF TEXTPOOL,
IT_TEXT_NEW TYPE TABLE OF TEXTPOOL,
WA_TEXT_N TYPE TEXTPOOL,
GV_KEY TYPE n LENGTH 3,
W_SAVE(1) TYPE C.
******************************************************************
* S E L E C T I O N S C R E E N
******************************************************************
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME .
PARAMETERS:
P_REPORT LIKE SY-REPID OBLIGATORY. " Program Name
* P_TABLES AS CHECKBOX,
* P_TYPES AS CHECKBOX,
* P_DATA AS CHECKBOX,
* P_CNSTNT AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK B1.
***********************************************************************
* AT SELECTION SCREEN
***********************************************************************
*AT SELECTION-SCREEN.
* IF P_TABLES = '' AND P_TYPES = '' AND P_DATA = '' AND P_CNSTNT = ''.
* MESSAGE TEXT-001 TYPE 'E'.
* ENDIF.
***********************************************************************
* START OF SELECTION
***********************************************************************
START-OF-SELECTION.
***********
PERFORM CHECK CHANGING W_SAVE.
CHECK W_SAVE EQ 'X'.
PERFORM GETDATA.
PERFORM SAVE.
***********
*&---------------------------------------------------------------------*
*& Form CHECK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CHECK CHANGING W_SAVE.
TYPES: BEGIN OF TY_PROGDIR,
NAME TYPE PROGDIR-NAME , " ABAP Program Name
STATE TYPE PROGDIR-STATE , " ABAP: Program Status (Active, Saved, Transported...)
END OF TY_PROGDIR.
DATA:
LT_PROGDIR TYPE STANDARD TABLE OF TY_PROGDIR.
DATA:
W_FLAG_TYPES TYPE C,
W_FLAG_TABLES TYPE C,
W_FLAG_DATA TYPE C,
W_FLAG_CONSTANT TYPE C,
W_DEVCLASS TYPE TADIR-DEVCLASS, " Package
W_UNAME TYPE TRDIR-UNAM, " Last changed by
W_LOCK TYPE E071-LOCKFLAG, " Lock status or import status of an object entry
* W_SAVE(1) TYPE C,
W_SHIFT1(1) TYPE C VALUE 7,
W_SHIFT2(2) TYPE C VALUE 9.
* W_SAVE(1) TYPE C,
* W_DEVCLASS TYPE TADIR-DEVCLASS. " Package
* Check to see if the program is active or not.
SELECT NAME STATE FROM PROGDIR INTO TABLE LT_PROGDIR
WHERE NAME = P_REPORT.
IF SY-DBCNT > 1.
MESSAGE TEXT-005 TYPE 'I'.
W_SAVE = ''.
LEAVE TO LIST-PROCESSING.
ELSEIF SY-DBCNT = 0.
MESSAGE TEXT-006 TYPE 'I'.
W_SAVE = ''.
LEAVE TO LIST-PROCESSING.
ELSE.
* Check to see if the program is a local private object ($TMP)
SELECT SINGLE DEVCLASS
FROM TADIR
INTO W_DEVCLASS
WHERE PGMID = 'R3TR' AND
OBJECT = 'PROG' AND
OBJ_NAME = P_REPORT.
IF SY-SUBRC = 0 AND W_DEVCLASS = '$TMP'.
* Check the development class of the program.
W_SAVE = 'X'.
ELSE.
SELECT SINGLE UNAM
FROM TRDIR
INTO W_UNAME
WHERE NAME = P_REPORT.
* Check the user who last changed the program.
IF SY-SUBRC = 0 AND W_UNAME <> SY-UNAME.
W_SAVE = ''.
MESSAGE
TEXT-007 TYPE 'I'.
W_SAVE = ''.
LEAVE TO LIST-PROCESSING.
ELSE.
SELECT SINGLE LOCKFLAG
FROM E071
INTO W_LOCK
WHERE ( ( PGMID = 'R3TR' AND OBJECT = 'PROG' ) OR
( PGMID = 'LIMU' AND OBJECT = 'REPS' ) ) AND
OBJ_NAME = P_REPORT.
* Check if the program is assisgned to a transport or not.
IF SY-SUBRC = 0 AND W_LOCK = 'X'.
W_SAVE = 'X'.
ELSE.
MESSAGE TEXT-008 TYPE 'I'.
W_SAVE = ''.
LEAVE TO LIST-PROCESSING.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " CHECK
*&---------------------------------------------------------------------*
*& Form GETDATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GETDATA .
READ REPORT P_REPORT INTO IT_OLD.
IT_NEW[] = IT_OLD[].
READ TEXTPOOL P_REPORT INTO IT_TEXT_OLD.
IT_TEXT_NEW[] = IT_TEXT_OLD[].
DELETE IT_TEXT_NEW WHERE ID NE 'I' OR KEY CA 'wertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'.
SORT IT_TEXT_NEW DESCENDING BY KEY.
READ TABLE IT_TEXT_NEW INTO WA_TEXT_N INDEX 1.
GV_KEY = WA_TEXT_N-KEY.
FREE IT_TEXT_NEW[].
CLEAR WA_TEXT_N.
DATA: IT_RESULT TYPE SLIN_RESULT, " OCCURS 0,
WA_RESULT TYPE SLIN_RESULT WITH HEADER LINE,
RESULTSTAT TYPE SLIN_RESULT_STAT,
STATUS TYPE RSLIN.
TYPES :BEGIN OF ST,
KEY TYPE STRING,
VALUE TYPE STRING,
END OF ST.
TYPES :BEGIN OF ST1,
TXT_NO TYPE N LENGTH 3,
SRC_LINE TYPE N LENGTH 4,
VALUE TYPE STRING,
END OF ST1.
DATA: LINE TYPE SLIN_LINE,
ARGS LIKE TABLE OF LINE-ARGS,
WA_TEXT TYPE STRING,
WA_AGRS TYPE ST,
WA_AGRS1 TYPE ST1,
GT_ARGS TYPE TABLE OF ST1.
STATUS-X_ALL = '' .
STATUS-FLAGS-X_TXT = 'X'.
CALL FUNCTION 'EXTENDED_PROGRAM_CHECK'
EXPORTING
PROGRAM = P_REPORT
COMMENT_FLAG = STATUS-X_ALL
TEST_FLAGS = STATUS-FLAGS
CACHE_USE = 'A'
IMPORTING
RESULT = IT_RESULT
RESULT_STAT = RESULTSTAT
EXCEPTIONS
FATAL_ERROR = 0.
FREE LINE-ARGS[].
FREE WA_RESULT-LINES[].
CLEAR :WA_RESULT, LINE, WA_AGRS.
LOOP AT IT_RESULT INTO WA_RESULT.
LOOP AT WA_RESULT-LINES INTO LINE WHERE KEY = '&1'.
LOOP AT LINE-ARGS INTO WA_AGRS.
WA_TEXT_N-ID = 'I'.
CONDENSE gv_key.
gv_key = gv_key + 1.
WA_TEXT_N-KEY = gv_key.
WA_TEXT_N-LENGTH = strlen( WA_AGRS-VALUE ).
WA_TEXT_N-LENGTH = WA_TEXT_N-LENGTH - 2.
WA_TEXT_N-ENTRY = WA_AGRS-VALUE."+1(WA_TEXT_N-LENGTH).
* WA_AGRS1-VALUE = WA_AGRS-VALUE.
APPEND WA_TEXT_N TO IT_TEXT_NEW.
CLEAR :WA_TEXT_N, WA_AGRS.
ENDLOOP.
FREE LINE-ARGS[].
ENDLOOP.
FREE WA_RESULT-LINES[].
ENDLOOP.
DATA : GV_TEXT TYPE STRING.
LOOP AT IT_TEXT_NEW INTO WA_TEXT_N.
CLEAR GV_TEXT.
CONCATENATE 'TEXT' WA_TEXT_N-KEY INTO GV_TEXT SEPARATED BY '-'.
CONDENSE GV_TEXT.
REPLACE ALL OCCURRENCES OF REGEX WA_TEXT_N-ENTRY
IN TABLE IT_NEW WITH GV_TEXT
RESPECTING CASE.
WA_TEXT_N-ENTRY = WA_TEXT_N-ENTRY+1(WA_TEXT_N-LENGTH).
MODIFY IT_TEXT_NEW FROM WA_TEXT_N TRANSPORTING ENTRY.
ENDLOOP.
* ENDIF.
LOOP AT IT_TEXT_OLD INTO WA_TEXT_N.
APPEND WA_TEXT_N TO IT_TEXT_NEW.
CLEAR WA_TEXT_N.
ENDLOOP.
SORT IT_TEXT_NEW.
ENDFORM. " GETDATA
*&---------------------------------------------------------------------*
*& Form SAVE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SAVE .
DATA:
L_MESSAGE TYPE MESSAGE.
CALL FUNCTION 'PRETTY_PRINTER'
EXPORTING
INCTOO = SPACE
* IMPORTING
* INDENTATION_MAYBE_WRONG = INDENTATION_MAYBE_WRONG
TABLES
NTEXT = IT_NEW
OTEXT = IT_NEW
EXCEPTIONS
ENQUEUE_TABLE_FULL = 1
INCLUDE_ENQUEUED = 2
INCLUDE_READERROR = 3
INCLUDE_WRITEERROR = 4
.
CALL FUNCTION 'ENQUEUE_E_TRDIR'
EXPORTING
MODE_TRDIR = 'X'
NAME = P_REPORT
* X_NAME = ' '
* _SCOPE = '2'
* _WAIT = ' '
* _COLLECT = ' '
EXCEPTIONS
FOREIGN_LOCK = 1
SYSTEM_FAILURE = 2
.
IF SY-SUBRC = 0.
INSERT REPORT P_REPORT FROM IT_NEW.
IF SY-SUBRC = 0.
INSERT TEXTPOOL P_REPORT FROM IT_TEXT_NEW LANGUAGE SY-langU.
IF SY-SUBRC = 0.
WRITE: / TEXT-002.
ELSE.
WRITE: / TEXT-003.
ENDIF.
ELSE.
ROLLBACK WORK.
WRITE: / TEXT-003.
ENDIF.
ELSEIF SY-SUBRC = 1 OR SY-SUBRC = 2 OR SY-SUBRC = 3.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = SY-MSGID
LANG = '-D'
NO = SY-MSGNO
V1 = SY-MSGV1
V2 = SY-MSGV2
V3 = SY-MSGV3
V4 = SY-MSGV4
IMPORTING
MSG = L_MESSAGE
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC = 0.
WRITE:/ L_MESSAGE.
EXIT.
ENDIF.
ENDIF.
* Unlock the program after changing.
CALL FUNCTION 'DEQUEUE_E_TRDIR'
EXPORTING
MODE_TRDIR = 'X'
NAME = P_REPORT.
FREE :IT_TEXT_NEW, IT_TEXT_OLD.
ENDFORM. " SAVE