wie deklariere ich interne tabelle!

Getting started ... Alles für einen gelungenen Start.
13 Beiträge • Seite 1 von 1
13 Beiträge Seite 1 von 1

wie deklariere ich interne tabelle!

Beitrag von mnd (ForumUser / 47 / 3 / 0 ) »
Hallo alle,

Sowie ich verstanden habe, wenn ich eine interne Tablle deklariere muss ich immer mit

itab TYPE TABLE OF (structur oder abap dictionary) deklarieren. Heute habe ich ein Beispiel gesehen
lt_fieldcat TYPE slis_t_fieldcat_alv. slis_t_fieldcat_alv sollt eine Tablle sein. aber bei der Deklaration gibt kein "Table of" dazwischen nur TYPE.


Ist lt_fieldcat eine interne Tabelle oder eine Structur?


MFG
Peter

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


Re: wie deklariere ich interne tabelle!

Beitrag von cfreise (ForumUser / 4 / 0 / 1 ) »
Hallo Peter,

kann es sein, dass slis_t_fieldcat_alv als Tabellentyp deklariert ist ?
Ein "Doppel-Klick" darauf und dann schau dir mal die Beschreibung an.

Grüße
CHF

Folgende Benutzer bedankten sich beim Autor cfreise für den Beitrag:
mnd


Re: wie deklariere ich interne tabelle!

Beitrag von mnd (ForumUser / 47 / 3 / 0 ) »
cfreise hat geschrieben:Hallo Peter,

kann es sein, dass slis_t_fieldcat_alv als Tabellentyp deklariert ist ?
Ein "Doppel-Klick" darauf und dann schau dir mal die Beschreibung an.

Grüße
CHF

Hallo CHF,

Dopel-Klick dann:

Code: Alles auswählen.

types: slis_t_fieldcat_alv type slis_fieldcat_alv occurs 1.
weiter "slis_fieldcat_alv" klick

Code: Alles auswählen.

types: begin of slis_fieldcat_alv.
include type slis_fieldcat_main.
include type slis_fieldcat_alv_spec.
types: end of slis_fieldcat_alv.
Es geht um die Funktionsbaustein 'REUSE_ALV_GRID_DISPLAY'.

Danke voraus

Re: wie deklariere ich interne tabelle!

Beitrag von cfreise (ForumUser / 4 / 0 / 1 ) »
so hat man auch Tabellen definiert - F1 auf OCCURS erklärt einiges :-)

Re: wie deklariere ich interne tabelle!

Beitrag von mnd (ForumUser / 47 / 3 / 0 ) »
Hallo,

Trotzdem gibt es immer fehler.

Code: Alles auswählen.


*&---------------------------------------------------------------------*
*& Report  Z10052012GAP31
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  z10052012gap31.

DATA :
      lt_flight     TYPE TABLE OF sflight,
      lv_carrid     TYPE sflight-carrid,
      lv_connid     TYPE sflight-connid,
      lv_fldate     TYPE sflight-fldate,
      lv_price      TYPE sflight-price,
      lv_currency   TYPE sflight-currency,
      lv_planetype  TYPE sflight-planetype,
      lv_seatsmax   TYPE sflight-seatsmax,
      lv_seatsocc   TYPE sflight-seatsocc,
      lv_paymentsum TYPE sflight-paymentsum,
      lv_seatsmax_b TYPE sflight-seatsmax_b,
      lv_seatsocc_b TYPE sflight-seatsocc_b,
      lv_seatsmax_f TYPE sflight-seatsmax_f,
      lt_fieldcat   TYPE slis_t_fieldcat_alv,
      g_repid       LIKE sy-repid.



SELECTION-SCREEN BEGIN OF BLOCK block-1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:
     s_carrid     FOR   lv_carrid,
     s_connid     FOR   lv_connid,
     s_fldate     FOR   lv_fldate,
     s_price      FOR   lv_price,
     s_crency     FOR   lv_currency,
     s_ftype      FOR   lv_planetype,
     s_smax       FOR   lv_seatsmax,
     s_socc       FOR   lv_seatsocc,
   	 s_paysum     FOR   lv_paymentsum,
     s_smax_b     FOR   lv_seatsmax_b,
     s_socc_b     FOR   lv_seatsmax_f.
SELECTION-SCREEN END OF BLOCK block-1.

INITIALIZATION.
g_repid = sy-repid.
START-OF-SELECTION.

  PERFORM build_fieldcatalog USING lt_fieldcat.

  SELECT *  FROM sflight
  INTO CORRESPONDING FIELDS OF TABLE lt_flight
         WHERE carrid    IN   s_carrid
         AND connid      IN   s_connid
         AND fldate      IN   s_fldate
         AND price       IN   s_price
         AND currency    IN   s_crency
         AND planetype   IN   s_ftype
         AND seatsmax    IN   s_smax
         AND seatsocc    IN   s_socc
       	 AND paymentsum  IN   s_paysum
         AND seatsmax_b  IN   s_smax_b
         AND seatsmax_f  IN   s_socc_b.

  IF sy-subrc NE 0.
    MESSAGE 'No results' TYPE 'I'.
  ELSE.

    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
 EXPORTING
*     I_INTERFACE_CHECK                 = ' '
*     I_BYPASSING_BUFFER                = ' '
*     I_BUFFER_ACTIVE                   = ' '
      I_CALLBACK_PROGRAM                = g_repid
*     I_CALLBACK_PF_STATUS_SET          = ' '
*     I_CALLBACK_USER_COMMAND           = ' '
*     I_CALLBACK_TOP_OF_PAGE            = ' '
*     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*     I_CALLBACK_HTML_END_OF_LIST       = ' '
*      I_STRUCTURE_NAME                  = 'SFLIGHT'
*     I_BACKGROUND_ID                   = ' '
*     I_GRID_TITLE                      =
*     I_GRID_SETTINGS                   =
*     IS_LAYOUT                         =
    it_fieldcat                       = lt_fieldcat[]
*     IT_EXCLUDING                      =
*     IT_SPECIAL_GROUPS                 =
*     IT_SORT                           =
*     IT_FILTER                         =
*     IS_SEL_HIDE                       =
*     I_DEFAULT                         = 'X'
*     I_SAVE                            = ' '
*     IS_VARIANT                        =
*     IT_EVENTS                         =
*     IT_EVENT_EXIT                     =
*     IS_PRINT                          =
*     IS_REPREP_ID                      =
*     I_SCREEN_START_COLUMN             = 0
*     I_SCREEN_START_LINE               = 0
*     I_SCREEN_END_COLUMN               = 0
*     I_SCREEN_END_LINE                 = 0
*     I_HTML_HEIGHT_TOP                 = 0
*     I_HTML_HEIGHT_END                 = 0
*     IT_ALV_GRAPHICS                   =
*     IT_HYPERLINK                      =
*     IT_ADD_FIELDCAT                   =
*     IT_EXCEPT_QINFO                   =
*     IR_SALV_FULLSCREEN_ADAPTER        =
*   IMPORTING
*     E_EXIT_CAUSED_BY_CALLER           =
*     ES_EXIT_CAUSED_BY_USER            =
  TABLES
    t_outtab                          = lt_flight
*   EXCEPTIONS
*     PROGRAM_ERROR                     = 1
*     OTHERS                            = 2
          .
    IF sy-subrc <> 0.
* Implement suitable error handling here
    ENDIF.



  ENDIF.




*&---------------------------------------------------------------------*
*&      Form  build_fieldcatalog
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->LT_FIELDCAT  text
*----------------------------------------------------------------------*
FORM build_fieldcatalog USING lt_fieldcat TYPE slis_t_fieldcat_alv.

  DATA: ls_fieldcat TYPE slis_fieldcat_alv.
  DATA: pos TYPE i VALUE 1.


  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname = 'Carrier'.
  ls_fieldcat-seltext_m = 'Carrier'.
  ls_fieldcat-seltext_s	= 'Mat.'.
  ls_fieldcat-col_pos = pos.
  ls_fieldcat-outputlen = 100.
  ls_fieldcat-key = 'X'.
  APPEND ls_fieldcat TO lt_fieldcat.




ENDFORM.                    "build_fieldcatalog


Re: wie deklariere ich interne tabelle!

Beitrag von cfreise (ForumUser / 4 / 0 / 1 ) »
welche Fehlermeldung kommt denn? - dass musst du schon mitteilen.

Re: wie deklariere ich interne tabelle!

Beitrag von mnd (ForumUser / 47 / 3 / 0 ) »
Hallo,

die Fehlermeldung ist komisch.
2.JPG

Re: wie deklariere ich interne tabelle!

Beitrag von cfreise (ForumUser / 4 / 0 / 1 ) »
stimmt - ein wenig komisch.
Spontan würde ich sagen, dass es handelt sich um den Standard.
Aus der Entfernung für mich schwierig zu klären.
Kannst du feststellen in deinem Dump-Bericht an welcher Stelle er abbricht?

Re: wie deklariere ich interne tabelle!

Beitrag von mnd (ForumUser / 47 / 3 / 0 ) »
wo ist der Fehler. Ich need hhhhheeeLLPP.


Code: Alles auswählen.


*&---------------------------------------------------------------------*
*& Report  Z10052012GAP31
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  z10052012gap31.


TYPES: BEGIN OF t_sflight,
        carrid TYPE sflight-carrid,
       END OF t_sflight.

DATA :
      lt_flight     TYPE TABLE OF t_sflight,
      lv_carrid     TYPE sflight-carrid,
      lv_connid     TYPE sflight-connid,
      lv_fldate     TYPE sflight-fldate,
      lv_price      TYPE sflight-price,
      lv_currency   TYPE sflight-currency,
      lv_planetype  TYPE sflight-planetype,
      lv_seatsmax   TYPE sflight-seatsmax,
      lv_seatsocc   TYPE sflight-seatsocc,
      lv_paymentsum TYPE sflight-paymentsum,
      lv_seatsmax_b TYPE sflight-seatsmax_b,
      lv_seatsocc_b TYPE sflight-seatsocc_b,
      lv_seatsmax_f TYPE sflight-seatsmax_f,
      lt_fieldcat   TYPE slis_t_fieldcat_alv,
      g_repid       LIKE sy-repid.



SELECTION-SCREEN BEGIN OF BLOCK block-1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:
     s_carrid     FOR   lv_carrid,
     s_connid     FOR   lv_connid,
     s_fldate     FOR   lv_fldate,
     s_price      FOR   lv_price,
     s_crency     FOR   lv_currency,
     s_ftype      FOR   lv_planetype,
     s_smax       FOR   lv_seatsmax,
     s_socc       FOR   lv_seatsocc,
   	 s_paysum     FOR   lv_paymentsum,
     s_smax_b     FOR   lv_seatsmax_b,
     s_socc_b     FOR   lv_seatsmax_f.
SELECTION-SCREEN END OF BLOCK block-1.

INITIALIZATION.
g_repid = sy-repid.


START-OF-SELECTION.

  PERFORM build_fieldcatalog USING lt_fieldcat.

  SELECT carrid  FROM sflight
  INTO TABLE lt_flight
         WHERE carrid    IN   s_carrid
         AND connid      IN   s_connid
         AND fldate      IN   s_fldate
         AND price       IN   s_price
         AND currency    IN   s_crency
         AND planetype   IN   s_ftype
         AND seatsmax    IN   s_smax
         AND seatsocc    IN   s_socc
       	 AND paymentsum  IN   s_paysum
         AND seatsmax_b  IN   s_smax_b
         AND seatsmax_f  IN   s_socc_b.

  IF sy-subrc NE 0.
    MESSAGE 'No results' TYPE 'I'.
  ELSE.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
 EXPORTING
      I_CALLBACK_PROGRAM                = g_repid
*      I_STRUCTURE_NAME                  = 'SFLIGHT'
       IT_FIELDCAT                       = lt_fieldcat
 TABLES
    t_outtab                          = lt_flight
*   EXCEPTIONS
*     PROGRAM_ERROR                     = 1
*     OTHERS                            = 2
          .
    IF sy-subrc <> 0.
* Implement suitable error handling here
    ENDIF.



  ENDIF.

END-OF-SELECTION.


*&---------------------------------------------------------------------*
*&      Form  build_fieldcatalog
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->LT_FIELDCAT  text
*----------------------------------------------------------------------*
FORM build_fieldcatalog USING lt_fieldcat TYPE slis_t_fieldcat_alv.

  DATA: ls_fieldcat TYPE slis_fieldcat_alv.


  CLEAR ls_fieldcat.
  ls_fieldcat-col_pos       =  0.
  ls_fieldcat-fieldname     = 'SLIFHT-CARRID'.
  ls_fieldcat-ref_fieldname = 'CARRID'.
  ls_fieldcat-ref_tabname   = 'SFLIGHT'.
  ls_fieldcat-key           = 'X'.
  APPEND ls_fieldcat TO lt_fieldcat.


ENDFORM.                    "build_fieldcatalog

Re: wie deklariere ich interne tabelle!

Beitrag von inab (ForumUser / 69 / 0 / 6 ) »
Hi,

versuche doch mal beim aufbau des Feldkatalogs anstatt

ls_fieldcat-fieldname = 'SLIFHT-CARRID'.
ls_fieldcat-fieldname = 'LT_FLIGHT-CARRID'.

Dies natürlich bei allen anderen Feldern auch.

Du willst ja schliesslich im ALV das Feld der internen Tbelle ausgeben.

Re: wie deklariere ich interne tabelle!

Beitrag von JHM (Top Expert / 1225 / 2 / 204 ) »
inab hat geschrieben: versuche doch mal beim aufbau des Feldkatalogs anstatt

ls_fieldcat-fieldname = 'SLIFHT-CARRID'.
ls_fieldcat-fieldname = 'LT_FLIGHT-CARRID'.
Das wird auch nichts bringen, da es diese Feldnamen nicht gibt:

Code: Alles auswählen.

 CLEAR ls_fieldcat.
  ls_fieldcat-col_pos       =  0.
  ls_fieldcat-fieldname     = 'CARRID'.             "Hier muss der Feldname aus der ITAB hin und nur der Feldname!
  ls_fieldcat-ref_fieldname = 'CARRID'.
  ls_fieldcat-ref_tabname   = 'SFLIGHT'.
  ls_fieldcat-KEY           = 'X'.
  APPEND ls_fieldcat TO lt_fieldcat.
Gruß Hendrik

Re: wie deklariere ich interne tabelle!

Beitrag von jensschladitz (Specialist / 417 / 0 / 56 ) »
Sali,

also der Feldkatalog sollte schon die Felder beinhalten die auch deine interne Tabelle hat . Da du deine interne Tabelle auf die SFLIGHT referenzierst - also diese Felder ! Benutz den FUBA - LVC_FIELDCATALOG_MERGE - zum aufbauen der interne Tabelle mit dem Feldkatalog. Das Ganze bevor du die Ausgabe aufrufst natürlich - und dann gibst du dem REUSE... FUBA einfach die interne Tabelle mit den Feldern mit.
Oder aber du benutzt die RTTI Möglichkeiten für den Aufbau deiner Feldkatalog Tabelle - aber ich vermute - das wäre jetzt ein Schritt zu weit für dich !


Gruss Jens
thanks Jens

Re: wie deklariere ich interne tabelle!

Beitrag von mnd (ForumUser / 47 / 3 / 0 ) »
Hallo Inab,

Es hat gut funktioniert. Vielen danke für deine Tippe. ABAP ist richtig kaos. Die Fehlermeldung ist sehr komisch. aber man wird sich daran gewöhnnen.

mfg
Peter
JHM hat geschrieben:
inab hat geschrieben: versuche doch mal beim aufbau des Feldkatalogs anstatt

ls_fieldcat-fieldname = 'SLIFHT-CARRID'.
ls_fieldcat-fieldname = 'LT_FLIGHT-CARRID'.
Das wird auch nichts bringen, da es diese Feldnamen nicht gibt:

Code: Alles auswählen.

 CLEAR ls_fieldcat.
  ls_fieldcat-col_pos       =  0.
  ls_fieldcat-fieldname     = 'CARRID'.             "Hier muss der Feldname aus der ITAB hin und nur der Feldname!
  ls_fieldcat-ref_fieldname = 'CARRID'.
  ls_fieldcat-ref_tabname   = 'SFLIGHT'.
  ls_fieldcat-KEY           = 'X'.
  APPEND ls_fieldcat TO lt_fieldcat.

Seite 1 von 1

Vergleichbare Themen

4
Antw.
4856
Views
5
Antw.
6049
Views
Inhalt interne Tabelle an andere interne Tabelle übergeben
von L0w-RiDer » 30.01.2020 16:28 • Verfasst in ABAP® für Anfänger
5
Antw.
5633
Views
1
Antw.
5158
Views

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Stücklisten
vor 6 Stunden von Selma.schwarz 1 / 38
Belege
vor 6 Stunden von Selma.schwarz 1 / 30
Belege
vor 6 Stunden von Selma.schwarz 1 / 38

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

Stücklisten
vor 6 Stunden von Selma.schwarz 1 / 38
Belege
vor 6 Stunden von Selma.schwarz 1 / 30
Belege
vor 6 Stunden von Selma.schwarz 1 / 38

Unbeantwortete Forenbeiträge

Stücklisten
vor 6 Stunden von Selma.schwarz 1 / 38
Belege
vor 6 Stunden von Selma.schwarz 1 / 30
Belege
vor 6 Stunden von Selma.schwarz 1 / 38