ODGOVARAJUĆIM

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 5

U ovom vodiču pokazat ću kako omogućiti samo određene ćelije u mreži koja se može

uređivati.

Prvo ću pripremiti neke demonstracijske podatke. Postojat će lista materijala i status njihovog
održavanja. Ako je status postavljen na 'A' želimo onemogućiti uređivanje statusa u mreži.

MATNR (tip MATNR, primarni ključ) PSTAT (tip PSTAT_D)

123456 K

654321 E

567890 D

876543 B

900.000 A

Sada kreiramo funkcionalnu grupu sa ekranom (tj. 0200) gde crtamo našu ALV mrežu.

Kreirajte prilagođeni kontejner u uređivaču izgleda ekrana i nazovite ga, na primjer


GO_GRID_CONTAINER.

Također kreirajte prilagođeni PF STATUS sa dvije funkcije: UPDATE i UPDATE

Logika toka za ekran će biti jednostavna:

PROCES PRE IZLAZA.

MODUL pbo_0200.

PROCES NAKON ULAZA.

MODUL pai_0200.

Modul PBO_0200 se koristi za prikupljanje podataka, kreiranje kataloga polja i prikaz ALV. Ovdje
slijedi kod

MODUL pbo_0200 IZLAZ.

PODACI:

ls_layout TYPE lvc_s_layo,

ls_variant TYPE disvarijanta.

SIMBOLI POLJA:

<fs_fcat> TIP lvc_s_fcat.

* U ovom korisničkom statusu kreiramo dvije funkcije:

* AŽURIRANJE - sačuvajte sve promjene i ažurirajte mrežu


* AŽURIRANJE - ažuriranje mreže podacima iz Z tabele

POSTAVI PF STATUS 'PF_STATUS'.

* Početno kreiranje kontejnera i mreže

AKO JE gr_container INITIAL.

CREATE OBJEKT gr_container

IZVOZ

* Ovo je referenca na objekt koji smo kreirali u Layout editoru

kontejner_name = 'GO_GRID_CONTAINER'.

* Roditelj je naš spremnik kreiran iznad

CREATE OBJEKT gr_grid

IZVOZ

i_parent = gr_container.

* Najlakše kreiranje direktorija polja

POZOVI FUNKCIJU 'LVC_FIELDCATALOG_MERGE'

IZVOZ

i_structure_name = 'ZMATSTAT'

PROMENE

ct_fieldcat = gt_fieldcat.

*!!! BITAN!!!

* Moramo označiti sve potrebne kolone kao editive !!!

PROČITAJTE TABLE gt_fieldcat ZADATAK <fs_fcat> SA KLJUČOM ime polja = 'PSTAT'.

<fs_fcat>-edit = abap_true.

* Učitajte podatke iz baze podataka i označite ih

* odgovarajuće polje kao R/O

EXECUTE reload_data.
* Odredite naziv polja s informacijama o stilovima ćelija (RW / RO)

ls_layout-stylefname = 'CELL_STYLES'.

ls_variant-report = sy-repid.

ls_variant-username = sy-unname.

*!!! BITAN!!!

* Registriramo događaj ENTER tako da se ručno promijeni

* se prenosi nazad na GT_DATA

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

* Izvucite ALV

gr_grid->set_table_for_first_display(

IZVOZ

is_layout = ls_layout

is_varijanta = ls_varijanta

i_save = 'A'

i_default = 'X'

PROMENE

it_fieldcatalog = gt_fieldcat

it_outtab = gt_data ).

STOP ABOUT.

END MODUL. " PBO_0200 IZLAZ

Modul PAI_0200 se koristi za obradu interakcije korisnika i ovdje slijedi njegov kod

MODUL pai_0200 ULAZ.

PODACI:

l_matstat TYPE zmatstat.

SIMBOLI POLJA:

<fs_data> JEDNAKA LINIJA Gt_data.

CASE sy-ucomm.
KADA 'NAZAD' ILI 'IZLAZI' ILI 'OTKAZI'.

POSTAVI EKRAN 0.

KADA 'AŽURIRAJ'.

* Ažurirajte DB Z tablicu

LOOP AT gt_data ASSIGN <fs_data> GDJE matn NIJE POČETNA.

PREMJESTI ODGOVARAJUĆE <fs_data> NA l_matstat.

IZMIJENI zmatstat IZ l_matstat.

END LOOP.

* Ponovo učitajte bazu podataka i označite

* odgovarajuće polje kao R/O

EXECUTE reload_data.

gr_grid->refresh_table_display().

KADA 'OSVJEŽI'.

EXECUTE reload_data.

gr_grid->refresh_table_display().

END CASE.

END MODUL. " PAI_0200 INPUT

Pomoćnik FORM RELOAD_DATA se koristi za prikupljanje podataka iz baze podataka i


označavanje relevantnih polja kao samo za čitanje

FORM reload_data.

PODACI:

l_lvc_s_styl TIP lvc_s_styl.

SIMBOLI POLJA:

<fs_data> JEDNAKA LINIJA Gt_data.

IZBRIŠI gt_data[].

* Pročitajte podatke

ODABIR *
U ODGOVARAJUĆIM POLJIMA U TABELI gt_data

FROM zmatstat.

* Pređite preko svih redova podataka i unesite PSTAT

* kao R/O u slučaju vrijednost = 'A'

LOOP AT gt_data

ALLOCATES <fs_data>

WHERE pstat = 'A'.

l_lvc_styl-style = cl_gui_alv_grid=>mc_style_disabled.

l_lvc_styl-fieldname = 'PSTAT'.

* INSERT naredba MORA se koristiti

* jer je polje CELL_STYLES SORTOVANA TABLICA

INSERT l_lvc_styl INTO TABLE <fs_data> stilovi ćelija.

END LOOP.

KONAČNA FORMA. "reload_data

Ako sada pozovemo naš ekran sa ABAP-a, dobijamo sledeće:

You might also like