2011 Jul 26 12:06 PM
Hi SDNers,
I have done modifications on user exit to update 0015 infotype.
Updated data I can only see after come out of PA30 screen and re-open the same. If I m at the same screen,I couldnt able to see the updated data. I wrote commit work command too...even though its not working.
Kindly let me know what could be the solution for the same.
Regards,
Venkat
2011 Jul 26 12:23 PM
Are you trying to modify any screen field by doing so? If the answer is yes, you may have used the incorrect approach.
Have you used the User-Exit include ZXPADU* rather than any BADI implementation of HRPADINFTY* ?
2011 Jul 26 12:19 PM
You have used the incorrect exit/badi. If you can provide more info maybe I can help more... if not then if you go over the documentation for the various badis and exits you will find answer. Have you had a look at HRPAD00INFTY?
2011 Jul 26 12:23 PM
Are you trying to modify any screen field by doing so? If the answer is yes, you may have used the incorrect approach.
Have you used the User-Exit include ZXPADU* rather than any BADI implementation of HRPADINFTY* ?
2011 Jul 27 10:13 AM
Hi Jose,
I used ZXPADU002 user exit,not the BADI. From this exit, I m updating 0015 infotype values.
Values are updating, but its showing only when I go out of PA30 and after come back to PA30.
Thanks,
Venkat..
2011 Jul 27 12:15 PM
By doing so, you won't get the values updated in the screen, because, despite you have updated the database table, the screen uses the data still stored in the intermediate memory.
Couple thing you can do to get it to work:
- Enhance your infotype by creating a dummy field (which you won't use) and update the screen values in the custom PBO module (ZP***20)
- Create a BADI implementacion for the standard definition (HRPADINFTY*) and in the PBO method, modify the screen values by accessing the screen fields via a field-symbol
For instance:
FIELD-SYMBOLS: <FS> TYPE P0105.
ASSIGN ('(MP010500)P0105') TO <FS>.
<FS>-BEGDA = '20100101'. "Update the fields you need
2011 Jul 30 7:31 AM
Dear Jose,
I used it in the same way how u mentioned. But its giving short dump.
Below is the description of the dump.
Field symbol has not yet been assigned.
This error may occur if
- You address a typed field symbol before it has been set with
ASSIGN
- You address a field symbol that pointed to the line of an
internal table that was deleted
- You address a field symbol that was previously reset using
UNASSIGN or that pointed to a local field that no
longer exists
- You address a global function interface, although the
respective function module is not active - that is, is
not in the list of active calls. The list of active calls
can be taken from this short dump.
Any idea?
Regards,
Venkat
2011 Jul 30 8:28 PM
You always have to check the SY-SUBRC after the ASSIGN statement to see wheter the field-symbol has succesfully been assigned or not.
In this case I just realized that the infotype you're working with is the 0015 not the 0105 as I typed in the previous code snippet.
That may be the case of the short dump?
This would be the real scenario:
FIELD-SYMBOLS: <FS> TYPE P0015.
ASSIGN ('(MP001500)P0015') TO <FS>.
IF SY-SUBRC EQ 0.
<FS>-BEGDA = '20100101'. "Update the fields you need
ENDIF.
Remember that you have to do this in the PBO method of any BADI Implementation that uses the HRPADINFTY* definition.
Let me know if you're having any problems with this.
Kind regards
2011 Jul 31 6:25 AM
Dear Jose,
I am not using BADI, I m using user exit ZXPADU02 to update 0015 infotype. In this case.,how can i update the screen values..
Regards,
Venkat
2011 Jul 31 12:08 PM
In this case, there's no problem with using ZXPADU02 to do the database update.
However to get this values updated in the screen you will need to do 'something else'.
I'd suggest you to create a BADI an implement the above code in the PBO method. You have to do this in the PBO of the BADI, because, despite you have updated the database, as I said before, those changes won't be reflected in the screen, 'cause the screen's still using the data stored in the intermediate memory, so you have to do it this way.
Regards