Académique Documents
Professionnel Documents
Culture Documents
*&---------------------------------------------------------------------*
*& Report ZPP_PLANNING_REPORT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZPP_PLANNING_REPORT.
TABLES : afko,mard,makt.
type-pools: slis.
TYPES : BEGIN OF tY_afko,
aufnr TYPE afko-aufnr,
plnbez TYPE afko-plnbez,
gmein TYPE afko-gmein,
gamng TYPE afko-gamng,
END OF TY_AFKO.
TYPES : BEGIN OF tY_afko1,
aufnr TYPE afko-aufnr,
plnbez TYPE afko-plnbez,
gmein TYPE afko-gmein,
gamng TYPE afko-gamng,
END OF TY_AFKO1.
TYPES : BEGIN OF TY_makt,
matnr TYPE makt-matnr,
maktx TYPE makt-maktx,
END OF ty_makt.
TYPES : BEGIN OF ty_mard,
matnr TYPE mard-matnr,
labst TYPE mard-labst,
insme TYPE mard-insme,
END OF ty_mard.
TYPES : BEGIN OF ty_march,
matnr TYPE march-matnr,
trame TYPE march-trame,
END OF ty_march.
TYPES : BEGIN OF tY_aufk,
*
gamng TYPE aufk-gamng,
*
*
************************************************************************
*Start-of-selection.
START-OF-SELECTION.
BREAK 10115.
perform data_retrieval.
if it_final[] IS INITIAL.
MESSAGE 'Data is not found' TYPE 'I'.
LEAVE LIST-PROCESSING.
ENDIF.
perform build_FS_FCAT.
perform build_layout.
perform build_events.
perform build_print_params.
perform display_alv_report.
SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-001 .
SELECT-OPTIONS s_purch for ekbe-ebeln. ""Purchase Document
SELECT-OPTIONS s_mat FOR wa_afko-plnbez."" OBLIGATORY. "Posting Date
SELECTION-SCREEN END OF BLOCK a1.
* *&---------------------------------------------------------------------*
*&
Form BUILD_FS_FCAT
*&---------------------------------------------------------------------*
*
Build FS_FCAT for ALV Report
*----------------------------------------------------------------------*
form build_FS_FCAT.
*
*aufnr TYPE afko-aufnr,
*
aufpl TYPE afru-aufpl,
*
rueck TYPE afru-rueck,
*
gmnga TYPE afru-gmnga,
*
vornr
DATA : RS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
* fieldcatalog-fieldname = 'AUFNR'.
* fieldcatalog-seltext_m = 'Order'.
* fieldcatalog-col_pos = 1.
* fieldcatalog-emphasize = 'X'.
* fieldcatalog-key
= 'X'.
* APPEND fieldcatalog TO fieldcatalog.
* clear fieldcatalog.
fieldcatalog-fieldname = 'PLNBEZ'.
fieldcatalog-seltext_M = 'Part Code'.
fieldcatalog-col_pos = 1.
fieldcatalog-emphasize = 'X'.
APPEND fieldcatalog TO fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MAKTX'.
fieldcatalog-seltexT_M = 'Part Desc.'.
fieldcatalog-col_pos = 2.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key
= 'X'.
* fieldcatalog-do_sum
= 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'GAMNG'.
fieldcatalog-seltext_M = 'Target QTY'.
fieldcatalog-col_pos = 3.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key
= 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'LABST'.
fieldcatalog-seltext_M = 'Op. Stock'.
fieldcatalog-col_pos = 4.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key
= 'X'.
fieldcatalog-fieldname = 'PLNBEZ'.
fieldcatalog-seltext_M = 'MATERIAL'.
fieldcatalog-col_pos = 6.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key
= 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'PLNME'.
fieldcatalog-seltext_M = 'UNIT'.
fieldcatalog-col_pos = 7.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key
= 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'ERNAM'.
fieldcatalog-seltext_M = 'ENTERED BY'.
fieldcatalog-col_pos = 8.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key
= 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
endform.
" BUILD_FS_FCAT
*&---------------------------------------------------------------------*
*&
Form BUILD_LAYOUT
*&---------------------------------------------------------------------*
*
Build layout for ALV grid report
*----------------------------------------------------------------------*
form build_layout.
wa_event-name = slis_ev_top_of_page.
wa_event-form = 'TOP_OF_PAGE'.
APPEND wa_event TO gt_events.
CLEAR wa_event.
wa_event-name = slis_ev_user_command.
wa_event-form = 'USER_COMMAND'.
APPEND wa_event TO gt_events.
CLEAR wa_event.
gd_layout-colwidth_optimize = 'X'.
gd_layout-zebra = 'X'.
endform.
" BUILD_LAYOUT
*&---------------------------------------------------------------------*
*&
Form DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
*
Display report using ALV grid
*----------------------------------------------------------------------*
form display_alv_report.
gd_repid = sy-repid.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program
= gd_repid
i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
i_callback_user_command = 'USER_COMMAND'
*
i_callback_pf_status_set = 'SET_PF_STATUS'
*
i_grid_title
= outtext
is_layout
= gd_layout
it_fieldcat
= fieldcatalog[]
*
it_special_groups
= gd_tabgroup
it_events
= gt_events
is_print
= gd_prntparams
i_save
= 'X'
*
is_variant
= z_template
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.
endform.
" DISPLAY_ALV_REPORT
*----------------------------------------------------------*
*
FORM SET_PF_STATUS
*
*----------------------------------------------------------*
*FORM set_pf_status USING rt_extab TYPE slis_t_extab.
* SET PF-STATUS 'SAVE'.
*
"Copy of 'STANDARD' pf_status from fgroup SALV
*ENDFORM.
*&---------------------------------------------------------------------*
*&
Form DATA_RETRIEVAL
*&---------------------------------------------------------------------*
*
Retrieve data form EKPO table and populate itab it_ekko
*----------------------------------------------------------------------*
form data_retrieval.
BREAK 10115.
*SELECT A~AUFNR A~PLNBEZ A~GMEIN A~GAMNG B~MATNR B~LABST B~INSME
C~TRAME D~MAKTX INTO TABLE IT_final
*
FROM AFKO AS A INNER JOIN MARD AS B ON A~PLNBEZ = B~MATNR
*
INNER JOIN MARCH AS C ON A~PLNBEZ = C~MATNR
*
INNER JOIN MAKT AS D ON A~PLNBEZ = D~MATNR
*
WHERE PLNBEZ IN S_MAT.
BREAK 10115.
SELECT aufnr
plnbez
gmein
gamng
FROM afko
INTO TABLE it_afko1
WHERE plnbez in s_mat.
SORT it_afko DESCENDING by plnbez.
ENDIF.
*LOOP AT it_jest INTO wa_jest.
IF it_jest[] IS NOT INITIAL.
SELECT aufnr
objnr
FROM aufk
INTO TABLE it_aufk
FOR ALL ENTRIES IN it_jest
WHERE objnr = it_jest-objnr.
ENDif.
* APPEND wa_aufk to it_aufk.
* ENDSELECT.
*ENDloop.
*LOOP AT it_aufk INTO wa_aufk.
IF it_aufk[] IS NOT INITIAL.
SELECT aufnr
plnbez
gmein
gamng
FROM afko
INTO TABLE it_afko
FOR ALL ENTRIES IN it_aufk
WHERE aufnr = it_aufk-aufnr.
ENDif.
* APPEND wa_afko to it_afko.
* ENDSELECT.
*ENDloop.
SORT it_afko DESCENDING by plnbez.
*DELETE ADJACENT DUPLICATES FROM it_afko.
*
*IF it_aufk[] IS NOT INITIAL.
*LOOP AT it_aufk INTO wa_aufk.
* READ TABLE it_afko INTO wa_afko INDEX sy-tabix.
*SELECT sum( gamng ) AS gamng
*
FROM afko
*
INTO wa_afko-gamng
*
WHERE aufnr = wa_aufk-aufnr.
* MODIFY it_afko INDEX sy-tabix FROM wa_afko
* TRANSPORTING gamng.
*endloop.
*ENDIF.
*DELETE ADJACENT DUPLICATES FROM it_afko COMPARING plnbez.
BREAK 10115.
endform.
" DATA_RETRIEVAL
*-------------------------------------------------------------------*
* Form TOP-OF-PAGE
*
*-------------------------------------------------------------------*
* ALV Report Header
*
*-------------------------------------------------------------------*
Form top-of-page.
*ALV Header declarations
*********************************************************************
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
* Check field clicked on within ALVgrid report
IF rs_selfield-fieldname = 'AWKEY'.
BREAK 10115.
data: r_belnr type range of awkey,
r_belnr_l like line of r_belnr.
*now in the code replace1 your loop by this:
*loop at it_final into wa_final.
* r_belnr_l-sign = 'I'.
* r_belnr_l-OPTION = 'EQ'.
* r_belnr_l-LOW = wa_final-awkey.
* r_belnr_l-high = ' '.
* append r_belnr_l to r_belnr.
*endloop.
*SUBMIT RM08RELEASE VIA SELECTION-SCREEN WITH SO_BELNR IN r_belnr AND
RETURN.
* LOOP AT it_final INTO wa_final.
ENDIF.
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*&
Form BUILD_EVENTS
*&---------------------------------------------------------------------*
*
Build events table
*----------------------------------------------------------------------*
form build_events.
data: ls_event type slis_alv_event.
call function 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = gt_events[].
read table gt_events with key name = slis_ev_end_of_page
into ls_event.
if sy-subrc = 0.
move 'END_OF_PAGE' to ls_event-form.
append ls_event to gt_events.
endif.