Вы находитесь на странице: 1из 21

*&---------------------------------------------------------------------*

*& Report ZSTOCK_REGISTER


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZSTOCK_REGISTER.

*REPORT zstock.
TYPE-POOLS: slis.

TABLES: mseg, makt, mkpf, t156t.

TYPES: BEGIN OF zstruc,


matnr TYPE mseg-matnr,"MATERIAL NO.
maktx TYPE makt-maktx,"MATERIAL DESCRIPTION
spras type makt-spras ,
erfmg TYPE mseg-erfmg,"QUANTITY
erfme TYPE mseg-erfme,"UNIT
werks TYPE mseg-werks,"PLANT NO
lgort TYPE mseg-lgort,"STORAGE LOCATION
budat TYPE mkpf-budat,"POSTING DATE
bktxt TYPE mkpf-bktxt,"HEADER TEXT
btext TYPE t156t-btext,"MOVEMENT TYPE TEXT
ebeln TYPE mseg-ebeln,"PURCHASE DOCUMENT NO
kostl TYPE mseg-kostl,"COST CENTER
lifnr TYPE mseg-lifnr,"VENDOR ACC.NO.
bwart TYPE mseg-bwart,"MOVEMENT TYPE
END OF zstruc.

TYPES: BEGIN OF zstruc1,


MBLNR TYPE MSEG-MBLNR,
matnr TYPE mseg-matnr,"MATERIAL NO.
erfmg TYPE mseg-erfmg,"QUANTITY
erfme TYPE mseg-erfme,"UNIT

werks TYPE mseg-werks,"PLANT NO


lgort TYPE mseg-lgort,"STORAGE LOCATION
ebeln TYPE mseg-ebeln,"PURCHASE DOCUMENT NO
kostl TYPE mseg-kostl,"COST CENTER
lifnr TYPE mseg-lifnr,"VENDOR ACC.NO.
bwart TYPE mseg-bwart,"MOVEMENT TYPE
END OF zstruc1.

TYPES: BEGIN OF zstruc2,


MATNR TYPE MSEG-MATNR,
maktx TYPE makt-maktx,"MATERIAL DESCRIPTION
SPRAS TYPE MAKT-SPRAS,
END OF zstruc2.

TYPES: BEGIN OF zstruc3,


MBLNR TYPE MKPF-MBLNR,
budat TYPE mkpf-budat,"POSTING DATE
bktxt TYPE mkpf-bktxt,"HEADER TEXT
END OF zstruc3.

TYPES: BEGIN OF zstruc4,


SPRAS TYPE T156T-SPRAS,
btext TYPE t156t-btext,"MOVEMENT TYPE TEXT

END OF zstruc4.

DATA: v_CPROG TYPE sy-CPROG,


wa_fieldcat TYPE slis_fieldcat_alv,
it_fieldcat TYPE slis_t_fieldcat_alv,

itab TYPE standard TABLE OF zstruc,


itab1 type standard table of zstruc,

layout_in TYPE slis_layout_alv,


it_events TYPE slis_t_event,
wa_events TYPE slis_alv_event,
It_sort TYPE slis_t_sortinfo_alv,
WA_sort TYPE slis_sortinfo_alv.

DATA: fn TYPE slis_fieldname.


DATA: K TYPE I.
*v_CPROG = sy-CPROG.

*provide select-options
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: date FOR mkpf-budat OBLIGATORY.
SELECT-OPTIONS: MATERIAL FOR mseg-matnr OBLIGATORY.
SELECTION-SCREEN: END OF BLOCK b1.

START-OF-SELECTION.
* SELECT DISTINCT kna1~name1 makt~maktx zweigh~lgort SUM( zweigh~ntwht )
* INTO TABLE itab FROM
* kna1 INNER JOIN zweigh ON kna1~kunnr = zweigh~kunnr INNER JOIN makt ON makt~matnr =
zweigh~matnr
*WHERE zweigh~erdat IN date GROUP BY zweigh~lgort kna1~name1 makt~maktx.

*select g~matnr
*

k_maktx

g~erfmg

g~erfme

g~werks

g~lgort

f~budat

f~bktxt

t1~btext

g~ebeln

g~kostl

g~lifnr

g~bwart

into table itab from mseg as g inner join makt as k

on g~mandt = k~mandt

inner join mkpf as f on g~mandt = f~mandt

"it is for field catalog

"it is for events

" DATA SORTING AND SUBTOTAL

K = SY-DBCNT.
* IF sy-subrc = 0.
* SORT itab BY matnr.
* ENDIF.
perform fetch.
PERFORM field_cat.
PERFORM build_layout.
PERFORM sub_populate_sort.
PERFORM sub_get_event.
PERFORM DISPLAY_ALV_REPORT.

*END-OF-SELECTION.

*&---------------------------------------------------------------------*
*&

Form fetch

*&---------------------------------------------------------------------*
*

text

*----------------------------------------------------------------------*
* --> p1

text

* <-- p2

text

*----------------------------------------------------------------------*

FORM fetch .

SELECT
mseg~matnr

"MATERIAL NO.

makt~maktx

"MATERIAL DESCRIPTION

makt~spras
mseg~erfmg

"QUANTITY

mseg~erfme

"UNIT

mseg~werks

"PLANT NO

mseg~lgort
mkpf~budat

"STORAGE LOCATION
"POSTING DATE

mkpf~bktxt

"HEADER TEXT

t156t~btext

"MOVEMENT TYPE TEXT

mseg~ebeln

"PURCHASE DOCUMENT NO.

mseg~kostl

"COST CENTER

mseg~lifnr

"VENDOR ACC. NO.

mseg~bwart

"MOVEMENT TYPE

INTO TABLE itab FROM


mseg INNER JOIN makt ON mseg~matnr = makt~matnr
INNER JOIN mkpf ON mseg~mblnr = mkpf~mblnr
INNER JOIN t156t ON mseg~bwart = t156t~bwart
WHERE mkpf~budat IN date AND MSEG~MATNR IN MATERIAL
AND makt~SPraS = 'E'.

itab1[] = itab[].

sort itab1 by matnr.


delete adjacent duplicates from itab1 comparing matnr.

ENDFORM.

" fetch

*&---------------------------------------------------------------------*
*&
*Form FIELD_CAT.
*&---------------------------------------------------------------------*
*
*text
*----------------------------------------------------------------------*
* --> p1
*text
* <-- p2
*text
*----------------------------------------------------------------------*
FORM field_cat .
wa_fieldcat-col_pos = 1.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-key = 'X'.
wa_fieldcat-tabname = 'ITAB1'.
wa_fieldcat-seltext_l = 'MATERIAL NO.'.

APPEND wa_fieldcat TO it_fieldcat.


CLEAR wa_fieldcat.

wa_fieldcat-col_pos = 2.
wa_fieldcat-fieldname = 'MAKTX'.
wa_fieldcat-tabname = 'ITAB1'.
wa_fieldcat-seltext_l = 'MATERIAL DESC'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.

"provide field catalog perform

wa_fieldcat-col_pos = 3.
wa_fieldcat-fieldname = 'ERFMG'.
wa_fieldcat-datatype = 'QUAN'.
* wa_fieldcat-do_sum = 'X'.
wa_fieldcat-tabname = 'ITAB1'.
wa_fieldcat-seltext_l = 'QUANTITY.'.
APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.

wa_fieldcat-col_pos = 4.
wa_fieldcat-fieldname = 'ERFME'.
wa_fieldcat-tabname = 'ITAB1'.
wa_fieldcat-seltext_l = 'UNIT'.
APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.

wa_fieldcat-col_pos = 5.
wa_fieldcat-fieldname = 'WERKS'.
wa_fieldcat-tabname = 'ITAB1'.
wa_fieldcat-seltext_l = 'PLANT NO.'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.

wa_fieldcat-col_pos = 6.
wa_fieldcat-fieldname = 'LGORT'.
wa_fieldcat-tabname = 'ITAB1'.
wa_fieldcat-seltext_l = 'STORAGE LOCATION'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.

wa_fieldcat-col_pos = 7.
wa_fieldcat-fieldname = 'BUDAT '.
wa_fieldcat-tabname = 'ITAB1'.
wa_fieldcat-seltext_l = 'POSTING DATE'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.

wa_fieldcat-col_pos = 8.
wa_fieldcat-fieldname = 'BKTXT '.
wa_fieldcat-tabname = 'ITAB1'.
wa_fieldcat-seltext_l = 'HEADER TEXT'.

APPEND wa_fieldcat TO it_fieldcat.


CLEAR wa_fieldcat.

wa_fieldcat-col_pos = 9.
wa_fieldcat-fieldname = 'BTEXT'.
wa_fieldcat-tabname = 'ITAB1'.
wa_fieldcat-seltext_l = 'MOVEMENT TYPE TEXT'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.

wa_fieldcat-col_pos = 10.
wa_fieldcat-fieldname = 'EBELN'.
wa_fieldcat-tabname = 'ITAB1'.
wa_fieldcat-seltext_l = 'PURCHASE DOC. NO.'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.

wa_fieldcat-col_pos = 11.
wa_fieldcat-fieldname = 'KOSTL'.
wa_fieldcat-tabname = 'ITAB1'.
wa_fieldcat-seltext_l = 'COST CENTER'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.

wa_fieldcat-col_pos = 12.
wa_fieldcat-fieldname = 'LIFNR'.
wa_fieldcat-tabname = 'ITAB1'.

wa_fieldcat-seltext_l = 'VENDOR ACC. NO.'.


APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.

wa_fieldcat-col_pos = 13.
wa_fieldcat-fieldname = 'BWART'.
wa_fieldcat-tabname = 'ITAB1'.
wa_fieldcat-seltext_l = 'MOVEMENT TYPE'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.

wa_events-form = 'TOP_PAGE'.
wa_events-name = 'TOP_OF_PAGE'.
APPEND wa_events TO it_events.

ENDFORM." FIELD_CAT
*&---------------------------------------------------------------------*
*&
*Form BUILD_LAYOUT
**&---------------------------------------------------------------------*
**
*text
**----------------------------------------------------------------------*
** --> p1
*text
** <-- p2
*text

*----------------------------------------------------------------------*
form BUILD_LAYOUT .

clear layout_in.
layout_in-no_input = 'X'.
layout_in-colwidth_optimize = 'X'.
* layout_in-totals_text
*= 'Totals'(201).
* Set layout field for row attributes(i.e. color)
layout_in-info_fieldname = 'LINE_COLOR'.
* layout_in-totals_only
*= 'X'.
layout_in-f2code = 'DISP'. "Sets fcode for when double "click(press f2)
layout_in-zebra = 'X'.
* layout_in-group_change_edit = 'X'.
layout_in-header_text = 'helllllo'.

endform. " BUILD_LAYOUT


*&---------------------------------------------------------------------*
*&
*Form SUB_POPULATE_SORT
**&---------------------------------------------------------------------*
**
*text
*
**----------------------------------------------------------------------*
** --> p1

*text
** <-- p2
*text
*----------------------------------------------------------------------*
form SUB_POPULATE_SORT .
CLEAR WA_sort.
WA_sort-fieldname = 'MATNR'.
WA_sort-tabname = 'itab1'.
WA_sort-up = 'X'.
WA_sort-subtot = 'X'.
APPEND WA_SORT TO IT_SORT.

* gs_sort-fieldname = 'LGORT'.
* gs_sort-tabname = 'itab'.
* gs_sort-up = 'X'.
* gs_sort-spos = '01'.

* gs_sort-subtot = 'X'.
"****CRUCIAL STATEMENT*****
* APPEND gs_sort TO gt_sort.
* gs_sort-fieldname = 'NTWHT'.
* gs_sort-tabname = 'itab'.
* gs_sort-up = 'X'.
* gs_sort-spos = '02'.
* gs_sort-subtot = 'X'.
"****CRUCIAL STATEMENT*****

endform. " SUB_POPULATE_SORT

*&---------------------------------------------------------------------*
*&
*Form SUB_GET_EVENT
**&---------------------------------------------------------------------*
**
*text
**----------------------------------------------------------------------*
** --> p1
*text
** <-- p2
*text
**----------------------------------------------------------------------*
form SUB_GET_EVENT .
*CONSTANTS : c_formname_subtotal_text TYPE slis_formname VALUE 'SUBTOTAL_TEXT'.
*DATA: l_s_event TYPE slis_alv_event.
*CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
*EXPORTING
*i_list_type = 4
*IMPORTING
* et_events
*= it_events
*EXCEPTIONS
*list_type_wrong = 0
*OTHERS
*= 0.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'


EXPORTING
I_LIST_TYPE

=4

IMPORTING
ET_EVENTS

= it_events

EXCEPTIONS
LIST_TYPE_WRONG
OTHERS

=1

=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.

* Subtotal
READ TABLE it_events INTO wa_events WITH KEY name = 'SUBTOTAL_TEXT'.
IF sy-subrc = 0.
WA_EVENTS-FORM = 'SUBTOTAL'.
MODIFY it_events FROM WA_eventS INDEX sy-tabix TRANSPORTING FORM.
ENDIF.
endform.
" SUB_GET_EVENT

*&---------------------------------------------------------------------*
*&
*Form DISPLAY_ALV_REPORT

**&---------------------------------------------------------------------*
**
*text
**----------------------------------------------------------------------*
** --> p1
*text
** <-- p2
*text
*----------------------------------------------------------------------*
form DISPLAY_ALV_REPORT .
v_CPROG = sy-CPROG.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
i_callback_program = V_CPROG
is_layout = layout_in
it_fieldcat = it_fieldcat
i_default = 'X'
i_grid_title = 'STOCK REGISTER'
IT_SORT = IT_SORT
TABLES
t_outtab = itab1
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

Вам также может понравиться