Select nach Parameter & Select-Options


Getting started ... Alles für einen gelungenen Start.

Moderatoren: Jan, Steff

Select nach Parameter & Select-Options

Beitragvon doeme » 10.07.2012, 15:37

hallo!

ich habe eine vielzahl an parameter und select options, die ein user auf dem selektionsbildschirm auswählen kann bzw. befüllen. wie gestalte ich nach den gewählten parametern meinen select dann möglichst elegant? es muss doch eine schöne lösung geben, da zurzeit das ganze bei mir so ähnlich aussieht wie
Code: Alles auswählen
if a is initial and b is not initial and c is not inital.
select ...
elseif a is initial and b is initial and c is not inital.
select ...
elseif...
select...
endif


da muss es doch eine saubere lösung geben, bitte um hilfe, danke!
doeme
ForumUser
 
Beiträge: 18
Registriert: 03.07.2012, 09:32
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Re: Select nach Parameter & Select-Options

Beitragvon Unit605 » 10.07.2012, 16:38

Es kommt auf die Anforderung an.

Mache jeden Parameter, wenn sinnvoll, mandatory. Dann sind diese Parameter schon immer "not initial", als immer gefuellt.

Du kannst einen Select-Option nehmen und diese so aussehen lassen, als ob es ein PARAMETERS ist.

Fuer alle anderen Parameter kannst Du eine Range-Tabelle, wie fuer eine Select-Option anlegen und als ersten Schritt nach "ausfuehren" mit den Parameterangaben befuellen, insbesondere wenn sie LEER sind.

Aus einem leeren Parameter wird dann z.b. eine Range-Tabelle die man dann beim SELECT immer mit " in R_TABLE" benutzen kann.

Beispiel auf die Schnelle und nicht vollstaendig:


Code: Alles auswählen
data: r_matnr type RANGE OF mara-matnr.


Parameters P_MATNR type MATNR.

start-of-selection.
if P_matnr is initial
R_matnr-sign = 'I'.
R_matnr-Option = 'EQ'.
append r_matnr to r_matnr.
endif.

Select ....

where matnr in r_matnr.

 
Unit605
Expert
 
Beiträge: 975
Registriert: 05.02.2009, 21:29
Dank erhalten: 93 mal
Ich bin: Freiberufler/in

Re: Select nach Parameter & Select-Options

Beitragvon JHM » 11.07.2012, 07:44

doeme hat geschrieben:wie gestalte ich nach den gewählten parametern meinen select dann möglichst elegant?


Ändert sich der Select in Abhängigkeit der gefüllten SelScreen-Felder?

Manchmal kann es Sinn machen den SelScreen in Blöcke auf zuteilen, die dann die einzelnen Felder je Select-Weg zusammen fassen. Wenn man dann noch mit RadioButtons arbeitet macht man dann auch nur die Felder für den SelectionsWeg eingabebereit:

Code: Alles auswählen
REPORT  ztest_sel.

TYPES: BEGIN OF tys_data,
        vbeln     TYPE vbeln,
        wadat_ist TYPE likp-wadat_ist,
        erdat     TYPE vbak-erdat,
       END   OF tys_data.

DATA: gs_data TYPE tys_data.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: rb_auf RADIOBUTTON GROUP rb1 USER-COMMAND push DEFAULT 'X'.
SELECTION-SCREEN BEGIN OF BLOCK b11.
SELECT-OPTIONS: s_aubeln FOR gs_data-vbeln MODIF ID b11,
                s_erdat  FOR gs_data-erdat MODIF ID b11.
SELECTION-SCREEN END OF BLOCK b11.
PARAMETERS: rb_lif RADIOBUTTON GROUP rb1.
SELECTION-SCREEN BEGIN OF BLOCK b12.
SELECT-OPTIONS: s_vbeln FOR gs_data-vbeln MODIF ID b12,
                s_wadati FOR gs_data-wadat_ist MODIF ID b12.

SELECTION-SCREEN END OF BLOCK b12.
SELECTION-SCREEN END OF BLOCK b1.


AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    IF screen-group1 = 'B11'.
      CASE 'X'.
        WHEN rb_auf.
          screen-input = 1.
        WHEN rb_lif.
          screen-input = 0.
      ENDCASE.
      MODIFY SCREEN.
    ELSEIF screen-group1 = 'B12'.
      CASE 'X'.
        WHEN rb_auf.
          screen-input = 0.
        WHEN rb_lif.
          screen-input = 1.
      ENDCASE.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.

START-OF-SELECTION.

  CASE 'X'.
    WHEN rb_auf. "Einstieg über Auftrag
*      SELECT *
*       FROM vbak
    WHEN rb_lif. "Einstieg über Lierferung
*      SELECT *
*       FROM likp
  ENDCASE.
 
Gruß Hendrik
JHM
Top Expert
 
Beiträge: 1124
Registriert: 15.02.2006, 12:39
Wohnort: Aachen
Dank erhalten: 177 mal

Re: Select nach Parameter & Select-Options

Beitragvon doeme » 11.07.2012, 13:53

ja, leider. der SELECT kann also bei 3 versch. Parametern bis zu 9 verschiedene Varianten haben.

das mit mandatory ist auf jeden fall sinnvoll! danke für den tipp
doeme
ForumUser
 
Beiträge: 18
Registriert: 03.07.2012, 09:32
Dank erhalten: 0 mal
Ich bin: Entwickler/in

Re: Select nach Parameter & Select-Options

Beitragvon Unit605 » 11.07.2012, 15:38

Meinf olgender Code aus dem ersten Posting ist Unsinn.
Code: Alles auswählen
if P_matnr is initial
R_matnr-sign = 'I'.
R_matnr-Option = 'EQ'.
append r_matnr to r_matnr.
endif.


Ich versuche bei solchen Faellen, die Parameter in Select-Options umzuwandeln. Entweder direkt auf dem Screen oder im Program.
Ebenso versuche ich das bei Checkboxen anzuwenden und wandele diese intern in Select-Options.

Am besten zeigst Du uns mal ein Beispiel, damit wir damit etwas rumdoktern koennen. :-)
Unit605
Expert
 
Beiträge: 975
Registriert: 05.02.2009, 21:29
Dank erhalten: 93 mal
Ich bin: Freiberufler/in


Zurück zu ABAP® für Anfänger

  Aktuelle Beiträge   
gelöst Nachricht nach Beendigung der Verbuchung
vor 2 Tagen von ewx 2 Antw.
BCS sendet Mails immer als express?
vor 2 Tagen von Legxis 2 Antw.
Zuordnung in Grid (Screen)
vor 2 Tagen von HH_ABAP 0 Antw.
FBL3N ---> FB60
vor 2 Tagen von HH_ABAP 2 Antw.
Klasse zum lesen der Adressdaten
vor 2 Tagen von AdrianSchm 2 Antw.

  Ähnliche Beiträge beta
SELECT - Options & SELECT Abfrage
15.05.2007, 07:13 von Mavrix 2 Antw.
Select Options im Select
05.06.2015, 05:40 von ibo 3 Antw.
gelöst Select * from mit where in select-options
27.03.2018, 06:25 von a-dead-trousers 5 Antw.
select-options ... for
11.08.2005, 12:09 von ewx 2 Antw.
Select Options
24.01.2006, 15:53 von robin1at 2 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder