FUBA mver_maintain_dark schreibt nicht

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

FUBA mver_maintain_dark schreibt nicht

Beitrag von mknueppel (ForumUser / 26 / 3 / 0 ) »
Hi @ all,

Habe folgendes Programm geschrieben das die ungeplanten korrigierten Verbräuche (Feld MUVxx) der mver updated (aus mseg-menge):

Code: Alles auswählen.

ABLES: mseg, mver, mkpf.

DATA: it_mseg LIKE STANDARD TABLE OF mseg,
      wa_mseg LIKE LINE OF it_mseg.
DATA: it_mver LIKE STANDARD TABLE OF mver,
      wa_mver LIKE LINE OF it_mver.

TYPES: BEGIN OF zeile_typ,
       mblnr LIKE mkpf-mblnr,
       bldat LIKE mkpf-bldat,
       matnr LIKE mseg-matnr,
       END OF zeile_typ.

TYPES it_mkpf_typ TYPE STANDARD TABLE OF zeile_typ.

DATA: it_mkpf TYPE it_mkpf_typ.
DATA: wa_mkpf TYPE zeile_typ.


SELECT-OPTIONS:

belart FOR mkpf-blart,

mblnr FOR mkpf-mblnr,

werk FOR mver-werks,

p_matnr FOR mver-matnr.

*
*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: r1 RADIOBUTTON GROUP rad1 USER-COMMAND radio,
            r2 RADIOBUTTON GROUP rad1 DEFAULT 'X' .
SELECTION-SCREEN END OF BLOCK b1.


*
*start-of-selection.

SELECT mkpf~mblnr mkpf~bldat mseg~matnr  FROM  mkpf
  INNER JOIN mseg ON mkpf~mblnr = mseg~mblnr INTO CORRESPONDING FIELDS OF TABLE it_mkpf
    WHERE mkpf~mjahr > '2009' AND mseg~matnr IN p_matnr AND mseg~werks IN werk AND mseg~bwart = '601'
    AND mkpf~mblnr IN mblnr AND mkpf~blart IN belart.
"and blart in belart and mblnr in mblnr .   "Alle Belegnummern mit Belegdatum die dem Mandant entsprechen


*DESCRIBE TABLE it_mkpf.

SELECT mver~matnr mver~muv01 mver~muv02 mver~muv03 mver~muv04 mver~muv05 mver~muv06 mver~muv07 mver~muv08 mver~muv09 mver~muv10 mver~muv11 mver~muv12
  FROM mver INTO CORRESPONDING FIELDS OF TABLE it_mver WHERE matnr IN p_matnr AND werks IN werk.

  LOOP AT it_mkpf INTO wa_mkpf.   " Aktuelle MBLNR

    DATA: zunplnd LIKE mseg-menge.
    DATA: zbelnr LIKE mseg-mblnr.
    DATA: zbldat LIKE mkpf-bldat.
    DATA: monat TYPE n LENGTH 2.
    DATA lv_menge TYPE mseg-menge.

    CLEAR: zunplnd, zbelnr, zbldat, monat, lv_menge.

    ADD wa_mkpf-mblnr TO zbelnr.  " Übergabe MBLNR
    ADD wa_mkpf-bldat TO zbldat.  " Übergabe Datum

    SELECT SUM( menge ) FROM mseg INTO lv_menge

      WHERE matnr = wa_mkpf-matnr  AND werks = '2211' and bwart = '601' AND MBLNR = wa_mkpf-mblnr.


    DATA zeilen TYPE i.
    DATA l_field TYPE char5.  "l_field = Feldname
    FIELD-SYMBOLS <l_field> TYPE ANY.  " Zeiger

    monat = zbldat+4(2).            " Feld Monat erhält den Monat des Belegdatums

    DATA lt_amveu TYPE TABLE OF mveu_ueb.
    DATA ls_amveu TYPE mveu_ueb.

    LOOP AT it_mver INTO wa_mver  WHERE matnr = wa_mkpf-matnr .

      CONCATENATE 'MUV' monat INTO l_field.

      ASSIGN COMPONENT l_field OF STRUCTURE wa_mver TO <l_field>.

      ADD lv_menge TO <l_field>.
*
      ls_amveu-matnr = wa_mver-matnr.
      ls_amveu-werks = wa_mver-werks.

      CONCATENATE zbldat(6) '01' INTO ls_amveu-ertag.

      ls_amveu-kovbw = lv_menge.
      ls_amveu-kzexi = 'X'.

      COLLECT ls_amveu INTO lt_amveu.

      clear: ls_amveu-kovbw, lv_menge.

    ENDLOOP.

  ENDLOOP.

IF r1 = 'X'.

  DATA lt_amveug type table of mveg_ueb.
*  data ls_amveug type mveg_ueb.
select * from mver into corresponding fields of table lt_amveug.
*  ls_amveug-matnr = wa_mver-matnr.
*      ls_amveug-werks = wa_mver-werks.
*
*      CONCATENATE zbldat(6) '01' INTO ls_amveug-ertag.
*
*      ls_amveu-kovbw = ls_amveu-vbwrt.
*      ls_amveug-kzexi = 'X'.
*
*      COLLECT ls_amveug INTO lt_amveug.

  CALL FUNCTION 'MVER_MAINTAIN_DARK'
*  EXPORTING
*   SPERRMODUS            = ' '
*   MAX_ERRORS            = 0
    TABLES
   AMVEG_UEB             = lt_amveug
      amveu_ueb             = lt_amveu
*   AMERRDAT_F            =
* EXCEPTIONS
*   UPDATE_ERROR          = 1
*   INTERNAL_ERROR        = 2
*   TOO_MANY_ERRORS       = 3
*   OTHERS                = 4
  .
  IF sy-subrc = 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    loop at lt_amveu into ls_amveu.

    write:/ 'Field MUV',monat, '   updated by value', ls_amveu-kovbw.endloop.
    elseif sy-subrc <> 0. write:/ 'Update unsuccesfull'.

  ENDIF.
 "update_mver

endif.
  if r2 = 'X'.
loop at lt_amveu into ls_amveu.
    WRITE:/ ls_amveu-matnr, 'MVER-Field ', ' MUV',monat, 'value', ls_amveu-kovbw. endloop.endif.
Die Datenbeschaffung, sowie die Datenexistenz in den itabs ist korrekt, jedoch will der Fuba die mver einfach nicht updaten obwohl in der lt_amveu die korrekten Daten stehen, korrekt typisiert etc.
Ich bin mit meim Latein am Ende, es wäre nett wenn mal einer drüber schauen würde...Oft ists ja nur ne Kleinigkeit..


mfg


Manu

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: FUBA mver_maintain_dark schreibt nicht

Beitrag von casman (Specialist / 420 / 1 / 63 ) »
COMMIT WORK oder COMMIT WORK AND WAIT nach dem FuBa ausführen. Steht auch im Baustein drin. :)

Re: FUBA mver_maintain_dark schreibt nicht

Beitrag von mknueppel (ForumUser / 26 / 3 / 0 ) »
Vielen Dank, ja so ist das mit dem Wald und den Bäumen^^

kann ich das commit so setzen?

Code: Alles auswählen.

  CALL FUNCTION 'MVER_MAINTAIN_DARK'
*  EXPORTING
*   SPERRMODUS            = ' '
*   MAX_ERRORS            = 0
    TABLES
   amveg_ueb             = lt_amveug
      amveu_ueb             = lt_amveu
*   AMERRDAT_F            =
* EXCEPTIONS
*   UPDATE_ERROR          = 1
*   INTERNAL_ERROR        = 2
*   TOO_MANY_ERRORS       = 3
*   OTHERS                = 4
  .
  IF sy-subrc = 0.
    commit work.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    LOOP AT lt_amveu INTO ls_amveu.

      WRITE:/ ls_amveu-matnr, l_field, '   updated by value', ls_amveu-kovbw.
    ENDLOOP.
  ELSEIF sy-subrc <> 0.
    WRITE:/ 'Update unsuccesfull'.

  ENDIF.
mfg

Manu

Re: FUBA mver_maintain_dark schreibt nicht

Beitrag von casman (Specialist / 420 / 1 / 63 ) »
Jepp, kannst du. :up:

Du musst nur deine Exceptions noch einsternen (sagt man das so?), sonst erzeugst du dir bei Fehlern keinen SY-SUBRC <> 0 sondern einen Short-Dump.

Und zur Sicherheit bei SY-SUBRC <> 0 macht man meist noch ein ROLLBACK WORK.

Re: FUBA mver_maintain_dark schreibt nicht

Beitrag von mknueppel (ForumUser / 26 / 3 / 0 ) »
thx, ma noch ne Frage, worans könnts liegen dass der Fuba die gleiche Feldnummer aber der geplanten Verbräuche befüllt nicht der ungeplant korrigierten?

mg

Manu

Re: FUBA mver_maintain_dark schreibt nicht

Beitrag von casman (Specialist / 420 / 1 / 63 ) »
Sorry, bin kein MM Fachmann, das check ich grad nicht. Was machter und was nicht?

Re: FUBA mver_maintain_dark schreibt nicht

Beitrag von mknueppel (ForumUser / 26 / 3 / 0 ) »
Also laut Fubadoku sollte das Feld ls_mveu-kovbw die korrigierten ungeplanten Verbrauchswerte enthalten. Diese übergebe ich auch. Trotzdem wird beim ausführen des Fuba mit anschließendem commit dass Feld des Gesamtverbrauchs gefüllt, ist ja i.O. da ein ungeplanter korrigierter verbauch auch darunter fällt, aber nun wird anstelle des ungeplanten Korrigierten Verbrauchs das Feld des korrigierten Gesamtverbrauchs befüllt..
Man hat 4 verschiedene Feldgruppen: Gesamtvb, ungeplanter Vb., korr. Gesamtvb, ungeplanter korr. Verbrauch. Anstelle des un.kor.Verbr wird korr. Gesamtverbrauch befüllt... un ihc hab kein plan warum ^^
Hoffe es ist teilweise verständlich..

mfg

Manu

Re: FUBA mver_maintain_dark schreibt nicht

Beitrag von mknueppel (ForumUser / 26 / 3 / 0 ) »
Hat sich erledigt, lag an nem fehlenden Zuordnungsparameter (mver-werks).
Vielen Dank für die Hilfen.

mfg

Manu

Re: FUBA mver_maintain_dark schreibt nicht

Beitrag von AsteriX (ForumUser / 1 / 1 / 0 ) »
Hallo zusammen,

ich hab gerade auch mit diesem FUBA zu tun, leider will er bei mir einfach nicht wie er soll. Es geht bei mir darum eine fehlerhafte Migration gerade zuziehen.

Nun wollte ich mit dem MVER_MAINTAIN_DARK den Gesamtverbrauch aktualisieren (also genau das gegenteil von mknueppel). Die Materialnr., Werk, Gesamtverbrauch, korrigierter Gesamtverbrauch geb ich bereits mit, aber es wird Grundsätzlich immer nur der korrigierte Gesamtverbrauch geändert.

Eine grundsätzliche Frage:
In einem anderen Thread stand folgendes zu den Tabellen:
TABLES
amveg_ueb = ->Gesamtverbräuche
amveu_ueb = ->ungeplante Verbräuche
* AMERRDAT_F = -> Fehlermeldungen

Muss ich zwingende beide Tabellen bedienen auch wenn ich die ungeplanten Verbräuche nicht setzten will? Hab ich testweise bereits probiert mit leerer Struktur ging leider auch nicht. Beim Debuggen viel mir auch das der FUBA die Änderungen nicht als Änderungen erkennt. Dort gibt es ein Feld, welches er mitschleift. Dabei geb ich ihm neue Werte.

Wie kann ich nun den normalen Gesamtverbrauch aktualisieren? Oder gibt es eine Möglichkeit die MVER zu löschen und dann neu einzulesen.

Danke

Seite 1 von 1

Vergleichbare Themen

4
Antw.
5243
Views
Material Maintain Dark
von queen » 09.06.2008 16:10 • Verfasst in ABAP® für Anfänger
1
Antw.
2047
Views
MVER Materialverbrauch und die Spalten
von vms01 » 14.02.2008 15:26 • Verfasst in ABAP® für Anfänger
2
Antw.
21574
Views
0
Antw.
1070
Views
7
Antw.
3571
Views
SET PARAMETER ID schreibt keine Daten in Userwerte
von Nordlicht » 17.03.2016 20:35 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Regex in where
vor 8 Stunden von edwin 7 / 166
Daten an Tabelle binden
vor 22 Stunden von Bright4.5 3 / 1487

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Regex in where
vor 8 Stunden von edwin 7 / 166
Daten an Tabelle binden
vor 22 Stunden von Bright4.5 3 / 1487

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9822