ALV-GRID: Zeilenweise eingabebereit

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
12 Beiträge • Seite 1 von 1
12 Beiträge Seite 1 von 1

ALV-GRID: Zeilenweise eingabebereit

Beitrag von vwaadenm (ForumUser / 63 / 0 / 0 ) »
Hallo,
wir möchten die Erfassung unserer Produktionsmeldungen vereinfachen und gleichzeitig absichern.
Zuerst ermittle ich die Fertigungsaufträge des vergangenen Werktages.
Diese werden dann, angereichert mit Zusatzdaten, in dem ALV-Grid vorgeschlagen. Jede Zeile hat also gefüllte Felder (grau) und Eingabefelder die der User füllen soll. Wenn der User eine Zeile vervollständigt hat, erscheint dieser Fertigungsauftrag beim nächsten Start des Reports nicht mehr.

Nun der Haken der das ganze für mich etwas tricky macht:

Sachbearbeiter 1 erfasst nur 4 der 10 möglichen Eingabefelder und sichert den Datensatz. Startet er den Report neu erscheint neben den unbearbeiteten auch der unvollständige Datensatz, allerdings sind die 4 Felder nun nicht mehr eingabebereit.

Anschliessend soll Abteilungsleiter 1 den Datensatz aufrufen können um die restlichen 6 Felder zu erweitern, danach ist der Datensatz weder für Sachbearbeiter 1 noch für den Abteilungsleiter zu sehen.

Frage: Wie kann man einzelne Felder einzelner Spalten nicht/eingabebereit machen?

Oder gibt es eine elegantere Lösung?

Danke und Gruss
vwaadenm

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


Re: ALV-GRID: Zeilenweise eingabebereit

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
vwaadenm hat geschrieben:Frage: Wie kann man einzelne Felder einzelner Spalten nicht/eingabebereit machen?
Das geht über ALV-Styles:

Code: Alles auswählen.

*Beispiel für ALV-OO, sollte auch für REUSE_ALV_GRID_DISPLAY_LVC gehen
* wies mit  REUSE_ALV_GRID_DISPLAY geht keine Ahnung

*--- Internal table holding list data
DATA BEGIN OF gt_list OCCURS 0 .
INCLUDE STRUCTURE SFLIGHT .    "Deine ALV-Daten
DATA cellstyles TYPE lvc_t_styl.     "Tabelle die die Editierbarkeit steuert
DATA END OF gt_list .


* Dem ALV mitteilen in welchem Feld die Infos zur Editierbarkeit stecken
ps_layout-stylefname = 'CELLSTYLES'


* Hier die tiefe Tabelle mit den Editierstyles füllen.
FORM adjust_editables USING pt_list LIKE gt_list[] .

DATA ls_listrow LIKE LINE OF pt_list .
DATA ls_stylerow TYPE lvc_s_styl .
DATA lt_styletab TYPE lvc_t_styl .

LOOP AT pt_list INTO ls_listrow .
IF ls_listrow-carrid = 'XY' .
ls_stylerow-fieldname = 'SEATSMAX' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled . "nicht Eingabebereit
APPEND ls_stylerow TO lt_styletab .
ENDIF .
IF ls_listrow-connid = '02' .
ls_stylerow-fieldname = 'PLANETYPE' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_enabled ."Eingabebereit
APPEND ls_stylerow TO lt_styletab .
ENDIF .

INSERT LINES OF lt_styletab INTO ls_listrow-cellstyles .
MODIFY pt_list FROM ls_listrow .
ENDLOOP .
ENDFORM .
Coding wurde zusammen kopiert, hoffe ist verständlich.
Wenn du nur einzelene Zellen einer Spalte nicht eingabebereit haben willst, setzt die ganze Spalte im feldkatalog auf EDITIERBAR und setzt auf Zellenebene auf nicht eingabebereit.
Gruß Hendrik

Beitrag von vwaadenm (ForumUser / 63 / 0 / 0 ) »
Hallo,
* Dem ALV mitteilen in welchem Feld die Infos zur Editierbarkeit stecken
ps_layout-stylefname = 'CELLSTYLES'
wie muss das deklariert werden? Im Type-Pool SLIS habe ich keine Definition gefunden
*Beispiel für ALV-OO, sollte auch für REUSE_ALV_GRID_DISPLAY_LVC gehen
* wies mit REUSE_ALV_GRID_DISPLAY geht keine Ahnung
bisher nutze ich letzteres, ich baue also um auf den FB *LVC

Den Rest muss ich dann mal in einem kleinen Testreport einbauen, um die Auswirkungen zu testen...

Danke schonmal!

Gruss vwaadenm

Beitrag von vwaadenm (ForumUser / 63 / 0 / 0 ) »
EDIT:
ich habe mir mal einen kleinen Testreport gebastelt.
Folgende Dinge verstehe ich noch nicht:
- wie muss ps_layout-stylefname deklariert sein?
Lösung: DATA ps_layout TYPE lvc_s_layo
- es wird gt_list deklariert, später mit pt_list gearbeitet - ich habe das nun auf gt_list angepasst, ist das korrekt?

- wieso fliegt der Report bei "INSERT LINES OF lt_styletab INTO ls_listrow-cellstyles" weg - neue Erkenntnis: Der Loop fliegt auch an anderen Stellen Weg, weil kein gültiger Cursor existiert :-(

Scheint ja nicht sooo einfach zu sein - ich hatte es mir jedenfalls leichter vorgestellt :-))

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
vwaadenm hat geschrieben:Scheint ja nicht sooo einfach zu sein - ich hatte es mir jedenfalls leichter vorgestellt :-))
So schwer ist es auch nicht, meine Vorlage war anscheinend zu wenig, hier mal ein Testreport:

Code: Alles auswählen.

REPORT ztest NO STANDARD PAGE HEADING.

TYPES: BEGIN OF t_data,
         text       TYPE c LENGTH 100,
         num        TYPE sy-tabix,
         cellstyles TYPE lvc_t_styl,
END   OF t_data.

DATA: gt_data TYPE TABLE OF t_data,
      gw_data TYPE          t_data.

DATA: gw_stylerow TYPE lvc_s_styl.

DATA: gs_layout TYPE lvc_s_layo,
      gt_fcat   TYPE LVC_T_FCAT,
      gw_fcat   TYPE LVC_S_FCAT.

DATA: g_rest TYPE i.
* SELSCREEN
PARAMETERS: p_text(80) TYPE c OBLIGATORY,
            p_anzahl    TYPE i OBLIGATORY DEFAULT 10.

START-OF-SELECTION.
* Daten lesen
  DO p_anzahl TIMES.
    gw_data-text = p_text.
    gw_data-num  = sy-tabix.
    APPEND gw_data TO gt_data.
  ENDDO.

* Stylestabelle füllen
  LOOP AT gt_data INTO gw_data.

*   Der Text ist nie eingabebereit
    gw_stylerow-fieldname = 'TEXT'.
    gw_stylerow-style     = cl_gui_alv_grid=>mc_style_disabled.
    INSERT gw_stylerow INTO TABLE gw_data-cellstyles.

*   Nur die Zellen eingabebreit machen, die glat durch 5 teilbar sind.
    gw_stylerow-fieldname = 'NUM'.
    g_rest = gw_data-num MOD 5.
    IF g_rest = 0.
      gw_stylerow-style     = cl_gui_alv_grid=>mc_style_enabled.
    ELSE.
      gw_stylerow-style     = cl_gui_alv_grid=>mc_style_disabled.
    ENDIF.
    INSERT gw_stylerow INTO TABLE gw_data-cellstyles.

*   Stylestabelle übernehmen
    MODIFY gt_data FROM gw_data.
  ENDLOOP.

* Layout über Styles informieren
  gs_layout-stylefname = 'CELLSTYLES'.

* Feldkatalog, sehr einfach
gw_fcat-fieldname = 'TEXT'.
APPEND gw_fcat TO gt_fcat.

gw_fcat-fieldname = 'NUM'.
gw_fcat-edit      = 'X'.
APPEND gw_fcat TO gt_fcat.

* ALV rufen
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
   EXPORTING
     is_layout_lvc                     = gs_layout
     IT_FIELDCAT_LVC                   = gt_fcat
    TABLES
      t_outtab                          = gt_data
   EXCEPTIONS
     program_error                     = 1
     OTHERS                            = 2.

* Schlechtes Fehlerhandling
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
Hoffe damit wirds klarer.
Gruß Hendrik

Beitrag von vwaadenm (ForumUser / 63 / 0 / 0 ) »
Hallo Hendrik,
guter Mann!

Jetzt ist der Groschen gefallen, die Umsetzung in meinen Report ist erfolgt und läuft wie geschmiert!

Vielen Dank nochmal!

Gruss
vwaadenm

Beitrag von Mr. ABAP (ForumUser / 97 / 0 / 0 ) »
Hallo Zusammen,

der Beitrag hat mir sehr geholfen.
Trotzdem hab ich noch ne Frage. Und zwar setze ich abhängig eines best. Wertes eine andere Zelle in meinem ALV eingabebereit. Dieses Feld hat jedoch auch noch eine F4-Hilfe, die trotz nicht-eingabebereitschaft funktioniert. Dann hab ich einfach mal versucht, die Tabelle 'gw_data-cellstyles' aus eurem Bsp. um einen 2. Eintrag zu erweitern. Funktioniert aber leider nicht.

Hat viell. von euch jemand Ahnung, warum die F4-Auswahl trotz nicht-eingabebereitschaft funktioniert bzw. wie ich das beheben kann???

PS: Verwende den OO-ALV.

Beitrag von john.duke (ForumUser / 7 / 0 / 0 ) »
Hallo zusammen,
bin beim stöbern im Forum auf diesen Beitrag und nachfolgende Frage gestoßen ...

Hallo Zusammen,

der Beitrag hat mir sehr geholfen.
Trotzdem hab ich noch ne Frage. Und zwar setze ich abhängig eines best. Wertes eine andere Zelle in meinem ALV eingabebereit. Dieses Feld hat jedoch auch noch eine F4-Hilfe, die trotz nicht-eingabebereitschaft funktioniert. Dann hab ich einfach mal versucht, die Tabelle 'gw_data-cellstyles' aus eurem Bsp. um einen 2. Eintrag zu erweitern. Funktioniert aber leider nicht.

Hat viell. von euch jemand Ahnung, warum die F4-Auswahl trotz nicht-eingabebereitschaft funktioniert bzw. wie ich das beheben kann???


... habe momentan das gleich Problem, hat da mittlerweile jemand eine Lösung gefunden?

Vielen Dank

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
john.duke hat geschrieben: Hat viell. von euch jemand Ahnung, warum die F4-Auswahl trotz nicht-eingabebereitschaft funktioniert bzw. wie ich das beheben kann???

... habe momentan das gleich Problem, hat da mittlerweile jemand eine Lösung gefunden?
Hatte das Problem zwar selber nocht nicht, aber dass sollte auch per ALV-Style lösbar sein. Das Atribute MC_STYLE_F4_NO aus der Klasse CL_GUI_ALV_GRID hört sich gut an.

Einfach die Styles addieren und die F4-Hilfe sollte ausgeschaltet sein:

Code: Alles auswählen.

gw_stylerow-style     = cl_gui_alv_grid=>mc_style_disabled +
                        cl_gui_alv_grid=>mc_style_f4_no. 

Gruß Hendrik

Beitrag von john.duke (ForumUser / 7 / 0 / 0 ) »
Supi, das ist es!!!
Danke

Beitrag von matthes (ForumUser / 64 / 0 / 0 ) »
Hallo,

bin ebenfalls über diesen Beitrag gestolpert. Hilft mir direkt weiter. Jetzt habe ich aber das Problem, dass ich den ALV-GRID als Datenerfassungsmaske benutzen soll, ausgehend von einer leeren Tabelle. Ich kann zwar mit einer Tabelle mit genügent leeren Einträgen starten, toll wäre aber die Möglichkeit, Zeilen gezielt einzufügen oder zu löschen.

Viele Grüße
Matthes

Beitrag von uh (Specialist / 158 / 0 / 1 ) »
Ohne hier alles gelesen zu haben, wie sieht es mit SET_READY_FOR_INPUT aus?

Grüße

Udo

Seite 1 von 1

Vergleichbare Themen

1
Antw.
1525
Views
ALV-Grid eingabebereit und Problem mit der Entertaste
von Gast » 06.11.2005 10:26 • Verfasst in ABAP Objects®
-1
Antw.
7
Views
ALV Grid nach Refresh nicht mehr eingabebereit
von Dorough » 15.11.2024 10:44 • Verfasst in Dialogprogrammierung
4
Antw.
26605
Views
Eine bestimmte Zelle in einem ALV Grid eingabebereit machen
von bechi » 22.04.2005 13:58 • Verfasst in ABAP Objects®
3
Antw.
6208
Views
ALV Markierungen zeilenweise deaktivieren
von Dele » 10.07.2012 15:23 • Verfasst in Tips + Tricks & FAQs
3
Antw.
2049
Views
Tabelle zeilenweise scrollen mit BI
von masterdog » 12.09.2007 12:35 • Verfasst in ABAP® für Anfänger

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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 13 Stunden von Bright4.5 1 / 269
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1908
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8511