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
Code: Alles auswählen.
types: slis_t_fieldcat_alv type slis_fieldcat_alv occurs 1.
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.
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
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
Das wird auch nichts bringen, da es diese Feldnamen nicht gibt:inab hat geschrieben: versuche doch mal beim aufbau des Feldkatalogs anstatt
ls_fieldcat-fieldname = 'SLIFHT-CARRID'.
ls_fieldcat-fieldname = 'LT_FLIGHT-CARRID'.
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.
JHM hat geschrieben:Das wird auch nichts bringen, da es diese Feldnamen nicht gibt:inab hat geschrieben: versuche doch mal beim aufbau des Feldkatalogs anstatt
ls_fieldcat-fieldname = 'SLIFHT-CARRID'.
ls_fieldcat-fieldname = 'LT_FLIGHT-CARRID'.
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.