WD ALV einzelne Felder zeilenweise sperren

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

WD ALV einzelne Felder zeilenweise sperren

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

erstmal frohes neues Jahr euch allen! :)

Nun zu meinem Problem.
In meiner WebDynpro möchte ich einzelne Felder sperren. Allerdings sind das nicht in jeder Zeile die gleichen Felder, dies varriert je nach Positionstyp.
Grundsätzlich kann ich Felder sperren, jedoch werden mir dann für jede Zeile die gleichen Felder gesperrt. Ich komm beim besten Willen einfach auf keine Idee, wie ich das hinbekomme.
Vielleicht hat ja einer von euch einen Einfall?

Hier mal mein Coding auszugsweise:

Code: Alles auswählen.

  DATA: lo_interfacecontroller TYPE REF TO iwci_salv_wd_table ,
        lv_value               TYPE REF TO cl_salv_wd_config_table,
        lt_columns             TYPE        salv_wd_t_column_ref,
        ls_columns             TYPE        salv_wd_s_column_ref,
        lo_input_field         TYPE REF TO cl_salv_wd_uie_input_field.

  lo_interfacecontroller = wd_this->wd_cpifc_cpu_alv( ).
  lv_value = lo_interfacecontroller->get_model( ).


  lv_value->if_salv_wd_table_settings~set_edit_mode( '99' ).
  lv_value->if_salv_wd_table_settings~set_read_only( abap_false ).

*   Get table columns
  lt_columns = lv_value->if_salv_wd_column_settings~get_columns( ).


* -------- zeilenweises Sperren von Feldern --------
*     Felder deaktivieren bei Dienstleistungen
  LOOP AT lt_columns INTO ls_columns.
    LOOP AT lt_mepo1211_alv INTO ls_mepo.
      TRY.
          lv_tryit = ls_mepo-pstyp.
          IF lv_tryit = 9.
            IF ls_columns-id = 'MENGE'
              OR ls_columns-id = 'MEINS'
              OR ls_columns-id = 'NETPR'
              OR ls_columns-id = 'MATNR'
              OR ls_columns-id = 'LGORT'.
*              CLEAR ls_columns.
*              CONTINUE.
*            ENDIF.
            CREATE OBJECT lo_input_field
              EXPORTING
                value_fieldname = ls_columns-id.
            lo_input_field->set_read_only_fieldname( 'READ_ONLY' ).
            ls_columns-r_column->set_cell_editor( lo_input_field ).
          ENDIF.
          ENDIF.
        CATCH cx_root.
*     Felder deaktivieren bei Leistungen
          IF ls_columns-id = 'WERKS'
            OR ls_columns-id = 'LGORT'.
            CREATE OBJECT lo_input_field
              EXPORTING
                value_fieldname = ls_columns-id.
            lo_input_field->set_read_only_fieldname( 'READ_ONLY' ).
            ls_columns-r_column->set_cell_editor( lo_input_field ).
          ELSEIF ls_columns-id = 'MENGE'
              OR ls_columns-id = 'MEINS'
              OR ls_columns-id = 'NETPR'
              OR ls_columns-id = 'MATNR'.
              CLEAR ls_columns.
              CONTINUE.
          ENDIF.
      ENDTRY.
    ENDLOOP.
  ENDLOOP.
Im Bild könnt ihr mal den betreffenden Ausschnitt meiner WD sehen. Dabei sollen beim Positionstyp Normal Die Felder: Material, LOrt, Bestellmenge, BME und Nettopreis eingabebereit sein. Bei Dienstleistung als Positionstyp soll es so gesperrt sein wie es ist.
Was mache ich falsch? Braucht ihr noch weitere Infos?
Ich hoffe auf eure Hilfe, denn ich komm absolut nicht weiter :(
Gruß,
der Matze

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


Re: WD ALV einzelne Felder zeilenweise sperren

Beitrag von a-dead-trousers (Top Expert / 4282 / 214 / 1141 ) »
hi!

Beim normalen ALV muss man dazu eine zusätzliche Spalte vom Typ LVC_T_STYL in die Datentabelle aufnehmen. Dabei handelt es sich wieder um eine Tabelle in der man je Feld (Spalte) der aktuellen Zeile einen vom Feldkatalog abweichenden Stil hinterlegen kann. Diese zusätzlich Spalte muss dann noch im Layout (LVC_S_LAYO) als STYLEFNAME eingetragen werden und schon kann man einzelne Zellen im Grid eingabebereit schalten oder nicht.

Ich weiß jetzt nicht genau wie das ganze im WD ALV abläuft, aber ich vermute eine ähnlich Art der Umsetzung.

Sonst würde ich noch vermuten, dass alles was mit COLUMN zu tun hat für deine Zwecke eher ungeeignet ist. Richtiger wäre nach Methoden zu suchen die mit CELL zu tun haben bzw. die über die aktuelle Zeile (ROW) auf die COLUMN zugreifen.

Bei dem Coding von dir machst du das ganze über das Model vom Table und dann loopst du über deine Datentabelle. Somit entscheidet die letzte Zeile deiner Datentabelle über die Editierbarkeit aller Spalten, weil du über das Model des Table keinen Zugrif auf die einzelnen Zeilen der Ausgabe hast und du im Endeffekt ein und dieselbe Spalte (LS_COLUMN) mit jedem Datensatz (LS_MEPO) deiner Datentabelle veränderst. Du brauchst aber soetwas wie das Model der Zeile um das gewünschte Verhalten zu realisieren.

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Seite 1 von 1

Vergleichbare Themen

4
Antw.
3397
Views
Table Control: Einzelne Zeilen sperren? Eilt etwas... :(
von Spaulding » 27.04.2005 12:56 • Verfasst in Dialogprogrammierung
4
Antw.
1809
Views
Einzelne Felder aus itab1 in itab2 übertragen
von Bright4.5 » 20.03.2020 14:26 • Verfasst in ABAP® für Anfänger
1
Antw.
7300
Views
Felder für Eingabe sperren
von phil1982 » 10.12.2007 11:30 • Verfasst in ABAP® für Anfänger
8
Antw.
5559
Views
ALV-Liste: Einzelne Summen-Felder (bzw. Zeilen) ausgeben
von S.D.E.F. » 12.12.2005 12:19 • Verfasst in ABAP® Core
11
Antw.
13743
Views
ALV-GRID: Zeilenweise eingabebereit
von vwaadenm » 15.05.2007 10:22 • Verfasst in ABAP® Core

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Fiori App aus dem Launchpad aufrufen
vor einer Stunde von Bright4.5 2 / 8
alv_grid aktualisieren
vor 3 Stunden von Egzon gelöst 4 / 80
SELECT CHAR16 in CHAR12-Feld
vor 12 Stunden von Shortcut IT 3 / 42

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

Fiori App aus dem Launchpad aufrufen
vor einer Stunde von Bright4.5 2 / 8
alv_grid aktualisieren
vor 3 Stunden von Egzon gelöst 4 / 80
SELECT CHAR16 in CHAR12-Feld
vor 12 Stunden von Shortcut IT 3 / 42

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Wochen von Lucyalison 1 / 134
Group Items auf einer Filterbar
vor 5 Wochen von Bright4.5 1 / 170