2008 Mar 14 5:34 AM
Hi,
Can anybody please send me the BDC CODE for MB01 Application(for Multiple Line items).
Very urgent.
Thanks And Regards,
Ajay
2008 Mar 14 6:03 AM
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.
Hi,
Can anybody please send me the BDC CODE for MB01 Application(for Multiple Line items).
Very urgent.
Thanks And Regards,
Ajay
2008 Mar 14 5:56 AM
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
2008 Mar 14 6:03 AM
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.
| User | Count |
|---|---|
| 6 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |