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: 

BAPI_GOODSMVT_CREATE

Former Member
0 Kudos

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.

1 REPLY 1

Former Member
0 Kudos

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