[55429] in SAPr3-news
Re: ALV Grit
daemon@ATHENA.MIT.EDU (Alexander Dietrich)
Mon Sep 12 22:22:55 2005
To: sapr3-news@mit.edu
Date: 8 Sep 2005 03:27:02 -0700
From: "Alexander Dietrich" <alexander_dietrich@gmx.de>
Message-ID: <1126175222.319193.291660@g43g2000cwa.googlegroups.com>
Hallo Heike,
hier ist eine Vorlage die ich immer dann benutze, wenn ich ALV-Grid
verwenden muss. Du m=FCsstest sie nur Deinen Bed=FCrfnissen anpassen:
*******************************
*&---------------------------------------------------------------------*
*& Report XXX *
*&
*
*&---------------------------------------------------------------------*
*& Autor: Alexander Dietrich
*
*& Datum:
*&---------------------------------------------------------------------*
REPORT XXX LINE-SIZE 170.
* Dateidefinitionen
*******************
TABLES:
makt, " Materialkurztext
vbap, " Vertriebsbeleg Positionen
kna1. " Kundenstamm
* Variablendefinition
****************
DATA:
sav_listenname TYPE lvc_title. "ALV-=DCberschrift
* Typendefinition
********************
*Typ f=FCr die ITAB
TYPES:
BEGIN OF t_outtab,
kukla LIKE kna1-kukla,
klbez LIKE tkukt-vtext,
kunnr LIKE kna1-kunnr,
kunam LIKE kna1-name1,
vbeln LIKE zvl090-vbeln,
matnr LIKE zvl090-matnr,
datum LIKE zvl090-datum,
END OF t_outtab.
* Pool f=FCr ALV Grid
TYPE-POOLS slis.
*Deklarationen f=FCr ALV Grid
DATA:
fieldcat TYPE slis_t_fieldcat_alv, "Feldkatalog
wrk_fieldcat_alv LIKE LINE OF fieldcat, "Workarea
g_repid LIKE sy-repid. "Programmname
* Variablen f=FCr die Anzeigevariante
DATA: variante LIKE disvariant,
def_variante LIKE disvariant,
variant_exit(1) TYPE c.
* interne Tabellen
********************
*Itab
DATA: tab_outtab TYPE TABLE OF t_outtab WITH HEADER LINE.
* Strukturger=FCst f=FCr Feldkatalog / ALV
DATA: BEGIN OF tab_outtab_alv,
kukla LIKE kna1-kukla,
klbez LIKE tkukt-vtext,
kunnr LIKE kna1-kunnr,
kunam LIKE kna1-name1,
vbeln LIKE zvl090-vbeln,
matnr LIKE zvl090-matnr,
datum LIKE zvl090-datum,
END OF tab_outtab_alv.
* Workareas
DATA: wrk_anz_kukla TYPE t_anz_kukla,
wrk_anz_kunnr TYPE t_anz_kunnr,
wrk_lief LIKE tab_outtab.
* Selektionsbildschirm
**********************
SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME title text-001.
SELECT-OPTIONS: o_kukla FOR kna1-kukla,
o_kunnr FOR zvl090-kunnr,
o_vbeln FOR zvl090-vbeln,
o_datum FOR zvl090-datum,
o_matnr FOR zvl090-matnr,
o_mtart for zvl090-mtart.
SELECTION-SCREEN END OF BLOCK 1.
* Selektion Anzeigevariante
SELECTION-SCREEN BEGIN OF BLOCK 2 WITH FRAME title text-002.
PARAMETERS: p_vari LIKE disvariant-variant.
SELECTION-SCREEN END OF BLOCK 2.
* F4-Help for variant
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant =3D variante
i_save =3D 'A'
* it_default_fieldcat =3D
IMPORTING
e_exit =3D variant_exit
es_variant =3D def_variante
EXCEPTIONS
not_found =3D 2.
IF sy-subrc =3D 2.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
IF variant_exit =3D space.
p_vari =3D def_variante-variant.
ENDIF.
ENDIF.
*Initialisierung
INITIALIZATION.
g_repid =3D sy-repid.
CLEAR variante.
variante-report =3D g_repid.
* Get default variant
def_variante =3D variante.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save =3D 'A'
CHANGING
cs_variant =3D def_variante
EXCEPTIONS
not_found =3D 2.
IF sy-subrc =3D 0.
p_vari =3D def_variante-variant.
ENDIF.
at selection-screen.
* ausgew=E4hlte Variante laden
IF NOT p_vari IS INITIAL.
MOVE variante TO def_variante.
MOVE p_vari TO def_variante-variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
i_save =3D 'A'
CHANGING
cs_variant =3D def_variante.
variante =3D def_variante.
ELSE.
CLEAR variante.
variante-report =3D g_repid.
ENDIF.
start-of-selection.
********************************************************
* HAUPTPROGRAMM
********************************************************
* Initialisierung
WRITE o_datum-low TO sav_conv DD/MM/YYYY.
CONCATENATE 'Selektionszeitraum: ' sav_conv INTO sav_listenname.
IF o_datum-high <> '00000000'.
WRITE o_datum-high TO sav_conv DD/MM/YYYY.
CONCATENATE sav_listenname ' - ' sav_conv INTO sav_listenname.
ENDIF.
IF o_datum-low =3D '00000000' AND o_datum-high =3D '00000000'.
sav_listenname =3D 'kein Zeitraum selektiert'.
ENDIF.
* Lesen Bedarfe und R=FCckst=E4nde
******************************
*interne Tabelle f=FCllen
*hier die Tabelle TAB_OUTTAB f=FCllen
PERFORM...
* Feldkatalog f=FCr ALV erzeugen
PERFORM feldkatalog_aufbauen.
* ALV Listausgabe mit erzeugtem Feldkatalog
* Grid-Titel als Text oder Variable
* t_outtab =3D interne Tabelle, die ausgebeben werden soll
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program =3D g_repid
i_callback_user_command =3D 'USER_COMMAND'
it_fieldcat =3D fieldcat[]
* u =3D User darf Varianten nur f=FCr sich oder a =3D f=FCr alle abspeichern
i_save =3D 'A' "
i_grid_title =3D sav_listenname
is_variant =3D variante
TABLES
t_outtab =3D tab_outtab.
*&---------------------------------------------------------------------*
*& Form feldkatalog_aufbauen
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM feldkatalog_aufbauen .
*Aufbau eines Feldkataloges aus der internen Tabelle
*Feldkatalog-ger=FCst aufbauen
g_repid =3D sy-repid.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name =3D g_repid
i_internal_tabname =3D 'TAB_OUTTAB_ALV'
i_inclname =3D g_repid
CHANGING
ct_fieldcat =3D fieldcat[]
EXCEPTIONS
inconsistent_interface =3D 1
program_error =3D 2
OTHERS =3D 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
*Erg=E4nzen der fehlenden Texte f=FCr die mit Type definierten
*Typen (einer (Short/Middle/Long) reicht aus)
LOOP AT fieldcat INTO wrk_fieldcat_alv.
CASE wrk_fieldcat_alv-fieldname.
WHEN 'DATUM'.
wrk_fieldcat_alv-seltext_s =3D 'Dat'.
wrk_fieldcat_alv-seltext_m =3D 'Datum'.
wrk_fieldcat_alv-seltext_l =3D 'Datum'.
WHEN 'KUNAM'.
wrk_fieldcat_alv-seltext_s =3D 'Kd.Bez.'.
wrk_fieldcat_alv-seltext_m =3D 'Kundenbez.'.
wrk_fieldcat_alv-seltext_l =3D 'Kundenbezeichnung'.
WHEN OTHERS.
wrk_fieldcat_alv-key =3D ''.
ENDCASE.
MODIFY fieldcat FROM wrk_fieldcat_alv.
ENDLOOP.
ENDFORM. " feldkatalog_aufbauen
*---------------------------------------------------------------------*
* FORM USER_COMMAND *
* Auf Doppelklick auf Lieferplan in der Liste reagieren *
*---------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
data: sav_index like sy-tabix, "Index der angeklickten Zeile
sav_lgnum like lubu-lgnum, "angeklickte Lagernummer
sav_ubnum like lubu-ubnum. "angeklickte Umb.Nummer
sav_index =3D rs_selfield-tabindex.
read table TAB_OUTTAB index sav_index.
sav_lgnum =3D TAB_OUTTAB-lgnum.
sav_ubnum =3D TAB_OUTTAB-ubnum.
CASE rs_selfield-fieldname.
WHEN 'TEXT1'.
IF NOT rs_selfield-value IS INITIAL.
SET PARAMETER ID 'LGN' FIELD sav_lgnum.
SET PARAMETER ID 'UBN' FIELD sav_ubnum.
CALL TRANSACTION 'LU03' AND SKIP FIRST SCREEN.
ENDIF.
WHEN 'TEXT2'.
IF NOT rs_selfield-value IS INITIAL.
SET PARAMETER ID 'LGN' FIELD sav_lgnum.
SET PARAMETER ID 'UBN' FIELD sav_ubnum.
CALL TRANSACTION 'LT05' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDFORM. "USER_COMMAND