08-28-2006 12:59 PM
hi every body,
i am using a zbapi in that i am updating a table which is having 40 fields but i am modifying the only four fields but it is deleting the remaining field entries
i am now attaching the code what i have used
ZMPETS_SHIPHDR-SHIPDOCNO = wf_shipdocno.
ZMPETS_SHIPHDR-VENACCEPTIND = VENACCEPTIND.
ZMPETS_SHIPHDR-LASTCHANGEDT = SY-DATUM.
ZMPETS_SHIPHDR-LASTCHANGEBY = SY-UNAME.
ZMPETS_SHIPHDR-LOEKZ = ' '.
CALL FUNCTION 'Z_MPETS_SAVE_SHIPHDR'
EXPORTING
zmpets_shiphdr_save = ZMPETS_SHIPHDR.
*COMMITING THE UPDATION.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
IMPORTING
RETURN = RETURN.
UPDATING THE SHIPMENT ACTIVITY TABLE.
ZMPETS_SHIPACTIV-PETSDOCNUMBER = wf_shipdocno.
ZMPETS_SHIPACTIV-LOEKZ = ' '.
ZMPETS_SHIPACTIV-ACTIVITY = '20'.
CALL FUNCTION 'Z_MPETS_SAVE_SHIPACTIV'
EXPORTING
zmpets_shipactiv_save = ZMPETS_SHIPACTIV.
in the upper function module the code
is
modify zmpets_shipactiv from zmpets_shipactiv_save.
we have to use this compulsory as it is client's standard
*COMMITING THE UPDATION.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
IMPORTING
RETURN = RETURN.
kindly give me reply
i will reward the points for a best reply
08-28-2006 1:09 PM
Welcome to SDN!
You will need to pass all 40 fields into your BAPI structure (ZMPETS_SHIPACTIV). The problem is that when you use the modify from statement, the BAPI updates the DB as-is from the BAPI structure, and since you are passing it only 4 values, it defaults the others to space.
Do this:
SELECT * FROM ZMPETS_SHIPACTIV WHERE <specify key fields here>
and then
ZMPETS_SHIPACTIV-PETSDOCNUMBER = wf_shipdocno.
ZMPETS_SHIPACTIV-LOEKZ = ' '.
ZMPETS_SHIPACTIV-ACTIVITY = '20'.
CALL FUNCTION 'Z_MPETS_SAVE_SHIPACTIV'
EXPORTING
zmpets_shipactiv_save = ZMPETS_SHIPACTIV.
This should work.
Hope this helps.
Sudha
08-28-2006 1:22 PM
Hi,
pass all the key fields along with the non
key fields you want to modify by filling BAPI
structure .
CALL FUNCTION 'Z_MPETS_SAVE_SHIPACTIV'
EXPORTING
zmpets_shipactiv_save = ZMPETS_SHIPACTIV.
Regards
Amole