Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

USEREXIT_SAVE_DOCUMENT_PREPARE (VA02)

Former Member
0 Likes
1,035

I am have got the following code which updates VBAK fine with the new purchase order number but for some reason does not update VBKD. Can anyone help?

I need the new purchase order number to appear when you go into VA02/3 which seems to come from VBKD.

DATA: zznewdate(10).

LOOP AT xvbap WHERE abgru <> ''.
  EXIT.
ENDLOOP.

IF sy-subrc = 0 AND
   sy-tcode = 'VA02' AND
   ccdata-ccins = 'ZADV' AND
   zzreject <> 'X'.

   IF xvbak-bstnk = ''.
     WRITE sy-datum TO zznewdate.
     CONCATENATE zznewdate vbak-bstnk INTO zzbstnk.
     vbak-bstnk = zzbstnk.
     vbkd-bstkd = zzbstnk.
   ELSE.
     WRITE sy-datum TO zznewdate.
     CONCATENATE zznewdate xvbak-bstnk INTO zzbstnk.
     vbak-bstnk = zzbstnk.
     vbkd-bstkd = zzbstnk.
   ENDIF.
ENDIF.

Kind Regards

Carly

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
784

Hi,

Please try this.


IF sy-subrc = 0 AND
   sy-tcode = 'VA02' AND
   ccdata-ccins = 'ZADV' AND
   zzreject <> 'X'.
 
   IF xvbak-bstnk = ''.
     WRITE sy-datum TO zznewdate.
     CONCATENATE zznewdate vbak-bstnk INTO zzbstnk.
     vbak-bstnk = zzbstnk.
     xvbkd-bstkd = zzbstnk.              "<-- change here
     xvbkd-updkz = 'U'.                  "<-- add here
   ELSE.
     WRITE sy-datum TO zznewdate.
     CONCATENATE zznewdate xvbak-bstnk INTO zzbstnk.
     vbak-bstnk = zzbstnk.
     xvbkd-bstkd = zzbstnk.              "<-- change here
     xvbkd-updkz = 'U'.                  "<-- add here
   ENDIF.
ENDIF.

Regards,

Ferry Lianto

I am have got the following code which updates VBAK fine with the new purchase order number but for some reason does not update VBKD. Can anyone help?

I need the new purchase order number to appear when you go into VA02/3 which seems to come from VBKD.

DATA: zznewdate(10).

LOOP AT xvbap WHERE abgru <> ''.
  EXIT.
ENDLOOP.

IF sy-subrc = 0 AND
   sy-tcode = 'VA02' AND
   ccdata-ccins = 'ZADV' AND
   zzreject <> 'X'.

   IF xvbak-bstnk = ''.
     WRITE sy-datum TO zznewdate.
     CONCATENATE zznewdate vbak-bstnk INTO zzbstnk.
     vbak-bstnk = zzbstnk.
     vbkd-bstkd = zzbstnk.
   ELSE.
     WRITE sy-datum TO zznewdate.
     CONCATENATE zznewdate xvbak-bstnk INTO zzbstnk.
     vbak-bstnk = zzbstnk.
     vbkd-bstkd = zzbstnk.
   ENDIF.
ENDIF.

Kind Regards

Carly

3 REPLIES 3
Read only

Former Member
0 Likes
785

Hi,

Please try this.


IF sy-subrc = 0 AND
   sy-tcode = 'VA02' AND
   ccdata-ccins = 'ZADV' AND
   zzreject <> 'X'.
 
   IF xvbak-bstnk = ''.
     WRITE sy-datum TO zznewdate.
     CONCATENATE zznewdate vbak-bstnk INTO zzbstnk.
     vbak-bstnk = zzbstnk.
     xvbkd-bstkd = zzbstnk.              "<-- change here
     xvbkd-updkz = 'U'.                  "<-- add here
   ELSE.
     WRITE sy-datum TO zznewdate.
     CONCATENATE zznewdate xvbak-bstnk INTO zzbstnk.
     vbak-bstnk = zzbstnk.
     xvbkd-bstkd = zzbstnk.              "<-- change here
     xvbkd-updkz = 'U'.                  "<-- add here
   ENDIF.
ENDIF.

Regards,

Ferry Lianto

Read only

Former Member
0 Likes
784

IN addition ..


IF sy-subrc = 0 AND
   sy-tcode = 'VA02' AND
   ccdata-ccins = 'ZADV' AND
   zzreject <> 'X'.
 
   IF xvbak-bstnk = ''.
     WRITE sy-datum TO zznewdate.
     CONCATENATE zznewdate vbak-bstnk INTO zzbstnk.
     vbak-bstnk = zzbstnk.
     xvbkd-bstkd = zzbstnk.         
     xvbkd-updkz = 'U'.                    
    MODIFY XVBKD.       "  <----- Add this
   ELSE.
     WRITE sy-datum TO zznewdate.
     CONCATENATE zznewdate xvbak-bstnk INTO zzbstnk.
     vbak-bstnk = zzbstnk.
     xvbkd-bstkd = zzbstnk.         
     xvbkd-updkz = 'U'.                
    MODIFY  XVBKD.   " <------ Add this
   ENDIF.
ENDIF.

@Ferry

I think XVBKD is an internal table structure right .

DATA: BEGIN OF XVBKD OCCURS 5.

INCLUDE STRUCTURE VBKDVB.

DATA: END OF XVBKD.

in include VBKDDATA.

Regards,

Vijay

Read only

Former Member
0 Likes
784

Ferry & Sniper,

I have tried both bits of code and without the MODIFY, it still only updates VBAK and not VBKD and with the MODIFY I get a TABLE_ILLEGAL_STATEMENT short dump.

The Errror Analysis is:

You attempted to change, delete or create a line in the internal table "PROGRAM=SAPMV45ADATA=XVBKD[]", but no valid cursor exists for the table.
Possible reasons:                                                            
1. The relevent ABAP/4 statement does not include the addition               
    "...INDEX...", although the statement is not                              
    inside a "LOOP...ENDLOOP" loop processing this table.                     
2. The relevent ABAP/4 statement was called from within a                    
    "LOOP...ENDLOOP" loop after a DELETE "PROGRAM=SAPMV45ADATA=XVBKD[]".

Can anyone help?