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: 

BDC code for MB01 Application(Multiple Line Items)

Former Member
0 Kudos

Hi,

Can anybody please send me the BDC CODE for MB01 Application(for Multiple Line items).

Very urgent.

Thanks And Regards,

Ajay

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Instead of BDC you can use following BAPI.

see the following ex:

  • BAPI TO Upload Inventory Data

*

  • GMCODE Table T158G - 01 - MB01 - Goods Receipts for Purchase Order

  • 02 - MB31 - Goods Receipts for Prod Order

  • 03 - MB1A - Goods Issue

  • 04 - MB1B - Transfer Posting

  • 05 - MB1C - Enter Other Goods Receipt

  • 06 - MB11

*

  • Domain: KZBEW - Movement Indicator

  • Goods movement w/o reference

  • B - Goods movement for purchase order

  • F - Goods movement for production order

  • L - Goods movement for delivery note

  • K - Goods movement for kanban requirement (WM - internal only)

  • O - Subsequent adjustment of "material-provided" consumption

  • W - Subsequent adjustment of proportion/product unit material

*

LOOP AT I_TAB.

count = sy-tabix.

SELECT SINGLE * FROM ZMM_GI_WIP

WHERE GI_NO = I_TAB-DOCNO AND

GI_DATE = I_TAB-DOCDT.

IF SY-SUBRC = 0.

I_TAB-FLAG = 'C'.

modify i_tab index count.

CONCATENATE 'ERROR GI : ' I_TAB-DOCNO

' WAS ALREADY UPLOADED' INTO I_MSG1.

APPEND I_MSG1.

CLEAR I_TAB-FLAG.

CONTINUE.

ELSE.

CONCATENATE I_TAB-DOCDT+4(2)

I_TAB-DOCDT+6(2)

I_TAB-DOCDT+2(2)

I_TAB-DOCDT+0(2)

INTO G_DATE.

gmhead-pstng_date = G_DATE.

gmhead-doc_date = sy-datum.

gmhead-pr_uname = sy-uname.

  • "01 - MB01 - Goods Receipts for Purchase Order

gmcode-gm_code = '03'.

refresh itab.

clear itab.

SORT I_MAIN BY SOL_DOCNO.

LOOP AT I_MAIN WHERE DOCNO = I_TAB-DOCNO.

IF I_MAIN-GI_TXN_TYPE = 'MGI'.

itab-move_type = '291'.

ENDIF.

itab-mvt_ind = ' '.

itab-plant = I_MAIN-WERKS.

itab-material = I_MAIN-MATNR.

itab-entry_qnt = I_MAIN-ERFMG.

itab-stge_loc = I_MAIN-LGOBE.

itab-ENTRY_UOM = I_MAIN-ERFME.

IF I_MAIN-WERKS = 'MR'.

itab-TR_PART_BA = '11'.

ELSEIF I_MAIN-WERKS = 'MR'.

itab-TR_PART_BA = '12'.

ENDIF.

append itab.

ENDLOOP.

if not itab[] is initial.

call function 'BAPI_GOODSMVT_CREATE'

exporting

goodsmvt_header = gmhead

goodsmvt_code = gmcode

  • * TESTRUN = ' '

IMPORTING

goodsmvt_headret = mthead

  • * MATERIALDOCUMENT =

  • MATDOCUMENTYEAR =

tables

goodsmvt_item = itab

  • GOODSMVT_SERIALNUMBER =

return = errmsg.

clear errflag.

loop at errmsg.

if errmsg-type eq 'E'.

write:/'Error in function', errmsg-message.

errflag = 'X'.

else.

write:/ errmsg-message.

endif.

move errmsg-message to i_msg1.

append i_msg1.

endloop.

if errflag is initial.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

  • EXPORTING

  • WAIT =

  • IMPORTING

  • RETURN =

.

  • commit work and wait.

if sy-subrc ne 0.

write:/ 'Error in updating'.

exit.

endif.

endif.

ENDIF.

wait up to 20 seconds.

ENDLOOP.

2 REPLIES 2

Former Member
0 Kudos
FORM bdc .

date1 = sy-datum.
DATA : date2(10) .
DATA : r_plant LIKE rm07m-werks.

CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = date1
IMPORTING
date_external = date2
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.

LOOP AT itab.

p_vbeln = itab-vbeln.

READ TABLE it_likp WITH KEY vbeln = itab-vbeln.

p_exnum = itab-exnum.
p_exdate = itab-zdate.
p_barea = itab-trdest.
s_werks = itab-werks .

r_plant = it_likp-kunnr.

CALL FUNCTION 'ZHZLMM_DELIVERY_STLOC' "To find the Storage Location.
EXPORTING
i_vbeln = itab-vbeln
IMPORTING
o_lgort = so_loca.

REFRESH bdcdata.

PERFORM bdc_dynpro USING 'SAPMM07M' '0200'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RM07M-LGORT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=NFBL'.
PERFORM bdc_field USING 'MKPF-BLDAT' " Document Date
date2.
PERFORM bdc_field USING 'MKPF-BUDAT' " Posting Date
date2.
PERFORM bdc_field USING 'RM07M-XABLN' " GR/GI Slip No. (Supplying plant WB slip No.)
itab-slip_no.
PERFORM bdc_field USING 'RM07M-BWARTWE' " Movement type
'101'.

PERFORM bdc_field USING 'RM07M-WERKS' " Plant (Receiving plant)
r_plant.
PERFORM bdc_field USING 'RM07M-LGORT' " Storage Location
so_loca.
PERFORM bdc_field USING 'XFULL'
'X'.
PERFORM bdc_field USING 'RM07M-WVERS3'
'X'.
PERFORM bdc_dynpro USING 'SAPMM07M' '1201'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RM07M-VBELN'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SP'.
PERFORM bdc_field USING 'RM07M-BWARTWE'
'101'.
PERFORM bdc_field USING 'RM07M-LGORT'
so_loca.
PERFORM bdc_field USING 'RM07M-VBELN'
itab-vbeln. " Delivery No. to get PO automatically
PERFORM bdc_field USING 'RM07M-WERKS(01)' " PO Plant1 (Receiving plant )
r_plant.
PERFORM bdc_field USING 'RM07M-WERKS(02)' " PO Plant2 (R.P.)
r_plant.
PERFORM bdc_field USING 'RM07M-WERKS(03)' " PO Plant3 (R.P.)
r_plant.
PERFORM bdc_field USING 'RM07M-WERKS(04)' " PO Plant4 (R.P.)
r_plant.

PERFORM bdc_dynpro USING 'SAPLJ1I4' '0100'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
PERFORM bdc_field USING 'BDC_CURSOR'
'J_1IEXCHDR-EXGRP'.

PERFORM bdc_field USING 'J_1IEXCHDR-EXGRP'
'20'.
PERFORM bdc_field USING 'J_1IPART1-REGTYP'
'A'.

PERFORM bdc_field USING 'J_1IEXCHDR-EXNUM' " Excise Number 
itab-exnum. 
PERFORM bdc_field USING 'J_1IEXCHDR-EXYEAR'
s_fyear.

PERFORM bdc_dynpro USING 'SAPMM07M' '0210'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MSEG-SGTXT'. " text
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
MOVE itab-zdwt TO zdwt1.
PERFORM bdc_field USING 'MSEG-ERFMG' " Dry weight
zdwt1.

PERFORM bdc_field USING 'MSEG-ERFME' " No or To beside Qty.
'TO'.
PERFORM bdc_field USING 'MSEG-LGORT' " Storage location
so_loca.
MOVE itab-znwt TO znwt1.
PERFORM bdc_field USING 'MSEG-LSMNG' " nt weight
znwt1.

READ TABLE it_wb2 WITH KEY vbeln = itab-vbeln.
MOVE it_wb2-znwt TO znwt2 .
CONCATENATE it_wb2-truck_no it_wb2-slip_no INTO a_sgtxt SEPARATED BY '-'.

PERFORM bdc_field USING 'MSEG-ABLAD' " Unloading Point user fill nt weight of Receiving Plant

itab-znwt. 
znwt2 .
*" '12345'.
*********************
PERFORM bdc_field USING 'MSEG-WEANZ' " No. of GR slips
'1'.
PERFORM bdc_field USING 'MSEG-SGTXT'
a_sgtxt . " text = truck no at R.plant + R.Plant slip no.

PERFORM bdc_dynpro USING 'SAPMM07M' '0221'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MKPF-BUDAT'. " posting date
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.

CALL TRANSACTION 'MB01' USING bdcdata MODE 'E' UPDATE 'A'.

GET PARAMETER ID 'MBN' FIELD addn3.
IF addn3 space.
MOVE itab-vbeln TO itab_2-vbeln.
MOVE addn3 TO itab_2-mblnr.
APPEND itab_2.
ENDIF.

*-----Update supplying plant addn_fld3 field with grn number
UPDATE zhzlagucha_wb SET addn_fld3 = addn3
WHERE vbeln = itab-vbeln AND
werks = itab-werks AND
exyear = s_fyear.

*-----Update receiving plant addn_fld3 field with grn number
UPDATE zhzlagucha_wb SET addn_fld3 = addn3
WHERE vbeln = itab-vbeln AND
werks = it_wb2-werks.

SET PARAMETER ID 'ZAN1' FIELD p_exnum.
SET PARAMETER ID 'ZAN2' FIELD p_exdate.
SET PARAMETER ID 'ZAN3' FIELD p_barea.

MOVE itab-werks TO s_werks.
MOVE it_wb2-werks TO p_werks.
SET PARAMETER ID 'ZAD1' FIELD p_werks.
SET PARAMETER ID 'ZAD2' FIELD s_werks.

SET PARAMETER ID 'ZAD3' FIELD p_date. 
SET PARAMETER ID 'ZAD4' FIELD so_loca.

SUBMIT zbdc_j1iex VIA SELECTION-SCREEN AND RETURN.

SUBMIT zhzlmm_bdc_j1iex_001 VIA SELECTION-SCREEN AND RETURN. 
IF sy-subrc = 0.
MOVE addn3 TO addn3_mblnr.
CALL FUNCTION 'ZHZLMM_GRN_SERIAL_NO'
EXPORTING
i_mblnr = addn3_mblnr
IMPORTING
o_serialno = serialno_value.
ENDIF.

MOVE serialno_value TO itab_2-exnum.
MODIFY itab_2 TRANSPORTING exnum WHERE mblnr = addn3.

CLEAR : itab, it_likp , it_wb2 , p_exnum, p_exdate, p_barea, p_werks, s_werks, r_plant, itab_2.
CLEAR : addn3,so_loca.
ENDLOOP.
----------------------------------------------------------------------

Start new screen * 
----------------------------------------------------------------------
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.

ENDFORM. "bdc_dynpro
----------------------------------------------------------------------

Insert field * 
----------------------------------------------------------------------
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.

ENDFORM. " BDC

Former Member
0 Kudos

Instead of BDC you can use following BAPI.

see the following ex:

  • BAPI TO Upload Inventory Data

*

  • GMCODE Table T158G - 01 - MB01 - Goods Receipts for Purchase Order

  • 02 - MB31 - Goods Receipts for Prod Order

  • 03 - MB1A - Goods Issue

  • 04 - MB1B - Transfer Posting

  • 05 - MB1C - Enter Other Goods Receipt

  • 06 - MB11

*

  • Domain: KZBEW - Movement Indicator

  • Goods movement w/o reference

  • B - Goods movement for purchase order

  • F - Goods movement for production order

  • L - Goods movement for delivery note

  • K - Goods movement for kanban requirement (WM - internal only)

  • O - Subsequent adjustment of "material-provided" consumption

  • W - Subsequent adjustment of proportion/product unit material

*

LOOP AT I_TAB.

count = sy-tabix.

SELECT SINGLE * FROM ZMM_GI_WIP

WHERE GI_NO = I_TAB-DOCNO AND

GI_DATE = I_TAB-DOCDT.

IF SY-SUBRC = 0.

I_TAB-FLAG = 'C'.

modify i_tab index count.

CONCATENATE 'ERROR GI : ' I_TAB-DOCNO

' WAS ALREADY UPLOADED' INTO I_MSG1.

APPEND I_MSG1.

CLEAR I_TAB-FLAG.

CONTINUE.

ELSE.

CONCATENATE I_TAB-DOCDT+4(2)

I_TAB-DOCDT+6(2)

I_TAB-DOCDT+2(2)

I_TAB-DOCDT+0(2)

INTO G_DATE.

gmhead-pstng_date = G_DATE.

gmhead-doc_date = sy-datum.

gmhead-pr_uname = sy-uname.

  • "01 - MB01 - Goods Receipts for Purchase Order

gmcode-gm_code = '03'.

refresh itab.

clear itab.

SORT I_MAIN BY SOL_DOCNO.

LOOP AT I_MAIN WHERE DOCNO = I_TAB-DOCNO.

IF I_MAIN-GI_TXN_TYPE = 'MGI'.

itab-move_type = '291'.

ENDIF.

itab-mvt_ind = ' '.

itab-plant = I_MAIN-WERKS.

itab-material = I_MAIN-MATNR.

itab-entry_qnt = I_MAIN-ERFMG.

itab-stge_loc = I_MAIN-LGOBE.

itab-ENTRY_UOM = I_MAIN-ERFME.

IF I_MAIN-WERKS = 'MR'.

itab-TR_PART_BA = '11'.

ELSEIF I_MAIN-WERKS = 'MR'.

itab-TR_PART_BA = '12'.

ENDIF.

append itab.

ENDLOOP.

if not itab[] is initial.

call function 'BAPI_GOODSMVT_CREATE'

exporting

goodsmvt_header = gmhead

goodsmvt_code = gmcode

  • * TESTRUN = ' '

IMPORTING

goodsmvt_headret = mthead

  • * MATERIALDOCUMENT =

  • MATDOCUMENTYEAR =

tables

goodsmvt_item = itab

  • GOODSMVT_SERIALNUMBER =

return = errmsg.

clear errflag.

loop at errmsg.

if errmsg-type eq 'E'.

write:/'Error in function', errmsg-message.

errflag = 'X'.

else.

write:/ errmsg-message.

endif.

move errmsg-message to i_msg1.

append i_msg1.

endloop.

if errflag is initial.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

  • EXPORTING

  • WAIT =

  • IMPORTING

  • RETURN =

.

  • commit work and wait.

if sy-subrc ne 0.

write:/ 'Error in updating'.

exit.

endif.

endif.

ENDIF.

wait up to 20 seconds.

ENDLOOP.