Zunächst kurz zu deinem Screenshot: Bei imgur muss man ja Javascript aktivieren, um nur das Bild zu Gesicht zu bekommen! Nimm nächstes Mal lieber
https://de.imgbb.com/. Da bekommste direkt einen BBCode, den Du hier pasten kannst, und dann erscheint das Bild sogar ohne Link direkt in Deinem Text.
Inhaltlich bin ich Deinem Modul zwar recht fern, aber ein eigener Batch Input ist immer eine gute Idee, wenn die Standard-SAP-Funktionsbausteine aus welchen Gründen auch immer nicht zum Ziel führen. Deine Bemerkungen dazu klingen für mich so, als ob Dir nur die Übung fehlt, wie man selber einen programmiert. Ich würde nicht direkt aus der Aufzeichnung einen Funktionsbaustein erzeugen, der dann doch wieder nicht richtig das macht, was Du haben möchtest, sondern die Aufzeichnung nur als Vorlage nehmen und den Code in Dein eigenes Programm übernehmen. Dort steht es Dir dann frei, ob Du es eigenständig in eine Form, eine Methode, einen Funktionsbaustein oder was auch immer kapseln möchtest.
Grundsätzliche Vorgehensweise:
o Transaktion SHDB: Zeichne die von Dir benötigten Schritte unter Verwendung von Beispielwerten auf. Setze dabei am besten "Verbuchungsmodus = synchron" und "Hintergrundmodus simulieren".
Sichere die Aufzeichnung und kehre in den Startbildschirm der SHDB zurück. Dort klickst Du in der Drucktastenleiste auf das Weiße-Blatt-Symbol, neben dem "Programm" steht.
Setze im Kasten "Feldinhalte" den Radiobutton "Aus Aufzeichnung übernehmen". Vergib einen temporären Programmnamen und sichere das generierte Programm als "lokales Objekt" (also ohne Transportauftrag). Ich nenne es immer ZXZ, aber das kannste halten wie ein Dachdecker.
Wenn Du Dir jetzt das Programm anschaust, dann findest Du darin alles, was ein Bier braucht. Den kompletten Code für Deine Anpassung. Jetzt musst Du nur noch:
o den Code an eine geeignete Stelle Deines Programms übernehmen
o die Felder im Code, an denen Du Deine Beispielwerte wiedererkennst, durch passende Variablen Deines Programms ersetzen
o ggf. Feldbefehle löschen, die sich auf Felder beziehen, die Du in Deinem Beispieldurchlauf nicht geändert hast und bei denen Du auch nicht willst, dass der Batch Input den Default überschreibt
o den Include BDCRECX1 in Dein Programm übernehmen. Nachteil: dieser Include enthält Selektionsparameter, die Du auf Deinem Selektionsbild wahrscheinlich nicht haben willst (erst recht nicht, wenn Du gar keinen Report, sondern einen dynprogetriebenen Modulpool programmierst). Daher empfehle ich, dass Du Dir eine abgespeckte Kopie des BDCRECX1 als ZDCRECX2 anlegst. Darin brauchst Du aus BCRECX1 nur die Forms OPEN_GROUP, CLOSE_GROUP, BDC_FIELD, BDC_DYNPRO sowie am Anfang die DATA-Befehle:
Code: Alles auswählen.
DATA: BDCDATA LIKE STANDARD TABLE OF BDCDATA WITH HEADER LINE,
GROUP(12) TYPE C.
o den PERFORM BDC_TRANSACTION am Ende des erzeugten Programms ersetzen durch einen
CALL TRANSACTION transaktionsname WITHOUT AUTHORITY-CHECK USING BDCDATA MODE 'N' UPDATE 'S' MESSAGES INTO ERRTAB. Den Zusatz
MESSAGES INTO ERRTAB kannst Du weglassen, wenn Dich etwaige Fehlermeldungen nicht interessieren, ansonsten solltest Du dafür vorher per DATA-Befehl die Tabelle ERRTAB per
Code: Alles auswählen.
DATA ERRTAB TYPE STANDARD TABLE OF BDCMSGCOLL WITH HEADER LINE.
bereitstellen. Das
WITHOUT AUTHORITY-CHECK kannste auch weglassen, wenn nur User Dein Programm benutzen sollen, die auch autorisiert wären, die per Batch Input gerufene Standard-Transaktion händisch auszuführen.
Ist ganz einfach, wenn man es mal gemacht hat, und extrem flexibel. Man kann im Batch Input richtig programmieren!