kling nicht schlecht, aber dafür müsste ich jetzt die die komplette SelektionsbildschirmDu könntest eine "eigene" Eingabemaske schaffen und den Funktionsbaustein SE16N_INTERFACE
Code: Alles auswählen.
IT_SELFIELDS LIKE SE16N_SELTAB "Tabellenanzeige: Selektionskriterien
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
swonny
mhh, anscheinend hat die SAP diesen Import-Parameter entfernt. Schade,black_adept hat geschrieben:I_SINGLE_TABLE = 'X' ,
Code: Alles auswählen.
FUNCTION SE16N_START.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(I_TAB) TYPE SE16N_TAB OPTIONAL
*" VALUE(I_DISPLAY) TYPE CHAR1 DEFAULT SPACE
*" VALUE(I_EXIT_SELFIELD_FB) TYPE FUNCNAME DEFAULT SPACE
*" VALUE(I_HANA) TYPE CHAR1 DEFAULT SPACE
*"----------------------------------------------------------------------
das habe ich ausprobiert,Tron hat geschrieben:Moin.
Falls Du vor hast den Usern die SE16N zu geben, würde ich statt dessen lieber den Quickview (SQVI) oder Query (SQ01) vorschlagen.
gruß Jens
Oder er ist noch nicht drin... Welches Release hast du denn?swonny hat geschrieben:mhh, anscheinend hat die SAP diesen Import-Parameter entfernt. Schade,black_adept hat geschrieben:I_SINGLE_TABLE = 'X' ,
das hätte genau gepasst.
Freie Selektion kann man "schnell" selber programmieren, dann damit die SE16N aufrufen ist auch kein Hexenwerk.swonny hat geschrieben:aber die brauche ich alle, muss leider auf alle Spalten Auswerten können,
bzw. der User bräuchte die Freiheit die Selektionsparameter selbst zu bestimmen.
Code: Alles auswählen.
REPORT ZTEST_SE16N.
DATA: gt_selfields TYPE TABLE OF se16n_seltab.
PARAMETERS: p_tab LIKE dd02l-tabname.
PARAMETERS: p_max TYPE sytabix DEFAULT '500'.
START-OF-SELECTION.
PERFORM create_sel_screen.
CALL FUNCTION 'SE16N_INTERFACE'
EXPORTING
i_tab = p_tab
i_edit = ' '
i_sapedit = ' '
i_max_lines = p_max
TABLES
it_selfields = gt_selfields
EXCEPTIONS
no_values = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
*&---------------------------------------------------------------------*
*& Form create_sel_screen
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM create_sel_screen .
*** Daten für die Freiabgrenzung
DATA:
*** Selection-ID zur Unterscheidung mehrerer Sets
lv_selection_id LIKE rsdynsel-selid,
*** Anzahl der Felder
lv_number_of_fields TYPE i,
*** Init: Tabellen
lt_tables TYPE STANDARD TABLE OF rsdstabs,
*** Init: Felder
ls_fields TYPE rsdsfields,
lt_fields TYPE STANDARD TABLE OF rsdsfields,
*** Daten für Where-Tabelle
lt_where_clauses TYPE rsds_twhere,
ls_where_clause TYPE rsds_where,
*** Ranges
lt_field_ranges TYPE rsds_trange,
ls_field_ranges TYPE rsds_range,
*** Ranges eines Feldes
ls_frange TYPE rsds_frange,
*** einzelner RangeSatz
ls_selopt TYPE rsdsselopt,
*** Expressions
lt_expressions TYPE rsds_texpr,
ls_expression TYPE rsds_expr,
*** Fehlertext
l_fehler TYPE c LENGTH 50,
*** SE16N Selopt
ls_selfields TYPE se16n_seltab.
*** Tabellenname vorgeben
APPEND p_tab TO lt_tables.
CALL FUNCTION 'FREE_SELECTIONS_INIT'
EXPORTING
kind = 'T'
IMPORTING
selection_id = lv_selection_id
field_ranges = lt_field_ranges
TABLES
tables_tab = lt_tables
EXCEPTIONS
fields_incomplete = 1
fields_no_join = 2
field_not_found = 3
no_tables = 4
table_not_found = 5
expression_not_supported = 6
incorrect_expression = 7
illegal_kind = 8
area_not_found = 9
inconsistent_area = 10
kind_f_no_fields_left = 11
kind_f_no_fields = 12
too_many_fields = 13
dup_field = 14
field_no_type = 15
field_ill_type = 16
dup_event_field = 17
node_not_in_ldb = 18
area_no_field = 19
OTHERS = 20.
CASE sy-subrc.
WHEN 1. l_fehler = 'FIELDS_INCOMPLETE'.
WHEN 2. l_fehler = 'FIELDS_NO_JOIN'.
WHEN 3. l_fehler = 'FIELD_NOT_FOUND'.
WHEN 4. l_fehler = 'NO_TABLES'.
WHEN 5. l_fehler = 'TABLE_NOT_FOUND'.
WHEN 6. l_fehler = 'EXPRESSION_NOT_SUPPORTED'.
WHEN 7. l_fehler = 'INCORRECT_EXPRESSION'.
WHEN 8. l_fehler = 'ILLEGAL_KIND'.
WHEN 9. l_fehler = 'AREA_NOT_FOUND'.
WHEN 10. l_fehler = 'INCONSISTENT_AREA'.
WHEN 11. l_fehler = 'KIND_F_NO_FIELDS_LEFT'.
WHEN 12. l_fehler = 'KIND_F_NO_FIELDS'.
WHEN 13. l_fehler = 'TOO_MANY_FIELDS'.
WHEN 14. l_fehler = 'DUP_FIELD'.
WHEN 15. l_fehler = 'FIELD_NO_TYPE'.
WHEN 16. l_fehler = 'FIELD_ILL_TYPE'.
WHEN 17. l_fehler = 'DUP_EVENT_FIELD'.
WHEN 18. l_fehler = 'NODE_NOT_IN_LDB'.
WHEN 19. l_fehler = 'AREA_NO_FIELD'.
WHEN 20. l_fehler = 'OTHERS'.
ENDCASE. "sy-subrc
IF NOT l_fehler IS INITIAL.
MESSAGE e398(00) WITH 'Fehler bei Initialisierung der Freienabgrenzung.'
'Fehler: '
l_fehler.
STOP.
ENDIF. " NOT l_fehler is initial.
*** Dialog mit "freien Abgrenzungen" aufrufen
CALL FUNCTION 'FREE_SELECTIONS_DIALOG'
EXPORTING
selection_id = lv_selection_id
title = 'Freie Abgrenzung'
frame_text = 'Bitte Selektion eingeben'
status = '1'
as_window = ' '
start_row = 3
start_col = 3
tree_visible = space
no_frame = 'X'
IMPORTING
where_clauses = lt_where_clauses
expressions = lt_expressions
field_ranges = lt_field_ranges
number_of_active_fields = lv_number_of_fields
TABLES
fields_tab = lt_fields
EXCEPTIONS
internal_error = 1
no_action = 2
selid_not_found = 3
illegal_status = 4
OTHERS = 5.
IF sy-subrc > 0.
IF sy-subrc = 2.
*** Meldung "Auswahl wurde abgebrochen"
MESSAGE s000(oo) WITH 'Auswahl wurde abgebrochen'.
ELSE.
*** Meldung "Fehler bei Funktionsbausteinaufruf"
MESSAGE i000(oo) DISPLAY LIKE 'E'
WITH 'Fehler bei FREE_SELECTIONS_DIALOG' sy-subrc.
ENDIF.
STOP.
ELSE.
*** vom Baustein generierte SelOpts aufbereiten
LOOP AT lt_field_ranges INTO ls_field_ranges.
LOOP AT ls_field_ranges-frange_t INTO ls_frange.
* Feldname übernehmen
ls_selfields-field = ls_frange-fieldname.
LOOP AT ls_frange-selopt_t INTO ls_selopt.
* SelOpt-Sätze übernehmen
ls_selfields-sign = ls_selopt-sign.
ls_selfields-option = ls_selopt-option.
ls_selfields-low = ls_selopt-low.
ls_selfields-high = ls_selopt-high.
APPEND ls_selfields TO gt_selfields.
ENDLOOP.
ENDLOOP.
ENDLOOP.
ENDIF.
ENDFORM. " create_where
Und spätestens beim Releasewechsel steht er (oder sein Nachfolger) vor dem gleichen Dilemma.ewx hat geschrieben:Oder er ist noch nicht drin... Welches Release hast du denn?
a-dead-trousers hat geschrieben:Und spätestens beim Releasewechsel steht er (oder sein Nachfolger) vor dem gleichen Dilemma.ewx hat geschrieben:Oder er ist noch nicht drin... Welches Release hast du denn?
Normalerweise löscht SAP keine Parameter. Evtl. haben sie dann keine Funktion mehr, aber in der Regel bleiben alle Parameter vorhanden. Sollte sich die Funktionalität grundlegend ändern, werden (in der Regel) neue Bausteine zur Verfügung gestellt.a-dead-trousers hat geschrieben:Und spätestens beim Releasewechsel steht er (oder sein Nachfolger) vor dem gleichen Dilemma.ewx hat geschrieben:Oder er ist noch nicht drin... Welches Release hast du denn?