[55429] in SAPr3-news

home help back first fref pref prev next nref lref last post

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


home help back first fref pref prev next nref lref last post