BAPI_PO_CHANGE Thema ist als GELÖST markiert

Getting started ... Alles für einen gelungenen Start.
11 Beiträge • Seite 1 von 1
11 Beiträge Seite 1 von 1

BAPI_PO_CHANGE

Beitrag von Mockingbird (ForumUser / 12 / 8 / 0 ) » 06.01.2020 12:26
Hallo Experten,

Ich bin noch recht neu im ABAP-Umfeld (ca. 1 Jahr) und soll aktuell ein Programm basteln mit welchem per Excel Upload das delivery_date, das material und die quantity einer PO geändert werden sollen.

Bei meiner Recherche bin ich über den BAPI "BAPI_PO_CHANGE" gestolpert welcher die Änderungen für mich erstellen können sollte. Allerdings habe ich Probleme dem BAPI die notwendigen Parameter richtig zu befüllen. Ich weiß der BAPI braucht als Exportparameter die EBELN und die Tabellen POITEM, POITEMX, POSCHEDULE, POSCHEDULEX.

Bei den X-Tabellen gebe ich Aktuell den Wert "X" für die Felder mit welche ich ändern möchte und die EBELN. Die Tabellen ohne X hab ich ich mir über den BAPI_PO_GETDETAIL1 vom System gezogen und versucht die entsprechenden Felder zu überschreiben (z.B. poitem-quantity = itab-menge), doch dies funktioniert aus mir unbekannten Gründen leider nicht.

Ich bin für jede Hilfe sehr dankbar, da ich bereits lange an dem Problem sitze und trotz viel googeln und probieren nicht weiter komme.

LG
Mockingbird


Re: BAPI_PO_CHANGE

Beitrag von jocoder (Specialist / 187 / 3 / 49 ) » 06.01.2020 15:02
Den Code zu posten wäre hilfreich.

Re: BAPI_PO_CHANGE

Beitrag von Mockingbird (ForumUser / 12 / 8 / 0 ) » 06.01.2020 15:07
Ich hoffe der Auszug aus dem Programm langt.

Code: Alles auswählen.

    lv_ponumb           = <fs_po_update>-ebeln.

CALL FUNCTION 'BAPI_PO_GETDETAIL1'
  EXPORTING
    purchaseorder           = lv_ponumb
 TABLES
   RETURN                   = lt_return_gd
   POITEM                   = lt_poitem
   POSCHEDULE               = lt_schedule.

*    lt_poitem-po_item   = <fs_po_update>-ebeln.
    lt_poitem-material  = <fs_po_update>-matnr.
    lt_poitem-quantity  = <fs_po_update>-menge.

    ls_poitemx-po_item  = <fs_po_update>-ebeln.
    ls_poitemx-material = 'X'.
    ls_poitemx-quantity = 'X'.
    APPEND ls_poitemx TO lt_poitemx.

*    lt_schedule-po_item = <fs_po_update>-ebeln.
    lt_schedule-delivery_date = <fs_po_update>-eindt.

    ls_schedulex-po_item = <fs_po_update>-ebeln.
    ls_schedulex-delivery_date = 'X'.
    APPEND ls_schedulex TO lt_schedulex.

    CALL FUNCTION 'BAPI_PO_CHANGE'
      EXPORTING
        purchaseorder  = lv_ponumb
        testrun        = p_test
      TABLES
        return        = lt_return_ch
        poitem        = lt_poitem
        poitemx       = lt_poitemx
        poschedule    = lt_schedule
        poschedulex   = lt_schedulex.

Re: BAPI_PO_CHANGE

Beitrag von black_adept (Top Expert / 3366 / 65 / 632 ) » 06.01.2020 15:25
  • Der BAPI hat einen RETURN-Parameter der die die Fehler ausgibt
  • Hast du auch BAPI_TRANSACTION_COMMIT ausgeführt?
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: BAPI_PO_CHANGE

Beitrag von Mockingbird (ForumUser / 12 / 8 / 0 ) » 06.01.2020 15:29
black_adept hat geschrieben:
06.01.2020 15:25
Der BAPI hat einen RETURN-Parameter der die die Fehler ausgibt
Hast du auch BAPI_TRANSACTION_COMMIT ausgeführt?
zu ersterem : Fehlermeldung ME 664 „Änderung konnte nicht durchgeführt werden“

Ich habe den BAPI_TRANSACTION_COMMIT etwas später im Code ausgeführt.

Re: BAPI_PO_CHANGE

Beitrag von wreichelt (Expert / 799 / 19 / 137 ) » 06.01.2020 17:47
Hallo,

wird die Positionsnummer auch irgendwo gesetzt?

Gruß Wolfgang

Re: BAPI_PO_CHANGE

Beitrag von Mockingbird (ForumUser / 12 / 8 / 0 ) » 06.01.2020 18:01
EBELN und EBELP werden aus dem hochgeladen Excel genommen. Es würde für mich auch Sinn machen dem BAPI_PO_CHANGE ebenfalls die EBELP mitzugeben, allerdings konnte ich keine passende Stelle finden.

An anderer Stelle im Programm wird die MATNR aus dem Excel mit der MATNR vom SAP System verglichen, wobei die MATNR vom SAP System aus der EBELN und EBELP aus der EKPO ermittelt wird.

Re: BAPI_PO_CHANGE

Beitrag von wreichelt (Expert / 799 / 19 / 137 ) » 06.01.2020 18:30
Hallo,

hier ein Beispiel

https://codezentrale.de/tag/bapi_po_change/

Gruß Wolfgang

Folgende Benutzer bedankten sich beim Autor wreichelt für den Beitrag:
Mockingbird


Re: BAPI_PO_CHANGE

Beitrag von Mockingbird (ForumUser / 12 / 8 / 0 ) » 15.01.2020 11:50
Vielen Dank für das Beispiel, es hat mir sehr weiter geholfen. Allerdings hätte ich noch eine Frage zum Beispiel.

Code: Alles auswählen.

* Headerdaten
lv_bapimepoheader = VALUE #( po_number = p_po
                             pmnttrms = 'ZB03'
                           ).
 
* Flags zum Ändern der Headerdaten
lv_bapimepoheaderx = VALUE #( po_number = abap_true
                              pmnttrms = abap_true
                            ).
Was ist pmnttrms für ein Parameter und mit welchen Daten wird er befüllt ?

Re: BAPI_PO_CHANGE

Beitrag von wreichelt (Expert / 799 / 19 / 137 ) » 15.01.2020 12:50
Hallo,

mach mal einen Doppelklick auf bapimepoheaderx
dann ist das Feld zu sehen.
Für mich klingt das nach Zahlungsbedingungen.

Gruß Wolfgang

Folgende Benutzer bedankten sich beim Autor wreichelt für den Beitrag:
Mockingbird


Re: BAPI_PO_CHANGE

Beitrag von schick (ForumUser / 52 / 5 / 14 ) » 15.01.2020 12:51
Hi,

Transaktion SE11, Struktur BAPIMEPOHEADER, Komponente PMNTTRMS:

Komponententyp DZTERM
Kurzbeschreibung Zahlungsbedingungsschlüssel

Folgende Benutzer bedankten sich beim Autor schick für den Beitrag:
Mockingbird


Seite 1 von 1

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und besseren Inhalt:

Vergleichbare Themen

Change DIS
von Icke0801 » 05.04.2017 16:12
per BAPI-Control über Visual Basic ein BAPI aufrufen
von Kaiwalker » 25.07.2005 15:22
Password change via RFC
von Daniela » 06.02.2006 10:55
IW 38 - Change Layout
von xhuljano » 18.02.2015 16:12
ON CHANGE OF - HILFE
von Nici » 31.05.2005 11:14