2006 May 09 7:55 PM
Hi,
I have written an user exit (program 'MV45AFZZ') ( user exit 'FORM USEREXIT_SAVE_DOCUMENT_PREPARE'). Here I want to give an error message (before save the doc) if the user did enter the correct order reason. It is giving error message properly but during the message system is showing all the fields (VA01) in display mood.After displaying the error message when user press enter system should be able to show Order Reason field as input parameter not display parameter. Pls suggest how to handle this situation. Code is given below :
-
if xvbak-auart = 'ZFRE'.
IF XVBAK-VKORG = TVAUK-VKORG AND
XVBAK-VTWEG = TVAUK-VTWEG AND
XVBAK-SPART = TVAUK-SPART AND
XVBAK-AUDAT GT TVAUK-DATAB.
if xvbak-augru ne tvauk-augru.
SET CURSOR FIELD 'VBAK-AUGRU'.
message E000(zsd01) with
'Please select correct Order Reason'.
exit.
endif.
ELSE.
SET CURSOR FIELD 'VBAK-AUGRU'.
message e000(zsd01) with
'Please select correct Order Reason'.
ENDIF.
ELSE.
if xvbak-augru eq tvauk-augru.
SET CURSOR FIELD 'VBAK-AUGRU'.
message E000(zsd01) with
'Please select Order Reason not assigned to Cost Center'.
endif.
ENDIF.
-
Thanks,
Pradeep
2006 May 09 8:04 PM
Try information(type I) or warning (type W) message instead of error.
2006 May 09 8:18 PM
You can achieve this by following method.
In the user exit you can set one variable to 'N' if you don't allow the user to SAVE order.Your Variable should be avaiable at Global level.IF you dont want to use variables then you can achieve this by IMPORT EXPORT into memory also.
Change the error message to Warning message.
In Include MV45AF0B_BELEG_SICHERN
Immidiately after user exit
Userexit
PERFORM USEREXIT_SAVE_DOCUMENT_PREPARE.
Create new include and in the include
write the following code.
IF VARIABLE = 'N'.
CLEAR VARIABLE.
FCODE = FCODE_GLEICHE_SEITE.
PERFORM FCODE_BEARBEITEN.
CH_SUBRC = 4.
EXIT.
ELSE.
CH_SUBRC = 0.
ENDIF.
If any issues let me know.
Regards
Aman
It will not allow you to SAVE the order.
Message was edited by: Amandeep Singh
2006 May 09 8:31 PM
Instead of EXIT statement, try use LEAVE SCREEN. And off-course, do MESSAGE with 'I' or 'S', not 'E'.
2006 May 09 9:33 PM
Hi aman,
I will implement this logic tomorrow since today basis guy is not there and I need the access key to implement this logic. I will let you know the status tomorrow.
Thanks for the suggestion.
Pradeep
2006 May 09 9:36 PM
Hi,
Use the user exit USEREXIT_MOVE_FIELD_TO_VBAK instead of USEREXIT_SAVE_DOCUMENT_PREPARE.
Hope this helps.
Regards,
Nagaraju Chidurupalli