‎2006 May 01 4:08 PM
Hello,
I can't get a PROTECT......ENDPROTECT block to work.
Here is my ABAP:
-
LOOP AT IT_MAIN.
MOVE IT_MAIN-RECORD TO WA_MAIN-RECORD.
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
COMMAND = 'PROTECT'.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'WORK_AREA_RECORD'
WINDOW = 'MAIN'
EXCEPTIONS
OTHERS = 8.
IF SY-SUBRC <> 0.
WRITE: / 'Error in get_main_data'.
ENDIF.
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
COMMAND = 'ENDPROTECT'.
-
Here is my SAPScript:
-
/E WORK_AREA_RECORD
/: PROTECT
&WA_MAIN-RECORD&
/: ENDPROTECT
-
I want to keep WA_MAIN-RECORD (3-5 lines) together on the same page.
I put the PROTECT..ENDPROTECT commands in the MAIN window but that does not work.
I've tried to issue the PROTECT..ENDPROTECT commands in ABAP and that doesn't work.
Can someone tell me what I'm missing?
Thx.
Andy
‎2006 May 01 4:16 PM
Hi
Try to delete the commands PROTECT/ENDPROTECT from your sapscript, so:
/E WORK_AREA_RECORD
&WA_MAIN-RECORD&
and place the command PROTECT/ENDPROTECT out of the loop:
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
COMMAND = 'PROTECT'.
LOOP AT IT_MAIN.
MOVE IT_MAIN-RECORD TO WA_MAIN-RECORD.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'WORK_AREA_RECORD'
WINDOW = 'MAIN'
EXCEPTIONS
OTHERS = 8.
IF SY-SUBRC <> 0.
WRITE: / 'Error in get_main_data'.
ENDIF.
ENDLOOP.
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
COMMAND = 'ENDPROTECT'.
Or if you have to protect only 4-5 lines:
DATA: COUNT TYPE I.
LOOP AT IT_MAIN.
MOVE IT_MAIN-RECORD TO WA_MAIN-RECORD.
IF COUNT = 0.
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
COMMAND = 'PROTECT'.
ENDIF.
COUNT = COUNT + 1.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'WORK_AREA_RECORD'
WINDOW = 'MAIN'
EXCEPTIONS
OTHERS = 8.
IF SY-SUBRC <> 0.
WRITE: / 'Error in get_main_data'.
ENDIF.
IF COUNT = 5.
COUNT = 0.
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
COMMAND = 'ENDPROTECT'.
ELSE.
AT LAST.
CALL FUNCTION 'CONTROL_FORM'
EXPORTING
COMMAND = 'ENDPROTECT'.
ENDAT.
ENDIF.
ENDLOOP.
Max
‎2006 May 01 4:26 PM
Hi Max,
Thanks for your prompt reply.
I tried your first suggestion but it did not work.
I would not be able to use the second suggestion because although the majority of the paragraps are 4-5 lines, I may have one that has 10 lines.
That's why I'm trying to use PROTECT..ENDPROTECT.
Thx.
Andy
‎2006 May 01 4:35 PM
Hi
You can't use a text element like this:
/E WORK_AREA_RECORD
/: PROTECT
&WA_MAIN-RECORD&
/: ENDPROTECT
because here you're protecting only one line and it doesn't make a sense.
So you have to manage the PROTECT/ENDPROTECT in yout drive program.
In my second solution I used a variable to count the number of written lines and raise the command PROTECT/ENDPROTECT every five lines.
max