SAP Jobsuche bei DV-Treff
maxzottl
  • maxzottl
  • SAP Forum - Profi Thema Starter
vor 5 Jahre
Hallo zusammen,

bin mir nicht sicher, mit dem SRM-Thema hier richtig zu sein, letzten Endes ist es aber "Einkauf" 😒

Wir haben in einem Lieferantenkatalog Positionen mit Preis = 0, die bei Auswahl in Backend-Bestellpositionen [mit dem Kennzeichen "kostenlose Lieferung" (MEPO1211-UMSON)] überführt werden sollen.

Im SRM gibt es dazu im Badi "BBP_CREATE_BE_PO_NEW" die Möglichkeit, FREE_ITEM = 'X' an den BAPI_PO_CREATE zu übergeben aber mit Preis = 0 sorgt "BBP_INTERPRETE_DATA" aus dem Backend dafür, dass lediglich eine Banf angelegt wird.

Hat jemand eine Idee, wie ich trotzdem in den "BBP_CREATE_BE_PO_NEW" komme?

Gruß

Uwe

maxzottl
  • maxzottl
  • SAP Forum - Profi Thema Starter
vor 5 Jahre
Hab's selbst gefunden 👍

Der Ablauf ist folgender:

Drückt der Anwender auf "Bestellen" bzw. "Genehmigen" wird der Workflow-User im SRM aktiv und ruft mit FUB META_INTERPRETE_DATA und dann B31I_INTERPRETE_DATA im Backend den FUB BBP_INTERPRETE_DATA auf (dort mit den RFC-User).

Backend meldet: "kann nur eine Banf anlegen" (procurement_item-obj_to_gen = '2') weil ja der Preis = 0 ist.

Damit übernimmt wieder SRM und läuft, wenn vorhanden, in das Badi "Zielobjektermittlung im Backend-System" (BBP_TARGET_OBJTYPE).

Dazu habe ich eine Implementierung angelegt und fertig :-)


  method IF_EX_BBP_TARGET_OBJTYPE~DETERMINE_TARGET_OBJECT_TYPES.

** Schnittstelle
*IT_ACCOUNT     Importing Type  BBPT_PDS_ACC
*IT_CUSTOMIZING Importing Type  BBP_DETERMINE_TARGET_CUST
*IT_HEADER      Importing Type  BBPT_PD_TRANSFER_HEADER
*CT_ITEM        Changing  Type  BBPT_BS_OBJTYPE_BE_LIST

** Aufgabe:
*  bestimmte Belege sollen trotz Preis = 0 als Bestellung
*  verarbeitet werden.
*  
*  Im Standard würde eine Banf (BUS2105) erstellt, weil
*  BBP_INTERPRETE_DATA im Backend das so ermitteln würde.
*  Wir setzten hier aber "BUS2012" (=Bestellung) und im Badi
*  "Bestellung im Backend System" (BBP_CREATE_BE_PO_NEW  den
*  Parameter CS_PO1_DOCUMENT-IT_POITEM-FREE_ITEM auf 'X'

   DATA: ls_item type BBPS_BS_OBJTYPE_BE_LIST.

   LOOP AT CT_ITEM into ls_item
                   where price = 0
                     and andere Bedingungen.
     move 'BUS2012' to ls_item-PACK_OBJTYPE.
     modify ct_item from ls_item.
   ENDLOOP.

  endmethod.

und ...


  method IF_EX_BBP_CREATE_BE_PO_NEW~FILL_PO_INTERFACE1.

**--- IF_EX_BBP_CREATE_BE_PO_NEW~FILL_PO_INTERFACE1
**
**--- IS_SC_DOCUMENT   Importing  Type  BBPS_BS_SC_DOCUMENT_EXT
**--- IS_CONTROL       Importing  Type  BBPS_BADI_CONTROL
**--- CS_CTRL_ATT      Changing   Type  BBPS_BADI_CTRL_ATTACHMENT
**--- CS_PO1_DOCUMENT  Changing   Type  BBPS_BADI_PO_CREATE1
[..]
* Positionen lesen
    REFRESH LT_POITEM.
    MOVE CS_PO1_DOCUMENT-IT_POITEM TO LT_POITEM.

* Positionen Änderungsliste lesen
    REFRESH LT_POITEMX.
    MOVE CS_PO1_DOCUMENT-IT_POITEMX TO LT_POITEMX.
[..]
LOOP AT LT_POITEM INTO WA_POITEM.
[..]

  IF  bedingungen.
       wa_poitem-free_item = 'X'.
       READ TABLE lt_poitemx into wa_poitemx
                         with KEY PO_ITEM = wa_poitem-po_item.
         wa_poitemx-free_item = 'X'.
       MODIFY lt_poitemx index sy-tabix from wa_poitemx.
  ENDIF.
  APPEND wa_POITEM TO tb_POITEM.
ENDLOOP.

MOVE tb_POITEM          TO CS_PO1_DOCUMENT-IT_POITEM.
MOVE LT_POITEMX         TO CS_PO1_DOCUMENT-IT_POITEMX.

Ciao bis demnächst

U.