* * Coded by Thorsten Neubüser - www.4ap.de *
* nur die rein den BAPI betreffenden Abschnitte
* ACHTUNG: siehe Hinweis 1135984 - 'Konditionen nicht mit BAPI_PRICES_CONDITIONS anlegbar'
* der Bapi kann Inkonsistenzen verursachen und ist von SAP nicht freigegeben
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: a914, a915, a916, a918.
* 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.
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 a005-datab MODIF ID upd,
p_datbi LIKE a005-datbi MODIF ID upd,
p_waers LIKE a916-waerk DEFAULT 'EUR' MODIF ID upd.
PARAMETERS:
p_kappl LIKE a914-kappl DEFAULT 'V' NO-DISPLAY.
SELECTION-SCREEN END OF BLOCK block5.
*---------------------------------------------------------------------*
* 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 = 'A914'.
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 https://www.sdn.sap.com/irj/sdn/thread?threadID=79265
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
***************
* *
* T T *
* N *
* *
* `---´ *
* *
***************
|