VA01/02: Eingabebereite Felder ermitteln

SAP R/3 Vertrieb: Auftragsverwaltung, Versand und Transport, Fakturierung, Kreditmanagement, Außenhandel/Zoll...
9 Beiträge • Seite 1 von 1
9 Beiträge Seite 1 von 1

VA01/02: Eingabebereite Felder ermitteln

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Moin moin,

ich suche gerade nach einem Weg, zu ermitteln, welche Felder der VA01 oder VA02 eingabebereit auf den entsprechenden Dynpros vorhanden sind. Sowas wie der Feldstatuskram im FI.

Hintergrund ist ein Batch-Input, bei dem ich Fehler a la "Feld x ist auf Dynpro y nicht vorhanden" von vornherein ausschließen möchte.


Gruß

Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

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


Re: VA01/02: Eingabebereite Felder ermitteln

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »
Wenn ich das richtig erinnere wird das über Screenvarianten gelöst.
Ich habe keine Ahnung, ob man die auslesen kann.
Zudem gibt es aber auch noch eine feste Feldsteuerung je nach Belegart und anderen Parametern.
Ich glaube, das kann man nirgendwo "auslesen".
Gruß Enno
PS: Gibt es einen Grund, warum du Batchinput auf die VA02 machen möchtest und keinen BAPI verwendest?

Re: VA01/02: Eingabebereite Felder ermitteln

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Ja, gibt es. Der Anwender soll vor dem Sichern nochmal draufgucken. Außerdem kann es sein, dass "Müll" in den Aufträgen steht. Nehme ich den BAPI, brauche ich Dynpros zum Ändern der Daten.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: VA01/02: Eingabebereite Felder ermitteln

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »
Zumindest zum Anlegen gibt es eine Alternative: BAPI_SALESDOCU_CREATEWITHDIA

Die anderen BAPIs haben ein Simulationsflag; vielleicht ist das noch eine Option?

Re: VA01/02: Eingabebereite Felder ermitteln

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
ewx hat geschrieben:Zumindest zum Anlegen gibt es eine Alternative: BAPI_SALESDOCU_CREATEWITHDIA

Die anderen BAPIs haben ein Simulationsflag; vielleicht ist das noch eine Option?
Das Problem beim BAPI_SALESDOCU_CREATEWITHDIA ist, dass wir zu viele "Spezialitäten" haben (eine davon: Der Auftrag muss zuerst ohne Positionen angelegt und dann gesichert werden, damit ich eine Belegnummer habe, unter der ich die Langtexte speichern kann - sodann wird die VA02 aufgerufen, der Rest der Daten wird eingespielt, damit der Anwender vor dem Sichern (das macht er dann selbst) den ganzen Auftrag so sieht, wie er gebucht wird, eben inkl. Langtexte. Ich sehe keine Möglichkeit, die Langtexte dem Funktionsbaustein mitzugeben).

Das Simulationsflag reicht leider nicht, weil ich dann zwar dem Anwender sagen kann, was an dem Auftrag nicht stimmt, aber dann eine Möglichkeit schaffen müsste, wie er die Auftragsdaten ändern kann, ehe er sie nochmal einspielt. Und ich will keine Nachverbuchungstransaktion schreiben. Da ist die Variante mit dem Batch-Input die einfachste - das Ding hält bei einem Fehler von selbst an, der Anwender korrigiert und das Programm läuft weiter.

Ich bin wahrlich kein Freund von Batch-Inputs, aber in diesem Falle ist das wirklich die einfachste Möglichkeit.

Der Grund, warum ich frage, ist folgender:

Ich würde gern nicht jedes Feld einzeln codieren wenn ich die Batch-Input-Tabelle aufbaue, sondern anhand Programm/Dynpro feststellen, ob das Feld auf dem Dynpro eingabebereit zur Verfügung steht. Dann und wenn das Feld nicht initial ist, soll es in die Mappe geschrieben werden. Im Ergebnis würde ich einfach die Dynpros durchlaufen und per ASSIGN COMPONENT alle Felder füllen, die mir als auf diesem Dynpro eingabebereit bekannt sind.

Dazu gibt es zwei Möglichkeiten:

1. Ich hinterlege eine Tabelle Programm/Dynpro/Feld, in der alle Felder gepflegt sind, die versorgt werden sollen. Das Schöne dabei ist: Soll ein Feld neuerdings oder nicht mehr versorgt werden, reicht eine Tabellenänderung aus, um das zu veranlassen. Das Programm muss nicht geändert werden. Sprich: Das kann der Anwender selbst machen.

2. Es ist irgendwo hinterlegt, welches Feld eingabebereit auf welchem Dynpro steht, dann kann ich mir die eigene Tabelle schenken und kann mich danach richten, was ich auf diese Weise ermittle.

3. Man könnte diese beiden Varianten auch kombinieren, indem man aus der ermittelten Menge der eingabebereiten Felder (siehe 2) noch Felder ausnimmt, indem man sie in einer Tabelle pflegt (siehe 1).

Das würde den Batch-Input erheblich vereinfachen, weil ich nur noch für jedes Bild den ASSIGN COMPONENT machen würde, ohne explizit jedes einzelne Feld mit einem Wert aus meinen Übergabedaten zu füllen.

Hintergrund ist dabei folgender: Ich habe hier einen Batch-Input, der mit der Zeit enorm gewachsen ist und langsam unübersichtlich wird. Darum soll er überarbeitet werden, wobei die überarbeitete Version exakt dieselbe Funktionalität hat wie die jetzige (alte) Version (wow, welcher Kunde bezahlt schon ein rein technisch begründetes Neuentwickeln eines Programmes?). Die Überarbeitung betrifft zwar eigentlich ganz andere Programmstellen, aber wenn ich einmal dran bin, kann ich das Ding auch komplett überarbeiten - im Zuge dieser Neuentwicklung des bestehenden Programmes habe ich daher insbesondere vor, den Batch-Input deutlich zu minimieren - eben dahingehend, dass ich nicht jedes Feld einzeln versorge, sondern die Mappenerstellung erheblich dynamisiere.

Daher meine Frage: Kann ich irgendwie ermitteln, welche Felder in der VA02 eingabebereit auf welchem Dynpro stehen. Allerdings habe ich inzwischen gesehen, dass die Bildnummer und das Programm für alle Kopfdatenreiter (Versand, Verkauf, Faktura, ....) identisch sind - ich müsste das also eher über die Subscreens definieren bzw. ermitteln, ob ein Feld vorhanden ist oder nicht.

Die Frage ist, ob mir die Angaben im screen-Painter da weiterhelfen - da gibt's etliche numerische Einträge für SCREEN-GROUPs (in allen vier Feldern), Einträge zum Switch-Framework, etc. - aber natürlich steht nirgends, ob ich daraus schließen kann, welche Felder für mich eingabebereit sind ;)
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: VA01/02: Eingabebereite Felder ermitteln

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »
ralf.wenzel hat geschrieben: Das Problem beim BAPI_SALESDOCU_CREATEWITHDIA ist, dass wir zu viele "Spezialitäten" haben (eine davon: Der Auftrag muss zuerst ohne Positionen angelegt und dann gesichert werden, damit ich eine Belegnummer habe, unter der ich die Langtexte speichern kann - sodann wird die VA02 aufgerufen, der Rest der Daten wird eingespielt, damit der Anwender vor dem Sichern (das macht er dann selbst) den ganzen Auftrag so sieht, wie er gebucht wird, eben inkl. Langtexte. Ich sehe keine Möglichkeit, die Langtexte dem Funktionsbaustein mitzugeben).

Code: Alles auswählen.

DATA: BEGIN OF gt_bapi_header_texts OCCURS 0.
        INCLUDE STRUCTURE tlinekom.
DATA: msgfn LIKE bapisdtext-function.
DATA: END OF gt_bapi_header_texts.

EXPORT bapi_header_texts FROM gt_bapi_header_texts TO MEMORY ID 'SDBAPITEXTHD'.
Ich wüsste nicht, dass du vorher den Feldstatus ermitteln kannst.
Ich würde die Felder, die zu Problemen führen, weil sie von Belegart zu Positionstyp unterschiedlich sind, in eine Customizingtabelle aufnehmen und dann nach und nach füllen.
Vielleicht kann man sich behelfen, in dem man in einem "god mode" und "DYNP_VALUES_READ" die eingabebereiten Felder "dumpen" und dann nach und nach anpassen.

Spaßeshalber kannst du dir ja mal die fest codierten Sonderregeln anschauen... (SAPMV45A)feldauswahl_sonderregeln

Re: VA01/02: Eingabebereite Felder ermitteln

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
ewx hat geschrieben:

Code: Alles auswählen.

DATA: BEGIN OF gt_bapi_header_texts OCCURS 0.
        INCLUDE STRUCTURE tlinekom.
DATA: msgfn LIKE bapisdtext-function.
DATA: END OF gt_bapi_header_texts.

EXPORT bapi_header_texts FROM gt_bapi_header_texts TO MEMORY ID 'SDBAPITEXTHD'.
Bei jeder SAP-Veranstaltung höre ich die Oberlehrer von der SAP über die Qualität des Codings bei Kunden meckern - und dann bauen die sowas ein??? Nirgends dokumentiert, saubere Leistung.

Naja, jedenfalls sind die Langtexte nicht die einzige Spezialität, die wir überwinden müssen, daher gibt es zum Batch-Input leider keine Alternative.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: VA01/02: Eingabebereite Felder ermitteln

Beitrag von black_adept (Top Expert / 4087 / 126 / 940 ) »
ralf.wenzel hat geschrieben:...
Daher meine Frage: Kann ich irgendwie ermitteln, welche Felder in der VA02 eingabebereit auf welchem Dynpro stehen. Allerdings habe ich inzwischen gesehen, dass die Bildnummer und das Programm für alle Kopfdatenreiter (Versand, Verkauf, Faktura, ....) identisch sind - ich müsste das also eher über die Subscreens definieren bzw. ermitteln, ob ein Feld vorhanden ist oder nicht.
Guten Abend Ralf,

die Antwort auf deine Frage ist leider "Nein!".
Beispiel. Auf dem Reiter "Zusatzdaten2" kann ich mir beliebiege Felder einblenden - und die Logik nach der ich die eingabebereit haben möchte kann weiß wie kompliziert oder sinnlos sein.
Das Selbe gilt leider auch für die SAP-Reiter (siehe Ennos Hinweis zu den Sonderregeln )
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: VA01/02: Eingabebereite Felder ermitteln

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »
Mir ist gerade ein Lösungsansatz über den Weg gelaufen:
BAPI im Simulationsmodus aufrufen und in einem Userexit den Baustein SD_FIELD_INPUT_CHECK für alle benötigten Felder aufrufen. Ergebnis in interne Tabelle und per EXPORT TO MEMORY für den Aufrufer bereit stellen.
Nach Ende Simulation die itab per IMPORT FROM MEMORY abfragen.

Allerdings steht in der Doku zu dem Fuba:
SAP Doku hat geschrieben:Vorsicht!!!
Es können damit nicht tatsächlich alle Fälle abgedeckt werden, sondern nur die allgemeingültigen!
Also ggfs. auch keine befriedigende Lösung...

Seite 1 von 1

Vergleichbare Themen

2
Antw.
2635
Views
REUSE_ALV_GRID_DISPLAY eingabebereite Felder
von luu2000 » 30.10.2007 11:18 • Verfasst in ABAP® Core
2
Antw.
3364
Views
Kreditstatus in VA01 ermitteln
von RainerW » 10.05.2017 13:50 • Verfasst in Dialogprogrammierung
4
Antw.
2644
Views
Ermitteln der Felder einer Variante
von Foerstar » 20.12.2016 15:41 • Verfasst in ABAP® Core
3
Antw.
1413
Views
Ermitteln der WKG* Felder durch Periodeneingabe
von Bjoern80 » 14.11.2017 12:47 • Verfasst in ABAP® für Anfänger
4
Antw.
5410
Views
Anzahl Felder einer Struktur ermitteln
von Barney » 05.12.2013 08:00 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
Gestern von Bright4.5 1 / 530
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2161
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8756