You are on page 1of 15

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

*& Report ZRP_GOODS_MOVEMENT_REPORT


*&
*&--------------------------------------------------------------------*
*&
*&
*&--------------------------------------------------------------------*
REPORT

ZRP_GOODS_MOVEMENT_REPORT.

TABLES : mara.
type-POOLS : SLIS.
INCLUDE <ICON>.
types: BEGIN OF TY_GOODS,
MBLNR TYPE MSEG-MBLNR,
MJAHR TYPE MSEG-MJAHR,
MATNR TYPE MSEG-MATNR,
DMBTR TYPE MSEG-DMBTR,
BWTAR TYPE MSEG-BWTAR,
MENGE TYPE MSEG-MENGE,
EBELN TYPE MSEG-EBELN,
EBELP TYPE MSEG-EBELP,
budat type bkpf-budat,
xblnr type bkpf-xblnr,
chk type c,
END OF TY_GOODS.
types : tt_goods type STANDARD TABLE OF TY_GOODS.
data : it_goods TYPE tt_goods,
wa_goods type TY_GOODS.
data :

it_goods1 TYPE tt_goods,


wa_goods1 type TY_GOODS.

*---alv stuff
data : it_fcat TYPE SLIS_T_FIELDCAT_ALV,
WA_FCAT TYPE slis_fieldcat_alv.
data : it_list TYPE SLIS_T_LISTHEADER,
wa_list TYPE SLIS_LISTHEADER.
SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text001.
select-OPTIONS : s_matnr for wa_GOODS-matnr ,
s_budat for wa_goods-budat.
SELECTION-SCREEN : END OF BLOCK b1.

at SELECTION-SCREEN.
PERFORM check_matnr.
at SELECTION-SCREEN OUTPUT.
PERFORM screen_validation.
INITIALIZATION.
PERFORM fill_deafult.
START-OF-SELECTION.
PERFORM get_data.
end-OF-SELECTION.
PERFORM build_fieldcat.
PERFORM display_data.
*&--------------------------------------------------------------------*
*&
Form check_matnr
*&--------------------------------------------------------------------*
*
text
*---------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*---------------------------------------------------------------------*
FORM check_matnr .
if not s_matnr is INITIAL and s_matnr-high is INITIAL.
LOOP AT s_matnr .
select SINGLE * from mara where matnr eq s_matnr-low.
IF sy-subrc ne 0.
MESSAGE ' entered material is not available' TYPE '
E'.
ENDIF.
ENDLOOP.
endif.
ENDFORM.
" check_matnr
*&--------------------------------------------------------------------*
*&
Form fill_deafult
*&--------------------------------------------------------------------*
*
text

*---------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*---------------------------------------------------------------------*
FORM fill_deafult .
s_budat-sign = 'I'.
s_budat-option = 'BT'.
s_budat-low = sy-datum - 30.
s_budat-high = sy-datum.
append s_budat.
clear s_budat.
ENDFORM.
" fill_deafult
*&--------------------------------------------------------------------*
*&
Form screen_validation
*&--------------------------------------------------------------------*
*
text
*---------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*---------------------------------------------------------------------*
FORM screen_validation .
LOOP AT screen .
IF screen-name cp '*s_budat*high*'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDFORM.
" screen_validation
*&--------------------------------------------------------------------*
*&
Form get_data
*&--------------------------------------------------------------------*
*
text
*---------------------------------------------------------------------*
* --> p1
text
* <-- p2
text

*---------------------------------------------------------------------*
FORM get_data .
select a~MBLNR
a~MJAHR
MATNR
DMBTR
BWTAR
MENGE
EBELN
EBELP
budat
xblnr FROM mseg as a INNER JOIN mkpf as b
on a~mblnr = b~MBLNR
and a~mjahr = b~mjahr
into table it_goods
where matnr in s_matnr
and
budat in s_budat.
IF sy-subrc eq 0.
sort it_goods by matnr.
else.
Message ' nodata found for your selection' TYPE 'E'.
exit.
ENDIF.
ENDFORM.
" get_data
*&--------------------------------------------------------------------*
*&
Form display_data
*&--------------------------------------------------------------------*
*
text
*---------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*---------------------------------------------------------------------*
FORM display_data .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
*
I_INTERFACE_CHECK
= ' '
*
I_BYPASSING_BUFFER
= ' '
*
I_BUFFER_ACTIVE
= ' '
I_CALLBACK_PROGRAM
= sy-cprog
I_CALLBACK_PF_STATUS_SET
= 'ADITYA'

*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

I_CALLBACK_USER_COMMAND
= 'USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE
= 'TOP_OF_PAGE'
I_CALLBACK_HTML_TOP_OF_PAGE
= 'TOP_OF_PAGE1'
I_CALLBACK_HTML_END_OF_LIST
= ' '
I_STRUCTURE_NAME
= 'ZSGOODS'
I_BACKGROUND_ID
= ' '
I_GRID_TITLE
=
I_GRID_SETTINGS
=
IS_LAYOUT
=
IT_FIELDCAT
= it_fcat
IT_EXCLUDING
=
IT_SPECIAL_GROUPS
=
IT_SORT
=
IT_FILTER
=
IS_SEL_HIDE
=
I_DEFAULT
= 'X'
I_SAVE
= 'X'
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_goods
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_data
*&--------------------------------------------------------------------*
*&
Form build_fieldcat
*&--------------------------------------------------------------------*
*
text
*---------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*---------------------------------------------------------------------*
FORM build_fieldcat .
*
*
*
*
*
*
*
*
*
**
*
*
**
**
**
*
*
*
*
*
*
*
*
**
**
*

data : lv_prog TYPE SY-REPID,


ls_str TYPE DD02L-TABNAME.
DATA : LV_TABIX TYPE SY-TABIX.
lv_prog = sy-repid.
ls_str = 'ZSGOODS'.

*
*
*

WA_FCAT-FIELDNAME = 'CHK'.
WA_FCAT-checkbox = 'X'.
WA_FCAT-edit = 'X'.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'


EXPORTING
I_PROGRAM_NAME
= lv_prog
I_INTERNAL_TABNAME
=
I_STRUCTURE_NAME
= ls_str
I_CLIENT_NEVER_DISPLAY
= 'X'
I_INCLNAME
=
I_BYPASSING_BUFFER
=
I_BUFFER_ACTIVE
=
CHANGING
CT_FIELDCAT
= it_fcat
EXCEPTIONS
INCONSISTENT_INTERFACE
= 1
PROGRAM_ERROR
= 2
OTHERS
= 3
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

* append WA_FCAT to it_fcat.


* clear WA_FCAT.
*
*
*
* LOOP AT IT_FCAT INTO WA_FCAT .
*
LV_TABIX = SY-TABIX.
*
CASE WA_FCAT-FIELDNAME .
*
WHEN 'MBLNR'.
*
WA_FCAT-seltext_s = 'GOODS NUMBER'.
*
WA_FCAT-outputlen = '12'.
*
WA_FCAT-col_pos = '1'.
*
WA_FCAT-KEY = 'X'.
*
WA_FCAT-key_sel = 'X'.
*
WA_FCAT-ddictxt = 'S'.
*
WA_FCAT-datatype = 'NUMC'.
*
WHEN 'MJAHR'.
*
WA_FCAT-seltext_s = 'fiscal year'.
*
WA_FCAT-outputlen = '10'.
*
WA_FCAT-col_pos = '3'.
*
WA_FCAT-ddictxt = 'S'.
**
WA_FCAT-tech = 'X'.
**
WA_FCAT-EDIT_MASK = '==GJAHR'.
*
WHEN 'MATNR'.
*
WA_FCAT-col_pos = '5'.
*
WA_FCAT-seltext_s = 'MATERIAL'.
**
WA_FCAT-KEY = 'X'.
*
WA_FCAT-key_sel = 'X'.
*
WA_FCAT-hotspot = 'X'.
*
WA_FCAT-lowercase = 'X'.
*
WA_FCAT-ddictxt = 'S'.
*
*
WHEN 'DMBTR'.
*
WA_FCAT-col_pos = '2'.
*
WA_FCAT-do_sum = 'X'.
*
WA_FCAT-datatype = 'CHAR'.
*
WHEN 'MENGE'.
*
WA_FCAT-col_pos = '6'.
*
WHEN 'EBELN'.
*
WA_FCAT-col_pos = '4'.
*
WA_FCAT-emphasize = 'C410'.
*
WA_FCAT-rollname = 'ZPONUM'.
*
WHEN 'EBELP'
.
*
WA_FCAT-col_pos = '8'.
*
WA_FCAT-EDIT_MASK = '==ALPHA'.
*
WHEN 'BUDAT'
.
*
WA_FCAT-col_pos = '7'.

*
*
*
*
*

WHEN 'XBLNR'.
WA_FCAT-col_pos = '9'.
ENDCASE.
MODIFY it_fcat FROM WA_FCAT INDEX LV_TABIX.
ENDLOOP.

WA_FCAT-FIELDNAME = 'CHK'.
WA_FCAT-checkbox = 'X'.
WA_FCAT-seltext_s = 'SELECT'.
WA_FCAT-edit = 'X'.
append WA_FCAT to it_fcat.
clear WA_FCAT.
WA_FCAT-FIELDNAME = 'MBLNR' .
WA_FCAT-seltext_s = 'GOODS NUMBER'.
WA_FCAT-outputlen = '12'.
WA_FCAT-col_pos = '1'.
WA_FCAT-KEY = 'X'.
WA_FCAT-key_sel = 'X'.
WA_FCAT-ddictxt = 'S'.
WA_FCAT-datatype = 'NUMC'.
append WA_FCAT to it_fcat.
clear WA_FCAT.
WA_FCAT-FIELDNAME = 'MJAHR'.
WA_FCAT-seltext_s = 'fiscal year'.
WA_FCAT-outputlen = '10'.
WA_FCAT-col_pos = '3'.
WA_FCAT-ddictxt = 'S'.
*WA_FCAT-tech = 'X'.
*WA_FCAT-EDIT_MASK = '==GJAHR'.
append WA_FCAT to it_fcat.
clear WA_FCAT.
WA_FCAT-FIELDNAME ='MATNR'.
WA_FCAT-col_pos = '5'.
WA_FCAT-seltext_s = 'MATERIAL'.
*
WA_FCAT-KEY = 'X'.
WA_FCAT-key_sel = 'X'.
WA_FCAT-hotspot = 'X'.
WA_FCAT-lowercase = 'X'.
WA_FCAT-ddictxt = 'S'.
WA_FCAT-EDIT_MASK = '==ALPHA'.
append WA_FCAT to it_fcat.
clear WA_FCAT.

WA_FCAT-FIELDNAME = 'DMBTR'.
WA_FCAT-col_pos = '2'.
WA_FCAT-do_sum = 'X'.
WA_FCAT-datatype = 'CHAR'.
append WA_FCAT to it_fcat.
clear WA_FCAT.
WA_FCAT-FIELDNAME = 'MENGE'.
WA_FCAT-col_pos = '6'.
append WA_FCAT to it_fcat.
clear WA_FCAT.
WA_FCAT-FIELDNAME = 'EBELN'.
WA_FCAT-col_pos = '4'.
WA_FCAT-emphasize = 'C410'.
WA_FCAT-rollname = 'ZPONUM'.
append WA_FCAT to it_fcat.
clear WA_FCAT.
WA_FCAT-FIELDNAME
WA_FCAT-col_pos =
WA_FCAT-EDIT_MASK
append WA_FCAT to
clear WA_FCAT.

= 'EBELP'
.
'8'.
= '==ALPHA'.
it_fcat.

WA_FCAT-FIELDNAME = 'BUDAT'
WA_FCAT-col_pos = '7'.
append WA_FCAT to it_fcat.
clear WA_FCAT.

WA_FCAT-FIELDNAME = 'XBLNR'.
WA_FCAT-col_pos = '9'.
append WA_FCAT to it_fcat.
clear WA_FCAT.
*
*
*
*

WA_FCAT-FIELDNAME = 'CURRENCY'.
WA_FCAT-col_pos = '10'.
append WA_FCAT to it_fcat.
clear WA_FCAT.

ENDFORM.

" build_fieldcat

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

------------*
*&
Form set_pf_status
*&--------------------------------------------------------------------*
*
text
*---------------------------------------------------------------------*
*
-->RT_EXTAB
text
*
-->ENDFORM
text
*---------------------------------------------------------------------*
FORM aditya USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ZJAY' EXCLUDING rt_extab.
endform.
"set_pf_status
*&--------------------------------------------------------------------*
*&
Form user_command
*&--------------------------------------------------------------------*
*
text
*---------------------------------------------------------------------*
*
-->R_UCOMM
text
*
-->RS_SELFIELD text
*---------------------------------------------------------------------*
FORM USER_COMMAND USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfie
ld.
data : LV_FILENAME TYPE string,
LV_PATH
type string,
LV_FULLPATH type string.
data : lv_valild type char1 VALUE 'X',
lv_refresh type char1 VALUE 'X'.
CASE r_ucomm .
WHEN 'DOWNLOAD'.
data : o_grid TYPE REF TO CL_GUI_ALV_GRID.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
*
EXPORTING
*
IR_SALV_FULLSCREEN_ADAPTER
=
IMPORTING
E_GRID
= o_grid

.
CALL METHOD O_GRID->CHECK_CHANGED_DATA
IMPORTING
E_VALID
= lv_valild
CHANGING
C_REFRESH = lv_refresh.
.

*
*
*
*
*
*
*
*

*
*
*
*
*
*
*
*
*

LOOP AT it_goods INTO wa_goods WHERE chk = 'X' .


MOVE-CORRESPONDING WA_goods to wa_goods1.
append wa_goods to it_goods1.
clear : wa_goods,wa_goods1.
ENDLOOP.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
EXPORTING
WINDOW_TITLE
=
DEFAULT_EXTENSION
=
DEFAULT_FILE_NAME
=
WITH_ENCODING
=
FILE_FILTER
=
INITIAL_DIRECTORY
=
PROMPT_ON_OVERWRITE = 'X'
CHANGING
FILENAME
= LV_FILENAME
PATH
= LV_PATH
FULLPATH
= LV_FULLPATH
USER_ACTION
=
FILE_ENCODING
=
EXCEPTIONS
CNTL_ERROR
= 1
ERROR_NO_GUI
= 2
NOT_SUPPORTED_BY_GUI = 3
others
= 4
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CONCATENATE LV_FULLPATH '.xls' INTO LV_FULLPATH.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
EXPORTING
BIN_FILESIZE
=
FILENAME
= LV_FULLPATH
FILETYPE
= 'ASC'

*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

APPEND
= SPACE
WRITE_FIELD_SEPARATOR
= 'X'
HEADER
= '00'
TRUNC_TRAILING_BLANKS
= SPACE
WRITE_LF
= 'X'
COL_SELECT
= SPACE
COL_SELECT_MASK
= SPACE
DAT_MODE
= SPACE
CONFIRM_OVERWRITE
= SPACE
NO_AUTH_CHECK
= SPACE
CODEPAGE
= SPACE
IGNORE_CERR
= ABAP_TRUE
REPLACEMENT
= '#'
WRITE_BOM
= SPACE
TRUNC_TRAILING_BLANKS_EOL = 'X'
WK1_N_FORMAT
= SPACE
WK1_N_SIZE
= SPACE
WK1_T_FORMAT
= SPACE
WK1_T_SIZE
= SPACE
IMPORTING
FILELENGTH
=
CHANGING
DATA_TAB
= it_goods1
EXCEPTIONS
FILE_WRITE_ERROR
= 1
NO_BATCH
= 2
GUI_REFUSE_FILETRANSFER
= 3
INVALID_TYPE
= 4
NO_AUTHORITY
= 5
UNKNOWN_ERROR
= 6
HEADER_NOT_ALLOWED
= 7
SEPARATOR_NOT_ALLOWED
= 8
FILESIZE_NOT_ALLOWED
= 9
HEADER_TOO_LONG
= 10
DP_ERROR_CREATE
= 11
DP_ERROR_SEND
= 12
DP_ERROR_WRITE
= 13
UNKNOWN_DP_ERROR
= 14
ACCESS_DENIED
= 15
DP_OUT_OF_MEMORY
= 16
DISK_FULL
= 17
DP_TIMEOUT
= 18
FILE_NOT_FOUND
= 19
DATAPROVIDER_EXCEPTION
= 20
CONTROL_FLUSH_ERROR
= 21
NOT_SUPPORTED_BY_GUI
= 22
ERROR_NO_GUI
= 23

others
= 24
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-

*
*
MSGV4.

ENDIF.
WHEN '&IC1'.
read TABLE it_goods INTO wa_goods INDEX rs_selfieldtabindex .
CASE rs_selfield-FIELDNAME .
WHEN 'MATNR'.
set PARAMETER ID 'MAT' FIELD wa_goods-matnr.
set PARAMETER ID 'MXX' FIELD 'K'.
call TRANSACTION 'MM02' AND SKIP FIRST SCREEN.
WHEN 'EBELN'.
set PARAMETER ID 'BES' FIELD wa_goods-EBELN.
call TRANSACTION 'ME23N' and SKIP FIRST SCREEN.
WHEN OTHERS.
ENDCASE.
ENDCASE.

rs_selfield-refresh = 'X'.
ENDFORM.
"user_command
*&--------------------------------------------------------------------*
*&
Form top_of_page
*&--------------------------------------------------------------------*
*
text
*---------------------------------------------------------------------*
FORM top_of_page.
data : lv_str(60).
CONCATENATE 'REPORT EXECUTED BY :' sy-uname INTO lv_str.
wa_list-typ = 'H'.
wa_list-info = 'GOODS INFORMATION REPORT'.
append wa_list to it_list.

clear wa_list.
wa_list-typ = 'A'.
wa_list-info = lv_str.
append wa_list to it_list.
clear wa_list.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY
= it_list
I_LOGO
= 'ALV_BACKGROUND'
*
I_END_OF_LIST_GRID
=
*
I_ALV_FORM
=
.
ENDFORM.

"top_of_page

*&--------------------------------------------------------------------*
*&
Form top_of_page
*&--------------------------------------------------------------------*
*
text
*---------------------------------------------------------------------*
*
-->CL_DD
text
*---------------------------------------------------------------------*
form top_of_page1 using cl_dd type ref to cl_dd_document.
data : lv_str(60).
data : lv_text TYPE SDYDO_TEXT_ELEMENT.
CONCATENATE 'REPORT EXECUTED BY :' sy-uname INTO lv_str.
CALL METHOD CL_DD->ADD_TEXT
EXPORTING
TEXT = 'GOODS INFORMATION REPORT'.
*
TEXT_TABLE
=
*
FIX_LINES
=
*
SAP_STYLE
=
*
SAP_COLOR
=
*
SAP_FONTSIZE =
*
SAP_FONTSTYLE =
* SAP_EMPHASIS = 'C401'.
*
STYLE_CLASS
=
* CHANGING
*
DOCUMENT
=
.
CALL METHOD CL_DD->NEW_LINE
* EXPORTING

REPEAT =
.
lv_text = lv_str.
CALL METHOD CL_DD->ADD_TEXT
EXPORTING
TEXT
= lv_text
*
TEXT_TABLE
=
*
FIX_LINES
=
*
SAP_STYLE
=
*
SAP_COLOR
=
*
SAP_FONTSIZE =
*
SAP_FONTSTYLE =
*
SAP_EMPHASIS =
*
STYLE_CLASS
=
* CHANGING
*
DOCUMENT
=
.
CALL METHOD CL_DD->ADD_GAP
EXPORTING
WIDTH
= 200
*
WIDTH_LIKE =
.
CALL METHOD CL_DD->ADD_PICTURE
EXPORTING
PICTURE_ID
= 'ALV_BACKGROUND'
*
WIDTH
= '200'
*
ALTERNATIVE_TEXT =
*
TABINDEX
=
.
endform.

"top_of_page

You might also like