REPORT ZBW_PARALLEL_PC_SET_VAR.
* Variant to capture in a variable
SELECTION-SCREEN BEGIN OF BLOCK VARIANT_BLOCK
WITH FRAME TITLE TEXT-002 NO INTERVALS.
PARAMETERS: VAR_NAME TYPE RVARI_VNAM OBLIGATORY.
SELECTION-SCREEN END OF BLOCK VARIANT_BLOCK.
DATA: IT_TVARVC TYPE STANDARD TABLE OF TVARVC,
WA_TVARVC TYPE TVARVC.
FREE : IT_TVARVC, WA_TVARVC.
Data : SELECT_VAR TYPE SYSUBRC. " Number Variable.
FREE : SELECT_VAR.
* Assign SELECT_VAR to 0 so it can be used to create indefinte loop.
SELECT_VAR = 0.
WHILE SELECT_VAR EQ 0.
FREE : IT_TVARVC, WA_TVARVC.
* Select the latest value for the TVARVC entry
SELECT *
FROM TVARVC
INTO TABLE IT_TVARVC
BYPASSING BUFFER
WHERE NAME EQ VAR_NAME " VAR_NAME holds the TVARVC variable value.
AND TYPE EQ 'P'.
READ TABLE IT_TVARVC INDEX 1 INTO WA_TVARVC.
IF SY-SUBRC EQ 0 .
* If the value is BLANK
* then no PC is executing now and setting value to X.
IF WA_TVARVC-LOW EQ ''.
WA_TVARVC-LOW = 'X'.
APPEND WA_TVARVC TO IT_TVARVC.
MODIFY TVARVC FROM TABLE IT_TVARVC.
EXIT.
ELSE. " Other PC is executing.
* Wait so the other PC can complete and set the Flag to BLANK.
WAIT UP TO 100 SECONDS.
ENDIF.
ELSE.
EXIT. " NO Variable found..
ENDIF.
ENDWHILE.
REPORT ZBW_PARALLEL_PC_RESET_VAR.
SELECTION-SCREEN BEGIN OF BLOCK VARIANT_BLOCK
WITH FRAME TITLE TEXT-002 NO INTERVALS.
PARAMETERS: VAR_NAME TYPE RVARI_VNAM OBLIGATORY.
SELECTION-SCREEN END OF BLOCK VARIANT_BLOCK.
DATA: IT_TVARVC TYPE STANDARD TABLE OF TVARVC,
WA_TVARVC TYPE TVARVC.
FREE : IT_TVARVC, WA_TVARVC.
SELECT *
FROM TVARVC
INTO TABLE IT_TVARVC
BYPASSING BUFFER
WHERE NAME EQ VAR_NAME
AND TYPE EQ 'P'.
READ TABLE IT_TVARVC INDEX 1 INTO WA_TVARVC.
IF SY-SUBRC EQ 0 .
* To set the Value as BLANK to denote the PC executing is completed.
WA_TVARVC-LOW = ''.
APPEND WA_TVARVC TO IT_TVARVC.
MODIFY TVARVC FROM TABLE IT_TVARVC.
ENDIF.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
10 | |
9 | |
5 | |
4 | |
4 | |
4 | |
4 | |
3 | |
3 | |
3 |