|
REPORT zstock_report.
TYPE-POOLS: slis.
TABLES: mbewh , bsim , makt, t001w , mseg , mkpf , mardh, t001l.
SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.
SELECT-OPTIONS: s_matnr FOR mardh-matnr, " Material
s_bwkey FOR mardh-werks OBLIGATORY, "Plant
s_lgort FOR t001l-lgort,
s_date FOR mkpf-budat . " Date
SELECTION-SCREEN END OF SCREEN 100.
SELECTION-SCREEN: BEGIN OF TABBED BLOCK b2 FOR 4 LINES,
TAB (50) title USER-COMMAND '' DEFAULT SCREEN 100,
END OF BLOCK b2.
INITIALIZATION.
title = 'Summary Of Store Activites.'.
START-OF-SELECTION.
DATA: date(2) TYPE n.
DATA: year(4) TYPE n.
DATA : tdate(2) TYPE n.
DATA: fdate TYPE sy-datum, pdate TYPE sy-datum.
DATA: fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat LIKE LINE OF fieldcat,
i_sort TYPE slis_t_sortinfo_alv,
w_sort LIKE LINE OF i_sort,
fieldcatalog TYPE slis_fieldcat_alv,
layout TYPE slis_layout_alv,
sort TYPE slis_sortinfo_alv,
gd_repid LIKE sy-repid.
DATA: c_user_command TYPE slis_formname VALUE 'USER_COMMAND'.
DATA: language LIKE sy-langu,
dat_val LIKE sy-datum.
DATA: heading TYPE string,
head1 TYPE string,
head2 TYPE string,
head3 TYPE string.
DATA: test LIKE t247-ktx.
DATA : langu_back LIKE sy-langu,
longtext LIKE t247-ltx,
ld_lines TYPE i,
message_text TYPE string.
DATA: sl LIKE TABLE OF mardh WITH HEADER LINE.
DATA: mb LIKE TABLE OF mbewh WITH HEADER LINE.
DATA: bi LIKE TABLE OF bsim WITH HEADER LINE.
DATA: ms LIKE TABLE OF mseg WITH HEADER LINE.
DATA: mk LIKE TABLE OF mkpf WITH HEADER LINE.
DATA: BEGIN OF itab OCCURS 0,
bwkey LIKE bsim-bwkey, " Plant.
matnr LIKE mbewh-matnr, " Material Number.
maktx LIKE makt-maktx, " Material Description.
bwtar LIKE bsim-bwtar, " Valutaion Type.
meins LIKE bsim-meins, " Base Unit Measure.
opqty LIKE mbewh-lbkum, " Opening Balance Quantity.
opbal LIKE mbewh-salk3, " Opening Balance Value.
recp LIKE bsim-menge, " Reciept Quantity.
recpval LIKE bsim-dmbtr, " Reciept Value.
issue LIKE bsim-menge, " Issue Quantity.
issval LIKE bsim-dmbtr, " Issue Value.
cloqty LIKE mbewh-lbkum, " Closing Balance Quantity.
clobal LIKE mbewh-salk3, " Closing Balance.
rpu LIKE mbewh-verpr, " Rate Per Unit.
END OF itab.
fdate = s_date-low.
LOOP AT s_date.
date = s_date-low+4(2).
year = s_date-low+0(4).
PERFORM previous_month.
pdate = pdate+4(2).
ENDLOOP.
LOOP AT s_date.
language = 'E'.
dat_val = s_date-low.
PERFORM get_date.
CONCATENATE s_date-low+6(2) '-' test '-' s_date-low+0(4) INTO head2 SEPARATED BY space.
IF s_date-high <> ''.
dat_val = s_date-high.
PERFORM get_date.
CONCATENATE head2 'To' s_date-high+6(2) '-' test '-' s_date-high+0(4) INTO head2 SEPARATED BY space.
ENDIF.
ENDLOOP.
SELECT *
FROM mardh
INTO TABLE sl
WHERE matnr IN s_matnr
AND werks IN s_bwkey
AND lgort IN s_lgort.
SELECT *
FROM mbewh
INTO TABLE mb
WHERE matnr IN s_matnr
AND lfgja EQ year
AND bwkey IN s_bwkey
AND lfmon EQ date.
SELECT *
FROM bsim
INTO TABLE bi
WHERE matnr IN s_matnr
AND gjahr EQ year
AND bwkey IN s_bwkey
AND budat IN s_date.
SELECT *
FROM mseg
INTO TABLE ms
WHERE matnr IN s_matnr
AND mjahr EQ year
AND werks IN s_bwkey.
IF s_lgort IS NOT INITIAL.
LOOP AT sl WHERE lfmon EQ date AND werks IN s_bwkey.
itab-bwkey = sl-werks.
itab-matnr = sl-matnr.
SELECT SINGLE meins FROM bsim INTO itab-meins
WHERE matnr IN s_matnr
AND budat IN s_date.
SELECT SINGLE maktx FROM makt INTO itab-maktx
WHERE matnr EQ itab-matnr.
SELECT SINGLE verpr FROM mbewh INTO itab-rpu
WHERE matnr EQ itab-matnr
AND lfmon EQ date
AND lfgja EQ year
AND bwkey EQ itab-bwkey.
SELECT SINGLE labst FROM mardh INTO itab-opqty
WHERE matnr EQ itab-matnr
AND lfmon EQ pdate
AND lfgja EQ year
and lgort eq sl-lgort
AND werks EQ itab-bwkey.
itab-opbal = itab-opqty * itab-rpu.
SELECT SINGLE labst FROM mardh INTO itab-cloqty
WHERE matnr EQ itab-matnr
AND lfmon EQ date
AND lfgja EQ year
and lgort eq sl-lgort
AND werks EQ itab-bwkey.
itab-clobal = itab-cloqty * itab-rpu.
itab-issue = 0 - ( itab-cloqty - itab-opqty - itab-recp ).
itab-issval = itab-issue * itab-rpu.
itab-recp = itab-cloqty + itab-issue - itab-opqty.
itab-recpval = itab-recp * itab-rpu.
APPEND itab.
CLEAR itab-recp.
CLEAR itab-recpval.
CLEAR itab-issval.
CLEAR itab-issue.
CLEAR itab-opqty.
CLEAR itab-opbal.
CLEAR itab-cloqty.
CLEAR itab-clobal.
ENDLOOP.
ELSEIF s_lgort IS INITIAL.
LOOP AT mb WHERE lfmon EQ date AND bwkey IN s_bwkey.
itab-bwkey = mb-bwkey.
itab-matnr = mb-matnr.
itab-bwtar = mb-bwtar.
SELECT SINGLE meins FROM bsim INTO itab-meins
WHERE matnr IN s_matnr
AND budat IN s_date.
SELECT SINGLE maktx FROM makt INTO itab-maktx
WHERE matnr EQ itab-matnr.
SELECT SINGLE lbkum FROM mbewh INTO itab-opqty
WHERE matnr EQ itab-matnr
AND lfmon EQ pdate
AND lfgja EQ year
AND bwkey EQ itab-bwkey
AND bwtar EQ itab-bwtar.
SELECT SINGLE lbkum FROM mbewh INTO itab-cloqty
WHERE matnr EQ itab-matnr
AND lfmon EQ date
AND lfgja EQ year
AND bwkey EQ itab-bwkey
AND bwtar EQ itab-bwtar.
SELECT SINGLE verpr FROM mbewh INTO itab-rpu
WHERE matnr EQ itab-matnr
AND lfmon EQ date
AND lfgja EQ year
AND bwkey EQ itab-bwkey
AND bwtar EQ itab-bwtar .
itab-opbal = itab-opqty * itab-rpu.
itab-clobal = itab-cloqty * itab-rpu.
itab-issue = 0 - ( itab-cloqty - itab-opqty - itab-recp ).
itab-issval = itab-issue * itab-rpu.
itab-recp = itab-cloqty + itab-issue - itab-opqty.
itab-recpval = itab-recp * itab-rpu.
APPEND itab.
CLEAR itab-recp.
CLEAR itab-recpval.
CLEAR itab-issval.
CLEAR itab-issue.
CLEAR itab-opqty.
CLEAR itab-opbal.
CLEAR itab-cloqty.
CLEAR itab-clobal.
ENDLOOP.
ENDIF.
PERFORM build_fieldcat.
PERFORM build_layout.
PERFORM display_alv_report.
DESCRIBE TABLE itab LINES ld_lines.
message_text = ld_lines.
CONCATENATE message_text 'items displayed' INTO message_text SEPARATED BY space.
MESSAGE s000(zhak) WITH message_text .
FORM top-of-page.
DATA: t_header TYPE slis_t_listheader,
wa_header TYPE slis_listheader,
t_line LIKE wa_header-info,
ld_lines TYPE i,
ld_linesc(10) TYPE c.
wa_header-typ = 'H'.
wa_header-info = 'Tri-Pack Films Limited'.
APPEND wa_header TO t_header.
CLEAR wa_header.
wa_header-typ = 'H'.
wa_header-info = 'Summary Of Store Activities.'.
APPEND wa_header TO t_header.
CLEAR wa_header.
wa_header-typ = 'S'.
wa_header-key = 'Report Date: '.
wa_header-info = head2. "todays date
APPEND wa_header TO t_header.
CLEAR: wa_header.
DESCRIBE TABLE itab LINES ld_lines.
ld_linesc = ld_lines.
CONCATENATE 'Total No. of Records Selected: ' ld_linesc
INTO t_line SEPARATED BY space.
wa_header-typ = 'A'.
wa_header-info = t_line.
APPEND wa_header TO t_header.
CLEAR: wa_header, t_line.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_header.
ENDFORM. "top-of-page
FORM previous_month.
CALL FUNCTION 'OIL_GET_PREV_MONTH'
EXPORTING
i_date = fdate
IMPORTING
e_date = pdate.
.
ENDFORM. "previous_month
FORM get_date.
CALL FUNCTION 'ISP_GET_MONTH_NAME'
EXPORTING
date = dat_val
language = language
IMPORTING
langu_back = langu_back
longtext = longtext
shorttext = test
EXCEPTIONS
calendar_id = 1
date_error = 2
not_found = 3
wrong_input = 4
OTHERS = 5
.
IF sy-subrc <> 0.
ENDIF.
ENDFORM. "get_date
FORM build_fieldcat .
fieldcatalog-tabname = 'itab'.
fieldcatalog-fieldname = 'BWKEY'.
fieldcatalog-seltext_m = 'PLANT'.
fieldcatalog-key = 'X'.
APPEND fieldcatalog TO fieldcat.
CLEAR fieldcatalog.
fieldcatalog-tabname = 'itab'.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'Matt No.'.
fieldcatalog-key = 'X'.
APPEND fieldcatalog TO fieldcat.
CLEAR fieldcatalog.
fieldcatalog-tabname = 'itab'.
fieldcatalog-fieldname = 'MAKTX'.
fieldcatalog-seltext_m = 'Matt Description'.
fieldcatalog-key = 'X'.
APPEND fieldcatalog TO fieldcat.
CLEAR fieldcatalog.
fieldcatalog-tabname = 'itab'.
fieldcatalog-fieldname = 'BWTAR'.
fieldcatalog-seltext_m = 'Valuation Type'.
fieldcatalog-key = 'X'.
APPEND fieldcatalog TO fieldcat.
CLEAR fieldcatalog.
fieldcatalog-tabname = 'itab'.
fieldcatalog-fieldname = 'MEINS'.
fieldcatalog-seltext_m = 'UOM'.
" fieldcatalog-key = 'X'.
APPEND fieldcatalog TO fieldcat.
CLEAR fieldcatalog.
fieldcatalog-tabname = 'itab'.
fieldcatalog-fieldname = 'OPQTY'.
fieldcatalog-seltext_m = 'Opening Bal Qty'.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO fieldcat.
CLEAR fieldcatalog.
fieldcatalog-tabname = 'itab'.
fieldcatalog-fieldname = 'OPBAL'.
fieldcatalog-seltext_m = 'Opening Bal (RS)'.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO fieldcat.
CLEAR fieldcatalog.
fieldcatalog-tabname = 'itab'.
fieldcatalog-fieldname = 'RECP'.
fieldcatalog-seltext_m = 'Receipts Qty'.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO fieldcat.
CLEAR fieldcatalog.
fieldcatalog-tabname = 'itab'.
fieldcatalog-fieldname = 'RECPVAL'.
fieldcatalog-seltext_m = 'Receipt Value (RS)'.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO fieldcat.
CLEAR fieldcatalog.
fieldcatalog-tabname = 'itab'.
fieldcatalog-fieldname = 'ISSUE'.
fieldcatalog-seltext_m = 'Issues Qty'.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO fieldcat.
CLEAR fieldcatalog.
fieldcatalog-tabname = 'itab'.
fieldcatalog-fieldname = 'ISSVAL'.
fieldcatalog-seltext_m = 'Issue Value (RS)'.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO fieldcat.
CLEAR fieldcatalog.
fieldcatalog-tabname = 'itab'.
fieldcatalog-fieldname = 'CLOQTY'.
fieldcatalog-seltext_m = 'Closing Bal Qty'.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO fieldcat.
CLEAR fieldcatalog.
fieldcatalog-tabname = 'itab'.
fieldcatalog-fieldname = 'CLOBAL'.
fieldcatalog-seltext_m = 'Closing Bal (RS)'.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO fieldcat.
CLEAR fieldcatalog.
fieldcatalog-tabname = 'itab'.
fieldcatalog-fieldname = 'RPU'.
fieldcatalog-seltext_m = 'Rate/Unit (RS)'.
APPEND fieldcatalog TO fieldcat.
CLEAR fieldcatalog.
CLEAR: w_sort,i_sort[].
w_sort-spos = 1.
w_sort-fieldname = 'BWKEY'.
w_sort-up = 'X'.
w_sort-subtot = 'X'.
APPEND w_sort TO i_sort.
CLEAR w_sort.
w_sort-spos = 1.
w_sort-fieldname = 'MAKTX'.
w_sort-up = 'X'.
w_sort-subtot = 'X'.
APPEND w_sort TO i_sort.
CLEAR w_sort.
ENDFORM. " build_fieldcat
FORM build_layout .
layout-no_input = 'X'.
layout-colwidth_optimize = 'X'.
layout-zebra = 'X'.
ENDFORM. "build_layout
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'
is_layout = layout " i_callback_user_command = c_user_command
it_fieldcat = fieldcat
it_sort = i_sort
i_save = 'A'
TABLES
t_outtab = itab " it_sort = sort
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " display_alv_report
|