SAP Jobsuche bei DV-Treff
THOCON
  • THOCON
  • SAP Forum - User Thema Starter
vor 7 Jahre
Hallo zusammen,

ich bin Anfänger in ABAP Programmierung. Im Moment muss ich ein Programm schreiben, das die Transaktion MD20 ( Planungsvormerkung anlegen ) aufruft. Die Transaktion MD20 wurde aufgerufen ohne Fehler, nur die Planungsvormerkung für ein bestimmtes Material wurde nicht angelegt. Ich weiss aber nicht warum. Kann jemand mir helfen? Ich brauche sehr dringend die Antwort. Folgendes ist mein Programmcode:

DATA: lt_bdcdata TYPE TABLE OF bdcdata,

ls_bdcdata TYPE bdcdata.

DATA: ltext TYPE string VALUE 'Transaktionaufruf nicht erfolgreich'.

* Einstiegsbild

CLEAR ls_bdcdata.

ls_bdcdata-program = 'SAPMM61R'.

ls_bdcdata-dynpro = '0400'.

ls_bdcdata-dynbegin = 'X'.

APPEND ls_bdcdata TO lt_bdcdata.

CLEAR ls_bdcdata.

ls_bdcdata-fnam = 'BDC_CURSOR'.

ls_bdcdata-fval = 'RM61R-GSAEN'.

APPEND ls_bdcdata TO lt_bdcdata.

CLEAR ls_bdcdata.

ls_bdcdata-fnam = 'BDC_OKCODE'.

ls_bdcdata-fval = '/00'.

APPEND ls_bdcdata TO lt_bdcdata.

CLEAR ls_bdcdata.

ls_bdcdata-fnam = 'RM61R-MATNR'.

ls_bdcdata-fval = gs_ausgabe_2-matnr.

APPEND ls_bdcdata TO lt_bdcdata.

CLEAR ls_bdcdata.

ls_bdcdata-fnam = 'RM61R-WERKS'.

ls_bdcdata-fval = gc_werks.

APPEND ls_bdcdata TO lt_bdcdata.

CLEAR ls_bdcdata.

ls_bdcdata-fnam = 'RM61R-GSAEN'.

ls_bdcdata-fval = 'X'.

APPEND ls_bdcdata TO lt_bdcdata.

CALL TRANSACTION 'MD20'

USING lt_bdcdata

MODE 'A' UPDATE 'L'.

REFRESH lt_bdcdata.

IF sy-subrc <> 0.

MESSAGE ltext TYPE 'I'.

ENDIF.

Vielen Dank für Eure Hilfe.

Förderer

wreichelt
vor 7 Jahre
Hallo,

mir fehlt irgendwie das ‚sichern‘ dabei.

Die Transaktion ist noch nicht vollständig.

Gruß

THOCON
  • THOCON
  • SAP Forum - User Thema Starter
vor 7 Jahre
Hi wreichelt,

vielen Dank für die schnelle Antwort. Normalerweise soll man für das Anlegen speichern, aber bei der Transaktion MD20 muss man nur Enter drücken, dann wird die Planungsvormerkung gespeichert und das BDC_OKCODE für Enter ist /00, das steht auch bei meiner Coding. Aber leider hat es nicht funktioniert bei mir 😞.

Viele Grüße

thocon

Alpmann
vor 7 Jahre
Hallo THOCON,

probier doch mal eine Aufzeichnung mittels SHDB und schau dir dann an, welche Befehle genommen werden müssen. Eventuell musst du dann die Transaktion für jeden Artikel einzeln aufrufen.

Mit freundlichen Grüßen

Matthias Alpmann

THOCON
  • THOCON
  • SAP Forum - User Thema Starter
vor 7 Jahre
Hallo Matthias,

viele Dank für deine Antwort. Ich habe mit SHDB die TA MD20 ausgezeichnet und habe die folgende Daten bekommen:

Programm SAPMM61R,

Dynpro 0400

BDC_CURSOR RM61R-GSAEN

BDC_OKCODE /00

RM61R-MATNR 'ARM3056'

RM61R-WERKS '1000'

RM61R-GSAEN 'X'

Diese Daten habe ich im Programmcode benutzt wie unten:

* Einstiegsbild

CLEAR ls_bdcdata.

ls_bdcdata-program = 'SAPMM61R'.

ls_bdcdata-dynpro = '0400'.

ls_bdcdata-dynbegin = 'X'.

APPEND ls_bdcdata TO lt_bdcdata.

CLEAR ls_bdcdata.

ls_bdcdata-fnam = 'BDC_CURSOR'.

ls_bdcdata-fval = 'RM61R-GSAEN'.

APPEND ls_bdcdata TO lt_bdcdata.

CLEAR ls_bdcdata.

ls_bdcdata-fnam = 'RM61R-MATNR'.

ls_bdcdata-fval = gs_ausgabe_2-matnr.

APPEND ls_bdcdata TO lt_bdcdata.

CLEAR ls_bdcdata.

ls_bdcdata-fnam = 'RM61R-WERKS'.

ls_bdcdata-fval = gc_werks.

APPEND ls_bdcdata TO lt_bdcdata.

CLEAR ls_bdcdata.

ls_bdcdata-fnam = 'RM61R-GSAEN'.

ls_bdcdata-fval = 'X'.

APPEND ls_bdcdata TO lt_bdcdata.

CLEAR ls_bdcdata.

ls_bdcdata-fnam = 'BDC_OKCODE'.

ls_bdcdata-fval = '/00'.

APPEND ls_bdcdata TO lt_bdcdata.

CALL TRANSACTION 'MD20'

USING lt_bdcdata

MODE 'A' UPDATE 'L'.

Es hat trotzdem nicht funktioniert. Das ist schon komisch.

Viele Grüße

Thocon

THOCON
  • THOCON
  • SAP Forum - User Thema Starter
vor 7 Jahre
Zitat von: THOCON 

Hallo Matthias,

viele Dank für deine Antwort. Ich habe mit SHDB die TA MD20 ausgezeichnet und habe die folgende Daten bekommen:

Programm SAPMM61R,

Dynpro 0400

BDC_CURSOR RM61R-GSAEN

BDC_OKCODE /00

RM61R-MATNR 'ARM3056'

RM61R-WERKS '1000'

RM61R-GSAEN 'X'

Diese Daten habe ich im Programmcode benutzt wie unten:

* Einstiegsbild

CLEAR ls_bdcdata.

ls_bdcdata-program = 'SAPMM61R'.

ls_bdcdata-dynpro = '0400'.

ls_bdcdata-dynbegin = 'X'.

APPEND ls_bdcdata TO lt_bdcdata.

CLEAR ls_bdcdata.

ls_bdcdata-fnam = 'BDC_CURSOR'.

ls_bdcdata-fval = 'RM61R-GSAEN'.

APPEND ls_bdcdata TO lt_bdcdata.

CLEAR ls_bdcdata.

ls_bdcdata-fnam = 'RM61R-MATNR'.

ls_bdcdata-fval = gs_ausgabe_2-matnr.

APPEND ls_bdcdata TO lt_bdcdata.

CLEAR ls_bdcdata.

ls_bdcdata-fnam = 'RM61R-WERKS'.

ls_bdcdata-fval = gc_werks.

APPEND ls_bdcdata TO lt_bdcdata.

CLEAR ls_bdcdata.

ls_bdcdata-fnam = 'RM61R-GSAEN'.

ls_bdcdata-fval = 'X'.

APPEND ls_bdcdata TO lt_bdcdata.

CLEAR ls_bdcdata.

ls_bdcdata-fnam = 'BDC_OKCODE'.

ls_bdcdata-fval = '/00'.

APPEND ls_bdcdata TO lt_bdcdata.

CALL TRANSACTION 'MD20'

USING lt_bdcdata

MODE 'A' UPDATE 'L'.

Es hat trotzdem nicht funktioniert. Die TA MD20 wurde aufgerufen, nur die Planungsvormerkung für das Material wurde nicht angelegt. Das ist schon komisch.

Viele Grüße

Thocon

MrBojangles
vor 7 Jahre
Hallo Thocon,

Du gibst ja beim Call Transaction MODE A mit, d.h. die Transaktion wird 'hell' gerufen, d.h. es wird jedes einzelne Dynpro angezeigt und muss mit ENTER bestätigt werden. Wenn Du das Programm online ausführst, müsste er eigentlich das Einstiegsdynpro der MD20 befüllt mit Deinen Werten anzeigen. Nach Drücken von ENTER sollte gesichert werden. Wenn Du nicht manuell eingreifen willst, versuchs mal mit MODE = 'N'.


Weiterhin viel Freude mit SAP...

Cheers

MrB.

THOCON
  • THOCON
  • SAP Forum - User Thema Starter
vor 7 Jahre
Hallo Cheers,

auch danke für deine Antwort. Ich habe gerade mit MODE 'N' probiert. Es hat auch nicht geklappt. Bei MODE A habe ich die aufgerufene Transaktion MD20 gesehen und auch mit gefüllte Parameter wie Materialnummer, werk und das Häckchen X beim Vormerkung NETCH gesehen. Dann habe ich Enter gedrückt. Aber es wurde gar nicht gesichert. Wenn ich die TA MD20 von SAP aufrufe, nicht aus meinem Programm aufrufe, konnte ich nach dem Enter Drücken eine Planungsvormerkung anlegen. Ich fand es ist sehr komisch.

Viele Grüße

Thocon

Alpmann
vor 7 Jahre
Hallo Thocon,

ich habe mal nachgeschaut bei mir. Ich habe mal mittels des FuBas RFC_CALL_TRANSACTION_USING Gewichte im Materialstamm über Access geändert.

Dazu hatte ich dann auch eine bdcdata Tabelle mit Werten gefüllt. Bei mir war das so, dass der BDC_OKCODE entweder in der ersten oder zweiten Zeile stand. Nie am Ende. Ob das was bringt, weiß ich aber nicht.

Mit freundlichen Grüßen

Matthias Alpmann

THOCON
  • THOCON
  • SAP Forum - User Thema Starter
vor 7 Jahre
Hallo Matthias,

ich habe versucht den BDC_CODE an der 2.Zeile zu schreiben. Es ging trotzdem auch nicht.

Viele Grüße

Thocon

wreichelt