************************************************************************
*                      n o r d I T  G m b H                            *
************************************************************************
* PROGRAMMNAME:      Z9GP_INFO
* AUTOR:             Gert Prser
* ERSTELLT AM:       05.07.2001                                        *
* ART DES PROGRAMMS: LISTE (X)   BATCH ( )  INCLUDE ( )                *
************************************************************************
* BESCHREIBUNG (ZUSTZLICH ZUR DOKUMENTATION):                         *
* Der Report durchsucht zum gewhlten Objekt die Tabellen mit den
* zugehrigen Beschreibungstexten, anhand des vom User angegebenen
* Textstrings.
*----------------------------------------------------------------------*
* NDERUNGEN / KORREKTUREN:                                            *
* DATUM-------NAME-------------ERLUTERUNGEN---------------------------*
* 24.10.2002  Gert Prser      Bei der Selektion von SAP-Tabellen wird
*                              nun auch der Tabellentyp mit angezeigt.
*                              TRANSP  = Transparente Tabelle
*                              INTTAB  = Struktur
*                              CLUSTER = Cluster-Tabelle
*                              POOL    = Pool-Tabelle
*                              VIEW    = gen. Viewstruktur
*                              APPEND  = Append-Struktur
************************************************************************

report z9gp_info
*                MESSAGE-ID  YY
                line-size  127
*                LINE-COUNT  65
                no standard page heading.
*----------------------------------------------------------------------*
*        T A B E L L E N                                               *
*----------------------------------------------------------------------*

tables: t002.

*************************** AB REL. 4.6 ********************************
*types: tp_dbtab type dbtab.

*----------------------------------------------------------------------*
*        T Y P E N                                                     *
*----------------------------------------------------------------------*

types:   tp_dd01t    type  dd01t,      "R/3-DD: Texte der Domnen
         tp_dd02t    type  dd02t,      "R/3-DD: Texte zu SAP-Tabellen
         tp_dd04t    type  dd04t,      "R/3-DD: Texte der Dateneleme
         tp_dd25t    type  dd25t,      "Kurztexte zu Views
         tp_ddtypet  type  ddtypet,    "R/3-DD: Texte zu Typgruppen
         tp_tftit    type  tftit,      "Kurztext eines Funktionsbaustein
         tp_trdirt   type  trdirt,   "Titeltexte zu Programmen in TRDIR
         tp_tstct    type  tstct.      "Transaktionscode-Texte

types: begin of tp_tab,
          name(40) type c,              "Objektname
          text(74) type c,              "Beschreibungstext
          spras    like t002-spras,     "Sprachenschlssel
          aktiv    like dd01t-as4local, "AktivierungsKennzeichen
          vers     like dd01t-as4vers,  "Version v. SAP nicht benutzt
          class    like dd02l-tabclass, "Tabellenart
       end of tp_tab.

types: begin of tp_bdc.
        include structure bdcdata.
types: end of tp_bdc.

*----------------------------------------------------------------------*
*        I N T E R N E  D A T E N F E L D E R                          *
*----------------------------------------------------------------------*

* ................. Konstanten.........................................*

constants: con_anze(5)      type c                value '=ANZE',
           con_d            like dd01t-ddlanguage value 'D',
           con_error        type c                value 'E',
           con_execute(7)   type c                value 'EXECUTE',
           con_line(4)      type c                value 'LINE',
*           CON_OBJA(5)      TYPE C                VALUE '=OBJA',
           con_objlist(15)  type c              value '=WB_OBJECT_LIST',
           con_okcode(10)   type c                value 'BDC_OKCODE',
           con_otherobj(16) type c             value '=WB_OTHER_OBJECT',
           con_sa38(4)      type c                value 'SA38',
           con_se11(4)      type c                value 'SE11',
           con_se16(4)      type c                value 'SE16',
           con_se37(4)      type c                value 'SE37',
           con_se38(4)      type c                value 'SE38',
           con_se80(4)      type c                value 'SE80',
           con_se93(4)      type c                value 'SE93',
           con_shop(5)      type c                value '=SHOP',
           con_show(5)      type c                value '=SHOW',
           con_sort_up(7)   type c                value 'SORT_UP',
           con_sort_down(9) type c                value 'SORT_DOWN',
           con_x(1)         type c                value 'X'.

* ................. Globale Variablen..................................*
data: gv_count      type i,
      gv_dynpro     like bdcdata-dynpro,
      gv_field(15)  type c,
      gv_buttonname like bdcdata-fnam,
      gv_fnam       like bdcdata-fnam,
      gv_fval       like bdcdata-fval,
      gv_letter(1)  type c,
      gv_line1(45)  type c,
      gv_line2(45)  type c,
      gv_object(20) type c,
      gv_objname    like tadir-obj_name,
      gv_program    like bdcdata-program,
      gv_titel(20)  type c.

* ................. Ranges f. Selektion(en)............................*

*RANGES ra_sel FOR f.

*----------------------------------------------------------------------*
*        I N T E R N E  T A B E L L E N                                *
*----------------------------------------------------------------------*

* ................. Globale Tabellen...................................*
data: it_bdc      type table of tp_bdc,
      it_tab      type table of tp_tab.


*----------------------------------------------------------------------*
*        F E L D L E I S T E N                                         *
*----------------------------------------------------------------------*

* ................. Globale Strukturen.................................*
data: wa_bdc      type tp_bdc,
      wa_tab      type tp_tab.

*----------------------------------------------------------------------*
*        F E L D - S Y M B O L E                                       *
*----------------------------------------------------------------------*

*FIELD-SYMBOLS: <FS_XXXXX>.               "Doku...

*----------------------------------------------------------------------*
*        A U S W A H L K R I T E R I E N  SELEKTIONSBILD FESTLEGEN     *
*----------------------------------------------------------------------*
selection-screen skip 1.

selection-screen begin of block search with frame title text-s01.
parameters: p_text  like dd01t-ddtext obligatory. "CHAR(60)
select-options: so_spras for t002-spras default con_d
                                        memory id spr. "LNGE(1)
selection-screen end of block search.

selection-screen skip 1.

selection-screen begin of block ddic with frame title text-s02.
parameters:   p_elemen  radiobutton group obj,
              p_domain  radiobutton group obj,
              p_fb      radiobutton group obj default 'X',
              p_report  radiobutton group obj,
              p_saptab  radiobutton group obj,
              p_tcode   radiobutton group obj,
*              P_TYPGRP  RADIOBUTTON GROUP OBJ,
              p_view    radiobutton group obj.
selection-screen end of block ddic.

selection-screen skip 1.

selection-screen begin of block line with frame title text-s03.
parameters: p_line as checkbox default 'X'.
selection-screen end of block line.
*----------------------------------------------------------------------*
*        V O R S C H L A G S W E R T E    INITIALISIEREN               *
*----------------------------------------------------------------------*

initialization.

  clear:   gv_count,
           gv_dynpro,
           gv_field,
           gv_fnam,
           gv_fval,
           gv_letter,
           gv_line1,
           gv_line2,
           gv_object,
           gv_objname,
           gv_program,
           gv_titel,
           wa_bdc.

  clear:   wa_tab.
  refresh: it_bdc.

*----------------------------------------------------------------------*
*        S E L E K T I O N S B I L D      VERARBEITEN (PBO)            *
*----------------------------------------------------------------------*

*at selection-screen output.


*----------------------------------------------------------------------*
*       S E L E K T I O N S B I L D      VERARBEITEN (PAI)            *
*----------------------------------------------------------------------*

* ................. Verarbeitung gesamt ...............................*
*at selection-screen.

* ................. Verarbeitung fuer Feld <f> ........................*
*AT SELECTION-SCREEN ON f.


*----------------------------------------------------------------------*
*        V E R A R B E I T U N G                                       *
*----------------------------------------------------------------------*
start-of-selection.

*-Setzen des Titels
  set titlebar 'Z01'.

*-Datenbeschaffung
  perform get_data.

*-Ausgabe der Daten
  perform display_data.

*----------------------------------------------------------------------*
*        E N D - V E R A R B E I T U N G                               *
*----------------------------------------------------------------------*

end-of-selection.


*----------------------------------------------------------------------*
*        L I S T - U E B E R S C H R I F T ( E N )                     *
*----------------------------------------------------------------------*

* ................. Ueberschrift Grundliste ...........................*

top-of-page.
  perform top_of_page.

* ................. Ueberschrift Verzweigungsliste(n)..................*

*TOP-OF-PAGE DURING LINE-SELECTION.

*----------------------------------------------------------------------*
*        I N T E R A K T I V E  E R E I G N I S S E                    *
*----------------------------------------------------------------------*

* ................. Funktion 'Pick-Up' (F2)............................*

at line-selection.
  clear:   wa_bdc.
  refresh: it_bdc.
*-Name des DDIC-Objektes abgreifen.
  perform get_cursor_objname.
*-Welches Schweinderl httens denn gern?
  case gv_object.
    when text-t01.                     "Datenelemente
*-----SET/GET-Parameter setzen
      set parameter id 'DTYP' field gv_objname.
*-----Fllen der BDC-itab
      perform bdc_dynpro using 'SAPMSRD0'     '0102'.    "DYNPRO
      perform bdc_field  using 'RSRD1-DDTYPE' con_x.     "Radiobutton
      perform bdc_field  using con_okcode     con_show.  "Aktion
*-----Aufruf der Transaktion mit Parameterbergabe
      call transaction con_se11 using it_bdc mode con_error.
                                       "messages
      sy-lsind = 0.

    when text-t11.                     "Domainen
*-----SET/GET-Parameter setzen
      set parameter id 'DOM' field gv_objname.
*-----Fllen der BDC-itab
      perform bdc_dynpro using 'SAPMSRD0'   '0102'.     "DYNPRO
      perform bdc_field  using 'RSRD1-DOMA' con_x.      "Radiobutton
      perform bdc_field  using con_okcode   con_show.   "Aktion
*-----Aufruf der Transaktion mit Parameterbergabe
      call transaction con_se11 using it_bdc mode con_error.
                                       "messages
      sy-lsind = 0.

    when text-t21.                     "Funktionsbausteine
*-----SET/GET-Parameter setzen
      set parameter id 'LIB' field gv_objname.
*-----Fllen der BDC-itab
      perform bdc_dynpro using 'SAPMS38L'   '1009'.     "DYNPRO
      perform bdc_field  using con_okcode   con_show.   "Aktion
*-----Aufruf der Transaktion mit Parameterbergabe
      call transaction con_se37 using it_bdc mode con_error.
                                       "messages
      sy-lsind = 0.

    when text-t31.                     "Reports
*-----SET/GET-Parameter setzen
      set parameter id 'RID' field gv_objname.
*-----Fllen der BDC-itab
      perform bdc_dynpro using 'SAPLWBABAP'      '0100'.   "DYNPRO
      perform bdc_field  using 'RS38M-FUNC_EDIT' con_x.    "Radiobutton
      perform bdc_field  using con_okcode        con_shop. "Aktion
*-----Aufruf der Transaktion mit Parameterbergabe
      call transaction con_se38 using it_bdc mode con_error.
                                       "messages

*    when text-t41.                       "SAP-Objekte

    when text-t51.                     "SAP-Tabellen
*-----SET/GET-Parameter setzen
      set parameter id 'DTB' field gv_objname.
*-----Fllen der BDC-itab
      perform bdc_dynpro using 'SAPMSRD0'   '0102'.     "DYNPRO
      perform bdc_field  using 'RSRD1-TBMA' con_x.      "Radiobutton
      perform bdc_field  using con_okcode   con_show.   "Aktion
*-----Aufruf der Transaktion mit Parameterbergabe
      call transaction con_se11 using it_bdc mode con_error.
                                       "messages
      sy-lsind = 0.

*    when text-t61.                       "SQL-Tabellen

    when text-t71.                     "Transaktionscodes
*-----SET/GET-Parameter setzen
      set parameter id 'TCD' field gv_objname.
*-----Fllen der BDC-itab
      perform bdc_dynpro using 'SAPLSEUK'  '0390'.   "DYNPRO
      perform bdc_field  using con_okcode  con_show. "Aktion
*-----Aufruf der Transaktion mit Parameterbergabe
      call transaction con_se93 using it_bdc mode con_error.
                                       "messages
      sy-lsind = 0.

*    WHEN TEXT-T81.                     "Typgruppen
**-----SET/GET-Parameter setzen
*      SET PARAMETER ID 'DOB' FIELD gv_OBJNAME.
**-----Fllen der BDC-itab
*      PERFORM BDC_DYNPRO USING 'SAPMSRD0'   '0102'.       "DYNPRO
*      PERFORM BDC_FIELD  USING 'RSRD1-TYMA' CON_X.        "Radiobutton
*      PERFORM BDC_FIELD  USING CON_OKCODE   CON_SHOW.     "Aktion
**-----Aufruf der Transaktion mit Parameterbergabe
*      CALL TRANSACTION CON_SE11 USING IT_BDC MODE CON_ERROR.
*                                       "messages
*      SY-LSIND = 0.

    when text-t91.                     "Views
*-----SET/GET-Parameter setzen
      set parameter id 'DVI' field gv_objname.
*--Fllen der BDC-itab
      perform bdc_dynpro using 'SAPMSRD0'   '0102'.       "DYNPRO
      perform bdc_field  using 'RSRD1-VIMA' con_x.        "Radiobutton
      perform bdc_field  using con_okcode   con_show.     "Aktion
*-----Aufruf der Transaktion mit Parameterbergabe
      call transaction con_se11 using it_bdc mode con_error.
                                       "messages
      sy-lsind = 0.
    when others.
  endcase.
* ................. Funktionstasten ...................................*

at user-command.
  clear:   wa_bdc.
  refresh: it_bdc.
*-Cursorposition ermitteln
  perform get_cursor_objname.
*-Welches Schweinderl httens denn gern?
  case sy-ucomm.
*---Sortieren der Liste nach Userwunsch
    when con_sort_up or con_sort_down.      "Entscheidung, ob auf- oder
      get cursor field gv_field.           "abwrts, fllt in der
      if gv_field+7(5) = 'SPRAS'.          "Form-Routine
        perform sort_tab tables it_tab using gv_field+7(5).
      else.
        perform sort_tab tables it_tab using gv_field+7(5).
      endif.
      perform top_of_page.
      perform display_data.
      sy-lsind = 0.

    when con_sa38.                     "ABAP-Programmausfhrung
*-----SET/GET-Parameter setzen
      set parameter id 'RID' field gv_objname.
*-----Fllen der BDC-itab
      perform bdc_dynpro using 'SAPMS38M'   '0101'.     "DYNPRO
*-----Aufruf der Transaktion mit Parameterbergabe
      call transaction con_sa38 using it_bdc mode con_error.
                                       "messages

    when con_se11.                     "Data Dictionary
*-----Variablenvorbelegung fr den jeweils zu setzenden Radiobutton
      perform set_buttonname_parameter.
*-----Fllen der BDC-itab
      perform bdc_dynpro using 'SAPMSRD0'     '0102'.     "DYNPRO
      perform bdc_field  using gv_buttonname con_x.      "Radiobutton
      perform bdc_field  using con_okcode     con_show.   "Aktion
*-----Aufruf der Transaktion mit Parameterbergabe
      call transaction con_se11 using it_bdc mode con_error.
                                       "messages
      sy-lsind = 0.

    when con_se16.                     "Data Browser
*-----SET/GET-Parameter setzen
      set parameter id 'DTB' field gv_objname.
*-----Fllen der BDC-itab
      perform bdc_dynpro using 'SAPLSETB'  '0230'.     "DYNPRO
      perform bdc_field  using con_okcode  con_anze.   "Aktion
*-----Aufruf der Transaktion mit Parameterbergabe
      call transaction con_se16 using it_bdc mode con_error.
                                       "messages
      sy-lsind = 0.

    when con_se37.                     "Function Builder
*-----SET/GET-Parameter setzen
      set parameter id 'LIB' field gv_objname.
*-----Fllen der BDC-itab
      perform bdc_dynpro using 'SAPMS38L'   '1009'.     "DYNPRO
      perform bdc_field  using con_okcode   con_show.   "Aktion
*-----Aufruf der Transaktion mit Parameterbergabe
      call transaction con_se37 using it_bdc mode con_error.
                                       "messages
      sy-lsind = 0.

    when con_se38.                     "ABAP-Editor
*-----SET/GET-Parameter setzen
      set parameter id 'RID' field gv_objname.
*-----Fllen der BDC-itab
      perform bdc_dynpro using 'SAPLWBABAP'        '0100'.   "DYNPRO
      perform bdc_field  using 'RS38M-FUNC_EDIT' con_x.    "Radiobutton
      perform bdc_field  using con_okcode        con_shop. "Aktion
*-----Aufruf der Transaktion mit Parameterbergabe
      call transaction con_se38 using it_bdc mode con_error.
                                       "messages
      sy-lsind = 0.

    when con_se80.                     "Object Navigator
*-----SET/GET-Parameter setzen
      set parameter id 'RID' field gv_objname.
**-----Fllen der BDC-itab
      perform bdc_dynpro using 'SAPLWB_INITIAL_TOOL' '0100'.  "DYNPRO
      perform bdc_field  using con_okcode con_otherobj.       "Aktion
*      PERFORM BDC_DYNPRO USING 'SAPLSEWB'  '0500'.            "DYNPRO
      perform bdc_dynpro using 'SAPLSEWB_CONTROL'  '0520'.    "DYNPRO
      perform bdc_field  using 'RSEUX-RID'  con_x.          "Radiobutton
      perform bdc_field  using 'RSEUX-EP_VALUE' gv_objname. "Feldinhalt
      perform bdc_field  using con_okcode   con_show.          "Aktion
      perform bdc_field  using con_okcode   con_objlist.       "Aktion
*-----Aufruf der Transaktion mit Parameterbergabe
      call transaction con_se80 using it_bdc mode con_error.
                                       "messages
      sy-lsind = 0.

    when con_se93.                     "Transaktionspflege
*-----SET/GET-Parameter setzen
      set parameter id 'TCD' field gv_objname.
*-----Fllen der BDC-itab
      perform bdc_dynpro using 'SAPLSEUK'  '0390'.   "DYNPRO
      perform bdc_field  using con_okcode  con_show. "Aktion
*-----Aufruf der Transaktion mit Parameterbergabe
      call transaction con_se93 using it_bdc mode con_error.
                                       "messages
      sy-lsind = 0.

    when con_execute.                   "Ausfhren
      call transaction gv_objname.

    when con_line.                      "Trennlinien ein/aus
      if p_line = space.
        p_line = con_x.
       else.
        p_line = space.
      endif.
      perform top_of_page.
      perform display_data.
      sy-lsind = 0.

    when others.                       "Der Rest der Welt

  endcase.

* ================= Ende Source =======================================*
*&---------------------------------------------------------------------*
*&      Form  POPUP_MELDUNG
*&---------------------------------------------------------------------*
*       Popup fr Fehlermeldung
*----------------------------------------------------------------------*
*      -->P_gv_TITEL  text                                            *
*      -->P_gv_LINE1  text                                            *
*      -->P_gv_LINE2  text                                            *
*----------------------------------------------------------------------*
form popup_meldung using titel
                         line1
                         line2.

  call function 'POPUP_TO_DISPLAY_TEXT'
       exporting
            titel        = titel
            textline1    = line1
            textline2    = line2
            start_column = 5
            start_row    = 6
       exceptions
            others       = 1.
  if sy-subrc <> 0.
    leave program.
  endif.
endform.                               " POPUP_MELDUNG
*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       Datenbeschaffung
*----------------------------------------------------------------------*
form get_data .

*-Konvertieren der Usereingabe in GROSSBUCHSTABEN
  translate p_text to upper case.

*-Welches Schweinderl httens denn gern?
  case con_x.
    when p_elemen.                     "Datenelement
      perform get_element.
      set pf-status 'SE11'.
    when p_domain.                     "Domne
      perform get_domain.
      set pf-status 'SE11'.
    when p_fb.                         "Funktionsbaustein
      perform get_fb.
      set pf-status 'SE37'.
    when p_report.                     "Report
      perform get_report.
      set pf-status 'SA38_SE38_80'.
    when p_saptab.                     "SAP-Tabelle
      perform get_saptab.
      set pf-status 'SE11_16'.
    when p_tcode.                      "Transaktionscode
      perform get_tcode.
      set pf-status 'SE93'.
*    WHEN P_TYPGRP.                     "Typgruppe
*      PERFORM GET_TYPGRP.
*      SET PF-STATUS 'SE11'.
    when p_view.                       "View
      perform get_view.
      set pf-status 'SE11'.
    when others.
      "Lesen Sie die Dokumentation oder fragen Sie Ihren
                                       "Berater und Entwickler.
  endcase.

*-Ermitteln der Anzahl der Datenstze in der internen Tabelle
  describe table it_tab lines gv_count.
*-1. Sortierung der Daten: Nach Beschreibungstext aufsteigend
  sort it_tab by text ascending.

endform.                               " GET_DATA

*&---------------------------------------------------------------------*
*&      Form  GET_ELEMENT
*&---------------------------------------------------------------------*
*       Verarbeitung Datenelement
*----------------------------------------------------------------------*
form get_element.

*-Selektion der Datenstze
  perform select_element.

*-Setzen der Listenberschrift fr die Objektart
  sy-tvar0 = text-t01.

*-Sichern der verarbeiteten Objektart
  gv_object = text-t01.

endform.                               " GET_ELEMENT
*&---------------------------------------------------------------------*
*&      Form  GET_DOMAIN
*&---------------------------------------------------------------------*
*       Verarbeitung Domne
*----------------------------------------------------------------------*
form get_domain.

*--Selektion der Datenstze
  perform select_domain.

*-Setzen der Listenberschrift fr die Objektart
  sy-tvar0 = text-t11.

*-Sichern der verarbeiteten Objektart
  gv_object = text-t11.

endform.                               " GET_DOMAIN
*&---------------------------------------------------------------------*
*&      Form  GET_FB
*&---------------------------------------------------------------------*
*       Verarbeitung Funktionsbaustein
*----------------------------------------------------------------------*
form get_fb.

*-Selektion der Datenstze
  perform select_fb.

*-Setzen der Listenberschrift fr die Objektart
  sy-tvar0 = text-t21.

*-Sichern der verarbeiteten Objektart
  gv_object = text-t21.

endform.                               " GET_FB
*&---------------------------------------------------------------------*
*&      Form  GET_REPORT
*&---------------------------------------------------------------------*
*       Verarbeitung Report
*----------------------------------------------------------------------*
form get_report.

*-Selektion der Datenstze
  perform select_report.

*-Setzen der Listenberschrift fr die Objektart
  sy-tvar0 = text-t31.

*-Sichern der verarbeiteten Objektart
  gv_object = text-t31.

endform.                               " GET_REPORT
*&---------------------------------------------------------------------*
*&      Form  GET_SAPTAB
*&---------------------------------------------------------------------*
*       Verarbeitung SAP-Tabellen
*----------------------------------------------------------------------*
form get_saptab.

*-Selektion der Datenstze
  perform select_saptab.

*-Setzen der Listenberschrift fr die Objektart
  sy-tvar0 = text-t51.

*-Sichern der verarbeiteten Objektart
  gv_object = text-t51.

endform.                               " GET_SAPTAB
*&---------------------------------------------------------------------*
*&      Form  GET_TCODE
*&---------------------------------------------------------------------*
*       Verarbeitung Transaktionen
*----------------------------------------------------------------------*
form get_tcode.

*-Selektion der Datenstze
  perform select_tcode.

*-Setzen der Listenberschrift fr die Objektart
  sy-tvar0 = text-t71.

*-Sichern der verarbeiteten Objektart
  gv_object = text-t71.

endform.                               " GET_TCODE
*&---------------------------------------------------------------------*
*&      Form  GET_TYPGRP
*&---------------------------------------------------------------------*
*       Verarbeitung Typgruppen
*----------------------------------------------------------------------*
*FORM GET_TYPGRP.
*
**-Selektion der Datenstze
*  PERFORM SELECT_TYPGRP.
*
**-Setzen der Listenberschrift fr die Objektart
*  SY-TVAR0 = TEXT-T81.
*
**-Sichern der verarbeiteten Objektart
*  gv_OBJECT = TEXT-T81.
*
*ENDFORM.                               " GET_TYPGRP
*&---------------------------------------------------------------------*
*&      Form  GET_VIEW
*&---------------------------------------------------------------------*
*       Verarbeitung Views und Sperrobjekten
*----------------------------------------------------------------------*
form get_view.

*-Selektion der Datenstze
  perform select_view.

*-Setzen der Listenberschrift fr die Objektart
  sy-tvar0 = text-t91.

*-Sichern der verarbeiteten Objektart
  gv_object = text-t91.

endform.                               " GET_VIEW
*&---------------------------------------------------------------------*
*&      Form  DISPLAY_DATA
*&---------------------------------------------------------------------*
*       Ausgabe der Liste
*----------------------------------------------------------------------*
form display_data.
  format reset.
  write:/1(125) sy-uline.
  skip to line 8.
  loop at it_tab into wa_tab.
*---Beim Wechsel des Anfangsbuchstabens eine Trennlinie ausgeben.
    if p_line = con_x.
      if sy-tabix > 1.                "Nicht vor dem 1. Satz
        if gv_letter <> wa_tab-text(1).
          write:/1(125) sy-uline.
          gv_letter = wa_tab-text(1).
        endif.
      endif.
    endif.

*Beginn der nderung: GPrser 24.10.2002
*   Wenn SAP-Tabellen gesucht werden, dann wird auch die Tabellenklasse
*   angezeigt
    if p_saptab = con_x.
      write:/1(1)   sy-vline no-gap.
      write: 2(74)  wa_tab-text,
            75(1)   sy-vline no-gap,
            76(29)  wa_tab-name,
            105(1)  sy-vline no-gap,
            106(11) wa_tab-class,
            117(1)  sy-vline no-gap,
            120(7)  wa_tab-spras,
            125(1)  sy-vline no-gap.
      else.
       write:/1(1)  sy-vline no-gap.
       write: 2(74) wa_tab-text,
          75(1)  sy-vline no-gap,
          76(40) wa_tab-name,
          117(1) sy-vline no-gap,
          120(7) wa_tab-spras,
          125(1) sy-vline no-gap.
    endif.
*Ende der nderung: GPrser 24.10.2002

  endloop.

  write:/1(125) sy-uline.

endform.                               " DISPLAY_DATA
*&---------------------------------------------------------------------*
*&      Form  TOP_OF_PAGE
*&---------------------------------------------------------------------*
*       Seitenkopf
*----------------------------------------------------------------------*
form top_of_page.
*de Kopftexte
*e  header
  format reset.
  write:/ text-t06    intensified off color col_heading,
          31 sy-tvar0 intensified off color off,
        / text-t02    intensified off color col_heading,
          31 p_text   intensified off color off,
        / text-t04    intensified off color col_heading,
          gv_count   left-justified intensified off color off.

  skip 1.

*de Spaltenberschriften
*e  column header
*Beginn der nderung: GPrser 24.10.2002
* Unterschiedliches Layout bei der Selektion von SAP-Tabellen, da hier
* jetzt auch die Tabellenklasse ausgegeben wird.
  if sy-tvar0 = text-t51.           "Tabelle
    format intensified on color col_heading.
    write: /1(125) sy-uline.
    write: /1(1)   sy-vline no-gap,
            2(74)  text-t03 color col_heading,
           75(1)   sy-vline no-gap,
           76(29)  sy-tvar0   color col_heading,
           105(1)  sy-vline no-gap,
           106(11) text-t52   color col_heading,
           117(1)  sy-vline no-gap,
           118(7)  text-t05 color col_heading,
           125(1)  sy-vline no-gap.
   else.
    format intensified on color col_heading.
    write: /1(125) sy-uline.
    write: /1(1)   sy-vline no-gap,
            2(74)  text-t03 color col_heading,
           75(1)   sy-vline no-gap,
           76(40)  sy-tvar0   color col_heading,
           117(1)  sy-vline no-gap,
           118(7)  text-t05 color col_heading,
           125(1)  sy-vline no-gap.

  endif.
*Ende der nderung: GPrser 24.10.2002


endform.                               " TOP_OF_PAGE
*&---------------------------------------------------------------------*
*&      Form  GET_CURSOR_OBJNAME
*&---------------------------------------------------------------------*
*       Cursorposition mit Objektnamen ermitteln
*----------------------------------------------------------------------*
form get_cursor_objname.

*-Wenn der Cursor oberhalb der Liste positioniert wurde UND etwas
*-anderes als Trennlinie gewhlt wurde -> Fehlermeldung ausgeben.
  if sy-lilli < 8 and sy-ucomm <> con_line.
    gv_titel = text-p01.
    gv_line1 = text-e03.
    gv_line2 = space.
    perform popup_meldung using gv_titel
                                gv_line1
                                gv_line2.
  endif.

  gv_objname = sy-lisel+75(29).

endform.                               " GET_CURSOR_OBJNAME
*&---------------------------------------------------------------------*
*&      Form  BDC_DYNPRO
*&---------------------------------------------------------------------*
*       Fllen der Batch-Input-Tabelle mit Dynprodaten der Transaktion
*----------------------------------------------------------------------*
*      -->gv_PROGRAM                                                  *
*      -->gv_DYNPRO                                                   *
*----------------------------------------------------------------------*
form bdc_dynpro using program
                      dynpro.
  wa_bdc-program  = program.
  wa_bdc-dynpro   = dynpro.
  wa_bdc-dynbegin = con_x.
  append wa_bdc to it_bdc.

endform.                               " BDC_DYNPRO
*&---------------------------------------------------------------------*
*&      Form  BDC_FIELD
*&---------------------------------------------------------------------*
*       Fllen der Batch-Input-Tabelle mit Felddaten der Transaktion
*----------------------------------------------------------------------*
*      -->P_gv_FNAM  text                                             *
*      -->P_gv_FVAL  text                                             *
*----------------------------------------------------------------------*
form bdc_field using fnam
                     fval.
  if fval is initial. exit. endif.
  wa_bdc-fnam = fnam.
  wa_bdc-fval = fval.
  append wa_bdc to it_bdc.

endform.                               " BDC_FIELD
*&---------------------------------------------------------------------*
*&      Form  SELECT_ELEMENT
*&---------------------------------------------------------------------*
*       Selektion der Datenstze "Datenelement" und Fllen der itab.
*----------------------------------------------------------------------*
form select_element.
  select  rollname ddlanguage as4local as4vers ddtext
    into  (wa_tab-name, wa_tab-spras, wa_tab-aktiv, wa_tab-vers,
           wa_tab-text)
    from  dd04t
    where not rollname is null
      and ddlanguage in so_spras
      and not as4local is null
      and not as4vers  is null.

    if wa_tab-text cs p_text.
      translate wa_tab-text(1) to upper case.
      append wa_tab to it_tab.
    endif.
  endselect.

  if sy-subrc ne 0.                    "Fehler-POPUP ausgebenen
    gv_titel = text-p01.
    gv_line1 = text-e01.
    gv_line2 = text-e02.
    perform popup_meldung using gv_titel
                                gv_line1
                                gv_line2.
    call selection-screen '1000'.
  endif.

endform.                               " SELECT_ELEMENT
*&---------------------------------------------------------------------*
*&      Form  SELECT_DOMAIN
*&---------------------------------------------------------------------*
*       Selektion der Datenstze "Domne" und Fllen der itab.
*----------------------------------------------------------------------*
form select_domain.

  select  domname ddlanguage as4local as4vers ddtext
    into  (wa_tab-name, wa_tab-spras, wa_tab-aktiv, wa_tab-vers,
           wa_tab-text)
    from  dd01t
    where not domname is null
      and ddlanguage in so_spras
      and not as4local is null
      and not as4vers  is null.

    if wa_tab-text cs p_text.
      translate wa_tab-text(1) to upper case.
      append wa_tab to it_tab.
    endif.
  endselect.

  if sy-subrc ne 0.                    "Fehler-POPUP ausgeben
    gv_titel = text-p01.
    gv_line1 = text-e01.
    gv_line2 = text-e11.
    perform popup_meldung using gv_titel
                                gv_line1
                                gv_line2.
    call selection-screen '1000'.
  endif.

endform.                               " SELECT_DOMAIN
*&---------------------------------------------------------------------*
*&      Form  SELECT_FB
*&---------------------------------------------------------------------*
*       Selektion der Datenstze "Funktionsbaustein" und Fllen der itab
*----------------------------------------------------------------------*
form select_fb.

  select  spras funcname stext
    into  (wa_tab-spras, wa_tab-name, wa_tab-text)
    from  tftit
    where spras in so_spras
      and not funcname is null.

    if wa_tab-text cs p_text.
     translate wa_tab-text(1) to upper case.
      append wa_tab to it_tab.
    endif.
  endselect.

  if sy-subrc ne 0.                    "Fehler-POPUP ausgeben
    gv_titel = text-p01.
    gv_line1 = text-e01.
    gv_line2 = text-e21.
    perform popup_meldung using gv_titel
                                gv_line1
                                gv_line2.
    call selection-screen '1000'.
  endif.

endform.                               " SELECT_FB
*&---------------------------------------------------------------------*
*&      Form  SELECT_REPORT
*&---------------------------------------------------------------------*
*       Selektion der Datenstze "Report" und Fllen der itab.
*----------------------------------------------------------------------*
form select_report.

  select  sprsl name text
    into  (wa_tab-spras, wa_tab-name, wa_tab-text)
    from  trdirt
    where sprsl in so_spras
      and not name is null.

    if wa_tab-text cs p_text.
       translate wa_tab-text(1) to upper case.
      append wa_tab to it_tab.
    endif.
  endselect.

  if sy-subrc ne 0.                    "Fehler-POPUP ausgeben
    gv_titel = text-p01.
    gv_line1 = text-e01.
    gv_line2 = text-e31.
    perform popup_meldung using gv_titel
                                gv_line1
                                gv_line2.
    call selection-screen '1000'.
  endif.

endform.                               " SELECT_REPORT
*&---------------------------------------------------------------------*
*&      Form  SELECT_SAPTAB
*&---------------------------------------------------------------------*
*       Selektion der Datenstze "SAP-Tabelle" und Fllen der itab.
*----------------------------------------------------------------------*
form select_saptab.

  select  tabname ddlanguage as4local as4vers ddtext
    into  (wa_tab-name, wa_tab-spras, wa_tab-aktiv, wa_tab-vers,
           wa_tab-text)
    from  dd02t
    where not tabname is null
      and ddlanguage in so_spras
      and not as4local is null
      and not as4vers is null.

    if wa_tab-text cs p_text.
       translate wa_tab-text(1) to upper case.
      append wa_tab to it_tab.
    endif.
  endselect.

  if sy-subrc ne 0.                    "Fehler-POPUP ausgeben
    gv_titel = text-p01.
    gv_line1 = text-e01.
    gv_line2 = text-e51.
    perform popup_meldung using gv_titel
                                gv_line1
                                gv_line2.
    call selection-screen '1000'.
  endif.

*Beginn der nderung: GPrser 24.10.2002
* Hier wird die Tabellenart gelesen. (TRANSP, INTTAB, CLUSTER, POOL,
*                                     VIEW oder APPEND)
  loop at it_tab into wa_tab.
    select single tabclass
      into  wa_tab-class
      from  dd02l
      where tabname = wa_tab-name
        and not as4local is null
        and not as4vers  is null.

    modify it_tab from wa_tab transporting class.
  endloop.
*Ende der nderung: GPrser 24.10.2002

endform.                               " SELECT_SAPTAB
*&---------------------------------------------------------------------*
*&      Form  SELECT_TCODE
*&---------------------------------------------------------------------*
*       Selektion der Datenstze "Transaktionen" und Fllen der itab.
*----------------------------------------------------------------------*
form select_tcode.

  select  sprsl tcode ttext
    into  (wa_tab-spras, wa_tab-name, wa_tab-text)
    from  tstct
    where sprsl in so_spras
      and not tcode is null.

    if wa_tab-text cs p_text.
      translate wa_tab-text(1) to upper case.
      append wa_tab to it_tab.
    endif.
  endselect.

  if sy-subrc ne 0.                    "Fehler-POPUP ausgeben
    gv_titel = text-p01.
    gv_line1 = text-e01.
    gv_line2 = text-e71.
    perform popup_meldung using gv_titel
                                gv_line1
                                gv_line2.
    call selection-screen '1000'.
  endif.

endform.                               " SELECT_TCODE
*&---------------------------------------------------------------------*
*&      Form  SELECT_TYPGRP
*&---------------------------------------------------------------------*
*       Selektion der Datenstze "Typgruppen" und Fllen der itab.
*----------------------------------------------------------------------*
*FORM SELECT_TYPGRP.
*
*  SELECT  TYPEGROUP DDLANGUAGE DDTEXT
*    INTO  (WA_TAB-NAME, WA_TAB-SPRAS, WA_TAB-TEXT)
*    FROM  DDTYPET
*    WHERE NOT TYPEGROUP IS NULL
*      AND DDLANGUAGE IN SO_SPRAS.
*
*    IF WA_TAB-TEXT CS P_TEXT.
*      APPEND WA_TAB TO IT_TAB.
*    ENDIF.
*  ENDSELECT.
*
*  IF SY-SUBRC NE 0.                    "Fehler-POPUP ausgeben
*    gv_TITEL = TEXT-P01.
*    gv_LINE1 = TEXT-E01.
*    gv_LINE2 = TEXT-E81.
*    PERFORM POPUP_MELDUNG USING gv_TITEL
*                                gv_LINE1
*                                gv_LINE2.
*    CALL SELECTION-SCREEN '1000'.
*  ENDIF.
*
*ENDFORM.                               " SELECT_TYPGRP
*&---------------------------------------------------------------------*
*&      Form  SELECT_VIEW
*&---------------------------------------------------------------------*
*       Selektion der Datenstze "View" und Fllen der itab.
*----------------------------------------------------------------------*
form select_view.

  select  ddlanguage viewname as4local as4vers ddtext
    into  (wa_tab-spras, wa_tab-name, wa_tab-aktiv, wa_tab-vers,
           wa_tab-text)
    from  dd25t
    where ddlanguage in so_spras
      and not viewname is null
      and not as4local is null
      and not as4vers is null.

    if wa_tab-text cs p_text.
      translate wa_tab-text(1) to upper case.
      append wa_tab to it_tab.
    endif.
  endselect.

  if sy-subrc ne 0.                    "Fehler-POPUP ausgeben
    gv_titel = text-p01.
    gv_line1 = text-e01.
    gv_line2 = text-e91.
    perform popup_meldung using gv_titel
                                gv_line1
                                gv_line2.
    call selection-screen '1000'.
  endif.

endform.                               " SELECT_VIEW
*&---------------------------------------------------------------------*
*&      Form  SET_BUTTONNAME
*&---------------------------------------------------------------------*
*       Setzen der Dynprofeld-Bezeichnung
*----------------------------------------------------------------------*
form set_buttonname_parameter.
  case gv_object.
    when text-t01.                     "Datenelement
      gv_buttonname = 'RSRD1-DDTYPE'.
      set parameter id 'DTYP' field gv_objname.
    when text-t11.                     "Domne
      gv_buttonname = 'RSRD1-DOMA'.
      set parameter id 'DOM' field gv_objname.
    when text-t51.                     "Tabelle
      gv_buttonname = 'RSRD1-TBMA'.
      set parameter id 'DTB' field gv_objname.
*    WHEN TEXT-T81.                     "Typgruppe
*      gv_BUTTONNAME = 'RSRD1-TYMA'.
    when text-t91.                     "View
      gv_buttonname = 'RSRD1-VIMA'.
      set parameter id 'DVI' field gv_objname.
  endcase.
endform.                               " SET_BUTTONNAME_PARAMETER
*&---------------------------------------------------------------------*
*&      Form  SORT_TAB
*&---------------------------------------------------------------------*
*       Sortieren des Ausgabeliste
*----------------------------------------------------------------------*
form sort_tab tables tab structure wa_tab
              using  field.
  case sy-ucomm.
    when con_sort_up.
      sort tab by (field) ascending.
    when con_sort_down.
      sort tab by (field) descending.
    when others.
      "Alles bleibt wie es war, alles klar, alles klar...
  endcase.

endform.                               " SORT_TAB
