Hallo liebes Forum,
ich möchte meinem Post vorausschicken, dass ich zwar schon etwas Programmiererfahrung sammeln konnte (Basic, Pascal/Delphi, C#), auf dem Gebiet von ABAP/Dynpro bin ich jedoch der totale Neuling.
Zu meinem Vorhaben:
Bei der Anlage von Finanzgeschäften via TC: FTR_CREATE ist es möglich im Reiter "Verwaltung" das Feld "Merkmale" individuell zu befüllen. Ich möchte dieses Feld mit einer ID befüllen. Die ID selbst, die sich aus den Kernmerkmalen des Geschäftes selbst zusammensetzt, kann ich generieren, allerdings habe ich bei der Zuweisung dieser ID in das Feld "Merkmale" Probleme. Dahe rhabe ich mich dazu entschieden, den Wert im Feld mit der generierten ID zu vergleichen. Stimmen beide überein, ist alles ok. Stimmt der Feldeintrag jedoch nicht überein, so soll der User darauf hingewiesen werden, den entsprechenden Wert in das Feld einzutragen.
Im generellen Ansatz habe ich eine Implementierung für BAdI FTR_TR_GENERIC angelegt und in Methode EVT_TRANSACTION_CHECK folgenden CODE hinterlegt:
Code: Alles auswählen.
method IF_EX_FTR_TR_GENERIC~EVT_TRANSACTION_CHECK.
DATA: wa_VTBFHA TYPE VTBFHA,
ID TYPE string.
SELECT SINGLE * FROM VTBFHA INTO wa_VTBFHA
WHERE RFHA = PI_PROXY_TRANSACTION->a_transaction-RFHA
AND BUKRS = PI_PROXY_TRANSACTION->a_transaction-BUKRS.
* ID erzeugen mit indirektem Bezug zu den Attributen über wa_VTBFHA ===
CONCATENATE
wa_VTBFHA-KONTRH "Geschäftspartnernummer
wa_VTBFHA-DBLFZ "Abschlusstag
wa_VTBFHA-WGSCHFT "Währung eS
wa_VTBFHA-WGSCHFT1 "Währung aS
INTO ID SEPARATED BY '-'.
* führende Nullen in ID löschen
SHIFT ID LEFT DELETING LEADING '0'.
* Prüfen, ob Merkmal schon mit ID befüllt ist.
IF wa_VTBFHA-MERKM <> ID.
* Pop-Up mit ID anzeigen
CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
EXPORTING
* TITEL = ' '
TEXTLINE1 = 'Ergänzen Sie bitte folgende ID im Feld MERKMAL:'
TEXTLINE2 = ID
* START_COLUMN = 25
* START_ROW = 6
.
Else.
* Pop-Up mit "Alles Ok." anzeigen.
CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
EXPORTING
* TITEL = ' '
TEXTLINE1 = 'Alles Ok.'
* TEXTLINE2 = ID
* START_COLUMN = 25
* START_ROW = 6
.
ENDIF.
endmethod.
Leider funktioniert dieser Ansatz nur bedingt, da ich nur die gespeicherten Werte in der Tabelle VTBFHA abprüfe und nicht die Daten, die in dem Feldern der Eingabemaske aktuell eingetragen sind. Im Idealfall soll, wenn das Feld Merkmal einen anderen Wert als den, der sich durch die Geschäftsdaten ergeben würde, trägt eine Fehlermeldung den User darauf hinweisen, dass das Feld mit dem entsprechenden Wert befüllt werden muss. Als Sahnehäubche würde der Wert automatisch in das Feld "Merkmal" eintragen und der User lediglich darüber informiert werden.
Bei meinen bisherigen Recherchen habe ich mitbekommen, dass es offenbar möglich sein soll, über den BAdI FTR_CUSTOMER_EXTENT zusätzliche Felder in die Stammdaten des Finanzgeschäfts aufzunehmen, um diese dann mit den entsprechenden Werte zu befüllen. Wie schon angedeutet, habe ich keine nennenswerten Erfahrungen mit der Dynpro-Thematik und dem professionellen ABAP-Coding. Von daher kann ich das Erfolgspotenzial dieses Ansatzes nicht einschätzen.
Ich wäre schon mit ein paar Hinweisen, ob ich auf dem richtigen Weg bin oder ob ich hier einem hoffnungslosen Vorhaben gegenüberstehe zufrieden. Auch Vorschläge zu einschlägiger Literatur sind gern willkommen.
Beste Grüße
TUnitCB