Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

SAPScript - PROTECT.....ENDPROTECT problem

andrew_jacobs2
Participant
0 Likes
1,126

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

3 REPLIES 3
Read only

Former Member
0 Likes
691

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

Read only

0 Likes
691

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

Read only

0 Likes
691

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