06-06-2008 4:55 AM
Hi Experts,
I m newbie in fm & bapi.
Can anybody tell if i want to use std bapi, then how we pass the parametrs.
After reading the documentation also i didn't get in standard bapi bapi_material_savedata.
Plz plz tell me in detail & with example.
Best Regards,
Savita
06-06-2008 4:57 AM
Define BAPI data.
data: mathead type bapimathead,
mara_data type bapi_mara,
mara_datax type bapi_marax,
wa_bapi_te_mara type bapi_te_mara,
wa_bapi_te_marax type bapi_te_marax,
wa_valuepart(960),
wa_valuepartx(960),
t_extin type table of bapiparex,
t_extinx type table of bapiparexx,
d_extin type bapiparex,
d_extinx type bapiparexx,
ret type bapiret2.
Fill header structure.
mathead-material = l_matnr.
mathead-basic_view = 'X'.
Fill Bespoke Input view fields for change.
wa_bapi_te_mara-material = l_matnr.
wa_bapi_te_marax-material = l_matnr.
wa_bapi_te_mara-zz_eflpkta = l_fptype.
wa_bapi_te_marax-zz_eflpkta = 'X'.
wa_bapi_te_mara-zz_eflpkt = l_fpoint.
wa_bapi_te_marax-zz_eflpkt = 'X'.
Fill remainder of structure/s.
wa_valuepart = wa_bapi_te_mara.
d_extin-structure = 'BAPI_TE_MARA'.
d_extin-valuepart1 = wa_valuepart(240).
d_extin-valuepart2 = wa_valuepart+240(240).
d_extin-valuepart3 = wa_valuepart+480(240).
d_extin-valuepart4 = wa_valuepart+720(240).
wa_valuepartx = wa_bapi_te_marax.
d_extinx-structure = 'BAPI_TE_MARAX'.
d_extinx-valuepart1 = wa_valuepartx(240).
d_extinx-valuepart2 = wa_valuepartx+240(240).
d_extinx-valuepart3 = wa_valuepartx+480(240).
d_extinx-valuepart4 = wa_valuepartx+720(240).
append d_extin to t_extin.
append d_extinx to t_extinx.
Update record via BAPI.
call function 'BAPI_MATERIAL_SAVEDATA'
exporting
headdata = mathead
clientdata = mara_data
clientdatax = mara_datax
importing
return = ret
tables
extensionin = t_extin
extensioninx = t_extinx.
reward points please.....
06-06-2008 5:02 AM
Go through the following Code
tables: mara, "General Material Data
makt, "Material Descriptions
mbew, "Material Valuation
marc. "Plant Data for Material
data : begin of it_reqdata occurs 0,
recid(1), " Record ID
plant(4), " Plant
project(30) , " Project
drawing(30), " Drawing
plnrgrp(4), " Planner Group
material(18), " Material
qty(7), " Quantity
unit(3), " Unit
ordstdt(10), " Delivery Date
req(3), " Requisner
end of it_reqdata.
Internal Table to hold data for extending the material to plant
data: begin of it_matdata occurs 100,
werks(4), "Plant
mtart(4), "Material type
matnr(18), "Material number
matkl(9) , "Material group
mbrsh(1), "Industry sector
meins(3), "Base unit of measure
gewei(3), "Weight Unit
spart(2), "Division
ekgrp(3), "Purchasing group
vprsv(1), "Price control indicator
stprs(12), "Standard price
peinh(3), "Price unit
spras(2), "Language key
maktx(40), "Material description
end of it_matdata.
Internal Table to hold material text when extending material to plant
data: begin of it_desc occurs 100.
include structure bapi_makt.
data: end of it_desc.
Internal tables for processing in 'BAPI_MATERIAL_SAVEDATA'
data: it_bapi_head like bapimathead,
it_bapi_mara1 like bapi_mara, "Client Data
it_bapi_marax like bapi_marax,
it_bapi_marc1 like bapi_marc, "Plant View
it_bapi_marcx like bapi_marcx,
it_bapi_mbew1 like bapi_mbew, "Accounting View
it_bapi_mbewx like bapi_mbewx,
it_bapi_return like bapiret2.
Check whether the material exists for the plant
loop at it_reqdata.
select single matnr
from marc into mara-matnr
where matnr = it_reqdata-material
and werks = it_reqdata-plant.
if sy-subrc 0.
If not extend the material into plant
perform extend_material.
endif.
endloop.
&----
-
*& Form extend_material
&----
-
To extend material
-
-
form extend_material .
Select material related data for extending
perform select_mat_data.
Move material related data to the tables for BAPI
perform move_mat_data.
Extend the material to plant using BAPI
perform extend_with_bapi.
endform. " extend_material
&----
-
*& Form select_mat_data
&----
-
Select material related data when extending material to plant
-
-
form select_mat_data .
select * from marc
where lvorm eq ' '
and werks = it_reqdata-plant
and matnr = it_reqdata-material.
clear mara.
select single *
from mara
where matnr = it_reqdata-material.
clear mbew.
select single *
from mbew
where matnr = it_reqdata-material
and bwkey = it_reqdata-plant.
clear makt.
select single *
from makt
where spras = 'EN'
and matnr = it_reqdata-material.
it_matdata-werks = marc-werks. "Plant
it_matdata-mtart = mara-mtart. "Material type
it_matdata-matnr = mara-matnr. "Material number
it_matdata-matkl = mara-matkl. "Material group
it_matdata-mbrsh = mara-mbrsh. "Industry sector
it_matdata-meins = mara-meins. "Base unit of measure
it_matdata-gewei = mara-gewei. "Weight Unit
it_matdata-spart = mara-spart. "Division
it_matdata-ekgrp = marc-ekgrp. "Purchasing group
it_matdata-vprsv = mbew-vprsv. "Price control indicator
it_matdata-stprs = mbew-stprs. "Standard price
it_matdata-peinh = mbew-peinh. "Price unit
it_matdata-spras = makt-spras. "Language key
it_matdata-maktx = makt-maktx. "Material description
append it_matdata.
clear it_matdata.
endselect.
endform. " select_mat_data
&----
-
*& Form move_mat_data
&----
-
text
-
-
--> p1 text
<-- p2 text
-
-
form move_mat_data .
Header
it_bapi_head-material = it_matdata-matnr.
it_bapi_head-ind_sector = it_matdata-mbrsh.
it_bapi_head-matl_type = it_matdata-mtart.
it_bapi_head-basic_view = 'X'.
it_bapi_head-purchase_view = 'X'.
it_bapi_head-account_view = 'X'.
Material Description
refresh it_desc.
it_desc-langu = it_matdata-spras.
it_desc-matl_desc = it_matdata-maktx.
append it_desc.
Client Data - Basic
it_bapi_mara1-matl_group = it_matdata-matkl.
it_bapi_mara1-base_uom = it_matdata-meins.
it_bapi_mara1-unit_of_wt = it_matdata-gewei.
it_bapi_mara1-division = it_matdata-spart.
it_bapi_marax-matl_group = 'X'.
it_bapi_marax-base_uom = 'X'.
it_bapi_marax-unit_of_wt = 'X'.
it_bapi_marax-division = 'X'.
Plant - Purchasing
it_bapi_marc1-plant = it_matdata-werks.
it_bapi_marc1-pur_group = it_matdata-ekgrp.
it_bapi_marcx-plant = it_matdata-werks.
it_bapi_marcx-pur_group = 'X'.
Accounting
it_bapi_mbew1-val_area = it_matdata-werks.
it_bapi_mbew1-price_ctrl = it_matdata-vprsv.
it_bapi_mbew1-std_price = it_matdata-stprs.
it_bapi_mbew1-price_unit = it_matdata-peinh.
it_bapi_mbewx-val_area = it_matdata-werks.
it_bapi_mbewx-price_ctrl = 'X'.
it_bapi_mbewx-std_price = 'X'.
it_bapi_mbewx-price_unit = 'X'.
endform. " move_mat_data
&----
-
*& Form extend_with_bapi
&----
-
text
-
-
--> p1 text
<-- p2 text
-
-
form extend_with_bapi .
call function 'BAPI_MATERIAL_SAVEDATA'
exporting
headdata = it_bapi_head
clientdata = it_bapi_mara1
clientdatax = it_bapi_marax
plantdata = it_bapi_marc1
plantdatax = it_bapi_marcx
valuationdata = it_bapi_mbew1
valuationdatax = it_bapi_mbewx
importing
return = it_bapi_return
tables
materialdescription = it_desc.
If error
if it_bapi_return-type = 'E'.
write:/ 'error'.
endif.
endform. " extend_with_bapi
Or
*----
*
TABLAS DEL SISTEMA
*----
*
TABLES: mvke, mara, marc, vbak.
*----
*
TABLAS INTERNAS
*----
*
DATA: BEGIN OF ti_return2 OCCURS 0.
INCLUDE STRUCTURE bapiret2.
DATA: END OF ti_return2.
DATA: BEGIN OF ti_materiales OCCURS 0.
INCLUDE STRUCTURE bapimatlst.
DATA: END OF ti_materiales.
DATA: BEGIN OF ti_mat_sele OCCURS 0.
INCLUDE STRUCTURE bapimatram.
DATA: END OF ti_mat_sele.
DATA: BEGIN OF ti_sal_sele OCCURS 0.
INCLUDE STRUCTURE bapimatraso.
DATA: END OF ti_sal_sele.
*----
*
CONSTANTES
*----
*
*----
*
VARIABLES
*----
*
DATA: BEGIN OF ti_datagen.
INCLUDE STRUCTURE bapi_mara.
DATA: END OF ti_datagen.
DATA: BEGIN OF ti_datagenx.
INCLUDE STRUCTURE bapi_marax.
DATA: END OF ti_datagenx.
DATA: BEGIN OF ti_headdata.
INCLUDE STRUCTURE bapimathead.
DATA: END OF ti_headdata.
DATA: BEGIN OF ti_data.
INCLUDE STRUCTURE bapi_mara.
DATA: END OF ti_data.
*----
*
PANTALLA DE SELECCIÓN
*----
*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-000.
SELECT-OPTIONS: s_vkorg FOR mvke-vkorg MEMORY ID vko.
SELECTION-SCREEN END OF BLOCK b1.
*----
*
EVENTOS
*----
*
*----
*
START-OF-SELECTION
*----
*
START-OF-SELECTION.
DATA: lineas TYPE i.
DATA: behvo LIKE mara-behvo,
mvgr4 LIKE mvke-mvgr4,
maktx LIKE makt-maktx.
ti_sal_sele[] = s_vkorg[].
MOVE 'I' TO ti_mat_sele-sign.
MOVE 'BT' TO ti_mat_sele-option.
MOVE '000000000001400000' TO ti_mat_sele-matnr_low.
MOVE '000000000001499999' TO ti_mat_sele-matnr_high.
APPEND ti_mat_sele.
PERFORM traer_materiales.
DESCRIBE TABLE ti_materiales LINES lineas.
IF lineas LT 1.
LOOP AT ti_return2.
WRITE : / ti_return2.
ENDLOOP.
ELSE.
LOOP AT ti_materiales.
CLEAR: ti_headdata, ti_data, ti_datagen, ti_datagenx.
CLEAR: behvo.
SELECT SINGLE * FROM marc
WHERE matnr EQ ti_materiales-material AND
( werks LIKE 'K1__' OR
werks LIKE 'Z1__').
IF sy-subrc EQ 0.
SELECT SINGLE behvo INTO behvo
FROM mara WHERE matnr EQ ti_materiales-material.
MOVE 'X' TO ti_datagenx-trans_grp.
MOVE ti_materiales-material TO ti_headdata-material.
IF behvo IS INITIAL.
MOVE '0003' TO ti_datagen-trans_grp.
ELSE.
MOVE '0001' TO ti_datagen-trans_grp.
ENDIF.
Llamada a la BAPI para modificar el material
IF NOT ti_headdata-material IS INITIAL.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = ti_headdata
clientdata = ti_datagen
clientdatax = ti_datagenx
IMPORTING
return = ti_return2.
ENDIF.
Imprimir el resultado de las modificaciones
WRITE : / ti_return2-message, 'material',
ti_materiales-matl_desc, ti_headdata-material,
'container', behvo,
' -
-
>', ti_datagen-trans_grp.
ENDIF.
ENDLOOP.
ENDIF.
*----
*
FUNCIONES
*----
-
*&----
*
*& Form traer_materiales
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM traer_materiales.
CALL FUNCTION 'BAPI_MATERIAL_GETLIST'
TABLES
matnrselection = ti_mat_sele
salesorganisationselection = ti_sal_sele
matnrlist = ti_materiales
return = ti_return2.
ENDFORM. " traer_materiales
Reward points..
06-06-2008 5:26 AM
Hi Murali,
Thanks 4 ur reply ,
but can u explain the loggic behind this code, little bit.
Best Regards,
Savita