the case is:
Create one ALV report Grid display with the following functionality.
1) Input fields on the selection screen
a) Sales order no range
b) A layout Variant
2) Do validation for the layout existence at the selection screen.
3) F4 help should be available for the variant on the selection screen.
3) Select VBAK data (fields vbeln, auart erdat ernam) based on screen input
4) Select vbap data ( fields matnr, netwr, waerk ) based on data selected
from VBAK
5) Prepare the final table with the output as 'AUART','VBELN'.'MATNR'. 'ERDAT'.
'ERNAM'.'NETWR'. 'WAERK'.
6) The output should have a heading as 'Training ALV Report'. and sub-heading
'Sales Doc. No:' where you display the input(on selection screen )
sales order no’s if given as a range of single values.
7) The output should have a subtotal based on document type.( field AUART)
8) On the output screen, if we click on the sales order no it should navigate to
sales order display screen (VA03 transaction)
9) The output should have a space reserved for end of list.
Display "Footer" "End of List" there.
TYPE-POOLS : slis.
TABLES : vbak,
vbap.
DATA: fieldcatalog TYPE STANDARD TABLE OF slis_fieldcat_alv WITH HEADER LINE,
t_listheader TYPE TABLE OF slis_listheader.
DATA : BEGIN OF ivbak OCCURS 0,
vbeln LIKE vbak-vbeln,
auart LIKE vbak-auart,
erdat LIKE vbak-erdat,
ernam LIKE vbak-ernam,
waerk LIKE vbak-waerk,
END OF ivbak.
DATA : BEGIN OF ivbap OCCURS 0,
vbeln LIKE vbap-vbeln,
matnr LIKE vbap-matnr,
netwr LIKE vbap-netwr,
END OF ivbap.
DATA : BEGIN OF final OCCURS 0,
vbeln LIKE vbak-vbeln,
auart LIKE vbak-auart,
erdat LIKE vbak-erdat,
ernam LIKE vbak-ernam,
waerk LIKE vbak-waerk,
matnr LIKE vbap-matnr,
netwr LIKE vbap-netwr,
END OF final.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS s_vbeln FOR vbak-vbeln.
SELECTION-SCREEN END OF BLOCK b1.
PERFORM data_retrieval.
PERFORM build_fieldcatalog.
PERFORM display_alv_report.
*&---------------------------------------------------------------------*
*& Form data_retrieval
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM data_retrieval.
SELECT vbeln auart erdat ernam waerk
FROM vbak INTO TABLE ivbak
WHERE vbeln IN s_vbeln.
IF NOT ivbak[] IS INITIAL.
SELECT vbeln matnr netwr
FROM vbap INTO ivbap FOR ALL ENTRIES IN ivbak
WHERE vbeln EQ ivbak-vbeln.
SORT ivbap BY vbeln.
LOOP AT ivbak.
READ TABLE ivbap WITH KEY vbeln = ivbak-vbeln BINARY SEARCH.
IF sy-subrc EQ 0.
MOVE : ivbak-vbeln TO final-vbeln,
ivbak-auart TO final-auart,
ivbak-erdat TO final-erdat,
ivbak-ernam TO final-ernam,
ivbak-waerk TO final-waerk,
ivbap-matnr TO final-matnr,
ivbap-netwr TO final-netwr.
APPEND final.
CLEAR final.
CLEAR ivbak.
CLEAR ivbap.
ELSE.
CONTINUE.
ENDIF.
ENDLOOP.
LOOP AT final.
WRITE : / final-auart,
final-vbeln,
final-matnr,
final-erdat,
final-ernam,
final-waerk,
final-netwr.
ENDLOOP.
ENDSELECT.
ENDIF.
ENDFORM. "data_retrieval
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM build_fieldcatalog.
fieldcatalog-fieldname = 'AUART'.
fieldcatalog-seltext_m = 'SALES DOCUMENT TYPE'.
fieldcatalog-col_pos = 0.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'VBELN'.
fieldcatalog-seltext_m = 'SALES DOCUMENT'.
fieldcatalog-col_pos = 1.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'ARTICLE NUMBER'.
fieldcatalog-col_pos = 2.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'ERDAT'.
fieldcatalog-seltext_m = 'DATE'.
fieldcatalog-col_pos = 3.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'ERNAM'.
fieldcatalog-seltext_m = 'NAME OF PERSON'.
fieldcatalog-col_pos = 4.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'NETWR'.
fieldcatalog-seltext_m = 'NET VALUE ORDER'.
fieldcatalog-col_pos = 5.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'WAERK'.
fieldcatalog-seltext_m = 'SD DOCUMENT CURRENCY'.
fieldcatalog-col_pos = 6.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
ENDFORM. "build_fieldcatalog
*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM display_alv_report.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
* I_CALLBACK_USER_COMMAND = ' '
i_callback_top_of_page = ' top_of_page '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
* IS_LAYOUT =
it_fieldcat = fieldcatalog[]
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* i_save = ' X '
* is_variant = g_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
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* I_HTML_HEIGHT_TOP =
* I_HTML_HEIGHT_END =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = final
EXCEPTIONS
program_error = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. "display_alv_report
*&---------------------------------------------------------------------*
*& Form top_of_page
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM top_of_page .
DATA:lw_header TYPE slis_listheader.
CLEAR:lw_header.
lw_header-typ = 'H'.
lw_header-info = 'TRAINING ALV REPORT'.
APPEND lw_header TO t_listheader.
CLEAR:lw_header.
lw_header-typ = 'S'.
lw_header-key = 'SALES DOCUMENT NUMBER :'.
APPEND lw_header TO t_listheader.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_listheader.
ENDFORM. "top_of_page