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

Former Member
0 Kudos

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

3 REPLIES 3

Former Member
0 Kudos

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.....

Former Member
0 Kudos

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..

0 Kudos

Hi Murali,

Thanks 4 ur reply ,

but can u explain the loggic behind this code, little bit.

Best Regards,

Savita