Select mit join

Getting started ... Alles für einen gelungenen Start.
25 Beiträge • Vorherige Seite 2 von 2 (current)
25 Beiträge Vorherige Seite 2 von 2 (current)

Re: Select mit join

Beitrag von casman (Specialist / 420 / 1 / 63 ) »
Scheinbar nicht. Die Hilfe ist die Standard-Hilfe -> SE37 -> Baustein anzeigen -> Funktionsbausteindokumentation:
Aufbau des Feldkatalogs aus Dictionarystruktur oder interner Tabelle

Funktionalität
Unterstützt den Aufbau des Feldkatalogs für die ALV-Funktionsbausteine. Der Aufbau erfolgt alternativ auf Basis einer im ABAP Data Dictionary definierten Struktur bzw. Tabelle oder einer programminternen Tabelle.
Alternativ: Bau dir den Fieldcat selbst zusammen, ist fast schneller bei 5 Feldern.

Folgende Benutzer bedankten sich beim Autor casman für den Beitrag:
Spookykid


gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Select mit join

Beitrag von Spookykid (Specialist / 140 / 28 / 0 ) »
Leider noch immer der selbe Fehler. Hier nochmal mein code

Code: Alles auswählen.

TYPES: BEGIN OF ty_ausg,
        posid LIKE prps-posid,
        objnr LIKE prps-objnr,
        prart LIKE prps-prart,
        stat LIKE jest-stat,
       END OF ty_ausg.


CONSTANTS : rbselected TYPE c LENGTH 1 VALUE 'X'.
DATA: t_ausg TYPE TABLE OF ty_ausg WITH HEADER LINE, p_prart TYPE prps-prart, wa_ausg TYPE ty_ausg.

SELECTION-SCREEN BEGIN OF BLOCK para WITH FRAME TITLE text-001.


PARAMETERS: p_bukrs TYPE bukrs OBLIGATORY.
SELECT-OPTIONS:
    so_prart FOR p_prart.

SELECTION-SCREEN END OF BLOCK para.

SELECTION-SCREEN BEGIN OF BLOCK rbuttons WITH FRAME TITLE text-002.


SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 2.
PARAMETERS: rb1 RADIOBUTTON GROUP rb .
SELECTION-SCREEN COMMENT 5(30) text-003 .
SELECTION-SCREEN END OF LINE.


SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 2.
PARAMETERS: rb2 RADIOBUTTON GROUP rb.
SELECTION-SCREEN COMMENT 5(30) text-004.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK rbuttons.

*&---------------------------------------------------------------------*
*& Applikationslogik
*&---------------------------------------------------------------------*


IF rb1 = rbselected.

  SELECT prps~posid prps~objnr prps~prart jest~stat

      FROM prps JOIN jest ON prps~objnr = jest~objnr
      INTO CORRESPONDING FIELDS OF TABLE  t_ausg
           WHERE  prps~pbukr  = p_bukrs
           AND    prps~prart  IN so_prart
           AND    jest~inact <> 'X'
           .

ENDIF.







IF rb2 = rbselected.

  SELECT prps~posid prps~objnr prps~prart jest~stat

      FROM prps JOIN jest ON prps~objnr = jest~objnr
      INTO CORRESPONDING FIELDS OF TABLE  t_ausg
           WHERE  prps~pbukr  = p_bukrs
           AND    prps~prart  IN so_prart
           AND    jest~inact = 'X'
           .

ENDIF.




TYPE-POOLS: slis.

DATA lt_fcat TYPE slis_t_fieldcat_alv.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  EXPORTING
    i_internal_tabname = 'T_AUSG'
  CHANGING
    ct_fieldcat        = lt_fcat.



CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
    i_structure_name = space
    it_fieldcat      = lt_fcat
  TABLES
    t_outtab         = t_ausg
  EXCEPTIONS
    program_error    = 1
    OTHERS           = 2.
Aus der Funktionsbausteindoku
Die programminterne Tabelle muss entweder in einem -TOP Inlcude stehen
oder das einschliessende Include muss explizit in der Schnittstelle
bekannt gegeben werden.
Kann mir das jemand erklären? Muss ich meinen Datentyp extern definieren und dann durch ein Include einbinden?

Kann ich nicht einfach eine DDIC Struktur händisch erstellen und dann mitgeben?

Re: Select mit join

Beitrag von casman (Specialist / 420 / 1 / 63 ) »
Also, nochmal zum Klarstellen:

Du hast entweder eine Struktur im DDIC definiert und leitest deine Tabelle davon ab oder du hast einen TYPE intern im Programm definiert und bildest daraus deine Tabelle. Im ersten Fall gibts keine Probleme, da der Fieldcat direkt aus dem DDIC aufgebaut werden kann. Im zweiten Fall muss du dem Baustein irgendwie begreiflich machen, WO deine interne Tabelle definiert ist (sofern das nicht in einem TOP-Include passiert) die er nutzen soll.

Du kannst also entweder

- eine DDIC-Struktur deiner Felder stellen und diese dem DISPLAY-Baustein direktmitgeben, dann brauchst du den MERGE-Baustein gar nicht oder
- du versucht folgenden Aufruf, da du dem MERGE-Baustein mitteilen musst, wo er deine interne Tabelle suchen soll:

Code: Alles auswählen.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  EXPORTING
    i_program_name    = sy-repid
    i_internal_tabname = 'T_AUSG'
    i_incl_name            = sy-repid
  CHANGING
    ct_fieldcat        = lt_fcat.

Re: Select mit join

Beitrag von Spookykid (Specialist / 140 / 28 / 0 ) »
ok, so weit habe ich das verstanden. Mir war die Logik mit dem Top-Include jedoch nicht ganz klar.

Re: Select mit join

Beitrag von Spookykid (Specialist / 140 / 28 / 0 ) »
Leider bekomme ich eine Exception.

Ich habe den Fehlertext mal abgespeichert, vielleicht kann jemand damit was anfangen.

Vielen dank

Re: Select mit join

Beitrag von casman (Specialist / 420 / 1 / 63 ) »
Du hast in deinem Quelltext eine Zeile mit mehr als 72 Zeichen. Füge hier einen Umbruch ein...

DATA: t_ausg TYPE TABLE OF ty_ausg WITH HEADER LINE, p_prart TYPE prps-prart, wa_ausg TYPE ty_ausg.

Re: Select mit join

Beitrag von Spookykid (Specialist / 140 / 28 / 0 ) »
ok, die Exception wird nicht mehr geworfen, allerdings bekomme ich wieder die Fehlermeldung, dass der Feldkatalog nicht gefunden werden konnte.

Re: Select mit join

Beitrag von casman (Specialist / 420 / 1 / 63 ) »
Ich glaub, das Beste ist wirklich, du legst dir die Struktur fix im DDIC an...das kostet dich ja hier immer mehr Zeit und Nerven. :-)

EDIT: Eins kannste noch versuchen:

Code: Alles auswählen.

DATA: t_ausg LIKE STANDARD TABLE OF ty_ausg.
Zuletzt geändert von casman am 01.04.2011 14:26, insgesamt 1-mal geändert.

Re: Select mit join

Beitrag von casman (Specialist / 420 / 1 / 63 ) »
PS: Gewöhne dir am Besten gleich das WITH HEADER LINE ab, das ist obsolet und im ABAP-OO fliegts dir um die Ohren. :D

Re: Select mit join

Beitrag von Spookykid (Specialist / 140 / 28 / 0 ) »
casman hat geschrieben:Ich glaub, das Beste ist wirklich, du legst dir die Struktur fix im DDIC an...das kostet dich ja hier immer mehr Zeit und Nerven. :-)

EDIT: Eins kannste noch versuchen:

Code: Alles auswählen.

DATA: t_ausg LIKE STANDARD TABLE OF ty_ausg.
Ich habe hier im System mal einige Programme nach der Reuse_alv... Funktion durchsucht und bin auf Code gestoßen, den ich mal ausprobieren werden.

Vielleicht hilft es dem einen oder anderen von euch, deshalb werden ich ihn hier posten:

Code: Alles auswählen.

TYPE-POOLS: slis.

* Deklarationen

*ALV_GRID
DATA: lt_fcat TYPE slis_t_fieldcat_alv.
DATA: ls_fcat TYPE slis_fieldcat_alv.
DATA: gs_layout TYPE slis_layout_alv.

.
.
.
.


*&---------------------------------------------------------------------*
*&      Form  feldkatalog_fuellen
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM feldkatalog_fuellen.
CLEAR ls_fcat.
  ls_fcat-fieldname = 'BEZEI'.
  ls_fcat-seltext_l = 'Rückmeldungsart'.
  APPEND ls_fcat TO lt_fcat .


  CLEAR ls_fcat.
  ls_fcat-fieldname = 'AUFNR'.
  ls_fcat-seltext_l = 'Auftragsnummer'.
  APPEND ls_fcat TO lt_fcat .

  CLEAR ls_fcat.
  ls_fcat-fieldname = 'VORNR'.
  ls_fcat-seltext_l = 'Vorgangsnummer'.
  APPEND ls_fcat TO lt_fcat .

  CLEAR ls_fcat.
  ls_fcat-fieldname = 'BUDAT'.
  ls_fcat-seltext_l = 'Buchungsdatum'.
  APPEND ls_fcat TO lt_fcat .

  CLEAR ls_fcat.
  ls_fcat-fieldname = 'ISMNW'.
  ls_fcat-seltext_l = 'Istarbeit'.
  APPEND ls_fcat TO lt_fcat .

  CLEAR ls_fcat.
  ls_fcat-fieldname = 'ISMNE'.
  ls_fcat-seltext_l = 'Einheit der Arbeit'.
  APPEND ls_fcat TO lt_fcat .

  CLEAR ls_fcat.
  ls_fcat-fieldname = 'KORRVM'.
  ls_fcat-seltext_l = 'Korrekturvermerk'.
  APPEND ls_fcat TO lt_fcat .

  CLEAR ls_fcat.
  ls_fcat-fieldname = 'AENDERER'.
  ls_fcat-seltext_l = 'Aenderer'.
  APPEND ls_fcat TO lt_fcat .

  CLEAR ls_fcat.
  ls_fcat-fieldname = 'DATUM'.
  ls_fcat-seltext_l = 'Datum'.
  APPEND ls_fcat TO lt_fcat .


ENDFORM. "feldkatalog_fuellen.


*&---------------------------------------------------------------------*
*&      Form  alv_fill
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM alv_fill.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program = sy-repid
      i_grid_title       = 'Account'
      it_fieldcat        = lt_fcat
      is_layout          = gs_layout
      i_save             = 'A'
    TABLES
      t_outtab           = gt_ausgabe
    EXCEPTIONS
      programm_error     = 1
      OTHERS             = 2.


ENDFORM.                    "alv_fill


*&  Form fieldcatalog_commit
*&
*&---------------------------------------------------------------------
FORM fieldcatalog_commit.

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name     = sy-repid
      i_internal_tabname = 'GT_AUSGABE'
    CHANGING
      ct_fieldcat        = lt_fcat
    EXCEPTIONS
      programm_error     = 1
      OTHERS             = 2.

ENDFORM.                    "fieldcatalog_commit

*&---------------------------------------------------------------------*
*&      Form  layout
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->LS_LAYOUT  text
*----------------------------------------------------------------------*
FORM layout USING ls_layout TYPE slis_layout_alv.

  ls_layout-colwidth_optimize = 'X'.

ENDFORM.                    "layout

Vergleichbare Themen

5
Antw.
3735
Views
SELECT - INNER JOIN
von muggel » 03.04.2008 10:41 • Verfasst in ABAP® Core
21
Antw.
10892
Views
Select all bei inner join
von Bright4.5 » 05.09.2018 09:19 • Verfasst in ABAP® für Anfänger
8
Antw.
3581
Views
dynam. Select mit Join
von madeleine104 » 29.09.2016 11:42 • Verfasst in ABAP® für Anfänger
2
Antw.
3063
Views
Select mit mehrere Join's
von nordlender » 23.08.2011 14:37 • Verfasst in ABAP® für Anfänger
2
Antw.
2906
Views
select join substring
von jspranz » 13.11.2017 18:12 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1774
HR-Entgeltnachweis
vor 2 Tagen von ChrisB 4 / 2314

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1774
HR-Entgeltnachweis
vor 2 Tagen von ChrisB 4 / 2314

Unbeantwortete Forenbeiträge

Export von Spools in XLSX
vor 4 Tagen von abapamateur 1 / 341
Feldberechnung ME32K
vor einer Woche von ZF_SAPler 1 / 936
MS-Word als Editor
letzen Monat von tekko 1 / 4445