Application Development 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: 

Update Field VBAP-ABGRU

Former Member
0 Kudos

Dear all.

I need to put some value in the field ABGRU. When the configuration of the Item is not completed. I'm try to used the program MV45AFZZ and the exit FORM USEREXIT_SAVE_DOCUMENT and USEREXIT_MOVE_FIELD_TO_VBAP.

But i cant update the field. A Example off my code:

Case VBAK-AUART.

WHEN 'ZXXX'.

IF vbap-PSTYV eq 'ZYYY' and vbap-kondm eq '02' and

vbap-stman eq '1'.

move 'Z1' to vbap-abgru.

modify vbap.

ELSEIF vbap-PSTYV eq 'ZYYY' and vbap-kondm NE '02' and vbap-stman NE '1' and vbap-abgru EQ 'Z1'.

move '' to vbap-abgru.

modify vbap.

ENDIF.

ENDCASE.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi Pedro

Stop! Your code is wrong: YOU CAN'T DIRECTLY UPDATE VBAP TABLE:

Case VBAK-AUART.

WHEN 'ZXXX'.

IF vbap-PSTYV eq 'ZYYY' and vbap-kondm eq '02' and

vbap-stman eq '1'.

move 'Z1' to vbap-abgru.

modify vbap. <----


ERROR

ELSEIF vbap-PSTYV eq 'ZYYY' and vbap-kondm NE '02' and vbap-stman NE '1' and vbap-abgru EQ 'Z1'.

move '' to vbap-abgru.

modify vbap. <----


ERROR

ENDIF.

ENDCASE.

If you use the routine USEREXIT_MOVE_FIELD_TO_VBAP you need only to transfer the data to VBAP without to update it:

Case VBAK-AUART.

WHEN 'ZXXX'.

IF vbap-PSTYV eq 'ZYYY' and vbap-kondm eq '02' and

vbap-stman eq '1'.

move 'Z1' to vbap-abgru.

ELSEIF vbap-PSTYV eq 'ZYYY' and vbap-kondm NE '02' and vbap-stman NE '1' and vbap-abgru EQ 'Z1'.

move '' to vbap-abgru.

ENDDIF.

WHEN OTHERS.

ENDCASE.

Don't use USEREXIT_SAVE_DOCUMENT, but if you need the exit USEREXIT_SAVE_DOCUMENT_PREPARE. Here you have to change the data in internal table XVBAP:

Case VBAK-AUART.

WHEN 'ZXXX'.

LOOP AT XVBAP.

IF Xvbap-PSTYV eq 'ZYYY' and Xvbap-kondm eq '02' and

Xvbap-stman eq '1'.

move 'Z1' to Xvbap-abgru.

ELSEIF Xvbap-PSTYV eq 'ZYYY' and Xvbap-kondm NE '02' and xvbap-stman NE '1' and xvbap-abgru EQ 'Z1'.

move '' to vbap-abgru.

ENDDIF.

MODIFY XVBAP.

Max

ENDLOOP.

WHEN OTHERS.

ENDCASE.

3 REPLIES 3

RichHeilman
Developer Advocate
Developer Advocate
0 Kudos

Try modifying XVBAP. Do not directly MODIFY VBAP will be handled by the existing code.



Case VBAK-AUART.
WHEN 'ZXXX'. 
IF vbap-PSTYV eq 'ZYYY' and vbap-kondm eq '02' and
vbap-stman eq '1'.
<b>move 'Z1' to Xvbap-abgru.
*modify vbap.   " Do not directly modify</b>
ELSEIF vbap-PSTYV eq 'ZYYY' and vbap-kondm NE '02' and vbap-stman NE '1' and vbap-abgru EQ 'Z1'.
<b>move '' to Xvbap-abgru.
*modify vbap.   " Do not directly modify</b>
ENDIF.
ENDCASE.



Regards,

Rich Heilman

former_member188685
Active Contributor
0 Kudos

hi,

in the exit you mentioned you have access to xvbap, you need not to modify explicitly, once the transaction completes it will update the record.

Case xVBAK-AUART.
WHEN 'ZXXX'. 
IF xvbap-PSTYV eq 'ZYYY' and xvbap-kondm eq '02' and
xvbap-stman eq '1'.
move 'Z1' to xvbap-abgru.

ELSEIF xvbap-PSTYV eq 'ZYYY' and xvbap-kondm NE '02' and xvbap-stman NE '1' and xvbap-abgru EQ 'Z1'.
move '' to xvbap-abgru.

ENDIF.
ENDCASE.

Former Member
0 Kudos

Hi Pedro

Stop! Your code is wrong: YOU CAN'T DIRECTLY UPDATE VBAP TABLE:

Case VBAK-AUART.

WHEN 'ZXXX'.

IF vbap-PSTYV eq 'ZYYY' and vbap-kondm eq '02' and

vbap-stman eq '1'.

move 'Z1' to vbap-abgru.

modify vbap. <----


ERROR

ELSEIF vbap-PSTYV eq 'ZYYY' and vbap-kondm NE '02' and vbap-stman NE '1' and vbap-abgru EQ 'Z1'.

move '' to vbap-abgru.

modify vbap. <----


ERROR

ENDIF.

ENDCASE.

If you use the routine USEREXIT_MOVE_FIELD_TO_VBAP you need only to transfer the data to VBAP without to update it:

Case VBAK-AUART.

WHEN 'ZXXX'.

IF vbap-PSTYV eq 'ZYYY' and vbap-kondm eq '02' and

vbap-stman eq '1'.

move 'Z1' to vbap-abgru.

ELSEIF vbap-PSTYV eq 'ZYYY' and vbap-kondm NE '02' and vbap-stman NE '1' and vbap-abgru EQ 'Z1'.

move '' to vbap-abgru.

ENDDIF.

WHEN OTHERS.

ENDCASE.

Don't use USEREXIT_SAVE_DOCUMENT, but if you need the exit USEREXIT_SAVE_DOCUMENT_PREPARE. Here you have to change the data in internal table XVBAP:

Case VBAK-AUART.

WHEN 'ZXXX'.

LOOP AT XVBAP.

IF Xvbap-PSTYV eq 'ZYYY' and Xvbap-kondm eq '02' and

Xvbap-stman eq '1'.

move 'Z1' to Xvbap-abgru.

ELSEIF Xvbap-PSTYV eq 'ZYYY' and Xvbap-kondm NE '02' and xvbap-stman NE '1' and xvbap-abgru EQ 'Z1'.

move '' to vbap-abgru.

ENDDIF.

MODIFY XVBAP.

Max

ENDLOOP.

WHEN OTHERS.

ENDCASE.