Reiterselektion für verschiedene Programme

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
13 Beiträge • Seite 1 von 1
13 Beiträge Seite 1 von 1

Reiterselektion für verschiedene Programme

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
Hi,

ich möchte gern ein "übergeordnetes" Selektionsbild schaffen, vielleicht per Reiter Auswahl..
Ich habe Programme zur Ermittlung von technischen Namen, sowie Vorschlag für den nächstmöglichen Namen. Dieses Programm habe ich für verschiedene Objekte und zwar InfoProvider wie DSO und InfoCube oder InfoObjekte wie Merkmale und Kennzahlen.
Ich möchte nun, dass der User zunächst auswählt ob es ein InfoProvider oder ein InfoObjekt ist und dann erst die darauffolgenden Programme ausführen kann?

Wie schaffe ich so etwas?

Grüße Patryk

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Reiterselektion für verschiedene Programme

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Hey,

erinnerst du dich an die Möglichkeit mit MODIF ID zu arbeiten? Bietet sich in meinen Augen absolut an. du erstellst an oberster Stelle deines Selektionsbildes die Auswahl und steuerst die anderen Selektionsfelder dann über MODIF ID als sicht- oder unsichtbar.
Ändern sich denn auch die Selektionsparameter oder oder bleiben das immer die gleichen?
Gruß,
der Matze

Re: Reiterselektion für verschiedene Programme

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
okay danke schonmal habe dass jetzt mal so probiert, dass ich 3 Reiter habe:
1 Reiter = InfoProvider, hier will ich die Objekte DSO und InfoCube anzeigen lassen..das klappt leider nicht
2 Reiter Merkmal klappt wunderbar
3 Reiter Kennzahlen klappt auch super

Ich weiss nicht wie ich es hinbekomme dass mein erstes Programm mit integriert werden kann...hier mal der bisherige Code:

Code: Alles auswählen.

SELECTION-SCREEN BEGIN OF SCREEN 1001 AS SUBSCREEN.
PARAMETERS : objekt TYPE char30 AS LISTBOX VISIBLE LENGTH 30 USER-COMMAND dummy,
             layer TYPE char30  AS LISTBOX VISIBLE LENGTH 30  MODIF ID ID3 USER-COMMAND dummy  ,
             modul TYPE char30  AS LISTBOX VISIBLE LENGTH 30 MODIF ID ID4 USER-COMMAND dummy  ,
             gruppe(30)  AS LISTBOX VISIBLE LENGTH 30 MODIF ID ID5,
             last_obj as checkbox,
             next_obj as CHECKBOX.
SELECTION-SCREEN END OF SCREEN 1001.

SELECTION-SCREEN BEGIN OF SCREEN 1002 AS SUBSCREEN.
PARAMETERS : merkmal TYPE char30  AS LISTBOX VISIBLE LENGTH 40 USER-COMMAND dummy  ,
             mrkmlart TYPE char30  AS LISTBOX VISIBLE LENGTH 40 MODIF ID ID2,
             datelemt TYPE datenelement .
SELECTION-SCREEN INCLUDE PARAMETERS: last_obj,
                                     next_obj.            
SELECTION-SCREEN END OF SCREEN 1002.

SELECTION-SCREEN BEGIN OF SCREEN 1003 AS SUBSCREEN.
PARAMETERS : kennzahl TYPE char30  AS LISTBOX VISIBLE LENGTH 40 USER-COMMAND dummy  ,
             knzhlart TYPE char30  AS LISTBOX VISIBLE LENGTH 40 MODIF ID ID1  .
SELECTION-SCREEN INCLUDE PARAMETERS: datelemt,
                                     last_obj,
                                     next_obj.
SELECTION-SCREEN END OF SCREEN 1003.

SELECTION-SCREEN:
  BEGIN OF TABBED BLOCK abc FOR 5 LINES,
  TAB (30) t_eins USER-COMMAND t_eins DEFAULT SCREEN 1001,
  TAB (30) t_zwei USER-COMMAND t_zwei DEFAULT SCREEN 1002,
  TAB (30) t_drei USER-COMMAND t_drei DEFAULT SCREEN 1003,  
  END OF BLOCK abc.

INITIALIZATION.

  t_eins = 'InfoProvider'.
  t_zwei = 'Merkmale'.
  t_drei = 'Kennzahlen'.

  IMPORT abc FROM MEMORY ID 'ABC_ACTIVE'.

param = 'objekt'.
  value-key = 'O01'.
  value-text = 'Objekt 1 DSO'.
  APPEND value to values.
  value-key = 'O02'.
  value-text = 'Objekt 2 InfoCube'.
  APPEND value to values.

  Call FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id     = param
      values = values.

  Refresh values.
  
  param = 'layer'.
  value-key = 'L01'.
  value-text = 'Layer 1 Extraktion'.
  APPEND value TO values.
  value-key = 'L02'.
  value-text = 'Layer 3 Harmonisierung'.
  APPEND value TO values.
  value-key = 'L03'.
  value-text = 'Layer 5 Datamart'.
  APPEND value TO values.
  value-key = 'L04'.
  value-text = 'Layer 7 Präsentation'.
  APPEND value TO values.

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id     = param
      values = values.

  Refresh values.
  
   param = 'modul'.
  value-key = 'M01'.
  value-text = 'Modul CO'.
  APPEND value TO values.
  value-key = 'M02'.
  value-text = 'Modul CP'.
  APPEND value TO values.
  value-key = 'M03'.
  value-text = 'Modul CS'.
  APPEND value TO values.
  value-key = 'M04'.
  value-text = 'Modul DP'.
  APPEND value TO values.
  value-key = 'M05'.
  value-text = 'Modul FI'.
  APPEND value TO values.
  value-key = 'M06'.
  value-text = 'Modul HR'.
  APPEND value TO values.
  value-key = 'M07'.
  value-text = 'Modul LE'.
  APPEND value TO values.
  value-key = 'M07'.
  value-text = 'Modul MD'.
  APPEND value TO values.
  value-key = 'M08'.
  value-text = 'Modul MM'.
  APPEND value TO values.
  value-key = 'M09'.
  value-text = 'Modul PM'.
  APPEND value TO values.
  value-key = 'M10'.
  value-text = 'Modul PP'.
  APPEND value TO values.
  value-key = 'M11'.
  value-text = 'Modul PS'.
  APPEND value TO values.
  value-key = 'M12'.
  value-text = 'Modul QM'.
  APPEND value TO values.
  value-key = 'M13'.
  value-text = 'Modul SD'.
  APPEND value TO values.
  value-key = 'M14'.
  value-text = 'Modul SN'.
  APPEND value TO values.
  value-key = 'M15'.
  value-text = 'Modul TD'.
  APPEND value TO values.

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id     = param
      values = values.

  Refresh values.
  
  param = 'gruppe'.
  value-key = 'G01'.
  value-text = 'Gruppe SL'.
  APPEND value TO values.
  value-key = 'G02'.
  value-text = 'Gruppe BI'.
  APPEND value TO values.
  value-key = 'G03'.
  value-text = 'Gruppe SH'.
  APPEND value TO values.
  value-key = 'G04'.
  value-text = 'Gruppe PU'.
  APPEND value TO values.
  value-key = 'G05'.
  value-text = 'Gruppe IM'.
  APPEND value TO values.
  value-key = 'G06'.
  value-text = 'Gruppe GL'.
  APPEND value TO values.
  value-key = 'G07'.
  value-text = 'Gruppe AP'.
  APPEND value TO values.
  value-key = 'G08'.
  value-text = 'Gruppe AR'.
  APPEND value TO values.
  value-key = 'G09'.
  value-text = 'Gruppe OM'.
  APPEND value TO values.
  value-key = 'G09'.
  value-text = 'Gruppe PC'.
  APPEND value TO values.
  value-key = 'G10'.
  value-text = 'Gruppe 0G'.
  APPEND value TO values.
  value-key = 'G11'.
  value-text = 'Gruppe PA'.
  APPEND value TO values.
  value-key = 'G12'.
  value-text = 'Gruppe PT'.
  APPEND value TO values.
  value-key = 'G13'.
  value-text = 'Gruppe PY'.
  APPEND value TO values.
  value-key = 'G14'.
  value-text = 'Gruppe TA'.
  APPEND value TO values.

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id     = param
      values = values.
  
  Refresh values.
  
  param = 'kennzahl'.
  value-key = 'K01'.
  value-text = 'Betragskennzahl Buchstabe A'.
  APPEND value TO values.
  value-key = 'K02'.
  value-text = 'Mengenkennzahl Buchstabe Q'.
  APPEND value TO values.
  value-key = 'K03'.
  value-text = 'Zahlenkennzahl Buchstabe F'.
  APPEND value TO values.
  value-key = 'K04'.
  value-text = 'Ganzzahlenkennzahl Buchstabe I'.
  APPEND value TO values.
  value-key = 'K05'.
  value-text = 'Datumskennzahl Buchstabe D'.
  APPEND value TO values.
  value-key = 'K06'.
  value-text = 'Zeitkennzahl Buchstabe T'.
  APPEND value TO values.

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id     = param
      values = values.

  Refresh values.

  param = 'merkmal'.
  value-key = 'M01'.
  value-text = 'Standardmerkmal Buchstabe C'.
  APPEND value TO values.
  value-key = 'M02'.
  value-text = 'Mengeneinheitsmerkmal Buchstabe U'.
  APPEND value TO values.
  value-key = 'M03'.
  value-text = 'Währungsmerkmal Buchstabe V'.
  APPEND value TO values.

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id     = param
      values = values.

  Refresh values.

  param = 'knzhlart'.
  value-key = 'KA01'.
  value-text = 'Flussgröße existiert bereits im ECC Ziffer 1'.
  APPEND value TO values.
  value-key = 'KA02'.
  value-text = 'Bestandszugang existiert bereits im ECC Ziffer 2'.
  APPEND value TO values.
  value-key = 'KA03'.
  value-text = 'Bestandsabgang existiert bereits im ECC Ziffer 3'.
  APPEND value TO values.
  value-key = 'KA04'.
  value-text = 'Bestandsgröße existiert bereits im ECC Ziffer 4'.
  APPEND value TO values.
  value-key = 'KA06'.
  value-text = 'Flussgröße existiert nicht im ECC, wird erst im BI definiert Ziffer 6'.
  APPEND value TO values.
  value-key = 'KA07'.
  value-text = 'Bestandszugang existiert nicht im ECC, wird erst im BI definiert Ziffer 7'.
  APPEND value TO values.
  value-key = 'KA08'.
  value-text = 'Bestandsabgang existiert nicht im ECC, wird erst im BI definiert Ziffer 8'.
  APPEND value TO values.
  value-key = 'KA09'.
  value-text = 'Bestandsgröße existiert nicht im ECC, wird erst im BI definiert Ziffer 9'.
  APPEND value TO values.

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id     = param
      values = values.

  Refresh values.

  param = 'mrkmlart'.
  value-key = 'MA01'.
  value-text = 'In ECC System bereits vorhanden Ziffer 0'.
  APPEND value TO values.
  value-key = 'MA02'.
  value-text = 'In ECC System noch nicht vorhanden Ziffer 5'.
  APPEND value TO values.

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id     = param
      values = values.

AT SELECTION-SCREEN.
  IF sy-ucomm = 'T_EINS'.
    abc-prog      = sy-cprog.
    abc-dynnr     = 1001.
    abc-activetab = 'T_EINS'.
  ENDIF.

AT SELECTION-SCREEN OUTPUT.

  LOOP AT SCREEN.
    IF screen-group1 EQ 'ID1'.
      IF NOT kennzahl IS INITIAL.
        screen-input  = 1.
      ELSE.
        screen-input  = 0.
      ENDIF.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.

  LOOP AT SCREEN.
    If screen-group1 EQ 'ID2'.
      If NOT merkmal is INITIAL.
        screen-input = 1.
      Else.
        screen-input = 0.
      ENDIF.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.
  
LOOP AT SCREEN.
    IF screen-group1 EQ 'ID3'.
      IF NOT objekt IS INITIAL.
        screen-input  = 1.
      ELSE.
        screen-input  = 0.
      ENDIF.
      MODIFY SCREEN.
    ENDIF.
    IF screen-group1 EQ 'ID4'.
      IF NOT objekt IS INITIAL AND
   NOT layer IS INITIAL .
        screen-input  = 1.
      ELSE.
        screen-input  = 0.
      ENDIF.

      MODIFY SCREEN.
    ENDIF.
    IF screen-group1 EQ 'ID5'.
      IF NOT objekt IS INITIAL AND
   NOT layer IS INITIAL and not modul is INITIAL .
        screen-input  = 1.
      ELSE.
        screen-input  = 0.
      ENDIF.
      MODIFY SCREEN.
    ENDIF.

  ENDLOOP.

START-OF-SELECTION.

If NOT screen = '1001' .
  PERFORM infos.
ENDIF.
  SORT l_t_rsdiobj BY iobjnm+7(2) DESCENDING.

  CASE kennzahl.
    WHEN 'K01'.
      DELETE l_t_rsdiobj WHERE iobjnm(1) <> 'A' .
    WHEN 'K02'.
      DELETE l_t_rsdiobj WHERE iobjnm(1) <> 'Q'.
    WHEN 'K03'.
      DELETE l_t_rsdiobj WHERE iobjnm(1) <> 'F' .
    WHEN 'K04'.
      DELETE l_t_rsdiobj WHERE iobjnm(1) <> 'I' .
    WHEN 'K05'.
      DELETE l_t_rsdiobj WHERE iobjnm(1) <> 'D' .
    WHEN 'K06'.
      DELETE l_t_rsdiobj WHERE iobjnm(1) <> 'T' .
  ENDCASE.

  CASE merkmal.
    WHEN 'M01'.
      DELETE l_t_rsdiobj WHERE iobjnm(1) <> 'C' .
    WHEN 'M02'.
      DELETE l_t_rsdiobj WHERE iobjnm(1) <> 'U'.
    WHEN 'M03'.
      DELETE l_t_rsdiobj WHERE iobjnm(1) <> 'V' .
  ENDCASE.

  CASE knzhlart.
    WHEN 'KA01' .
      DELETE l_t_rsdiobj Where iobjnm+1(1) <> '1'.
    WHEN 'KA02' .
      DELETE l_t_rsdiobj Where iobjnm+1(1) <> '2'.
    WHEN 'KA03' .
      DELETE l_t_rsdiobj Where iobjnm+1(1) <> '3'.
    WHEN 'KA04' .
      DELETE l_t_rsdiobj Where iobjnm+1(1) <> '4'.
    WHEN 'KA06' .
      DELETE l_t_rsdiobj Where iobjnm+1(1) <> '6'.
    WHEN 'KA07' .
      DELETE l_t_rsdiobj Where iobjnm+1(1) <> '7'.
    WHEN 'KA08' .
      DELETE l_t_rsdiobj Where iobjnm+1(1) <> '8'.
    WHEN 'KA09' .
      DELETE l_t_rsdiobj Where iobjnm+1(1) <> '9'.
  ENDCASE.

  CASE mrkmlart.
    WHEN 'MA01' .
      DELETE l_t_rsdiobj Where iobjnm+1(1) <> '0'.
    WHEN 'MA02' .
      DELETE l_t_rsdiobj Where iobjnm+1(1) <> '5'.
  ENDCASE.

  CASE datelemt.
    WHEN ' '.
    WHEN OTHERS.
      Delete l_t_rsdiobj Where iobjnm+2(5) <> datelemt.
  ENDCASE.


  If last_obj = 'X' and next_obj <> 'X'.
    PERFORM lastobj.
  ELSEIF  next_obj = 'X' and last_obj <> 'X'.
    PERFORM nextobj.
  ELSEIF last_obj = 'X' and next_obj = 'X'.
    PERFORM bothobj.
  ELSEIF last_obj <> 'X' and next_obj <> 'X'.
    PERFORM allobj.
  Endif.


  lv_strlen = STRLEN( datelemt ).

  IF lv_strlen = 0 OR lv_strlen = 5.
  ELSE.
    MESSAGE 'Geben Sie ein 5 stelliges datelemt an.' TYPE 'S' DISPLAY LIKE 'E'.
    EXIT.
  ENDIF.

START-OF-SELECTION.
  EXPORT abc TO MEMORY ID 'ABC_ACTIVE'.
Und das hier ist der Code für die Infoprovider den ich noch i-wie integrieren muss...

Code: Alles auswählen.

START-OF-SELECTION.

if objekt = 'O01'.
     PERFORM dso.
PERFORM ODSO.
if last_obj = 'X' and next_obj <> 'X'.
    PERFORM lastobj_dso.
  ELSEIF  next_obj = 'X' and last_obj <> 'X'.
    PERFORM nextobj_dso.
  ELSEIF last_obj = 'X' and next_obj = 'X'.
    PERFORM bothobj_dso.
  ELSEIF last_obj <> 'X' and next_obj <> 'X'.
    PERFORM allausg_dso.
  Endif.
ENDIF.

if objekt = 'O02'.
    PERFORM cube.
PERFORM InfoCube.
if last_obj = 'X' and next_obj <> 'X'.
    PERFORM lastobj_cube.
  ELSEIF  next_obj = 'X' and last_obj <> 'X'.
    PERFORM nextobj_cube.
  ELSEIF last_obj = 'X' and next_obj = 'X'.
    PERFORM bothobj_cube.
  ELSEIF last_obj <> 'X' and next_obj <> 'X'.
    PERFORM allausg_cube.
  Endif.

Re: Reiterselektion für verschiedene Programme

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
kann man eine Bedingung für einen bestimmten Reiter stellen, z.B.
If Reiter1
führe Programm für DSO und InfoCube aus
Endif...

Re: Reiterselektion für verschiedene Programme

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
Habe es so gelöst ist dass so richtig?
Bedingung ist nicht vom Reiter abhängig sondern von der Objekt auswahl, heiß ich kann Objekt DSO wählen oder Objekt InfoCube wählen oder eben weder das eine noch das andere dann führt er mir die anderen Objekte also Merkmal und kennzahl aus ...

Edit: sorry code vergessen:

Code: Alles auswählen.

if objekt = 'O01'.
    PERFORM dso.
    PERFORM ODSO.
    if last_obj = 'X' and next_obj <> 'X'.
      PERFORM lastobj_dso.
    ELSEIF  next_obj = 'X' and last_obj <> 'X'.
      PERFORM nextobj_dso.
    ELSEIF last_obj = 'X' and next_obj = 'X'.
      PERFORM bothobj_dso.
    ELSEIF last_obj <> 'X' and next_obj <> 'X'.
      PERFORM allausg_dso.
    Endif.
  ENDIF.

  if objekt = 'O02'.
    PERFORM cube.
    PERFORM InfoCube.
    if last_obj = 'X' and next_obj <> 'X'.
      PERFORM lastobj_cube.
    ELSEIF  next_obj = 'X' and last_obj <> 'X'.
      PERFORM nextobj_cube.
    ELSEIF last_obj = 'X' and next_obj = 'X'.
      PERFORM bothobj_cube.
    ELSEIF last_obj <> 'X' and next_obj <> 'X'.
      PERFORM allausg_cube.
    Endif.
  ENDIF.

if not objekt = 'O01' or objekt = 'O02'.
  PERFORM infos.

  SORT l_t_rsdiobj BY iobjnm+7(2) DESCENDING.

  CASE kennzahl.
    WHEN 'K01'.
      DELETE l_t_rsdiobj WHERE iobjnm(1) <> 'A' .
    WHEN 'K02'.
      DELETE l_t_rsdiobj WHERE iobjnm(1) <> 'Q'.
    WHEN 'K03'.
      DELETE l_t_rsdiobj WHERE iobjnm(1) <> 'F' .
    WHEN 'K04'.
      DELETE l_t_rsdiobj WHERE iobjnm(1) <> 'I' .
    WHEN 'K05'.
      DELETE l_t_rsdiobj WHERE iobjnm(1) <> 'D' .
    WHEN 'K06'.
      DELETE l_t_rsdiobj WHERE iobjnm(1) <> 'T' .
  ENDCASE.

  CASE merkmal.
    WHEN 'M01'.
      DELETE l_t_rsdiobj WHERE iobjnm(1) <> 'C' .
    WHEN 'M02'.
      DELETE l_t_rsdiobj WHERE iobjnm(1) <> 'U'.
    WHEN 'M03'.
      DELETE l_t_rsdiobj WHERE iobjnm(1) <> 'V' .
  ENDCASE.

  CASE knzhlart.
    WHEN 'KA01' .
      DELETE l_t_rsdiobj Where iobjnm+1(1) <> '1'.
    WHEN 'KA02' .
      DELETE l_t_rsdiobj Where iobjnm+1(1) <> '2'.
    WHEN 'KA03' .
      DELETE l_t_rsdiobj Where iobjnm+1(1) <> '3'.
    WHEN 'KA04' .
      DELETE l_t_rsdiobj Where iobjnm+1(1) <> '4'.
    WHEN 'KA06' .
      DELETE l_t_rsdiobj Where iobjnm+1(1) <> '6'.
    WHEN 'KA07' .
      DELETE l_t_rsdiobj Where iobjnm+1(1) <> '7'.
    WHEN 'KA08' .
      DELETE l_t_rsdiobj Where iobjnm+1(1) <> '8'.
    WHEN 'KA09' .
      DELETE l_t_rsdiobj Where iobjnm+1(1) <> '9'.
  ENDCASE.

  CASE mrkmlart.
    WHEN 'MA01' .
      DELETE l_t_rsdiobj Where iobjnm+1(1) <> '0'.
    WHEN 'MA02' .
      DELETE l_t_rsdiobj Where iobjnm+1(1) <> '5'.
  ENDCASE.

  CASE datelemt.
    WHEN ' '.
    WHEN OTHERS.
      Delete l_t_rsdiobj Where iobjnm+2(5) <> datelemt.
  ENDCASE.


  If last_obj = 'X' and next_obj <> 'X'.
    PERFORM lastobj.
  ELSEIF  next_obj = 'X' and last_obj <> 'X'.
    PERFORM nextobj.
  ELSEIF last_obj = 'X' and next_obj = 'X'.
    PERFORM bothobj.
  ELSEIF last_obj <> 'X' and next_obj <> 'X'.
    PERFORM allobj.
  Endif.


  lv_strlen = STRLEN( datelemt ).

  IF lv_strlen = 0 OR lv_strlen = 5.
  ELSE.
    MESSAGE 'Geben Sie ein 5 stelliges datelemt an.' TYPE 'S' DISPLAY LIKE 'E'.
    EXIT.
  ENDIF.

ENDIF.

Re: Reiterselektion für verschiedene Programme

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Funktioniert alles wie gewünscht? dann wirds wohl richtig sein.

Paar Schönheitskorrekturen könnte man noch machen, aber schön, dass du selbst eine Lösung entwickelt hast. Du machst Fortschritte! :)
Gruß,
der Matze

Re: Reiterselektion für verschiedene Programme

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
Eine Frage hätte ich aber noch und zwar wie kann man dafür sorgen, dass nur ein Reiter auswählbar ist oder nur der gültig ist bei dem zuletzt Eingaben gemacht worden sind?

Re: Reiterselektion für verschiedene Programme

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
geändert, denn hier stand blödsinn! :D
Zuletzt geändert von Thanatos82 am 21.05.2013 16:00, insgesamt 1-mal geändert.
Gruß,
der Matze

Re: Reiterselektion für verschiedene Programme

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
hmm hast du ein Beispiel? Beziehen sich schon aufeinander...

Re: Reiterselektion für verschiedene Programme

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Vergiss was ich gesagt hab... MODIF ID kann man nur auf Parameter, nicht aber auf Screens setzen. :x das kommt davon wenn man selbst grad im WebDynpro unterweg is, da funktioniert das nämlich in ähnlicher Weise.

Sorry, da kann ich dir dann auch grad nicht wirklich weiterhelfen.
Gruß,
der Matze

Re: Reiterselektion für verschiedene Programme

Beitrag von patlau (Specialist / 126 / 11 / 0 ) »
kein Problem, wirklich keine Idee, das ist das letzte was ich noch gern an meinem Programm schaffen würde..

Re: Reiterselektion für verschiedene Programme

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Hi,

ne idee hätt ich schon, aber die ist etwas komplizierter. und ich weiß nicht ob du dann wirklich verstehen würdest, was da gemacht wird. es bringt ja nix dir hier coding zu liefern und du übernimmst das ohne zu verstehen.
wie bewandert bist du denn im englischen? im SCN Forum von SAP gibts meiner Meinung nach auch immer gute Threads die weiterhelfen.
Gruß,
der Matze

Re: Reiterselektion für verschiedene Programme

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
patlau hat geschrieben:Eine Frage hätte ich aber noch und zwar wie kann man dafür sorgen, dass nur ein Reiter auswählbar ist oder nur der gültig ist bei dem zuletzt Eingaben gemacht worden sind?
So ganz klar ist mir deine Anforderung noch nicht:

Der User wählt eine Verarbeitung per Listbox und bekommt dann die notwendigen Parameter die er ausfüllen muss.
Ist das so richtig?

Du hast ja schon hier mit: http://www.tricktresor.de/content/index ... =47&aID=28 die Reiter realisiert. Aber die Reiter können auch unabhängig von der Listbox gewählt werden, was du nicht willst.
Hoffe ist ebenfalls richtig.

Ich würde so etwas eher nach diesem http://www.tricktresor.de/content/index ... D=47&aID=4 Prinzip realisieren. Anstatt der Pushbuttons dann eben die Listbox, der Rest muss dann im AT SELECTION SCREEN ON OUTPUT im LOOP AT SCREEN aus- bzw eingeblendet werden.

Wenn es aber unbedingt Reiter sein sollen, dann entweder so:

Code: Alles auswählen.

REPORT  ztest1.

TYPE-POOLS vrm.
DATA: gv_param  TYPE vrm_id,
      gt_values TYPE vrm_values,
      gs_value  TYPE vrm_value.

* Definition der einzelnen Masken *
SELECTION-SCREEN BEGIN OF SCREEN 1001 AS SUBSCREEN.
PARAMETERS: p_eins(10).
SELECT-OPTIONS: s_eins FOR sy-uname.
SELECTION-SCREEN END OF SCREEN 1001.

SELECTION-SCREEN BEGIN OF SCREEN 1002 AS SUBSCREEN.
PARAMETERS: p_zwei(10).
SELECT-OPTIONS: s_zwei FOR sy-datum.
SELECTION-SCREEN END OF SCREEN 1002.

SELECTION-SCREEN BEGIN OF SCREEN 1003 AS SUBSCREEN.
SELECTION-SCREEN END OF SCREEN 1003.

* Definition der TabStrip-Maske *
PARAMETERS: p_choice TYPE n AS LISTBOX VISIBLE LENGTH 10 USER-COMMAND lstb.
SELECTION-SCREEN:

  BEGIN OF TABBED BLOCK abc FOR 5 LINES,
  TAB (30) tab USER-COMMAND tab DEFAULT SCREEN 1003,
  END OF BLOCK abc.

INITIALIZATION.
* Bezeichnung der Reiter *
  tab = 'leerer Screen'.

* Listbox füllen
  gv_param = 'P_CHOICE'.
  gs_value-key = '1'.
  gs_value-text = '1. Screen'.
  APPEND gs_value TO gt_values. CLEAR gs_value.

  gs_value-key = '2'.
  gs_value-text = '2. Screen'.
  APPEND gs_value TO gt_values. CLEAR gs_value.

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id     = gv_param
      values = gt_values.

* TabStrip je nach Listbox setzen
AT SELECTION-SCREEN.
* User hat neu gewählt, also
  IF sy-ucomm = 'LSTB'.
    CASE p_choice.
      WHEN 1.
        abc-dynnr = 1001.  "ersten Screen setzten
        tab = '1. Screen'.
      WHEN 2.
        abc-dynnr = 1002.  "zweiten Screen setzten
        tab = '2. Screen'.
      WHEN OTHERS. "keine Auswahl
        abc-dynnr = 1003.  "Leeren Screen setzten
        tab = 'leerer Screen'.
    ENDCASE.
  ENDIF.
Wobei man sich dann fragt was der Reiter dann noch soll, oder aber man bevormundet den User und übersteuert seine Aktionen:

Code: Alles auswählen.

REPORT  ztest.

TYPE-POOLS vrm.
DATA: gv_param  TYPE vrm_id,
      gt_values TYPE vrm_values,
      gs_value  TYPE vrm_value.

* Definition der einzelnen Masken *
SELECTION-SCREEN BEGIN OF SCREEN 1001 AS SUBSCREEN.
PARAMETERS: p_eins(10).
SELECT-OPTIONS: s_eins FOR sy-uname.
SELECTION-SCREEN END OF SCREEN 1001.

SELECTION-SCREEN BEGIN OF SCREEN 1002 AS SUBSCREEN.
PARAMETERS: p_zwei(10).
SELECT-OPTIONS: s_zwei FOR sy-datum.
SELECTION-SCREEN END OF SCREEN 1002.

SELECTION-SCREEN BEGIN OF SCREEN 1003 AS SUBSCREEN.
SELECTION-SCREEN END OF SCREEN 1003.

* Definition der TabStrip-Maske *
PARAMETERS: p_choice TYPE n AS LISTBOX VISIBLE LENGTH 10 USER-COMMAND lstb.
SELECTION-SCREEN:

  BEGIN OF TABBED BLOCK abc FOR 5 LINES,
  TAB (30) tab1 USER-COMMAND tab1 DEFAULT SCREEN 1001,
  TAB (30) tab2 USER-COMMAND tab2 DEFAULT SCREEN 1002,
  TAB (30) tab3 USER-COMMAND tab3 DEFAULT SCREEN 1003,
  END OF BLOCK abc.

INITIALIZATION.
* Bezeichnung der Reiter *
  tab1 = '1. Screen'.
  tab2 = '2. Screen'.
  tab3 = 'leerer Screen'.

* StartScreen festlegen
  abc-dynnr     = '1003'.
  abc-activetab = 'TAB3'.

* Listbox füllen
  gv_param = 'P_CHOICE'.
  gs_value-key = '1'.
  gs_value-text = '1. Screen'.
  APPEND gs_value TO gt_values. CLEAR gs_value.

  gs_value-key = '2'.
  gs_value-text = '2. Screen'.
  APPEND gs_value TO gt_values. CLEAR gs_value.

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id     = gv_param
      values = gt_values.

* TabStrip je nach Listbox setzen
AT SELECTION-SCREEN.
* User hat neu gewählt, also
  IF sy-ucomm = 'LSTB'.
*   UserCommand wird nur als Trigger für PBO benutzt, setzten des aktiven Reiters in AT SELECTION-SCREEN OUTPUT
  ENDIF.

* User darf den Reiter nicht wählen:
  IF sy-ucomm = 'TAB1' OR sy-ucomm = 'TAB2' OR sy-ucomm = 'TAB3'.
*   Info raus
    MESSAGE 'Bitte Reiter über Listbox auswählen' TYPE 'S'.

*   setzten des aktiven Reiters in AT SELECTION-SCREEN OUTPUT
  ENDIF.

AT SELECTION-SCREEN OUTPUT.
*   Welcher TabReiter soll laut Listbox aktiv sein?
    CASE p_choice.
      WHEN 1.
        abc-dynnr     = 1001.  "ersten Screen setzten
        abc-activetab = 'TAB1'.
      WHEN 2.
        abc-dynnr = 1002.  "zweiten Screen setzten
        abc-activetab = 'TAB2'.
      WHEN OTHERS. "keine Auswahl
        abc-dynnr = 1003.  "Leeren Screen setzten
        abc-activetab = 'TAB3'.
    ENDCASE.
Gruß Hendrik

Seite 1 von 1

Vergleichbare Themen

3
Antw.
2196
Views
Verschiedene Zeichenfolgen als Separator
von ABAP_User » 18.05.2011 15:24 • Verfasst in ABAP® für Anfänger
5
Antw.
2227
Views
CL_SALV_TREE + verschiedene Datenzeilen
von jensschladitz » 28.11.2012 10:30 • Verfasst in ABAP® Core
2
Antw.
461
Views
Testdaten für verschiedene Module
von kaim77 » 12.11.2019 18:21 • Verfasst in ABAP® für Anfänger
2
Antw.
978
Views
Verschiedene SALVs, wie macht man das?
von Mykola » 21.12.2017 14:06 • Verfasst in ABAP® Core

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Eclipse - warum/wann verwendet ihr es [nicht]
vor 55 Minuten von tar 21 / 1383
Dialog-Container mit Toolbar/Status
vor 3 Stunden von DeathAndPain gelöst 22 / 2789
Daten an Tabelle binden
vor 8 Stunden von Lukas Sanders 2 / 868
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 423

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Eclipse - warum/wann verwendet ihr es [nicht]
vor 55 Minuten von tar 21 / 1383
Dialog-Container mit Toolbar/Status
vor 3 Stunden von DeathAndPain gelöst 22 / 2789
Daten an Tabelle binden
vor 8 Stunden von Lukas Sanders 2 / 868
Zeilenumbrüche ersetzen
vor 2 Tagen von ralf.wenzel 6 / 423

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2459
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9045