You are on page 1of 9

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 *
In hoc consequat, demonstrabo quomodo solas cellulas specificas in craticula editabili
praebeas.

Primum, ut demonstrationem aliquam praebeam. Index materiarum eorumque status


conservationis erit. Si status in "A" positus est, velimus ut inactivandi status in malesuada
euismod emendo.

MATNR (type MATNR, clavis primaria) PSTAT (type PSTAT_D)

123456 K

654321 E

567890 D

876543 B

900,000 A

Nunc catervam functionis cum screen (id est 0200) creamus ubi nostram ALV eget.

Consuetudo continens in scrinii tabulario editorem crea et nomina, exempli gratia


GO_GRID_CONTAINER.

Etiam consuetudo PF STATU crea cum duabus functionibus: UPDATE et UPDATE

Logica fluxus velum simplex erit;

PROCESSU ANTE EXITUS.

MODULE pbo_0200.

PROCESSU POST INTROITUS.

MODULE pai_0200.

Modulus PBO_0200 ad notitias colligendas adhibetur, agrum catalogum crea et ALV


ostentationem. Hic sequitur in codice

MODULE pbo_0200 REFERO.

DATA:

ls_layout TYPE lvc_s_layo,

ls_variant TYPE disvariant.

Agro signa:

<fs_fcat> TYPE lvc_s_fcat.

* In hoc usore statu duo munera creamus:

* UPDATE - praeter omnes mutationes ac malesuada euismod


* UPDATE - eget eget cum notitia ex mensa Z

SET PF STATUS 'PF_STATUS'.

* Coepi creatio continens et malesuada euismod

SI gr_continens est INITIALES.

CREATE OBJECTUM gr_continens

EXPORTATIO

* Haec est relatio obiecti quam creavit in propositum editor

continens_name = 'GO_GRID_CONTAINER'.

* parens noster continens supra creata est

CREATE OBJECTUM gr_grid

EXPORTATIO

i_parent = gr_continens.

* Facillimus agri Directory creaturae

VOCA OFFICIUM 'LVC_FIELDCATALOG_MERGE'

EXPORTATIO

i_structure_name = 'ZMATSTAT'

DE MUTATIONIBUS

ct_fieldcat = gt_fieldcat.

*!!! MAGNUS!!!

* Necesse est omnes columnas ut editable notare.

READ TABLE gt_fieldcat ADSIGNATIO <fs_fcat> CUM CLAVIS fieldname = 'PSTAT'.

<fs_fcat>-edit = abap_true.

* Load notitia ex database et tick

* Convenientem agrum ut R / O *

EXSEQUOR reload_data.
* Specificare nomen agri cum notitia de generibus cellularum (RW / RO)

ls_layout-stylefname = 'CELL_STYLES'.

ls_variant-fama = sy-repid.

ls_variant-usoris = sy-unname.

*!!! MAGNUS!!!

* Eventum ENTER subcriptio ut mutationes manuales

* propagatur ad GT_DATA

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

* trahunt ALV

gr_grid-> set_table_for_first_display (

EXPORTATIO

is_layout = ls_layout

is_variant = ls_variant

i_save = 'A'

i_default = 'X'

DE MUTATIONIBUS

it_fieldcatalog = gt_fieldcat

it_outtab = gt_data ).

CIRCUMSERO.

FINIS MODULE. " PBO_0200 EXITUS

OMNIBUS PAI_0200 adhibetur ad commercium usoris processus et hic sequitur codicem suum

MODULE pai_0200 INPUT.

DATA:

l_matstat TYPE zmatstat.

Agro signa:

<fs_data> AEQUALIS LINEA AD gt_data.

CAUSA sy-ucomm.
CUM REDDO VEL DISCEDO' VEL 'ABLICO'.

PRAETECTIO 0 SET.

CUM 'UPDATE'.

* Update DB Z mensam

CAPISTRUM AT gt_data ADSIGNO <fs_data> UBI matn NON EST INITIALES.

CONCIEO CORRESPONDENDUM <fs_data> TO l_matstat.

ALTER zmatstat FROM l_matstat.

FINIS CAPISTRUM.

* Reload in data basi et nota

* Convenientem agrum ut R / O *

EXSEQUOR reload_data.

gr_grid-> refove_table_display ( ).

CUM 'REFOVEO'.

EXSEQUOR reload_data.

gr_grid-> refove_table_display ( ).

FINIS CAUSA.

FINIS MODULE. "PAI_0200 INPUT"

FORMA RELOAD_DATA adiutrix adhibetur ad colligendas notitias ex datorum datorum et notas


agrorum proprios solum cum lege

Forma reload_data.

DATA:

l_lvc_s_styli EXEMPLUM lvc_s_styl.

Agro signa:

<fs_data> AEQUALIS LINEA AD gt_data.

DELETE gt_data[].

* Lege data

SELECT *
RECTUS CAMPIS IN TABULA gt_data

FROM zmatstat.

* Lope super omnes ordines data et intrant PSTAT

* Ut R/O in casu valorem = 'A'

CAPISTRUM AT gt_data

ALLOCATES <fs_data>

UBI pstat = 'A'.

l_lvc_styl-style = cl_gui_alv_grid>mc_style_disabled.

l_lvc_styl-fieldname = 'PSTAT'.

* INDO mandatum utendum est

* quia CELL_STYLES ager est tabula digesta

INDO l_lvc_styli IN INDEX <fs_data> stylos cellularum.

FINIS CAPISTRUM.

FORMULA ULTIMA. "reload_data

Si nunc velum nostrum ab ABAP vocamus, sequentia obtinemus:

You might also like