*&---------------------------------------------------------------------*
*& Report ZRA_ALV_001
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zra_alv_001.
INCLUDE zra_alv_001_data. "DATA DECLARATION
INCLUDE zra_alv_001_sel. "SELECTION SCREEN
INCLUDE zra_alv_001_form. "SUBROUTINE
INITIALIZATION.
PERFORM clear. "CLEARING WORK AREAS AND INTERNAL TABLES
AT SELECTION-SCREEN.
PERFORM validation. "VALIDATE VBELN FROM VBAK
START-OF-SELECTION.
PERFORM fetch_vbak_vbap_final_join.
PERFORM prepare_fieldcat.
PERFORM optimize_display.
END-OF-SELECTION.
PERFORM display.
*&---------------------------------------------------------------------*
*& Include ZRA_ALV_001_DATA
*&---------------------------------------------------------------------*
TYPE-POOLS: slis.
TYPES: BEGIN OF ty_vbak,
vbeln TYPE vbeln_va, "Sales Document
erdat TYPE erdat, "Date on Which Record Was Created
erzet TYPE erzet, "Entry time
END OF ty_vbak,
BEGIN OF ty_vbap,
vbeln TYPE vbeln_va, "Sales Document
posnr TYPE posnr_va, "Sales Document Item
matnr TYPE matnr, "Material Number
END OF ty_vbap,
BEGIN OF ty_final,
vbeln TYPE vbeln_va, "Sales Document
erdat TYPE erdat, "Date on Which Record Was Created
erzet TYPE erzet, "Entry time
posnr TYPE posnr_va, "Sales Document Item
matnr TYPE matnr, "Material Number
END OF ty_final.
DATA:it_vbak TYPE STANDARD TABLE OF ty_vbak INITIAL SIZE 0,
wa_vbak TYPE ty_vbak,
it_vbap TYPE STANDARD TABLE OF ty_vbap INITIAL SIZE 0,
wa_vbap TYPE ty_vbap,
it_final TYPE STANDARD TABLE OF ty_final INITIAL SIZE 0,
it_fcat TYPE slis_t_fieldcat_alv,
wa_fcat TYPE slis_fieldcat_alv,
wa_layo TYPE slis_layout_alv,
wa_final TYPE ty_final,
lv_vbeln TYPE vbak-vbeln,
lv_index TYPE sytabix,
lv_repid TYPE syrepid.
CONSTANTS: wc_x TYPE char1 VALUE 'X'.
*&---------------------------------------------------------------------*
*& Include ZRA_ALV_001_SEL
*&---------------------------------------------------------------------*
TABLES: vbak.
SELECT-OPTIONS:s_vbeln FOR vbak-vbeln.
PARAMETERS: r1 RADIOBUTTON GROUP g1 DEFAULT 'X',
r2 RADIOBUTTON GROUP g1.
*&---------------------------------------------------------------------*
*& Include ZRA_ALV_001_FORM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form CLEAR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM clear .
CLEAR: wa_vbak, wa_vbap, wa_final.
REFRESH: it_vbak, it_vbap, it_final.
ENDFORM. " CLEAR
*&---------------------------------------------------------------------*
*& Form VALIDATION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM validation .
IF s_vbeln IS NOT INITIAL.
SELECT SINGLE vbeln
FROM vbak
INTO lv_vbeln
WHERE vbeln IN s_vbeln.
IF sy-subrc NE 0.
MESSAGE:'Sales Document Number does not exist' TYPE'E'.
ENDIF.
ENDIF.
ENDFORM. " VALIDATION
*&---------------------------------------------------------------------*
*& Form FETCH_VBAK_VBAP_FINAL_JOIN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fetch_vbak_vbap_final_join .
SELECT vbeln
erdat
erzet
FROM vbak
INTO TABLE it_vbak
WHERE vbeln IN s_vbeln.
IF sy-subrc EQ 0.
SORT it_vbak BY vbeln.
ENDIF.
IF it_vbak IS NOT INITIAL.
SELECT vbeln
posnr
matnr
FROM vbap
INTO TABLE it_vbap
FOR ALL ENTRIES IN it_vbak
WHERE vbeln = it_vbak-vbeln.
IF sy-subrc EQ 0.
SORT it_vbap BY vbeln posnr.
ENDIF.
LOOP AT it_vbak INTO wa_vbak.
CLEAR:wa_final.
wa_final-vbeln = wa_vbak-vbeln.
wa_final-erdat = wa_vbak-erdat.
wa_final-erzet = wa_vbak-erzet.
LOOP AT it_vbap INTO wa_vbap FROM lv_index.
IF wa_vbap-vbeln NE wa_vbak-vbeln.
lv_index = sy-tabix.
EXIT.
ELSE.
wa_final-posnr = wa_vbap-posnr.
wa_final-matnr = wa_vbap-matnr.
ENDIF.
APPEND wa_final TO it_final.
ENDLOOP.
ENDLOOP.
SORT it_final BY vbeln.
ENDIF.
ENDFORM. " FETCH_VBAK_VBAP_FINAL_JOIN
*&---------------------------------------------------------------------*
*& Form PREPARE_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM prepare_fieldcat .
REFRESH: it_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'IT_FINAL'.
wa_fcat-fieldname = 'VBELN'.
wa_fcat-col_pos = '1'.
wa_fcat-seltext_m = 'SALES ORDER NUMBER'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'IT_FINAL'.
wa_fcat-fieldname = 'ERDAT'.
wa_fcat-col_pos = '2'.
wa_fcat-seltext_m = 'CREATION DATE'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'IT_FINAL'.
wa_fcat-fieldname = 'ERZET'.
wa_fcat-col_pos = '3'.
wa_fcat-seltext_m = 'CREATION TIME'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'IT_FINAL'.
wa_fcat-fieldname = 'POSNR'.
wa_fcat-col_pos = '4'.
wa_fcat-seltext_m = 'ITEM NUMBER'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'IT_FINAL'.
wa_fcat-fieldname = 'MATNR'.
wa_fcat-col_pos = '5'.
wa_fcat-seltext_m = 'MATERIAL NUMBER'.
APPEND wa_fcat TO it_fcat.
ENDFORM. " PREPARE_FIELDCAT
*&---------------------------------------------------------------------*
*& Form OPTIMIZE_DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM optimize_display .
wa_layo-colwidth_optimize = wc_x.
wa_layo-zebra = wc_x.
ENDFORM. " OPTIMIZE_DISPLAY
*&---------------------------------------------------------------------*
*& Form DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display .
lv_repid = sy-repid.
IF r1 = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
i_callback_program = lv_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 =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
is_layout = wa_layo
it_fieldcat = it_fcat
* 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 = it_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.
ELSEIF r2 = 'X'.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE = ' '
i_callback_program = lv_repid
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_STRUCTURE_NAME =
is_layout = wa_layo
it_fieldcat = it_fcat
* 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
* IR_SALV_LIST_ADAPTER =
* IT_EXCEPT_QINFO =
* I_SUPPRESS_EMPTY_DATA = ABAP_FALSE
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = it_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.
ENDIF.
ENDFORM. " DISPLAY
No comments:
Post a Comment