Sunteți pe pagina 1din 7

Classical Lists

Sa se realizeze un program cu numele Zxx_LISTA /ZLISTA_XX (unde XX sunt initialele voastre).


Daca programul exista deja, adaugati un 01 sau dati voi alt nume.

Caracteristici:

- Ecranul de selectie va avea un select-option pentru campul MARA-MATNR:

- Se vor afisa toate materialele obtinute din tabela MARA pe baza materialului introdus in
ecranul de selectie. Lista va avea urmatoarea structura:
o Un Checkbox
o Materialul (MARA-MATNR)
o Descrierea materialului (MAKT-MAKTX) – in limba engleza
o Greutatea neta (MARA-NTGEW)
o Unitatea de masura a greutatii (MARA-GEWEI)
o Divizia (MARA-SPART)

Pentru checkbox se va folosi o variabila globala (GV_SEL), care are tipul C si lungimea 1:
gv_sel TYPE c LENGTH 1.

Pentru a putea selecta materialele pentru care se va afisa pop-up-ul, la scriere se specifica tipul
CHECKBOX:

Daca greutatea neta este mai mica de 10, atunci materialele se vor afisa pe fundal albastru (ca
in exemplul de mai sus), in caz contrar se vor afisa pe fundal rosu.

Selectia datelor se face in form-ul GET_DATA, iar crearea listei se va face in DISPLAY_DATA.

- In TOP-OF-PAGE se vor afisa urmatoarele informatii :


o Utilizator
o Data executiei
o Numele programului

- Lista va avea un STATUS care va contine un buton :

La apasarea butonului va trebui sa apara o fereastra POPUP care sa contina materialele care au
checkboxul selectat si plant-urile in care se gasesc aceste materiale (tabela MARC -> campul WERKS)
Exemplu : daca se selecteaza materialele 500-120 si 500-140 si se apasa butonul

Rezultatul va fi acesta :
Se poate folosi functia POPUP_WITH_TABLE_DISPLAY; In tranzactia SE37 se poate testa aceasta functie:

Pentru a gasi materialele care au fost selectate (care au GV_SEL <> ‘ ‘) se poate folosi acest algoritm :
Statusul cu butonul care va chema acest pop-up se seteaza in evenimentul TOP-OF-PAGE:

Crearea unui nou status se face cu tranzactia SE41 (Copy status).

In statusul nou creat pastrati doar butonul pentru POP-UP (DISP), butonul de BACK/EXIT si setati
functiile de mai jos (PICK si DISP).

Alegeti Static Text la crearea butonului ‘DISP’:


Pentru buton si pentru functiile BACK/EXIT se va implementa o logica de procesare utilizand eveniment-
ul AT USER-COMMAND.

Pentru PICK se foloseste AT LINE-SELECTION explicat mai jos.

- Daca se da dublu-click pe o linie, se afiseaza toate Purchase Order-urile ce contin materialul


aflat pe aceasta linie, ca in exemplul de mai jos :

Purchase order-urile se gasesc in tabelele EKKO si EKPO, unde tabela EKKO este tabela ce contine
informatiile din Header-ul PO-ului si tabela EKPO contine informatii despre pozitiile PO-ului.
Campurile ce trebuie sa apara sunt :
o PO : EKKO-EBELN
o Vendor : EKKO-LIFNR
o Document date : EKKO-BEDAT
o Purc hasing org: EKKO-EKORG
o Purchasing group : EKKO-EKGRP
o Company code : EKKO-BUKRS
o Item : EKPO-EBELP
o Delivery Date: EKPO-AEDAT
o PO Quantity : EKPO-MENGE
o Unit : EKPO-MEINS
o Net price : EKPO-NETPR

- Cantitatea totala va trebui calculata pentru fiecare PO in parte


Pentru dublu-click se va folosi functia PICK setata mai devreme in status si se va implementa
evenimentul AT LINE-SELECTION. ( SY-LSIND = arata ce lista este afisata – 1 pt lista cu materiale, 2 pt lista
cu PO).

Pentru a vedea pe ce linie s-a facut dublu click se va folosi citirea de mai jos (SY-LILLI arata ce linie a fost
selectata) :
READ LINE sy-lilli FIELD VALUE gs_mat-matnr.
Pentru acest material se vor selecta toate PO-urile din EKPO.
- Pentru a doua lista (cea cu informatii despre PO), STATUS-ul trebuie sa nu mai contina butonul
primei liste (sa fie gol)

Se poate folosi acelasi status, excluzand butonul de display :

Dupa selectarea datelor si resetarea statusului, se afiseaza lista cu PO.

- Daca se va da dublu click pe o linie de header -> se va apela tranzactia ME23N pentru
vizualizarea PO-ului
Exemplu : dam dublu click pe linia :

Se gaseste PO-ul pe care s-a dat dublu click si apoi se cheama tranzactia ME23N.
READ LINE sy-lilli FIELD VALUE gs_ekko-ebeln.
IF gs_ekko-ebeln IS NOT INITIAL.
SET PARAMETER ID 'BES' FIELD gs_ekko-ebeln.
CALL TRANSACTION 'ME23N'.
ENDIF.

Puteti testa cu Materialele : 100-251, M-01, M-02, M-03, M-04, M-06.

Tranzactii Materiale : MM01(Create) /MM02 (Modify) /MM03 (Display)

Tranzactii PO : ME21N(Create) /ME22N (Modify) /ME23N (Display)

S-ar putea să vă placă și