cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Updating Purchase Pricing list using BAPI_PRICES_CONDITIONS issue

0 Kudos
500

Hello All , Good Day !

I am updating / creating pricing list using BAPI_PRICES_CONDITIONS .

It is working fine but there is one issue . Say I already have a existing date range for Today to 09.01.2023 ( Say Price is 100 ). I am adding another Date range from 10.01.2023 to 20.01.2023 using the BAPI ( Price 110 ). It is happening fine but through ME13 the price showing should be the one based on Today's date( should be 100 as I am running the tcode on Today's date) but it is always taking the the most recent updated price ( the 10-20 date range one , the 110 one ) .

DATA: lt_bapicondct TYPE TABLE OF bapicondct,

lt_bapicondhd TYPE TABLE OF bapicondhd,
lt_bapicondit TYPE TABLE OF bapicondit,
lt_bapicondqs TYPE TABLE OF bapicondqs,
lt_bapicondvs TYPE TABLE OF bapicondvs,
lt_bapiknumhs TYPE TABLE OF bapiknumhs,
lt_mem_initial TYPE TABLE OF cnd_mem_initial,
wa_bapicondct LIKE LINE OF lt_bapicondct,
wa_bapicondhd LIKE LINE OF lt_bapicondhd,
wa_bapicondit LIKE LINE OF lt_bapicondit.
DATA lv_del TYPE xfeld VALUE 'X'.

CONSTANTS: lc_a(1) TYPE c VALUE 'A',
lc_m(1) TYPE c VALUE 'M',
lc_c(1) TYPE c VALUE 'C',
lc_003 TYPE char3 VALUE '003',
lc_004 TYPE char3 VALUE '004',
lc_009 TYPE char3 VALUE '009',
lc_017 TYPE char3 VALUE '017',
lc_01 TYPE char2 VALUE '01',
lc_ppr0 TYPE char4 VALUE 'PPR0'.

* Condition Table
wa_bapicondct-cond_usage = lc_a. "'A'. "Pricing
wa_bapicondct-table_no = lc_017. "'017'.
wa_bapicondct-applicatio = lc_m. "'M '. "Purchase
wa_bapicondct-cond_type = lc_ppr0. "'PPR0'.
wa_bapicondct-varkey = pu_varkey.
wa_bapicondct-operation = pu_opr. "004-Change, 003-Delete, 009-Create
wa_bapicondct-valid_to = pu_datbi.
wa_bapicondct-valid_from = pu_datab.
IF pu_opr = lc_004 OR pu_opr = lc_003.
wa_bapicondct-cond_no = pu_a017-knumh.
ELSEIF pu_opr = lc_009.
wa_bapicondct-cond_no = '$000000001'.
ENDIF.

APPEND wa_bapicondct TO lt_bapicondct.
CLEAR wa_bapicondct.

* KONH
wa_bapicondhd-created_by = sy-uname.
wa_bapicondhd-creat_date = sy-datum.
wa_bapicondhd-cond_usage = lc_a. ""'A'.
wa_bapicondhd-table_no = lc_017. "'017'.
wa_bapicondhd-applicatio = lc_m. ""'M '.
wa_bapicondhd-cond_type = lc_ppr0. "'PPR0'.
wa_bapicondhd-varkey = pu_varkey.
wa_bapicondhd-operation = pu_opr.
IF pu_opr = lc_004 OR pu_opr = lc_003.
wa_bapicondhd-cond_no = pu_a017-knumh.
ELSEIF pu_opr = lc_009.
wa_bapicondhd-cond_no = '$000000001'.
ENDIF.
wa_bapicondhd-valid_from = pu_datab.
wa_bapicondhd-valid_to = pu_datbi.

APPEND wa_bapicondhd TO lt_bapicondhd.
CLEAR wa_bapicondhd.

*KONP
wa_bapicondit-cond_count = lc_01. "'01'.
wa_bapicondit-applicatio = lc_m. "'M'.
wa_bapicondit-cond_type = lc_ppr0. "'PPR0'.
wa_bapicondit-scaletype = lc_a. "'A'. "STFKZ
wa_bapicondit-calctypcon = lc_c. ""'C'. "KRECH
wa_bapicondit-operation = pu_opr.
IF pu_opr = lc_004 OR pu_opr = lc_003 OR ( pu_a017 IS NOT INITIAL AND pu_opr = lc_009 ).
IF pu_a017 IS NOT INITIAL AND pu_opr = lc_009.
wa_bapicondit-cond_no = '$000000001'.
ELSE.
wa_bapicondit-cond_no = pu_a017-knumh.
ENDIF.

wa_bapicondit-cond_value = pu_a017-kbetr.
wa_bapicondit-condcurr = pu_a017-konwa.
wa_bapicondit-cond_p_unt = pu_a017-kpein.
wa_bapicondit-cond_unit = pu_a017-kmein.
ELSEIF pu_opr = lc_009.
wa_bapicondit-cond_no = '$000000001'.
wa_bapicondit-cond_value = pu_cdata-kbetr.
wa_bapicondit-condcurr = pu_cdata-konwa.
wa_bapicondit-cond_p_unt = pu_cdata-kpein.
wa_bapicondit-cond_unit = pu_cdata-bprme. "kmein.
ENDIF.

APPEND wa_bapicondit TO lt_bapicondit.
CLEAR wa_bapicondit.
##FM_SUBRC_OK
CALL FUNCTION 'BAPI_PRICES_CONDITIONS'
EXPORTING
pi_physical_deletion = lv_del
TABLES
ti_bapicondct = lt_bapicondct
ti_bapicondhd = lt_bapicondhd
ti_bapicondit = lt_bapicondit
ti_bapicondqs = lt_bapicondqs
ti_bapicondvs = lt_bapicondvs
to_bapiret2 = pu_return
to_bapiknumhs = lt_bapiknumhs
to_mem_initial = lt_mem_initial
EXCEPTIONS
update_error = 1
OTHERS = 2.

Accepted Solutions (0)

Answers (0)