‎2006 Oct 26 7:56 AM
‎2006 Oct 26 7:58 AM
its just a check statement which returns the expression given is true or false.
CHECK log_exp.
Effect
If the statement CHECK is executed in a loop and log_exp is incorrect, the statement CHECK immediately terminates the current loop pass and the program continues with the next loop pass. For log_exp, you can specify any logical expression.
Variant 1
CHECK log_exp.
Effect
If the statement CHECK is executed outside a loop and log_exp is incorrect, the statement terminates the current process block. You can specify any logical expression for log_exp.
The behavior of the runtime environment after exiting the processing block is described under Exiting Processing Blocks.
Note
SAP recommends to use this procedure with the statement CHECK only inside loops (see CHECK - Loop).
Variant 2
CHECK SELECT-OPTIONS.
Effect
In this way, you can use CHECK only in event blocks for reporting events GET but not in methods. Regardless of whether the statement is executed inside or outside a loop, the effect is the same.
The statement checks whether the content of theinterface working area that was filled for the the current GET event by the logical database fullfills the conditions in all selection tables that are associated with the current node of the logical database. The name of the node is statically taken from the next highest GET statement in the program. The following restrictions apply:
The statement CHECK SELECT-OPTIONS is only executed when the type of the current node of the logical database is a database table.
If the node is to be used for unlimited selections, the statement only evaluates the selection criteria that have been declared with the extension NO DATABASE SELECTION of the statement SELECT-OPTIONS.
If the conditions in one of the selection tables are not fullfilled, the GET event block is exited. The behavior of the runtime environment is described under Exiting Processing Blocks.
Regards
- Gopi
‎2006 Oct 26 8:05 AM
If you use the CHECK <expr> statement within an event block but not within a loop, and the condition <expr> is not fulfilled, the system exits the processing block immediately.
If the CHECK statement occurs in a loop using DO, WHILE, or LOOP, it is the loop that terminates, not the processing block.
A subroutine normally ends at the ENDFORM statement. However, you can terminate them earlier by using the EXIT or CHECK statement.
Example:-
PROGRAM FORM_TEST.
DATA: NUM1 TYPE I,
NUM2 TYPE I,
RES TYPE P DECIMALS 2.
NUM1 = 3. NUM2 = 4.
PERFORM DIVIDE USING NUM1 NUM2 CHANGING RES.
FORM DIVIDE USING N1 N2 CHANGING R.
CHECK N2 NE 0.
R = N1 / N2.
WRITE: / N1, '/', N2, '=', R.
ENDFORM.
Output:-
3 / 4 = 0.75
2 / 3 = 0.67
If the EXIT or CHECK statement occurs within a loop in a subroutine, it applies to the loop, and not to the subroutine. EXIT and CHECK terminate loops in different ways (see Loops), but behave identically when terminating subroutines.
Let me know if you have any further queries.
Don't forget to mark helpful answers!
Gaurav Parmar.
‎2006 Oct 26 8:09 AM
<b>CHECK</b>
Conditional termination of a loop pass or a processing block.
Syntax
CHECK <logexp>.
If the logical expression <logexp> is true, the program continues at the next statement. If, however, <logexp> is false, the current loop pass terminates and the next begins. If the program is not currently processing a loop, the current processing block terminates. There are special forms of the CHECK statement for use with selection tables and in GET event blocks.
In loop structures like
DO ... ENDDO
WHILE ... ENDWHILE
LOOP ... ENDLOOP
SELECT ... ENDSELECT
CHECK with a negative outcome terminates the current loop pass and goes back to the beginning of the loop to start the next pass, if there is one.
In structures like
FORM ... ENDFORM
FUNCTION ... ENDFUNCTION
MODULE ... ENDMODULE
AT
CHECK with a negative outcome terminates the routine or modularization unit.
If CHECK is not in a loop or a routine or a modularization unit, a negative logical expression terminates the current event. In contrast, the statement REJECT terminates the current event, even from loops or subroutines.
If a CHECK produces a negative result in a GET event , the GET events in subordinate tables of the logical database are not processed either.
<b>CHECK - special for reports with logical databases</b>
1. CHECK sel.
2. CHECK SELECT-OPTIONS.
CHECK sel.
Effect
Checks the selection criterion requested by the statement SELECT-OPTIONS sel ... .
This statement is equivalent to f IN sel , if sel was defined by SELECT-OPTIONS sel FOR f and can be used anywhere in logical expressions
If the result of this check is negative, the processing in this event is terminated and the GET events for any subordinate database tables are not processed either.
This variant of the CHECK statement should be used only if the logical database for the corresponding table does not support dynamic selections (see CHECK SELECT-OPTIONS ), or SELECT-OPTIONS with the addition NO DATABASE SELECTION . Otherwise, the relevant record is not read from the database and made available to the program.
CHECK SELECT-OPTIONS.
Effect
Called only after a GET event.
This statement checks all the selections for SELECT-OPTIONS where the reference field after FOR belongs to the current table dbtab (specified after GET . However, this applies only if the logical database for dbtab does not support dynamic selections . Otherwise, the selections are passed directly to the logical database (with the exception: addition " NO DATABASE SELECTION " to SELECT-OPTIONS ).
This variant of the CHECK statement only makes sense if the logical database does not support dynamic selections for the corresponding table or SELECT-OPTIONS are defined with the addition " NO DATABASE SELECTION ".
You can determine from the ABAP/4 Development Workbench whether dynamic selections are defined and, if so, for which logical database tables by selecting Development -> Programming environ. -> Logical databases followed by Extras -> Dynamic selections .
I hope it helps.
Best Regards,
Vibha
*Please mark all the helpful answers