‎2022 Jun 23 6:24 AM
I was trying to select from table SCARR, SPFLI using specific parameters. When something is selected, it should be transferred from internal table to ALV.
Here's my code:
REPORT ABC MESSAGE-ID MSG_TEST.
*TABLES
TABLES: SPFLI,
SCARR.
*PARAMETER DECLARATION
SELECTION-SCREEN BEGIN OF BLOCK b1.
PARAMETERS: p_carrid TYPE scarr-carrid DEFAULT 'AA',
p_connid TYPE spfli-connid DEFAULT '0017'.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
TYPES: BEGIN OF i_tab,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
countryfr TYPE spfli-countryfr,
countryto TYPE spfli-countryto,
END OF i_tab.
DATA: lv_carrid TYPE scarr-carrid,
lv_connid TYPE spfli-connid,
i_spfli TYPE STANDARD TABLE OF i_tab,
i_fieldcat TYPE slis_t_fieldcat_alv.
START-OF-SELECTION.
SELECT SINGLE CARRID
FROM SCARR
INTO @lv_carrid
WHERE carrid = @p_carrid.
IF sy-subrc <> 0.
MESSAGE E001.
STOP.
ENDIF.
END-OF-SELECTION.
START-OF-SELECTION.
SELECT CARRID,
CONNID,
COUNTRYFR,
COUNTRYTO
FROM SPFLI
INTO TABLE @i_spfli
WHERE carrid = @p_carrid
AND connid = @p_connid.
IF sy-subrc <> 0.
MESSAGE I001.
STOP.
ENDIF.
*PASSING OF SELECTED VALUES INTO ALV
i_fieldcat = VALUE #( ( fieldname = 'p_carrid' seltext_l = 'Airline Code')
( fieldname = 'p_connid' seltext_l = 'Flight Connection')
( fieldname = 'spfli_countryfr' seltext_l = 'Country From' )
( fieldname = 'spfli_countryto' seltext_l = 'Country To')
).
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
it_fieldcat = i_fieldcat
TABLES
t_outtab = i_spfli
EXCEPTIONS
program_error = 1
others = 2.
IF sy-subrc <> 0.
MESSAGE |An Error Occured!| TYPE 'E'.
ENDIF.
END-OF-SELECTION.
‎2022 Jun 23 6:47 AM
Hi Wane,
Please try below code. It's working. I changed field names in fieldcatelog. You need to pass same field name which you have used in structure.
TABLES: SPFLI,
SCARR.
*PARAMETER DECLARATION
SELECTION-SCREEN BEGIN OF BLOCK b1.
PARAMETERS: p_carrid TYPE scarr-carrid DEFAULT 'AA',
p_connid TYPE spfli-connid DEFAULT '0017'.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
TYPES: BEGIN OF i_tab,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
countryfr TYPE spfli-countryfr,
countryto TYPE spfli-countryto,
END OF i_tab.
DATA: lv_carrid TYPE scarr-carrid,
lv_connid TYPE spfli-connid,
i_spfli TYPE STANDARD TABLE OF i_tab,
i_fieldcat TYPE slis_t_fieldcat_alv.
START-OF-SELECTION.
SELECT SINGLE CARRID
FROM SCARR
INTO @lv_carrid
WHERE carrid = @p_carrid.
IF sy-subrc <> 0.
* MESSAGE E001.
STOP.
ENDIF.
END-OF-SELECTION.
START-OF-SELECTION.
SELECT CARRID,
CONNID,
COUNTRYFR,
COUNTRYTO
FROM SPFLI
INTO TABLE @i_spfli
WHERE carrid = @p_carrid
AND connid = @p_connid.
IF sy-subrc <> 0.
* MESSAGE I001.
STOP.
ENDIF.
*PASSING OF SELECTED VALUES INTO ALV
i_fieldcat = VALUE #( ( fieldname = 'CARRID' seltext_l = 'Airline Code')
( fieldname = 'CONNID' seltext_l = 'Flight Connection')
( fieldname = 'COUNTRYFR' seltext_l = 'Country From' )
( fieldname = 'COUNTRYTO' seltext_l = 'Country To')
).
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = 'X'
it_fieldcat = i_fieldcat
TABLES
t_outtab = i_spfli
EXCEPTIONS
program_error = 1
others = 2.
IF sy-subrc <> 0.
MESSAGE |An Error Occured!| TYPE 'E'.
ENDIF.
END-OF-SELECTION.Regards,
Anuja Kawadiwale
‎2022 Jun 23 6:47 AM
Hi Wane,
Please try below code. It's working. I changed field names in fieldcatelog. You need to pass same field name which you have used in structure.
TABLES: SPFLI,
SCARR.
*PARAMETER DECLARATION
SELECTION-SCREEN BEGIN OF BLOCK b1.
PARAMETERS: p_carrid TYPE scarr-carrid DEFAULT 'AA',
p_connid TYPE spfli-connid DEFAULT '0017'.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
TYPES: BEGIN OF i_tab,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
countryfr TYPE spfli-countryfr,
countryto TYPE spfli-countryto,
END OF i_tab.
DATA: lv_carrid TYPE scarr-carrid,
lv_connid TYPE spfli-connid,
i_spfli TYPE STANDARD TABLE OF i_tab,
i_fieldcat TYPE slis_t_fieldcat_alv.
START-OF-SELECTION.
SELECT SINGLE CARRID
FROM SCARR
INTO @lv_carrid
WHERE carrid = @p_carrid.
IF sy-subrc <> 0.
* MESSAGE E001.
STOP.
ENDIF.
END-OF-SELECTION.
START-OF-SELECTION.
SELECT CARRID,
CONNID,
COUNTRYFR,
COUNTRYTO
FROM SPFLI
INTO TABLE @i_spfli
WHERE carrid = @p_carrid
AND connid = @p_connid.
IF sy-subrc <> 0.
* MESSAGE I001.
STOP.
ENDIF.
*PASSING OF SELECTED VALUES INTO ALV
i_fieldcat = VALUE #( ( fieldname = 'CARRID' seltext_l = 'Airline Code')
( fieldname = 'CONNID' seltext_l = 'Flight Connection')
( fieldname = 'COUNTRYFR' seltext_l = 'Country From' )
( fieldname = 'COUNTRYTO' seltext_l = 'Country To')
).
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = 'X'
it_fieldcat = i_fieldcat
TABLES
t_outtab = i_spfli
EXCEPTIONS
program_error = 1
others = 2.
IF sy-subrc <> 0.
MESSAGE |An Error Occured!| TYPE 'E'.
ENDIF.
END-OF-SELECTION.Regards,
Anuja Kawadiwale
‎2022 Jun 23 6:51 AM
Hi Wane,
In above code I have added I_INTERFACE_CHECK = 'X' in REUSE_AV_GRID_DISPLAY FM to check the error you can comment it once code is working. Also I comment message also in my code you can uncomment it.
‎2022 Jun 23 8:06 AM
Don't use REUSE_ALV_GRID_DISPLAY. It's error prone and is deprecated.
Instead, use CL_SALV_TABLE.