Hallo zusammen, ich arbeite gerade an einer ABAP-Bibliothekssoftware und stoße auf Schwierigkeiten bei der Implementierung von Filtermöglichkeiten. Speziell die Parameter für Titel und Autor (p_titel, p_autor) bereiten mir Probleme. Während die Filterung nach Buch-ID und Erscheinungsjahr bereits funktioniert, habe ich Schwierigkeiten, Select-Options korrekt einzusetzen, um auch nach Titel und Autor filtern zu können. Ich bekomme bei den Select-Options immer wieder Datentyp-Fehler. Ziel ist es, dass der Benutzer flexibel nach verschiedenen Kriterien wie Titel, Autor, ISBN und Erscheinungsjahr suchen kann." Mit Parameters funktioniert zum teil, ich habe den Tipp erhalten eine Range Tabelle zu erstellen. Aber ich kann mir gerade nicht helfen.
Die Klasse: : ZMK_BUCHEREI_CLASS
Ich habe eine Methode : get_book
DB-Tabelle : zmk_buch
Programm : zmk_buecherei_entwurf
zmk_buecherei_entwurf:
REPORT zmk_bucherei_entwurf.
TYPES: BEGIN OF ty_zmk_buch,
mandt TYPE zmk_buch-mandt,
buchid TYPE zmk_buch-buchid,
titel TYPE zmk_buch-titel,
autor TYPE zmk_buch-autor,
isbn TYPE zmk_buch-isbn,
erschein_jahr TYPE zmk_buch-ersch_jahr,
anzahl_exemplare TYPE zmk_buch-anzahl_exemplare,
verfuegbar TYPE zmk_buch-verfuegbar,
bild TYPE zmk_buch-bild,
END OF ty_zmk_buch.
DATA: gt_buecher TYPE STANDARD TABLE OF ty_zmk_buch WITH HEADER LINE,
gs_buecher TYPE ty_zmk_buch,
go_buch TYPE REF TO zmk_bucherei_class.
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE TEXT-001.
PARAMETERS: p_buchid TYPE ty_zmk_buch-buchid,
p_titel TYPE ty_zmk_buch-titel,
p_autor TYPE ty_zmk_buch-autor,
p_erschj TYPE ty_zmk_buch-erschein_jahr.
*SELECT-OPTIONS:
* s_autor FOR zmk_buch-autor,
* s_titel FOR zmk_buch-titel,
* s_buchid FOR zmk_buch-buchid,
* s_ersch_jahr FOR zmk_buch-ersch_jahr.
SELECTION-SCREEN END OF BLOCK blk1.
START-OF-SELECTION.
CREATE OBJECT go_buch.
go_buch->get_book(
EXPORTING
iv_buchid = p_buchid " Buch ID
iv_isbn = " Buch ISBN
iv_author = p_autor " Buch Autor
iv_year = p_erschj " Buch Erscheinungs Jahr
iv_title = p_titel " Buch Titel
IMPORTING
ev_buch = gt_buecher " Buch Tabelle
).
Die get_book Methode:
METHOD get_book.
DATA: gt_buch TYPE TABLE OF zmk_buch,
go_salv TYPE REF TO cl_salv_table.
IF iv_buchid IS NOT INITIAL.
SELECT * FROM zmk_buch INTO TABLE gt_buch
WHERE buchid = iv_buchid.
ELSEIF iv_isbn IS NOT INITIAL.
SELECT * FROM zmk_buch INTO TABLE gt_buch
WHERE isbn = iv_isbn.
ELSEIF iv_year IS NOT INITIAL.
SELECT * FROM zmk_buch INTO TABLE gt_buch
WHERE ersch_jahr = iv_year.
ELSE.
SELECT * FROM zmk_buch INTO TABLE gt_buch.
ENDIF.
cl_salv_table=>factory(
IMPORTING
r_salv_table = go_salv " Basisklasse einfache ALV Tabellen
CHANGING
t_table = gt_buch
).
Auf Verbesserungsvorschläge bin ich offen, ich lerne gerade :)
Vielen Lieben Dank im Voraus!
Albert
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.