Änderung von Daten mit Hilfe desTabellenpflegedialogs
Um Daten, die in einem Tabellenpflegedialog verarbeitet werden, automatisiert hinzuzufügen, muss ein Funktionsbaustein aufgerufen werden, der dies tut. Die Daten müssen zuvor geprüft sein. Der Funktionsbaustein tut dies leider nicht.Es werden dann aber alle Erweiterungen, die durch Zeitpunkte hinzugefügt wurden, durchlaufen.
Folgendes – zugegebener Maßen durch Copy and Paste zusammengeschusterte Programm – demonstriert das Hinzufügen bzw. die Änderung eines Datensatzes in der Tabelle ZTEST1:
Felder der Tabelle:
- MANDT
- MATNR
- FELD1
- FELD2
Anmerkungen
Die Tabellendefinition mit OCCURS ist nicht mehr aktuell.
Das Coding ist Halb-generisch… Wo es ohne viel Aufwand möglich war, habe ich versucht, die Tabelle ZTEST1 generisch zu verwenden
- Zuweisung der Werte in TOTAL
- SELECT
Allerdings habe ich dies nicht stringent verfolgt:
- WHERE_Bedingung ist nicht generisch
- Struktur-Definition ist nicht dynamisch
Dieses Programm soll auch in erster Linie die Verwendung des Bausteins VIEW_MAINTENANCE_LOW_LEVEL demonstrieren. Ich wollte jedoch darauf achten, dass die Verwendung auch einigermaßen variabel möglich ist.
Coding
REPORT.
*== Selection Screen
PARAMETERS matnr TYPE ztest1-matnr DEFAULT ‘1234’.
PARAMETERS feld1 TYPE ztest1-feld1 DEFAULT ‘TESTFELD1’.
PARAMETERS feld2 TYPE ztest1-feld2 DEFAULT ‘Hier ist ein Test’.
*== Macro für die Definition der notwendigen Tabellenstruktur
DEFINE _define_vim_tables.
data: begin of extract_data occurs 01.
include structure &1.
include structure vimflagtab.
data: end of extract_data.
data: begin of total_data occurs 01.
include structure &1.
include structure vimflagtab.
data: end of total_data.
END-OF-DEFINITION.
DATA: sellist LIKE vimsellist OCCURS 10 WITH HEADER LINE,
fu_to_excl LIKE vimexclfun OCCURS 10 WITH HEADER LINE,
x_header LIKE vimdesc OCCURS 1,
x_namtab LIKE vimnamtab OCCURS 1,
hlp_sellist LIKE vimsellist OCCURS 0 WITH HEADER LINE,
corr_keytab LIKE e071k OCCURS 0.
CONSTANTS viewname TYPE tabname VALUE ‘ZTEST1’.
*== Definition der notwendigen Tabellen mit MARK- und ACTION-Flag
_define_vim_tables ztest1.
FIELD-SYMBOLS <f> TYPE ANY.
START-OF-SELECTION.
*== Aufbau Selektionskriterien
CLEAR: sellist.
sellist-viewfield = ‘MATNR’.
sellist-operator = ‘EQ’.
sellist-value = matnr.
sellist-and_or = space.
APPEND sellist.
*== Struktur der Tabelle ermitteln
CALL FUNCTION ‘VIEW_GET_DDIC_INFO’
EXPORTING
viewname = viewname
TABLES
x_header = x_header
x_namtab = x_namtab
sellist = hlp_sellist
EXCEPTIONS
no_tvdir_entry = 3
table_not_found = 5.
ASSIGN COMPONENT ‘MATNR’ OF STRUCTURE total_data TO <f>. <f> = matnr.
ASSIGN COMPONENT ‘FELD1’ OF STRUCTURE total_data TO <f>. <f> = feld1.
ASSIGN COMPONENT ‘FELD2’ OF STRUCTURE total_data TO <f>. <f> = feld2.
ASSIGN COMPONENT ‘ACTION’ OF STRUCTURE total_data TO <f>.
SELECT COUNT(*) FROM (viewname) WHERE matnr = matnr.
IF sy-subrc = 0.
*== Satz ist vorhanden: Änderung
<f> = ‘U’.
ELSE.
*== Satz ist neu
<f> = ‘N’.
ENDIF.
APPEND total_data.
*== Aufruf des Bausteins
CALL FUNCTION ‘VIEW_MAINTENANCE_LOW_LEVEL’
EXPORTING
corr_number = ‘ ‘
fcode = ‘SAVE’
view_action = ‘U’
view_name = viewname
TABLES
corr_keytab = corr_keytab
dba_sellist = hlp_sellist
dpl_sellist = hlp_sellist
excl_cua_funct = fu_to_excl
extract = extract_data
total = total_data
x_header = x_header
x_namtab = x_namtab
EXCEPTIONS
function_not_found = 1
missing_corr_number = 2
no_value_for_subset_ident = 3
saving_correction_failed = 4
OTHERS = 5.
IF sy-subrc = 0.
COMMIT WORK.
ENDIF.
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024