You are on page 1of 5

I denne opplæringen vil jeg vise hvordan du aktiverer bare de spesifikke cellene i et rutenett

som kan redigeres.

Først skal jeg forberede noen demonstrasjonsdata. Det vil være en liste over materialer og
deres vedlikeholdsstatus. Hvis status er satt til 'A' ønsker vi å deaktivere redigering av status i
rutenettet.

MATNR (type MATNR, primærnøkkel) PSTAT (type PSTAT_D)

123456 K

654321 E

567890 D

876543 B

900 000 A

Nå lager vi en funksjonsgruppe med skjerm (dvs. 0200) der vi tegner ALV-rutenettet vårt.

Lag en egendefinert beholder i redigeringsprogrammet for skjermoppsett og navngi den, for


eksempel GO_GRID_CONTAINER.

Lag også en tilpasset PF-STATUS med to funksjoner: OPPDATERING og OPPDATERING

Flytlogikken for skjermen vil være enkel:

PROSESS FØR UTGANG.

MODUL pbo_0200.

PROSESS ETTER INNGANG.

MODULE pai_0200.

PBO_0200-modulen brukes til å samle data, lage feltkatalog og vise ALV. Her følger koden

MODUL pbo_0200 UTGANG.

DATA:

ls_layout TYPE lvc_s_layo,

ls_variant TYPE disvariant.

FELTSYMBOLER:

<fs_fcat> TYPE lvc_s_fcat.

* I denne brukerstatusen lager vi to funksjoner:

* OPPDATERING - lagre alle endringer og oppdater rutenettet


* OPPDATERING - oppdater rutenettet med data fra Z-tabellen

SET PF-STATUS 'PF_STATUS'.

* Innledende opprettelse av container og rutenett

HVIS gr_container ER INITIAL.

LAG OBJEKT gr_container

EKSPORTER

* Dette er referanse til objektet vi laget i Layout editor

container_name = 'GO_GRID_CONTAINER'.

* Foreldre er vår beholder opprettet ovenfor

CREATE OBJECT gr_grid

EKSPORTER

i_parent = gr_container.

* Enkleste feltkatalogoppretting

RING FUNKSJONEN 'LVC_FIELDCATALOG_MERGE'

EKSPORTER

i_structure_name = 'ZMATSTAT'

ENDRINGER

ct_fieldcat = gt_fieldcat.

*!!! VIKTIG!!!

* Vi må merke alle nødvendige kolonner som redigerbare !!!

LES TABELL gt_fieldcat TILDELING <fs_fcat> MED NØKKEL feltnavn = 'PSTAT'.

<fs_fcat>-edit = abap_true.

* Last inn data fra databasen og merk av

* passende felt som R/O

UTFØR reload_data.
* Angi feltnavnet med informasjon om cellestiler (RW / RO)

ls_layout-stylefname = 'CELL_STYLES'.

ls_variant-report = sy-repid.

ls_variant-brukernavn = sy-unavn.

*!!! VIKTIG!!!

* Vi registrerer ENTER-hendelsen slik at manualen endres

* spres tilbake til GT_DATA

gr_grid->register_edit_event( i_event_id = cl_gui_alv_grid=>mc_evt_enter ).

* Tegn ALV

gr_grid->set_table_for_first_display(

EKSPORTER

is_layout = ls_layout

is_variant = ls_variant

i_save = 'A'

i_default = 'X'

ENDRINGER

it_fieldcatalog = gt_fieldcat

it_outtab = gt_data ).

SLUTT OM.

ENDMODUL. " PBO_0200 UTGANG

Modul PAI_0200 brukes til å behandle brukerinteraksjon og her følger dens kode

MODULE pai_0200 INNGANG.

DATA:

l_matstat TYPE zmatstat.

FELTSYMBOLER:

<fs_data> LIKE LINJE MED gt_data.

CASE sy-ucomm.
NÅR 'TILBAKE' ELLER 'LEAVE' ELLER 'AVBRYT'.

STILL SKJERM 0.

NÅR 'OPPDATERING'.

* Oppdater DB Z-tabell

LOOP AT gt_data TILDELING <fs_data> HVOR matnr IKKE ER INITIAL.

FLYTT TILSVARENDE <fs_data> TIL l_matstat.

ENDRE zmatstat FRA l_matstat.

ENDLOOP.

* Last inn datadatabasen på nytt og merk

* passende felt som R/O

UTFØR reload_data.

gr_grid->refresh_table_display( ).

NÅR 'REFRESH'.

UTFØR reload_data.

gr_grid->refresh_table_display( ).

ENDCASE.

ENDMODUL. " PAI_0200 INNPUT

Hjelperen FORM RELOAD_DATA brukes til å samle data fra databasen og merke de aktuelle
feltene som skrivebeskyttet

FORM reload_data.

DATA:

l_lvc_s_styl TYPE lvc_s_styl.

FELTSYMBOLER:

<fs_data> LIKE LINJE MED gt_data.

SLETT gt_data[].

* Les dataene

PLUKKE UT *
I TILSVARENDE FELTER I TABELL gt_data

FRA zmatstat.

* Sløyfe over alle rader med data og angi PSTAT

* som R/O i tilfelle verdien = 'A'

LOOP AT gt_data

TILDELER <fs_data>

WHERE pstat = 'A'.

l_lvc_styl-style = cl_gui_alv_grid=>mc_style_disabled.

l_lvc_styl-fieldname = 'PSTAT'.

* INSERT kommando MÅ brukes

* fordi feltet CELL_STYLES er en SORTERT TABELL

INSERT l_lvc_styl I TABELL <fs_data>-cellestiler.

ENDLOOP.

SLUTTFORM. "reload_data

Hvis vi nå ringer skjermen vår fra ABAP, får vi følgende:

You might also like