08-24-2007 8:22 AM
Hi friends,
the following BAPI code i have written to move the material stock from one batch to another batch with movement type 309 using the transaction mb11 . i am passing all the data i mean sending mat,batch,plant,quantity and recieving mater,plant,batch.
but the stock is not moving.
For ex: mat 7510161 batch 20715/4988
i am moving the stock 500 from above batch and material to
mat 7523044 batch 20235/1239.
but after running BAPI program also still stock 500 is showing under batch 20715/4988 and material 7510161 but it should show under batch 20235/1239.
and material 7523044. Please tell me the problem. The code i did is as shown below.
The return table is showing empty after call function bapi.
SELECT SINGLE * FROM zsdv1temp
WHERE zstatus = '20'.
IF sy-subrc = 0.
CONCATENATE zsdv1temp-znpord zsdv1temp-znplot INTO lv_dest SEPARATED BY '/'.
CONCATENATE zsdv1temp-zdpord zsdv1temp-zdplot INTO lv_dest1 SEPARATED BY '/'.
SELECT SINGLE * FROM zv1fpl WHERE werks = zsdv1temp-werks
AND znpord = zsdv1temp-znpord
AND znplot = zsdv1temp-znplot.
IF sy-subrc = 0.
SELECT SINGLE * FROM zv1fpc WHERE werks = zsdv1temp-werks
AND znpord = zsdv1temp-znpord
AND znplot = zsdv1temp-znplot.
IF sy-subrc = 0.
SELECT SINGLE * FROM mchb WHERE matnr = zv1fpl-matnr
AND werks = zsdv1temp-werks
AND lgort = gv_lgort
AND charg = lv_dest.
IF sy-subrc = 0.
*SET UP BAPI HEADER DATA
gv_header-pstng_date = sy-datum.
gv_header-doc_date = sy-datum.
gv_code-gm_code = '06'. mb11
*Filling the item table.
CLEAR: gv_item.
WRITE: mchb-clabs TO x_clabs.
gv_item-move_type = '309'.(movement type)
gv_item-plant = zsdv1temp-werks.
gv_item-stge_loc = 7000.
gv_item-material = zv1fpl-matnr.(sending material)
gv_item-entry_qnt = x_clabs. (quantity or stock)
gv_item-batch = lv_dest. (sending batch)
gv_item-move_plant = zsdv1temp-werks.
gv_item-move_stloc = gv_lgort.
gv_item-move_mat = zsdv1temp-zdmatnr.(receiving material)
gv_item-move_batch = lv_dest1.(receiving batch)
APPEND gv_item.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = gv_header
goodsmvt_code = gv_code
TESTRUN = ' '
IMPORTING
GOODSMVT_HEADRET =
MATERIALDOCUMENT =
MATDOCUMENTYEAR =
TABLES
goodsmvt_item = gv_item
GOODSMVT_SERIALNUMBER =
return = gv_return.
CLEAR errflag.
LOOP AT gv_return.
IF gv_return-type EQ 'E'.
WRITE:/ 'Error in function', gv_return-message.
errflag = 'X'.
ELSE.
WRITE:/ gv_return-message.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
Please tell me where is the problem.
Thanks in advance.
08-24-2007 8:25 AM
Hi
If it returns any messages it should mean it's all ok, u should use the importing parameter MATERIALDOCUMENT MATDOCUMENTYEAR in order to know which document was created and call the BAPI for the commit.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = gv_header
goodsmvt_code = gv_code
IMPORTING
MATERIALDOCUMENT = MATERIALDOCUMENT
MATDOCUMENTYEAR = MATDOCUMENTYEAR
TABLES
goodsmvt_item = gv_item
return = gv_return.
LOOP AT gv_return eq 'E' or
eq 'A'.
exit.
ENDLOOP.
if sy-subrc <> 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
write: / 'Doc. nr :', MATERIALDOCUMENT,
/ 'Fyscal year:', MATDOCUMENTYEAR.
endif.
Max