BAPI_GOODSMVT_CREATE: Innenauftrag


Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV

Moderatoren: Jan, Steff

BAPI_GOODSMVT_CREATE: Innenauftrag

Beitragvon Trulchen » 10.01.2017, 12:41

Hallo,

ich möchte mit dem BAPI eine Buchung der MIGO mit "Sonstiger Wareneingang" bzw. Bewegungart 261
durchführen.

Allerdings funktioniert das Buchen auf einen Innenauftrag nicht.
Muss ich den BAPI noch irgendwie anders befüllen?

Code: Alles auswählen
PARAMETERS: pa_mats TYPE VBELN_VL OBLIGATORY,
            pa_matnr TYPE matnr OBLIGATORY,
            pa_lifmg TYPE LIFMG OBLIGATORY,
            pa_meins TYPE meins OBLIGATORY,
            pa_charg TYPE CHARG_D OBLIGATORY,
            pa_werk TYPE WERKS_D OBLIGATORY DEFAULT '3000',
            pa_lgort TYPE LGORT_D OBLIGATORY DEFAULT '315',
            pa_aufnr type AUFNR default '000000200140'.

"Kundennummer auf "Read Only"

AT SELECTION-SCREEN output.
  loop at SCREEN.
    if screen-name = 'PA_AUFNR'.
      clear screen-input.
      MODIFY SCREEN.
    endif.
        if screen-name = 'PA_LGORT'.
      clear screen-input.
      MODIFY SCREEN.
    endif.
  endloop.

START-OF-SELECTION.

* Kopfstruktur für BAPI füllen
  ls_header-pstng_date    = sy-DATUM.   "Buchungsdatum
  ls_header-doc_date      = sy-datum.   "Belegdatum
  ls_header-ref_doc_no    = pa_mats. "Vorgangsnummer
  write pa_mats to lv_kopftext no-ZERO.
  CONDENSE lv_kopftext.
  CONCATENATE 'Muster:' lv_kopftext INTO ls_header-header_txt SEPARATED BY space.
  ls_code-gm_code = '05'. " Buchungscode: Sonstiger Wareneingang


  Data: lt_lieferung TYPE TABLE OF LIPS,
        ls_lieferung TYPE LIPS.

  "Zu buchende Positionen ermitteln
    ls_item-material   = pa_matnr. "Materialnummer
    ls_item-MVT_IND    = 'F'. "Warenbewegung zum Auftrag.
    ls_item-plant      = pa_werk. "Werk
    ls_item-stge_loc   = pa_lgort. "Lagerort
    ls_item-batch      = pa_charg .  "Charge
    ls_item-prod_date  = sy-datum.
    ls_item-move_type  = '261'. "Bewegungsart
    ls_item-entry_qnt  = pa_lifmg.  "Erfassungsmenge
    ls_item-entry_uom  = pa_meins.  "Erfassungsmengeneinheit
    ls_item-ORDERID     = pa_aufnr.
    APPEND ls_item to lt_items.



  CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
    EXPORTING
      goodsmvt_header             = ls_header
      goodsmvt_code               = ls_code
      testrun                     = ''
*    IMPORTING
*     GOODSMVT_HEADRET             = sl_headret
*     materialdocument            = lv_mblnr
*  matdocumentyear             = ev_mjahr
    TABLES
      goodsmvt_item               = lt_items
*     GOODSMVT_SERIALNUMBER       =
      return                      = lt_return .
*    EXCEPTIONS
*      error_message                    = 99.


  LOOP AT lt_return INTO ls_return WHERE type = 'E' OR type = 'A'.
    CONCATENATE 'Fehler:' ls_return-MESSAGE  into lv_message SEPARATED BY space.
    WRITE: lv_message.
    ev_rc_code = '4'.
  ENDLOOP.

  IF  ev_rc_code <> 4. "Kein Fehler aufgetreten?
    "Erfolgreich
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait          = 'X'
      IMPORTING
        return        = ls_return
      EXCEPTIONS
        error_message = 99.

    IF ls_return IS NOT INITIAL .
      Write: ls_return-id, ls_return-message_v1 , ls_return-message_v2 , ls_return-message_v3 , ls_return-message_v4.
      ev_rc_code = 4.
    ENDIF.

   IF  ev_rc_code <> 4.
     lv_message =  'Materialbeleg wurde gebucht'.
     WRITE: lv_message.
   ENDIF.
  Endif.


Fehlermeldung: "Auftrag 200140 ist nicht vorhanden oder für Warenbewegung nicht zugelassen"
Trulchen
Specialist
 
Beiträge: 234
Registriert: 03.09.2012, 14:45
Dank erhalten: 0 mal
Ich bin: Student/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: BAPI_GOODSMVT_CREATE: Innenauftrag

Beitragvon Haubi » 11.01.2017, 11:48

Hmm, hast Du den Auftrag mal geprüft? Die Meldungen des BAPIs sind erfahrungsgemäß ganz gut.

Ansonsten fällt mir auf, dass der Code 05 für Wareneingang steht, Du aber mit 261 eine Entnahme buchst. Ich mache das an einer Stelle mit Entnahmen zum Fertigungsauftrag, da verwende ich den Code 03...

Grüße,
Haubi
Das ABAP Kochbuch ab sofort bei Amazon...

I'd rather write code that writes code than write code...
.. ..|. |.|| ||| ..| |.|. .| |. .|. . .| |.. | .... .. ... |.|| ||| ..| |.. ||| |. | |. . . |.. ||. .|.. .| ... ... . ...
Haubi
Expert
 
Beiträge: 563
Registriert: 13.12.2002, 09:52
Wohnort: Braunschweig
Dank erhalten: 15 mal
Ich bin: Entwickler/in


Zurück zu ABAP® Core

  Aktuelle Beiträge   
[Workflow] Verarbeitung abbrechen und erneut starten
vor 18 Minuten von RaCDigger 4 Antw.
gelöst BAPI_USER_CHANGE liefert kein Passwort
vor einer Stunde von Dyrdek 6 Antw.
SAPGUI: Ton ausgeben
vor 14 Stunden von ewx 2 Antw.
gelöst E-Mail verlässt SOST kommt aber nicht an
vor 20 Stunden von Dyrdek 5 Antw.
Einzelne Zeile auslesen
vor einer Stunde von hausi 9 Antw.

  Ähnliche Beiträge beta
User Exit Nummernvergabe CO Innenauftrag
31.07.2007, 15:43 von sjung3 0 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

Feedback ...?

Was können wir verbessern? Hinterlasse deine Kontaktdaten, wenn du eine direkte Antwort möchtest.

... Absenden!