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: 

Question on BAPI_PRICES_CONDITIONS

Former Member
0 Kudos

I searched through the SDN for the use of BAPI_PRICES_CONDITIONS. All theads I found mentioned this BAPI does the similar job as VK11. My requirement is to update the Condition Price in purchasing info record via program. Is this BAPI applicable? If yes, how to specify the material to be update in its parameter?

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi!

No, it's only made for VK11, it can't modify purchase inforecorsd (ME11/ME12). This can be performed with BDC (just create a recording in SM35).

Regards

Tamá

5 REPLIES 5

Former Member
0 Kudos

Hi!

No, it's only made for VK11, it can't modify purchase inforecorsd (ME11/ME12). This can be performed with BDC (just create a recording in SM35).

Regards

Tamá

Former Member
0 Kudos

Thanks for reply.

Apart from the BDC method, is there any way else to update the condition price for purchase info record in a batch manner?

Regards,

Fred

Former Member
0 Kudos

hey fred go through this code nnnnn reply me back if u have any querys regarding priceconditions.........

DATA:

DD02L_TABNAME LIKE DD02L-TABNAME,

  • BAPI_PRICES_CONDITIONS-Tabellen

TI_BAPICONDCT TYPE TABLE OF BAPICONDCT WITH HEADER LINE,

TI_BAPICONDHD TYPE TABLE OF BAPICONDHD WITH HEADER LINE,

TI_BAPICONDIT TYPE TABLE OF BAPICONDIT WITH HEADER LINE,

TI_BAPICONDQS TYPE TABLE OF BAPICONDQS WITH HEADER LINE,

TI_BAPICONDVS TYPE TABLE OF BAPICONDVS WITH HEADER LINE,

TO_BAPIRET2 TYPE TABLE OF BAPIRET2 WITH HEADER LINE,

TO_BAPIKNUMHS TYPE TABLE OF BAPIKNUMHS,

TO_MEM_INITIAL TYPE TABLE OF CND_MEM_INITIAL WITH HEADER LINE,

HELP_VAKEY LIKE TI_BAPICONDCT-VARKEY.

  • Fehlerauswertung

DATA: BEGIN OF FEHLER_TAB OCCURS 0, " Tabelle für Fehlermeldungen

LINE LIKE SY-LISEL, " 255 Char

END OF FEHLER_TAB.

  • returncode(2).

TABLES: A100.

  • Neue KonditionsNr holen für Neuanlage Kondition

DATA: KNUMH_NEW TYPE KNUMH.

DATA: LS_RETURN TYPE BAPIRET2.

  • weiter Daten zu Konditionen

DATA: HELP_KONP LIKE KONP.

DATA: HELP_KONM LIKE KONM.

DATA: HELP_KONW LIKE KONW,

GESTERN TYPE D.

SELECTION-SCREEN BEGIN OF BLOCK BLOCK5 WITH FRAME TITLE TEXT-BL5.

PARAMETERS:

P_PREIS AS CHECKBOX MODIF ID UPD,

P_PROZ TYPE KBETR_KOND MODIF ID UPD,

P_DATAB LIKE A100-DATAB MODIF ID UPD,

P_DATBI LIKE A100-DATBI MODIF ID UPD,

P_WAERS LIKE A106-WAERK DEFAULT 'EUR' MODIF ID UPD.

PARAMETERS:

P_KAPPL LIKE A100-KAPPL DEFAULT 'V' NO-DISPLAY.

SELECTION-SCREEN END OF BLOCK BLOCK5.

BREAK-POINT.

*----


*

  • Form preisanpassung

*----


*

FORM PREISANPASSUNG USING ALTER_PREIS TYPE KBETR_KOND " CURR 11.2

NEUER_PREIS TYPE KBETR_KOND.

NEUER_PREIS = ALTER_PREIS + ( ALTER_PREIS * P_PROZ / 100 ).

ENDFORM. " preisanpassung

*

*----


*

  • Form bapi_prices_conditions

*----


*

FORM BAPI_PRICES_CONDITIONS.

CLEAR: TI_BAPICONDCT, TI_BAPICONDHD, TI_BAPICONDIT, TI_BAPICONDQS,

TI_BAPICONDVS, TO_BAPIRET2, TO_BAPIKNUMHS, TO_MEM_INITIAL.

REFRESH: TI_BAPICONDCT, TI_BAPICONDHD, TI_BAPICONDIT, TI_BAPICONDQS,

TI_BAPICONDVS, TO_BAPIRET2, TO_BAPIKNUMHS, TO_MEM_INITIAL.

GESTERN = SY-DATUM - 1.

DD02L_TABNAME = 'A100'.

PERFORM FILL_A914.

PERFORM BAPI_BUCHEN.

ENDFORM. " bapi_prices_conditions

*----


*

  • Form fill_a914

*----


*

FORM FILL_A914.

  • Bapi für Tabelle A914 füllen

      • alle markierten zutreffenden Konditionen aus A914 auslesen

LOOP AT ET_ROW_NO. " enthält die markierten Zeilen

IF P_EKINFO = ''.

READ TABLE I_AUSG INDEX ET_ROW_NO-ROW_ID.

SELECT SINGLE * FROM A914 CLIENT SPECIFIED

WHERE MANDT = SY-MANDT

AND KAPPL = P_KAPPL " Applikation, V = Vetrieb

AND KSCHL = I_AUSG-KSCHL

AND VKORG = I_AUSG-VKORG

AND VTWEG = I_AUSG-VTWEG

AND MATNR = I_AUSG-MATNR

AND KFRST = I_AUSG-KFRST

AND DATBI = I_AUSG-DATBI

AND DATAB = I_AUSG-DATAB.

IF SY-SUBRC NE 0. " SELECT SINGLE * FROM a914

CONTINUE.

ENDIF. " sy-subrc ne 0. " SELECT SINGLE * FROM a914

PERFORM ZEITVERGLEICH USING

'A914' A914-KSCHL A914-KNUMH

I_AUSG-DATAB I_AUSG-DATAB_N

I_AUSG-DATBI I_AUSG-DATBI_N

I_AUSG-KBETR I_AUSG-KBETR_N.

ELSE. " p_ekinfo = ''

READ TABLE I_AUSG_EK INDEX ET_ROW_NO-ROW_ID.

SELECT SINGLE * FROM A914 CLIENT SPECIFIED

WHERE MANDT = SY-MANDT

AND KAPPL = P_KAPPL " Applikation, V = Vetrieb

AND KSCHL = I_AUSG_EK-KSCHL

AND VKORG = I_AUSG_EK-VKORG

AND VTWEG = I_AUSG_EK-VTWEG

AND MATNR = I_AUSG_EK-MATNR

AND KFRST = I_AUSG_EK-KFRST

AND DATBI = I_AUSG_EK-DATBI

AND DATAB = I_AUSG_EK-DATAB.

IF SY-SUBRC NE 0. " SELECT SINGLE * FROM a914

CONTINUE.

ENDIF. " sy-subrc ne 0. " SELECT SINGLE * FROM a914

PERFORM ZEITVERGLEICH USING

'A914' A914-KSCHL A914-KNUMH

I_AUSG_EK-DATAB I_AUSG_EK-DATAB_N

I_AUSG_EK-DATBI I_AUSG_EK-DATBI_N

I_AUSG_EK-KBETR I_AUSG_EK-KBETR_N.

ENDIF." p_ekinfo = ''

ENDLOOP. " at ET_ROW_NO

ENDFORM. " fill_a914

*----


*

  • Form zeitvergleich

*----


*

FORM ZEITVERGLEICH USING TABELLE KSCHL KNUMH_ALT

DATAB_ALT DATAB_NEU

DATBI_ALT DATBI_NEU

KBETR_ALT KBETR_NEU.

  • so, wie ist das denn mit dem Gültigkeitszeitraum

IF DATBI_NEU GT DATBI_ALT.

  • das neue Ende-Datum endet nach dem alten

IF DATAB_NEU LE SY-DATUM.

  • und die Kondition ist ab sofort gültig

  • ja gut, der einfache Fall 1a,

  • Teil 1: die alte Kondition enden lassen

  • Teil 2: und eine neue mit dem neuen Preis anlegen

IF DATBI_ALT GE SY-DATUM.

  • alte Kondition ist noch gültig !!

PERFORM BAPI_FUELLEN USING TABELLE 'AENDERN' ''

KSCHL KNUMH_ALT

DATAB_ALT GESTERN KBETR_ALT.

ENDIF. " datbi_alt ge sy-datum

PERFORM BAPI_FUELLEN USING TABELLE 'ANLEGEN' 'X'

KSCHL KNUMH_ALT

DATAB_NEU DATBI_NEU KBETR_NEU.

ELSE. " datab_neu le sy-datum

  • Gültigkeit ab liegt in der Zukunft

  • ja gut, der einfache Fall 1b,

  • Teil 1: die alte Kondition in der Zukunft enden lassen

  • Teil 2: und eine neue mit dem neuen Preis anlegen

IF DATAB_ALT = DATAB_NEU.

ZUKUENFTIG = DATAB_NEU.

ELSE. " datab_alt = datab_neu

ZUKUENFTIG = DATAB_NEU - 1.

ENDIF. " datab_alt = datab_neu

PERFORM BAPI_FUELLEN USING TABELLE 'AENDERN' ''

KSCHL KNUMH_ALT

DATAB_ALT ZUKUENFTIG KBETR_ALT.

PERFORM BAPI_FUELLEN USING TABELLE 'ANLEGEN' 'X'

KSCHL KNUMH_ALT

DATAB_NEU DATBI_NEU KBETR_NEU.

ENDIF. " datab_neu le sy-datum

ELSEIF DATBI_NEU = DATBI_ALT.

  • dieselbe Kondition soll geändert werden???

IF DATAB_NEU LE SY-DATUM.

  • und die Kondition ist ab sofort gültig

  • ja gut, der einfache Fall 1a,

  • Teil 1: die alte Kondition enden lassen

  • Teil 2: und eine neue mit dem neuen Preis anlegen

IF DATBI_ALT GE SY-DATUM.

  • alte Kondition ist noch gültig !!

PERFORM BAPI_FUELLEN USING TABELLE 'AENDERN' ''

KSCHL KNUMH_ALT

DATAB_ALT GESTERN KBETR_ALT.

ENDIF. " datbi_alt ge sy-datum

PERFORM BAPI_FUELLEN USING TABELLE 'ANLEGEN' 'X'

KSCHL KNUMH_ALT

DATAB_NEU DATBI_NEU KBETR_NEU.

ELSE. " datab_neu le sy-datum

  • Gültigkeit ab liegt in der Zukunft

  • ja gut, der einfache Fall 1b,

  • Teil 1: die alte Kondition in der Zukunft enden lassen

  • Teil 2: und eine neue mit dem neuen Preis anlegen

IF DATAB_ALT = DATAB_NEU.

  • es soll eindeutig der gleiche Satz geändert werden

PERFORM BAPI_FUELLEN USING TABELLE 'AENDERN' 'X'

KSCHL KNUMH_ALT

DATAB_ALT DATBI_ALT KBETR_NEU.

ELSE. " datab_alt = datab_neu

ZUKUENFTIG = DATAB_NEU - 1.

PERFORM BAPI_FUELLEN USING TABELLE 'AENDERN' ''

KSCHL KNUMH_ALT

DATAB_ALT ZUKUENFTIG KBETR_ALT.

PERFORM BAPI_FUELLEN USING TABELLE 'ANLEGEN' 'X'

KSCHL KNUMH_ALT

DATAB_NEU DATBI_NEU KBETR_NEU.

ENDIF. " datab_alt = datab_neu

ENDIF. " datab_neu le sy-datum

ELSE. " datbi_neu > datbi_alt

  • das neue Ende-Datum endet VOR dem alten

  • der komplexere Fall 2a:

IF DATAB_NEU LE SY-DATUM.

  • und die Kondition ist ab sofort gültig

  • Teil 1: die alte Kondition sofort enden lassen

  • Teil 2: und eine neue mit neuem Preis mit neuer Gültigkeit

  • Teil 3: alte Kond. ab neuem Ende bis altem Ende anlegen

PERFORM BAPI_FUELLEN USING TABELLE 'AENDERN' ''

KSCHL KNUMH_ALT

DATAB_ALT GESTERN KBETR_ALT.

PERFORM BAPI_FUELLEN USING TABELLE 'ANLEGEN' 'X'

KSCHL KNUMH_ALT

DATAB_NEU DATBI_NEU KBETR_NEU.

ZUKUENFTIG = DATAB_NEU + 1.

PERFORM BAPI_FUELLEN USING TABELLE 'ANLEGEN' ''

KSCHL KNUMH_ALT

ZUKUENFTIG DATBI_ALT KBETR_ALT.

ELSE. " datab_neu le sy-datum

  • Gültigkeit ab liegt in der Zukunft

  • der komplexere Fall 2b:

  • Teil 1: die alte Kondition in der Zukunft enden lassen

  • Teil 2: und eine neue mit dem neuen Preis anlegen

  • Teil 3: alte Kond. ab neuem Ende bis altem Ende anlegen

ZUKUENFTIG = DATAB_NEU - 1.

PERFORM BAPI_FUELLEN USING TABELLE 'AENDERN' ''

KSCHL KNUMH_ALT

DATAB_ALT ZUKUENFTIG KBETR_ALT.

PERFORM BAPI_FUELLEN USING TABELLE 'ANLEGEN' 'X'

KSCHL KNUMH_ALT

DATAB_NEU DATBI_NEU KBETR_NEU.

ZUKUENFTIG = DATBI_NEU + 1.

PERFORM BAPI_FUELLEN USING TABELLE 'ANLEGEN' ''

KSCHL KNUMH_ALT

ZUKUENFTIG DATBI_ALT KBETR_ALT.

ENDIF. " datab_neu le sy-datum

ENDIF. " datbi_neu > i_ausg-datbi

ENDFORM. " zeitvergleich

*----


*

  • Form bapi_fuellen

*----


*

FORM BAPI_FUELLEN USING TABELLE OPERATION ERHOEHUNG " X = JA

KSCHL KNUMH_ALT

DATAB_NEU

DATBI_NEU

KBETR_NEU.

  • hier muss also jetzt der BAPI gefüllt werden

  • siehe auch

IF OPERATION = 'ANLEGEN'. " ==> Kondition wird NICHT 'geändert'

  • Neue KonditionsNr holen für Neuanlage Kondition

CLEAR: KNUMH_NEW.

CALL FUNCTION 'NUMBER_GET_NEXT'

EXPORTING

NR_RANGE_NR = '01'

OBJECT = 'KONH'

IMPORTING

NUMBER = KNUMH_NEW

EXCEPTIONS

OTHERS = 1.

IF SY-SUBRC NE 0.

  • problems with the number range

PERFORM ERROR_MESSAGE_SYST CHANGING LS_RETURN.

APPEND LS_RETURN TO TO_BAPIRET2.

CHECK 1 = 2.

ENDIF.

ENDIF. " operation = 'ANLEGEN'

  • Inhalte aus Axxx

CLEAR: TI_BAPICONDCT.

  • ti_bapicondct-operation

*003 Löschen: Nachricht enthält Objekte, die zu Löschen sind.

*004 Änderung: Nachricht enthält Änderungen

*005 Ersetze: Diese Nachricht ersetzt vorige Nachrichten

*009 Original: erste Nachricht zum Vorgang

*023 Warte/Abgleich: Daten sollen nicht eingespielt werden

*018 Wiederversenden

IF OPERATION = 'AENDERN'.

TI_BAPICONDCT-OPERATION = '004'.

ELSEIF OPERATION = 'ANLEGEN'.

TI_BAPICONDCT-OPERATION = '009'.

ENDIF. " operation = 'AENDERN'

TI_BAPICONDCT-COND_USAGE = DD02L_TABNAME(1).

TI_BAPICONDCT-TABLE_NO = DD02L_TABNAME+1(3).

TI_BAPICONDCT-APPLICATIO = P_KAPPL. " Fix V

TI_BAPICONDCT-COND_TYPE = KSCHL.

IF TABELLE = 'A914'.

CONCATENATE A914-VKORG A914-VTWEG " a914-kunnr

A914-MATNR INTO HELP_VAKEY.

ELSEIF TABELLE = 'A915'.

CONCATENATE A915-VKORG A915-VTWEG A915-KUNNR

A915-MATNR INTO HELP_VAKEY.

ELSEIF TABELLE = 'A916'.

CONCATENATE A916-VKORG A916-VTWEG A916-PLTYP

A916-WAERK INTO HELP_VAKEY.

HELP_VAKEY+13 = A916-MATNR.

ELSEIF TABELLE = 'A918'.

CONCATENATE A918-SPART A918-MATNR

INTO HELP_VAKEY.

ENDIF. " Tabelle = 'A914'

  • CONDENSE help_vakey NO-GAPS.

TI_BAPICONDCT-VARKEY = HELP_VAKEY.

  • Konditionsdatum gültig bis

TI_BAPICONDCT-VALID_TO = DATBI_NEU.

  • ti_bapicondct-AGREE_COND =

TI_BAPICONDCT-VALID_FROM = DATAB_NEU.

IF OPERATION = 'ANLEGEN'.

TI_BAPICONDCT-COND_NO = KNUMH_NEW.

ELSEIF OPERATION = 'AENDERN'.

TI_BAPICONDCT-COND_NO = KNUMH_ALT.

ENDIF. " operation = 'ANLEGEN'

  • ti_bapicondct-VADAT =

APPEND TI_BAPICONDCT.

  • Inhalte aus KONH mit KNUMH aus Axxx

CLEAR: TI_BAPICONDHD.

TI_BAPICONDHD-OPERATION = TI_BAPICONDCT-OPERATION.

  • ti_bapicondhd-SD_DOC = VBELN

  • ti_bapicondhd-ITM_NUMBER = POSNR

TI_BAPICONDHD-COND_NO = TI_BAPICONDCT-COND_NO.

TI_BAPICONDHD-APPLICATIO = P_KAPPL. " Fix V.

TI_BAPICONDHD-COND_TYPE = KSCHL.

TI_BAPICONDHD-CREATED_BY = SY-UNAME.

TI_BAPICONDHD-CREAT_DATE = SY-DATUM.

TI_BAPICONDHD-COND_USAGE = TI_BAPICONDCT-COND_USAGE.

TI_BAPICONDHD-TABLE_NO = TI_BAPICONDCT-TABLE_NO.

TI_BAPICONDHD-VARKEY = HELP_VAKEY.

TI_BAPICONDHD-VALID_FROM = DATAB_NEU.

TI_BAPICONDHD-VALID_TO = DATBI_NEU.

  • ti_bapicondhd-SEARCHTERM = KOSRT

  • ti_bapicondhd-RESPONS = KZUST

  • ti_bapicondhd-PROMOT_NO = KNUMA_PI

  • ti_bapicondhd-SALES_DEAL = KNUMA_AG

  • ti_bapicondhd-SALESQUOTE = KNUMA_SQ

  • ti_bapicondhd-STD_AGRMNT = KNUMA_SD

  • ti_bapicondhd-PROMOTION = AKTNR

  • ti_bapicondhd-REBAGREEMT = KNUMA_BO

  • ti_bapicondhd-LIC_NO = LICNO

  • ti_bapicondhd-LIC_DATE = LICDT

  • ti_bapicondhd-VARDATE = VADAT

APPEND TI_BAPICONDHD.

  • Inhalte aus KONP mit KNUMH aus Axxx

CLEAR: TI_BAPICONDIT.

SELECT * FROM KONP CLIENT SPECIFIED INTO HELP_KONP

WHERE MANDT = SY-MANDT AND KNUMH = KNUMH_ALT.

  • keine Konditionen mit Löschkennzeichen anlegen

IF HELP_KONP-LOEVM_KO IS INITIAL.

TI_BAPICONDIT-OPERATION = TI_BAPICONDCT-OPERATION.

TI_BAPICONDIT-COND_NO = TI_BAPICONDCT-COND_NO.

TI_BAPICONDIT-COND_COUNT = HELP_KONP-KOPOS.

TI_BAPICONDIT-APPLICATIO = HELP_KONP-KAPPL.

TI_BAPICONDIT-COND_TYPE = HELP_KONP-KSCHL.

TI_BAPICONDIT-TEXT_NO = HELP_KONP-KNUMT.

TI_BAPICONDIT-SCALETYPE = HELP_KONP-STFKZ.

TI_BAPICONDIT-SCALEBASIN = HELP_KONP-KZBZG.

TI_BAPICONDIT-SCALE_QTY = HELP_KONP-KSTBM.

TI_BAPICONDIT-UNITMEASUR = HELP_KONP-KONMS.

  • ti_bapicondit-measur_iso = help_konp-.

      • ti_bapicondit-scale_val = help_konp-kstbw.

  • ti_bapicondit-scale_val = kbetr_neu. "!!!!!

  • ti_bapicondit-currenckey = help_konp-konws.

  • ti_bapicondit-curren_iso = help_konp-konws.

TI_BAPICONDIT-CALCTYPCON = HELP_KONP-KRECH.

  • Prozentwerte werden falsch umgerechnet!!!

IF HELP_KONP-KONWA = '%'.

KBETR_NEU = KBETR_NEU / 10.

ENDIF.

TI_BAPICONDIT-COND_VALUE = KBETR_NEU. "!!!!!

TI_BAPICONDIT-CONDCURR = HELP_KONP-KONWA.

  • ti_bapicondit-cond_iso = help_konp-konwa.

TI_BAPICONDIT-COND_P_UNT = HELP_KONP-KPEIN.

TI_BAPICONDIT-COND_UNIT = HELP_KONP-KMEIN.

  • ti_bapicondit-conunitiso = help_konp-.

TI_BAPICONDIT-PRICELEVEL = HELP_KONP-PRSCH.

TI_BAPICONDIT-NUMCONVERT = HELP_KONP-KUMZA.

TI_BAPICONDIT-DENOMINATO = HELP_KONP-KUMNE.

TI_BAPICONDIT-BASE_UOM = HELP_KONP-MEINS.

  • ti_bapicondit-baseqtyiso = help_konp-.

      • ti_bapicondit-lowerlimit = help_konp-mxwrt.

      • ti_bapicondit-upperlimit = help_konp-gkwrt.

      • ti_bapicondit-plcondval = help_konp-pkwrt. " ???

      • ti_bapicondit-cum_value = help_konp-fkwrt. " ???

      • ti_bapicondit-cumm_accr = help_konp-rswrt. " ???

  • ti_bapicondit-lowerlimit = kbetr_neu. "!!!!!

  • ti_bapicondit-upperlimit = kbetr_neu. "!!!!!

  • ti_bapicondit-plcondval = kbetr_neu. "!!!!!

  • ti_bapicondit-cum_value = kbetr_neu. "!!!!!

  • ti_bapicondit-cumm_accr = kbetr_neu. "!!!!!

  • ti_bapicondit-CURRENCY = help_konp-konwa.

  • ti_bapicondit-CURR_ISO = help_konp-.

TI_BAPICONDIT-CONDCURREN = HELP_KONP-KWAEH.

  • ti_bapicondit-ISOCURRENC = help_konp-.

        • ti_bapicondit-plan_basis = help_konp-ukbas.

  • ti_bapicondit-plan_basis = kbetr_neu. "!!!!!

  • ti_bapicondit-RATE_UNIT = help_konp-.

TI_BAPICONDIT-EXCLUSION = HELP_KONP-KZNEP.

TI_BAPICONDIT-CUSTOMER = HELP_KONP-KUNNR.

TI_BAPICONDIT-VENDOR_NO = HELP_KONP-LIFNR.

TI_BAPICONDIT-TAX_CODE = HELP_KONP-MWSK1.

TI_BAPICONDIT-INDIDELETE = HELP_KONP-LOEVM_KO.

TI_BAPICONDIT-CONDITIDX = HELP_KONP-ZAEHK_IND.

TI_BAPICONDIT-MATLSETTL = HELP_KONP-BOMAT.

      • ti_bapicondit-accruals = help_konp-kbrue.

  • ti_bapicondit-accruals = kbetr_neu. "!!!!!

TI_BAPICONDIT-REB_RETROA = HELP_KONP-KSPAE.

TI_BAPICONDIT-STATOFAGRE = HELP_KONP-BOSTA.

TI_BAPICONDIT-PROMOT_NO = HELP_KONP-KNUMA_PI.

TI_BAPICONDIT-SALES_DEAL = HELP_KONP-KNUMA_AG.

TI_BAPICONDIT-SALESQUOTE = HELP_KONP-KNUMA_SQ.

TI_BAPICONDIT-ADD_VAL_DY = HELP_KONP-VALTG.

TI_BAPICONDIT-FIX_VAL_DY = HELP_KONP-VALDT.

TI_BAPICONDIT-PMNTTRMS = HELP_KONP-ZTERM.

TI_BAPICONDIT-NUMBORDERS = HELP_KONP-ANZAUF.

TI_BAPICONDIT-MINCONBAVA = HELP_KONP-MIKBAS.

TI_BAPICONDIT-MAXCONBAVA = HELP_KONP-MXKBAS.

      • ti_bapicondit-maxconval = help_konp-komxwrt.

  • ti_bapicondit-maxconval = kbetr_neu. "!!!!!

TI_BAPICONDIT-INCR_SCALE = HELP_KONP-KLF_STG.

TI_BAPICONDIT-PRICSCALE = HELP_KONP-KLF_KAL.

TI_BAPICONDIT-RELPRCG = HELP_KONP-VKKAL.

TI_BAPICONDIT-PROMOTION = HELP_KONP-AKTNR.

TI_BAPICONDIT-REBAGREEMT = HELP_KONP-KNUMA_BO.

TI_BAPICONDIT-WITHTAXCOD = HELP_KONP-MWSK2.

TI_BAPICONDIT-CONTRACT = HELP_KONP-VERTT.

TI_BAPICONDIT-CONTRACTNO = HELP_KONP-VERTN.

TI_BAPICONDIT-FLOW_TYPE = HELP_KONP-VBEWA.

TI_BAPICONDIT-INDIMATMAI = HELP_KONP-MDFLG.

TI_BAPICONDIT-STATUS = HELP_KONP-KFRST.

TI_BAPICONDIT-UMSABST = HELP_KONP-UASTA.

APPEND TI_BAPICONDIT.

ENDIF. " help_konp-LOEVM_KO is initial

ENDSELECT. " FROM konp

  • IF ti_bapicondit-cond_no IS INITIAL.

    • alle Pos mit Löschkennzeichen

    • CONTINUE.

  • ENDIF.

  • Inhalte aus KONM Konditionen (Mengenstaffel 1-dimensional)

CLEAR: TI_BAPICONDQS.

SELECT * FROM KONM CLIENT SPECIFIED INTO HELP_KONM

WHERE MANDT = SY-MANDT AND KNUMH = KNUMH_ALT.

TI_BAPICONDQS-OPERATION = TI_BAPICONDCT-OPERATION.

  • TI_BAPICONDQS-SD_DOC = VBELN.

  • ti_bapicondqs-itm_number = posnr.

TI_BAPICONDQS-COND_NO = TI_BAPICONDCT-COND_NO.

TI_BAPICONDQS-COND_COUNT = HELP_KONM-KOPOS.

TI_BAPICONDQS-LINE_NO = HELP_KONM-KLFN1.

TI_BAPICONDQS-SCALE_QTY = HELP_KONM-KSTBM.

TI_BAPICONDQS-COND_UNIT = HELP_KONP-KMEIN.

  • ti_bapicondqs-t_unit_iso =

      • Prozentwerte werden falsch umgerechnet!!!

        • TNT: bitte prüfen ob diese Umsetzung erforderlich ist !!!!!

      • IF help_konp-konwa = '%'.

      • help_konm-kbetr = help_konm-kbetr / 10.

      • ENDIF.

      • ti_bapicondqs-currency = help_konm-kbetr.

CLEAR: KBETR_NEU.

IF ERHOEHUNG = 'X'.

PERFORM PREISANPASSUNG USING HELP_KONM-KBETR KBETR_NEU.

ELSE.

KBETR_NEU = HELP_KONM-KBETR.

ENDIF. " erhoehung = 'X'

TI_BAPICONDQS-CURRENCY = KBETR_NEU.

TI_BAPICONDQS-CONDCURR = HELP_KONP-KONWA.

  • ti_bapicondqs-curren_iso =

APPEND: TI_BAPICONDQS.

CLEAR: HELP_KONM.

ENDSELECT. " from konm

  • Inhalte aus KONW Konditionen (Wertstaffel 1-dimensional)

CLEAR: TI_BAPICONDVS.

SELECT * FROM KONW CLIENT SPECIFIED INTO HELP_KONW

WHERE MANDT = SY-MANDT AND KNUMH = KNUMH_ALT.

TI_BAPICONDVS-OPERATION = TI_BAPICONDCT-OPERATION.

  • ti_bapicondvs-SD_DOC = VBELN.

  • ti_bapicondvs-ITM_NUMBER = POSNR.

TI_BAPICONDVS-COND_NO = TI_BAPICONDCT-COND_NO.

TI_BAPICONDVS-COND_COUNT = HELP_KONW-KOPOS.

TI_BAPICONDVS-LINE_NO = HELP_KONW-KLFN1.

      • ti_bapicondvs-scale_val = help_konw-kstbw.

TI_BAPICONDVS-CURRENCKEY = HELP_KONP-KONWS.

  • ti_bapicondvs-CURRENCISO =

        • Prozentwerte werden falsch umgerechnet!!!

        • TNT: bitte prüfen ob diese Umsetzung erforderlich ist !!!!!

      • IF help_konp-konwa = '%'.

      • help_konw-kbetr = help_konw-kbetr / 10.

      • ENDIF.

CLEAR: KBETR_NEU.

IF ERHOEHUNG = 'X'.

PERFORM PREISANPASSUNG USING HELP_KONW-KBETR KBETR_NEU.

ELSE.

KBETR_NEU = HELP_KONW-KBETR.

ENDIF. " erhoehung = 'X'

TI_BAPICONDVS-CURRENCY = KBETR_NEU.

TI_BAPICONDVS-CONDCURR = HELP_KONP-KONWA.

  • ti_bapicondvs-CURREN_ISO =

APPEND: TI_BAPICONDVS.

ENDSELECT. " from konw

ENDFORM. " bapi_fuellen

*----


*

  • Form error_message_syst

*----


*

FORM ERROR_MESSAGE_SYST CHANGING PC_RETURN TYPE BAPIRET2.

CALL FUNCTION 'BALW_BAPIRETURN_GET2'

EXPORTING

TYPE = SY-MSGTY

CL = SY-MSGID

NUMBER = SY-MSGNO

PAR1 = SY-MSGV1

PAR2 = SY-MSGV2

PAR3 = SY-MSGV3

PAR4 = SY-MSGV4

IMPORTING

RETURN = PC_RETURN.

ENDFORM. " error_message_syst

*----


*

  • Form bapi_buchen

*----


*

FORM BAPI_BUCHEN.

  • nu geiht datt los, denn man tau

CALL FUNCTION 'BAPI_PRICES_CONDITIONS'

  • EXPORTING

  • PI_INITIALMODE = ' '

  • PI_BLOCKNUMBER =

TABLES

TI_BAPICONDCT = TI_BAPICONDCT

TI_BAPICONDHD = TI_BAPICONDHD

TI_BAPICONDIT = TI_BAPICONDIT

TI_BAPICONDQS = TI_BAPICONDQS

TI_BAPICONDVS = TI_BAPICONDVS

TO_BAPIRET2 = TO_BAPIRET2

TO_BAPIKNUMHS = TO_BAPIKNUMHS

TO_MEM_INITIAL = TO_MEM_INITIAL

EXCEPTIONS

UPDATE_ERROR = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

READ TABLE TO_BAPIRET2 WITH KEY TYPE = 'E'

TRANSPORTING NO FIELDS.

IF SY-SUBRC = 0. " READ TABLE to_bapiret2

LOOP AT TO_BAPIRET2 WHERE TYPE NE 'I'

AND TYPE NE 'S'

AND TYPE NE 'W'.

  • TNT

  • WRITE: / to_bapiret2-type, to_bapiret2-message,

  • to_bapiret2-id, to_bapiret2-log_no,

  • to_bapiret2-log_msg_no, to_bapiret2-message_v1,

  • to_bapiret2-message_v2, to_bapiret2-message_v3,

  • to_bapiret2-message_v4, to_bapiret2-parameter,

  • to_bapiret2-row, to_bapiret2-field.

CONCATENATE TO_BAPIRET2-TYPE TO_BAPIRET2-ID(4)

TO_BAPIRET2-NUMBER TO_BAPIRET2-MESSAGE

INTO FEHLER_TAB-LINE SEPARATED BY ' '.

APPEND FEHLER_TAB.

ENDLOOP. " AT to_bapiret2

ELSE. " sy-subrc = 0. " READ TABLE to_bapiret2

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

  • EXPORTING

  • WAIT =

IMPORTING

RETURN = TO_BAPIRET2.

  • Erfolgsmeldung schreiben

DESCRIBE TABLE TI_BAPICONDHD LINES SY-TFILL.

DATA: HELP_TFILL(10).

MOVE SY-TFILL TO HELP_TFILL.

CONCATENATE HELP_TFILL

'Konditionen bearbeitet.'(104)

INTO FEHLER_TAB-LINE SEPARATED BY ' '.

APPEND FEHLER_TAB.

  • und noch 'markieren'

*TNT it_daten-erfolg = 'KOND'.

*TNT MODIFY it_daten.

ENDIF. " sy-subrc = 0. " READ TABLE to_bapiret2

CLEAR: TI_BAPICONDCT, TI_BAPICONDHD, TI_BAPICONDIT,

TI_BAPICONDQS, TI_BAPICONDVS, TO_BAPIRET2,

TO_BAPIKNUMHS, TO_MEM_INITIAL.

REFRESH: TI_BAPICONDCT, TI_BAPICONDHD, TI_BAPICONDIT,

TI_BAPICONDQS, TI_BAPICONDVS, TO_BAPIRET2,

TO_BAPIKNUMHS, TO_MEM_INITIAL.

ENDFORM. " bapi_buchen

reward points if useful.....

Former Member
0 Kudos

Please use function module - RV_CONDITION_MAINTENANCE.

Reward if useful.

Former Member
0 Kudos

Thank you all for help. I finally use BDC to make it work.