Get Example source ABAP code based on a different SAP table
ID WAIT-FOR • UNTIL WAIT FOR MESSAGING CHANNELS • WAIT FOR MESSAGING CHANNELS ABAP Statement
WAIT FOR MESSAGING CHANNELS> Short Reference >
ABAP_SYNTAX WAIT FOR MESSAGING CHANNELS $[PUSH CHANNELS>$] $[ASYNCHRONOUS TASKS>$] UNTIL log_exp> $[UP TO sec SECONDS$].>
ABAP Addition 1 ... PUSH CHANNELS> 2 ... ASYNCHRONOUS TASKS> 3 ... UP TO sec SECONDS>
What does it do? This variant of the statement WAIT> can be used only in receiver programs of ABAP Messaging Channels> . Any logical expression> can be specified for log_exp>> after UNTIL>.
If the result of log_exp> is false and a receiver is registered for APC messages, the program waits until an ON_MESSAGE> method has been executed for a message sent by a sender program and checks the logical expression again:
If the new check on the result of the logical expression is true, sy-subrc> is set to 0 and the execution of the program is continued with the statement that follows WAIT>.
If the new check on the result of the logical expression is false and the RECEIVE> methods of all previously sent messages have not yet been executed, one of the remaining RECEIVE> methods must be executed before the program continues.
If the new check on the result of the logical expression is false and the RECEIVE> methods of all previously sent messages were executed, sy-subrc> is set to 4 and the execution of the program is continued with the statement that follows WAIT>.
If the result of log_exp> is false and no receiver is registered for AMC messages, the execution of the program is not interrupted, regardless of the result of log_exp>, and sy-subrc> is set to the value 4.
If the logical expression is true, the execution of the program is not interrupted, regardless of whether a receiver is registered for AMC messages, and sy-subrc> is set to the value 0. If the statement WAIT> interrupts the program, the work process> is changed, and a database commit> is executed, except in updates>. For this reason, WAIT> must not be used between AB-SQL statements that open or close a database cursor>. System Fields> sy-subrc>>Meaning> 0The logical expression log_exp> is true. 4The logical expression log_exp> is false. Also, no receiver is registered for AMC messages in the current ABAP_ISESS > and no registrations for APC messages or asynchronous function calls> exist when the additions PUSH CHANNELS> or ASYNCHRONOUS TASKS> are used. 8The logical expression log_exp> is false and when the addition UP TO> was specified, the maximum time was exceeded.
Latest notes: If the logical expression is false, the running program is stopped in its current state. After a RECEIVE> method, all data objects that were not changed in the RECEIVE> method have the same value as when the logical expression was last evaluated. Any methods called by functions within the logical expression are executed again during the next check. ABAP_HINT_END
What does it do? If these additions are specified, this variant of the statement WAIT > is combined with the variants WAIT FOR PUSH CHANNELS>> or WAIT FOR ASYNCHRONOUS TASKS> >. The program flow described in the variants is added to the program flow described above. The WAIT> statement then also waits for APC messages or for asynchronously called functions to be called and does not just wait for AMC messages. • UP TO SECONDS WAIT FOR MESSAGING CHANNELS
ABAP Addition
What does it do? If UP TO> is specified, a maximum time sec> can be specified in seconds and the statement waits for AMC for this time. sec> expects a data object of the type f> that must contain a positive number. The unit of the number in sec> is seconds and the time resolution is one millisecond. If no AMC message is received within the specified time and its RECEIVE> method causes the result of the logical expression log_exp> to be true, sy-subrc> is set to 8, and the execution of the program is continued with the statement that follows WAIT>.
Latest notes:
If no receiver is registered for AMC messages, the addition UP TO sec SECONDS> is ignored.
The addition UP TO sec SECONDS> is ignored with respect to the execution of the RECEIVE> methods. Their execution duration can be longer than the time span specified. ABAP_HINT_END