2009 Oct 23 9:41 AM
Hi Guru,
I have to update some data in MR22 transaction in MR22(Debit/Credit Material).
Is there any BAPI suggested by SAP.
If there , pls help me.
Sandeep
2009 Oct 23 9:56 AM
Take a look at
- BAPI_MATVAL_PRICE_CHANGE ([Note 646630 - Send Material Prices and BAPI_MATVAL_PRICE_CHANGE usage|https://service.sap.com/sap/support/notes/646630])
- BAPI_M_REVAL_CREATEPRICECHANGE (you need a modification there to remove some code at the beginning "error_flag = 'X'.")
- PRICES_CHANGE and PRICES_POST in sequence (the previous BAPI and transactions MR21/22 call those FM so read those to find how to call)
- BDC on MR21 or MR22
Regards
Hi Guru,
I have to update some data in MR22 transaction in MR22(Debit/Credit Material).
Is there any BAPI suggested by SAP.
If there , pls help me.
Sandeep
2009 Oct 23 9:56 AM
Take a look at
- BAPI_MATVAL_PRICE_CHANGE ([Note 646630 - Send Material Prices and BAPI_MATVAL_PRICE_CHANGE usage|https://service.sap.com/sap/support/notes/646630])
- BAPI_M_REVAL_CREATEPRICECHANGE (you need a modification there to remove some code at the beginning "error_flag = 'X'.")
- PRICES_CHANGE and PRICES_POST in sequence (the previous BAPI and transactions MR21/22 call those FM so read those to find how to call)
- BDC on MR21 or MR22
Regards
2012 Jun 13 8:01 AM
'BAPI_MATVAL_PRICE_CHANGE' is a BAPI for MR21 only, not for MR22.
But setting flag SUBS_DBT inside this BAPI makes it BAPI for MR22.
You also have to write some code inside...
Code to run BAPI:
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS: p_bwkey TYPE mbew-bwkey.
PARAMETERS: p_matnr TYPE mara-matnr.
PARAMETERS: p_bwtar TYPE mbew-bwtar.
PARAMETERS: p_pspnr TYPE cobl-ps_posid
MATCHCODE OBJECT zash_prpm.
PARAMETERS: p_price TYPE mbew-verpr.
PARAMETERS: p_sum TYPE ebc_tot.""bseg-dmbtr.
PARAMETERS: p_bktxt TYPE bktxt DEFAULT 'bktxt'.
PARAMETERS: p_xblnr TYPE xblnr DEFAULT 'xblnr'.
PARAMETERS: p_date TYPE sy-datum DEFAULT sy-datum.
SELECTION-SCREEN END OF BLOCK b2.
START-OF-SELECTION.
DATA:
i_material TYPE bapi_matval_key-material,
i_valuationarea TYPE bapi_matval_key-val_area,
i_valuationtype TYPE bapi_matval_key-val_type,
i_wbselement TYPE bapi_matval_key-wbs_element,
i_bktxt TYPE bktxt,
i_xblnr TYPE xblnr,
i_pricedate TYPE bapi_matval_pricedate,
i_material_evg TYPE bapimgvmatnr_copy,
i_pricechangedocument TYPE bapi_pricechange_document,
gt_prices TYPE STANDARD TABLE OF bapi_matval_prices,
wa_prices TYPE bapi_matval_prices,
gt_return TYPE STANDARD TABLE OF bapiret2,
wa_return TYPE bapiret2
.
DATA l_price TYPE mbew-verpr.
DATA c_sum(20) TYPE c.
DATA c_price(20) TYPE c.
DATA l_sum TYPE bseg-dmbtr.
DATA wa_qbew TYPE qbew.
DATA i_sum TYPE bseg-dmbtr.
DATA i_subs_dbt TYPE c.
********************************
IF p_price IS INITIAL
AND p_sum IS INITIAL.
MESSAGE i096(zm) WITH 'Введите сумму или цену'.
exit.
ELSE.
IF p_price IS INITIAL
AND NOT p_sum IS INITIAL.
i_subs_dbt = 'X'.
ENDIF.
ENDIF.
DATA p_pspnr2(18) TYPE c.
CALL FUNCTION 'CONVERSION_EXIT_ABPSP_INPUT'
EXPORTING
input = p_pspnr
IMPORTING
output = p_pspnr2
EXCEPTIONS
length_error = 1
OTHERS = 2.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = p_matnr
IMPORTING
output = p_matnr
EXCEPTIONS
length_error = 1
OTHERS = 2.
c_sum = p_sum.
TRANSLATE c_sum USING ',.'.
SHIFT c_sum LEFT DELETING LEADING space.
i_sum = c_sum.
IF p_pspnr IS INITIAL.
SELECT SINGLE *
FROM mbew
INTO CORRESPONDING FIELDS OF wa_qbew
WHERE bwkey = p_bwkey
AND matnr = p_matnr
AND bwtar = p_bwtar.
ELSE.
SELECT SINGLE *
FROM qbew
INTO CORRESPONDING FIELDS OF wa_qbew
WHERE bwkey = p_bwkey
AND matnr = p_matnr
AND bwtar = p_bwtar
AND pspnr = p_pspnr2.
ENDIF.
* c_sum = p_sum.
* TRANSLATE c_sum USING ',.'.
* SHIFT c_sum LEFT DELETING LEADING space.
* l_sum = c_sum + wa_qbew-salk3.
* l_price = l_sum / wa_qbew-lbkum.
c_price = p_price.
TRANSLATE c_price USING ',.'.
SHIFT c_price LEFT DELETING LEADING space.
l_price = c_price.
IF i_subs_dbt = ''.
IF wa_qbew-verpr = l_price.
MESSAGE i096(zm) WITH 'Цена не изменилась'.
exit.
ENDIF.
ENDIF.
i_material = p_matnr.
i_valuationarea = p_bwkey.
i_valuationtype = p_bwtar.
i_wbselement = p_pspnr.
i_bktxt = p_bktxt.
i_xblnr = p_xblnr.
i_pricedate = sy-datum.
CLEAR gt_prices[].
wa_prices-valuation_view = '1'.
wa_prices-curr_type = '10'."Валюта БЕ
wa_prices-currency = 'RUB'.
wa_prices-price_unit = '1'.
wa_prices-price = l_price.
APPEND wa_prices TO gt_prices.
CLEAR i_pricedate.
* i_pricedate-fisc_year = p_gjahr."'2012'.
* i_pricedate-fisc_period = p_poper."'006'.
i_pricedate-price_date = p_date."sy-datum.
IF i_wbselement IS INITIAL.
CALL FUNCTION 'BAPI_MATVAL_PRICE_CHANGE'
EXPORTING
material = i_material
valuationarea = i_valuationarea
valuationtype = i_valuationtype
pricedate = i_pricedate
z_bktxt = i_bktxt
z_xblnr = i_xblnr
z_subs_dbt = i_subs_dbt
z_sum = i_sum
IMPORTING
pricechangedocument = i_pricechangedocument
TABLES
prices = gt_prices
return = gt_return.
ELSE.
CALL FUNCTION 'BAPI_PROJECTSTOCK_PRICE_CHANGE'
EXPORTING
material = i_material
valuationarea = i_valuationarea
valuationtype = i_valuationtype
wbselement = i_wbselement
pricedate = i_pricedate
z_bktxt = i_bktxt
z_xblnr = i_xblnr
z_subs_dbt = i_subs_dbt
z_sum = i_sum
IMPORTING
pricechangedocument = i_pricechangedocument
TABLES
prices = gt_prices
return = gt_return.
ENDIF.
READ TABLE gt_return INTO wa_return
WITH KEY type = 'E'.
IF sy-subrc = 0.
ROLLBACK WORK .
ELSE.
COMMIT WORK AND WAIT.
ENDIF.
Code of BAPI_MATVAL_PRICE_CHANGE:
FUNCTION bapi_matval_price_change.
*"----------------------------------------------------------------------
*"" IMPORTING
*" VALUE(MATERIAL) TYPE BAPI_MATVAL_KEY-MATERIAL
*" VALUE(VALUATIONAREA) TYPE BAPI_MATVAL_KEY-VAL_AREA
*" VALUE(VALUATIONTYPE) TYPE BAPI_MATVAL_KEY-VAL_TYPE
*" VALUE(PRICEDATE) TYPE BAPI_MATVAL_PRICEDATE
*" VALUE(MATERIAL_EVG) TYPE BAPIMGVMATNR_COPY OPTIONAL
*" VALUE(Z_XBLNR) TYPE BAPI_MATVAL_KEY-Z_XBLNR OPTIONAL
*" VALUE(Z_BKTXT) TYPE BAPI_MATVAL_KEY-Z_BKTXT OPTIONAL
*" VALUE(Z_SUBS_DBT) TYPE BAPI_MATVAL_KEY-Z_SUBS_DBT OPTIONAL
*" VALUE(Z_SUM) TYPE BSEG-DMBTR OPTIONAL
*" EXPORTING
*" VALUE(PRICECHANGEDOCUMENT) TYPE BAPI_PRICECHANGE_DOCUMENT
*" TABLES
*" PRICES STRUCTURE BAPI_MATVAL_PRICES
*" RETURN STRUCTURE BAPIRET2
*"----------------------------------------------------------------------
ENHANCEMENT-POINT BAPI_MATVAL_PRICE_CHANGE_G6 SPOTS ES_SAPLCKMLSENDPRICE.
*$*$-Start: BAPI_MATVAL_PRICE_CHANGE_G6---------------------------------------------------------$*$*
ENHANCEMENT 1 MGV_GENERATED_SAPLCKMLSENDPRIC. "active version
*{BAPI Begin} generation http://intranet.sap.com/materialversion
*Do not change coding between begin and end comments. ANI 20050323
CALL FUNCTION 'MATNR_BAPI_CONV_FROM_EXTERNAL'
EXPORTING
MATNR_EXT = MATERIAL_EVG-MATERIAL_EXT
MATNR_VERS = MATERIAL_EVG-MATERIAL_VERS
MATNR_GUID = MATERIAL_EVG-MATERIAL_GUID
CHANGING
MATNR_INT = MATERIAL
.
*{BAPI End} generation
ENDENHANCEMENT.
*$*$-End: BAPI_MATVAL_PRICE_CHANGE_G6---------------------------------------------------------$*$*
*{ INSERT DEVK919499 2
* ЗЮ 2012-06-06 Z_BKTXT
*} INSERT
CALL FUNCTION 'CKML_MATVAL_PRICE_CHANGE'
EXPORTING
material = material
valuationarea = valuationarea
valuationtype = valuationtype
pricedate = pricedate
*{ INSERT DEVK919499 3
z_xblnr = z_xblnr
z_bktxt = z_bktxt
z_subs_dbt = z_subs_dbt
z_sum = z_sum
*} INSERT
IMPORTING
pricechangedocument = pricechangedocument
2012 Jun 13 8:06 AM
Code of 'CKML_MATVAL_PRICE_CHANGE' …
FUNCTION ckml_matval_price_change.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*" IMPORTING
*" VALUE(MATERIAL) TYPE BAPI_MATVAL_KEY-MATERIAL
*" VALUE(VALUATIONAREA) TYPE BAPI_MATVAL_KEY-VAL_AREA
*" VALUE(VALUATIONTYPE) TYPE BAPI_MATVAL_KEY-VAL_TYPE
*" VALUE(SPECIAL_STOCK_IND) TYPE BAPI_MATVAL_KEY-SPEC_STOCK
*" OPTIONAL
*" VALUE(SDDOCUMENTNUMBER) TYPE BAPI_MATVAL_KEY-SD_DOC OPTIONAL
*" VALUE(SDDOCUMENTITEM) TYPE BAPI_MATVAL_KEY-ITM_NUMBER OPTIONAL
*" VALUE(WBSELEMENT) TYPE BAPI_MATVAL_KEY-WBS_ELEMENT OPTIONAL
*" VALUE(PRICEDATE) TYPE BAPI_MATVAL_PRICEDATE
*" VALUE(Z_BKTXT) TYPE BKTXT OPTIONAL
*" VALUE(Z_XBLNR) TYPE XBLNR1 OPTIONAL
*" VALUE(Z_SUBS_DBT) TYPE CHAR01 OPTIONAL
*" VALUE(Z_SUM) TYPE BSEG-DMBTR OPTIONAL
*" EXPORTING
*" VALUE(PRICECHANGEDOCUMENT) TYPE BAPI_PRICECHANGE_DOCUMENT
*" TABLES
*" PRICES STRUCTURE BAPI_MATVAL_PRICES
*" RETURN STRUCTURE BAPIRET2
.....
IF ls_matpr_cr-newpeinh = ls_matpr_cr-peinh AND
ls_matpr_cr-newstprs = ls_matpr_cr-stprs AND
ls_matpr_cr-newpvprs = ls_matpr_cr-pvprs.
*{ REPLACE DEVK919499 5
*\ l_nochange = 'X'.
* ЗЮ 2012-06-07
if z_subs_dbt = ''.
l_nochange = 'X'.
endif.
*} REPLACE
ENDIF.
....
* price change necessary
IF l_dochange IS INITIAL.
IF 1 = 0.
MESSAGE e046(ckprch).
ENDIF.
CALL FUNCTION 'BALW_BAPIRETURN_GET2'
EXPORTING
type = 'S'
cl = 'CKPRCH'
number = '046'
IMPORTING
return = ls_return.
APPEND ls_return TO return.
EXIT.
ENDIF.
*{ INSERT DEVK919499 4
* ЗЮ 2012-06-06
data wa_cr type cki_pae_cr.
data wa_matpr type ckmpr_f_mat_price.
data wa_qbew type qbew.
data gt_qbewh type standard table of qbewh.
data wa_qbewh type qbewh.
data z_err type c.
data z_salk3 type mbew-salk3.
clear z_err.
if z_subs_dbt = 'X'.
if ls_marv-lfgja = l_bdatj
and ls_marv-lfmon = l_poper.
* Запас на сегодня
loop at lt_matpr into wa_matpr.
loop at wa_matpr-cr into wa_cr.
if wa_matpr-pp-sobkz is initial.
select single *
from mbew
into corresponding fields of wa_qbew
where bwkey = wa_matpr-pp-bwkey
and matnr = wa_matpr-pp-matnr
and bwtar = wa_matpr-pp-bwtar.
IF sy-subrc IS INITIAL.
z_salk3 = wa_qbew-salk3.
else.
z_err = 'X'.
ENDIF.
else.
select single *
from qbew
into corresponding fields of wa_qbew
where bwkey = wa_matpr-pp-bwkey
and matnr = wa_matpr-pp-matnr
and bwtar = wa_matpr-pp-bwtar
and sobkz = wa_matpr-pp-sobkz
and pspnr = wa_matpr-pp-pspnr.
IF sy-subrc IS INITIAL.
z_salk3 = wa_qbew-salk3.
else.
z_err = 'X'.
ENDIF.
endif.
if z_err is initial.
wa_cr-newsalk3 = z_salk3 + z_sum.
wa_cr-salk3 = z_salk3.
wa_cr-ZUUMB = wa_cr-salk3 - wa_cr-newsalk3.
endif.
modify wa_matpr-cr from wa_cr.
endloop. "matpr-cr
modify lt_matpr from wa_matpr.
endloop. "lt_matpr
else.
loop at lt_matpr into wa_matpr.
loop at wa_matpr-cr into wa_cr.
if wa_matpr-pp-sobkz is initial.
select *
from mbewh
into corresponding fields of table gt_qbewh
where bwkey = wa_matpr-pp-bwkey
and matnr = wa_matpr-pp-matnr
and bwtar = wa_matpr-pp-bwtar
AND lfgja >= l_bdatj
ORDER BY lfgja lfmon.
IF sy-subrc IS INITIAL.
DELETE gt_qbewh WHERE lfgja = l_bdatj
AND lfmon < l_poper.
READ TABLE gt_qbewh INDEX 1 INTO wa_qbewh.
IF sy-subrc IS INITIAL.
z_salk3 = wa_qbewh-salk3.
else.
z_err = 'X'.
ENDIF.
ENDIF.
else.
select *
from qbewh
into corresponding fields of table gt_qbewh
where bwkey = wa_matpr-pp-bwkey
and matnr = wa_matpr-pp-matnr
and bwtar = wa_matpr-pp-bwtar
and sobkz = wa_matpr-pp-sobkz
and pspnr = wa_matpr-pp-pspnr
AND lfgja >= l_bdatj
ORDER BY lfgja lfmon.
IF sy-subrc IS INITIAL.
DELETE gt_qbewh WHERE lfgja = l_bdatj
AND lfmon < l_poper.
READ TABLE gt_qbewh INDEX 1 INTO wa_qbewh.
IF sy-subrc IS INITIAL.
z_salk3 = wa_qbewh-salk3.
else.
z_err = 'X'.
ENDIF.
ENDIF.
endif.
if z_err is initial.
wa_cr-newsalk3 = z_salk3 + z_sum.
wa_cr-salk3 = z_salk3.
wa_cr-ZUUMB = wa_cr-salk3 - wa_cr-newsalk3.
endif.
modify wa_matpr-cr from wa_cr.
endloop. "matpr-cr
modify lt_matpr from wa_matpr.
endloop. "lt_matpr
endif. " if ls_marv-lfgja = l_bdatj
endif. " z_subs_dbt = 'X'.
if z_err = ''.
* change prices
CALL FUNCTION 'PRICES_CHANGE'
EXPORTING
actual_bdatj = l_bdatj
actual_poper = l_poper
budat = l_budat
bukrs = ls_ckibwkey-bukrs
*{ INSERT DEVK919499 3
XBLNR = z_xblnr
SUBS_DBT = z_SUBS_DBT
*} INSERT
TABLES
t_matpr = lt_matpr
EXCEPTIONS
error_message = 1
invalid_period = 2
OTHERS = 3.
...
CALL FUNCTION 'PRICES_POST'
EXPORTING
*{ INSERT DEVK919499 1
i_bktxt = z_bktxt
SUBS_DBT = z_SUBS_DBT
*} INSERT
bukrs = ls_ckibwkey-bukrs
IMPORTING
o_belnr = l_belnr
o_kjahr = l_kjahr
TABLES
t_matpr = lt_matpr
EXCEPTIONS
error_message = 1.
endif." if z_err = 'X'.
Fill the table 'CKML_PRICE_SEND' by SPRO before using BAPI_MATVAL_PRICE_CHANGE
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |