Code: Alles auswählen.
DATA:
* Banf Positionen
gt_req_items TYPE TABLE OF bapiebanc,
gs_req_items TYPE bapiebanc,
* Langtext zur Position
gt_item_text TYPE TABLE OF bapiebantx,
gs_item_text TYPE bapiebantx,
* Positionskontierung
gt_req_acc_ass TYPE TABLE OF bapiebkn,
gs_req_acc_ass TYPE bapiebkn,
* Limit
gt_req_limit TYPE TABLE OF bapiesuhc,
gs_req_limit TYPE bapiesuhc,
* Leistungen
gt_req_serv TYPE TABLE OF bapiesllc,
gs_req_serv TYPE bapiesllc,
* Kontierung der Leistung
gt_req_serv_acc TYPE TABLE OF bapiesklc,
gs_req_serv_acc TYPE bapiesklc,
* Langtext Leistung
gt_serv_text TYPE TABLE OF bapieslltx,
gs_serv_text TYPE bapieslltx,
* Rückmeldung
gt_return TYPE TABLE OF bapireturn,
gs_return TYPE bapireturn.
CLEAR:
gt_req_items[],
gt_item_text[],
gt_req_acc_ass[],
gt_req_limit[],
gt_req_serv[],
gt_req_serv_acc[],
gt_return[],
gt_serv_text[].
* -----------------------------------------------------------------
* ### Position aufbauen siehe OSS HW 420331
* -----------------------------------------------------------------
* Positionstyp von extern in intern schlüsseln
CLEAR gs_t163y.
SELECT SINGLE *
FROM t163y
INTO gs_t163y
WHERE epstp = epstp
AND spras = sy-langu.
IF sy-subrc EQ 0.
epstp = gs_t163y-pstyp.
ENDIF.
* Position
gs_req_items-preq_item = '00010'.
* Belegart Bestellanforderung
gs_req_items-doc_type = bsart.
* Einkäufergruppe
gs_req_items-pur_group = gs_buchung-ekgrp.
* Einkaufsorg
gs_req_items-purch_org = gs_buchung-ekorg.
* Name des Sachbearbeiters, der das Objekt hinzugefügt hat
gs_req_items-created_by = sy-uname.
* Anforderungsdatum
gs_req_items-preq_date = sy-datum.
* Kurztext
gs_req_items-short_text = gs_buchung-ktext.
* Werk
gs_req_items-plant = gs_buchung-werks.
* Warengruppe
gs_req_items-mat_grp = gs_buchung-matkl.
* Menge
gs_req_items-quantity = '1'.
* Mengeneinheit
gs_req_items-unit = 'LE'.
* Bestellmengeneinheit
gs_req_items-po_unit = 'LE'.
* Datumstyp der BANF
gs_req_items-del_datcat = '1'.
* Lieferdatum der BANF
gs_req_items-deliv_date = sy-datum.
* Datumstyp des Lieferdatums
gs_req_items-del_datcat_ext = '1'.
* Preis in der Bestellanforderung
gs_req_items-c_amt_bapi = gs_buchung-preis.
* Preiseinheit
gs_req_items-price_unit = '1'.
* Positionstyp im Einkaufsbeleg
gs_req_items-item_cat = epstp.
* Kontierungstyp
gs_req_items-acctasscat = knttp.
* Wunschlieferant
gs_req_items-des_vendor = gs_buchung-lifnr.
* Fester Lieferant
gs_req_items-fixed_vend = gs_buchung-lifnr.
* Wareneingangskennzeichen
gs_req_items-gr_ind = 'X'.
* Wareneingang unbewertet
gs_req_items-gr_non_val = 'X'.
* Rechnungseingang
gs_req_items-ir_ind = 'X'.
** Freigabedatum
* gs_req_items-rel_date = sy-datum.
* Paketnummer
gs_req_items-pckg_no = '0000000001'.
* BANF Preis in Bestellung übernehmen
gs_req_items-po_price = '2'. "space = nicht, 1 = brutto, 2 = netto
* Währungsschlüssel
gs_req_items-currency = 'EUR'.
* ISO Code der Währung
gs_req_items-currency_iso = 'EUR'.
* Positionstyp im Einkaufsbeleg
gs_req_items-item_cat_ext = 'D'.
* ISO Code der Mengeneinheit in der BANF
gs_req_items-preq_unit_iso = 'C62'.
* Bestellmengeneinheit im ISO-Code
gs_req_items-po_unit_iso = 'C62'.
APPEND gs_req_items TO gt_req_items.
* -----------------------------------------------------------------
* ###Kontierung zur Position
* -----------------------------------------------------------------
* Positionsnummer
gs_req_acc_ass-preq_item = '00010'.
* Laufenden Nummer der Kontierung
gs_req_acc_ass-serial_no = '01'.
* Datum, an dem der Satz hinzugefügt wurde
gs_req_acc_ass-created_on = sy-datum.
* Name des Sachbearbeiters, der das Objekt hinzugefügt hat
gs_req_acc_ass-created_by = sy-uname.
* Verteilungsprozentsatz bei Mehrfachkontierung
* gs_req_acc_ass-distr_perc = '0'.
* Nummer des Sachkontos
gs_req_acc_ass-g_l_acct = gs_buchung-sakto.
* Auftragsnummer
gs_req_acc_ass-order_no = gs_buchung-aufnr.
* Auf Auftrag buchen
gs_req_acc_ass-to_order = 'X'.
* Art der Änderung (U, I, E, D)
gs_req_acc_ass-change_id = 'I'.
* Währung
gs_req_acc_ass-currency = 'EUR'.
* Mengeneinheit
gs_req_acc_ass-preq_qty = '0'.
* ME
gs_req_acc_ass-preq_unit = 'LE'.
* Kostenrechnungskreis
* gs_req_acc_ass-co_area = gs_buchung-kokrs.
APPEND gs_req_acc_ass TO gt_req_acc_ass.
* -----------------------------------------------------------------
* ###Limits
* -----------------------------------------------------------------
*PCKG_NO Paketnummer
*LIMIT Gesamtlimit
*NO_LIMIT Kein Limit
*EXP_VALUE Erwarteter Wert
*SSC_EXIST Limits für Leistungsbereiche existiert
*CON_EXIST Limit auf Kontraktpositionen existiert
*TMP_EXIST Limit auf Leistungspakete existiert
*PRICE_CHG Preisänderung im Erfassungsblatt
*FREE_LIMIT Freies Limit
*NO_FRLIMIT Kein Limit
*SERV_TYPE Bezeichnung des Leistungsbereichs
*EDITION Ausgabe des Leistungsbereichs
*SSC_LIMIT Wertlimits auf Leistungsbereiche
*SSC_NOLIM Unbegrenztes Limit auf den Standard-Leistungsbereich
*SSC_PRSCHG Preisänderung im Erfassungsblatt
*SSC_PERC Prozentwert für Preisermittlung
*TMP_NUMBER Muster-LV-Nummer
*TMP_LIMIT Limits auf das Muster-Leistungsverzeichnis
*TMP_NOLIM Unbegrenztes Limit auf das Muster-LV
*TMP_PRSCHG Preisänderung im Erfassungsblatt
*TMP_PERC Prozentwert für Preisermittlung
*CONT_PERC Prozentwert für Preisermittlung
* Paketnummer
gs_req_limit-pckg_no = '0000000001'.
* Kein Limit
gs_req_limit-no_limit = 'X'.
* Kein freies Limit
gs_req_limit-no_frlimit = 'X'.
** Unbegrenztes Limit auf das Muster-LV
* gs_req_limit-tmp_nolim = 'X'.
APPEND gs_req_limit TO gt_req_limit.
* -----------------------------------------------------------------
* ###Leistungen
* -----------------------------------------------------------------
* ## Vaterzeile
* Paketnummer
gs_req_serv-pckg_no = '0000000001'.
* Zeilennummer
gs_req_serv-line_no = '0000000001'.
* Externe Zeilennummer
gs_req_serv-ext_line = '0000000000'.
* Untergeordnetes Paket
gs_req_serv-subpckg_no = '0000000002'.
* Menge
gs_req_serv-quantity = '0'.
* Kurztext
gs_req_serv-short_text = gs_buchung-ktext.
* "Vaterzeile"
gs_req_serv-outl_ind = 'X'.
* Von Zeile
gs_req_serv-from_line = '1'.
APPEND gs_req_serv TO gt_req_serv.
* ## Echte Kontierungszeile
CLEAR gs_req_serv.
* Paketnummer
gs_req_serv-pckg_no = '0000000002'.
* Zeilennummer
gs_req_serv-line_no = '0000000002'.
* Externe Zeilennummer
gs_req_serv-ext_line = '0000000010'.
* Untergeordnetes Paket
gs_req_serv-subpckg_no = '0000000000'.
* Menge
gs_req_serv-quantity = '1.000'.
* ISO
gs_req_serv-uom_iso = 'C62'.
* ME
gs_req_serv-base_uom = 'LE'.
* Preiseinheit
gs_req_serv-price_unit = '1'.
* Bruttopreis
gs_req_serv-gr_price = gs_buchung-preis.
* Kurztext
gs_req_serv-short_text = gs_buchung-ktext.
* Übergeordnete Zeile
gs_req_serv-pln_line = '0000000001'.
* Warengruppe
gs_req_serv-matl_group = gs_buchung-matkl.
* Erfassung: ungeplant, Limitzeile
gs_req_serv-limit_line = 'X'.
APPEND gs_req_serv TO gt_req_serv.
* -----------------------------------------------------------------
* ### Kontierung der Leistungen
* -----------------------------------------------------------------
* Paketnummer der echten LZ
gs_req_serv_acc-pckg_no = '0000000002'.
* Zeilennummer
gs_req_serv_acc-line_no = '0000000002'.
* Laufende Nummer Kontierungszuordnung Leistungszeile
gs_req_serv_acc-serno_line = '01'.
* Prozentsatz der Kontierungswertverteilung
gs_req_serv_acc-percentage = '100.00'.
* Laufende Nummer der Kontierung
gs_req_serv_acc-serial_no = '01'.
* Menge mit Vorzeichen
gs_req_serv_acc-quantity = '1.000'.
* Nettowert der Position
gs_req_serv_acc-net_value = gs_buchung-preis.
APPEND gs_req_serv_acc TO gt_req_serv_acc.
* -----------------------------------------------------------------
CALL FUNCTION 'BAPI_REQUISITION_CREATE'
EXPORTING
skip_items_with_error = space
IMPORTING
number = gv_banfn
TABLES
requisition_items = gt_req_items
requisition_account_assignment = gt_req_acc_ass
* requisition_item_text = gt_item_text
requisition_limits = gt_req_limit
* REQUISITION_CONTRACT_LIMITS =
requisition_services = gt_req_serv
requisition_srv_accass_values = gt_req_serv_acc
return = gt_return.
* requisition_services_text = gt_serv_text.
* -----------------------------------------------------------------