Skip to Content
0
Former Member
Nov 03, 2005 at 11:12 PM

User Exit for VA01 and VA02: Duplicate PO check

1086 Views

Hi,

I am writing a userexit for PO check in VA01 & VA02 trx.The PO number should be unique.If we enters the existing PO number it should go to Incompletion log.I am calling check_po_number form in userexit_save_document in mv45afzz. it is not working....

what is wrong in my code?

Thanks in advance,

fractal.

FORM CHECK_PO_NUMBER.

DATA : begin of ivbkd occurs 0,

vbeln like vbkd-vbeln,

end of ivbkd.

Select DISTINCT vbeln into table ivbkd from vbkd

where bstkd = vbak-bstnk.

Select * from vbak up to 1 rows

for all entries in ivbkd

where vbeln = ivbkd-vbeln and

kunnr = vbak-kunnr.

endselect.

if sy-subrc = 0.

perform set_so_incompletion_log using 'PONM'.

else.

perform reset_so_incompletion_log using 'PONM'.

endif.

ENDFORM.

FORM set_so_incompletion_log using value(logid) type c.

case logid.

when 'PONM'.

read table xvbuv with key

vbeln = xvbak-vbeln

tdid = 'Z026'.

if sy-subrc <> 0.

XVBUV-MANDT = SY-MANDT.

XVBUV-VBELN = XVBAK-VBELN.

XVBUV-POSNR = '000000'.

XVBUV-ETENR = '0000'.

XVBUV-PARVW = ''.

XVBUV-TDID = 'Z026'.

XVBUV-TBNAM = 'FTEXT'.

XVBUV-FDNAM = 'LTEXT'.

XVBUV-FEHGR = '50'.

XVBUV-STATG = '02'.

XVBUV-UPDKZ = ''.

XVBUV-FCODE = 'KTEX_SUB'.

XVBUV-MSGKZ = ''.

XVBUV-SORTF = '9999'.

XVBUV-LFDNR = '0000'.

APPEND XVBUV.

endif.

ENDFORM.

FORM reset_so_incompletion_log using value(logid) type c.

case logid.

WHEN 'PONM'.

delete xvbuv

where vbeln = vbak-vbeln

and tdid = 'Z026'.

WHEN OTHERS.

endcase.

ENDFORM.