2007 Mar 09 12:05 PM
HI EXPERTS,
I GOT A DUMP WHILE AM DOING THE TOTAL IN PERTICULAR COLUMS EIGHTER THIS FIELD QUANT IN DATABASE TABLE.
WHICH IS MSEG-ERFMG.
AM SENDING ALSO A PROGRAM PLZ LET ME KNOW WHERE I DID SOMETHING WRONG.
REPORT zmm_prr.
&----
& Object Id : &
& Object Name : ZMM_PRR &
& Function Module Name : MM &
& Transaction Code : ZMMPRR &
& Author : AMIT GUJARGOUD &
& Module Name : MM &
& Sub-Module : N/A &
& Program Type : Report &
& SAP Release : 6.0 &
& Description : REPORT FOR PAPER RECIEPT REGISTOR &
& &
&----
************************************************************************
Tables *
************************************************************************
TABLES : mara,
mseg,
mkpf,
mbew,
makt,
lfa1.
************************************************************************
TYPES *
************************************************************************
TYPE-POOLS: slis.
************************************************************************
INTERNAL TABLES *
************************************************************************
DATA: BEGIN OF t_mkpf OCCURS 0,
mblnr LIKE mkpf-mblnr,
budat LIKE mkpf-budat,
blart LIKE mkpf-blart,
END OF t_mkpf.
DATA : BEGIN OF t_mseg OCCURS 0,
mblnr LIKE mseg-mblnr,
bwart LIKE mseg-bwart,
werks LIKE mseg-werks,
lifnr LIKE mseg-lifnr,
charg LIKE mseg-charg,
ebeln LIKE mseg-ebeln,
matnr LIKE mseg-matnr,
menge LIKE mseg-menge,
erfmg LIKE mseg-erfmg,
END OF t_mseg.
DATA : BEGIN OF t_mara OCCURS 0,
matnr LIKE mara-matnr,
zeiar LIKE mara-zeiar,
mtart LIKE mara-mtart,
groes LIKE mara-groes,
END OF t_mara.
DATA : BEGIN OF t_mbew OCCURS 0,
bklas LIKE mbew-bklas,
matnr LIKE mbew-matnr,
END OF t_mbew.
DATA : BEGIN OF t_makt OCCURS 0,
maktx LIKE makt-maktx,
matnr LIKE makt-matnr,
spars LIKE makt-spras,
END OF t_makt.
DATA : BEGIN OF t_lfa1 OCCURS 0,
name1 LIKE lfa1-name1,
lifnr LIKE lfa1-lifnr,
END OF t_lfa1.
DATA : BEGIN OF t_final OCCURS 0,
mblnr TYPE mkpf-mblnr,
budat TYPE mkpf-budat,
blart TYPE mkpf-blart,
bwart TYPE mseg-bwart,
werks TYPE mseg-werks,
lifnr TYPE mseg-lifnr,
charg TYPE mseg-charg,
ebeln TYPE mseg-ebeln,
matnr TYPE mseg-matnr,
menge TYPE mseg-menge,
erfmg TYPE mseg-erfmg,
zeiar TYPE mara-zeiar,
mtart TYPE mara-mtart,
groes TYPE mara-groes,
maktx TYPE makt-maktx,
bklas TYPE mbew-bklas,
name1 TYPE lfa1-name1,
spars TYPE makt-spras,
ERFMG1(16) TYPE p decimals 2,
MENGE1(16) TYPE p decimals 2,
END OF t_final.
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
lt_top_of_page TYPE slis_t_listheader,
ls_layout TYPE slis_layout_alv,
gt_events TYPE slis_t_event.
************************************************************************
WORK AREAS *
************************************************************************
DATA : wa_fieldcat LIKE LINE OF it_fieldcat.
************************************************************************
SELECTION SCREEN *
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_werks FOR mseg-werks,
s_lifnr FOR mseg-lifnr,
s_matnr FOR mseg-matnr,
s_date FOR mkpf-budat OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
************************************************************************
Start-of-Selection *
************************************************************************
START-OF-SELECTION.
--- Subroutine for selecting data from MKPF--
PERFORM sub_get_mkpf.
--- Subroutine to sececting data from MSEG--
PERFORM sub_get_mseg.
--- Subroutine for selecting data from MARA--
PERFORM sub_get_mara.
--- Subroutine for selecting data from MAKT--
PERFORM sub_get_makt.
--- Subroutine for selecting data from LFA1--
PERFORM sub_get_lfa1.
----- Subroutine for selecting data from MBEW -
PERFORM sub_get_mbew.
END-OF-SELECTION.
*************move data to final table*****************
PERFORM sub_move_data.
----- Subroutine for Populating fieldcat -
PERFORM sub_alv_fetch.
----- Subroutine for ALV Display -
PERFORM sub_alv_display.
&----
*& Form sub_get_mkpf
&----
text
----
--> p1 text
<-- p2 text
----
FORM sub_get_mkpf.
CLEAR t_mkpf.
REFRESH t_mkpf.
SELECT budat blart mblnr
FROM mkpf INTO CORRESPONDING FIELDS OF TABLE t_mkpf WHERE budat IN s_date AND blart = 'WE'.
IF sy-subrc <> 0.
MESSAGE i899(5at) WITH 'No Records found from Material Document !!!'.
ENDIF.
ENDFORM. " sub_get_mkpf
&----
*& Form sub_get_mseg
&----
text
----
--> p1 text
<-- p2 text
----
FORM sub_get_mseg .
CLEAR t_mseg.
REFRESH t_mseg.
SELECT
bwart
werks
lifnr
charg
ebeln
mblnr
matnr
menge
erfmg
FROM mseg INTO CORRESPONDING FIELDS OF TABLE t_mseg
FOR ALL ENTRIES IN t_mkpf WHERE mblnr = t_mkpf-mblnr
AND werks IN s_werks
AND lifnr IN s_lifnr
AND matnr IN s_matnr
AND ( bwart = '101' OR bwart = '102' ).
ENDFORM. " sub_get_mseg
&----
*& Form sub_get_mara
&----
text
----
--> p1 text
<-- p2 text
----
FORM sub_get_mara .
CLEAR t_mara.
REFRESH t_mara.
SELECT
matnr zeiar mtart groes
FROM mara INTO CORRESPONDING FIELDS OF TABLE t_mara
FOR ALL ENTRIES IN t_mseg WHERE matnr = t_mseg-matnr AND mtart = 'ZRPP'.
ENDFORM. " sub_get_mara
&----
*& Form sub_get_mbew
&----
text
----
--> p1 text
<-- p2 text
----
FORM sub_get_mbew .
CLEAR t_mbew.
REFRESH t_mbew.
SELECT
matnr bklas FROM mbew INTO CORRESPONDING FIELDS OF TABLE t_mbew
FOR ALL ENTRIES IN t_mara WHERE matnr = t_mara-matnr.
ENDFORM. " sub_get_mbew
&----
*& Form sub_get_mAKT
&----
text
----
--> p1 text
<-- p2 text
----
FORM sub_get_makt.
CLEAR t_makt.
REFRESH t_makt.
SELECT
matnr maktx spras FROM makt INTO CORRESPONDING FIELDS OF TABLE t_makt
FOR ALL ENTRIES IN t_mara WHERE matnr = t_mara-matnr
AND spras = sy-langu.
ENDFORM. " sub_get_mbew
&----
*& Form sub_get_lfa1
&----
text
----
--> p1 text
<-- p2 text
----
FORM sub_get_lfa1 .
CLEAR t_lfa1.
REFRESH t_lfa1.
SELECT
lifnr name1 FROM lfa1 INTO CORRESPONDING FIELDS OF TABLE t_lfa1
FOR ALL ENTRIES IN t_mseg WHERE lifnr = t_mseg-lifnr.
ENDFORM. " sub_get_lfa1
&----
*& Form sub_move_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM sub_move_data .
CLEAR t_final.
REFRESH t_final.
SORT : t_mkpf BY mblnr,
t_mseg BY matnr mblnr,
t_mara BY matnr,
t_makt BY matnr,
t_mbew BY matnr,
t_lfa1 BY lifnr.
clear t_mseg.
LOOP AT t_mseg.
t_final-bwart = t_mseg-bwart.
t_final-werks = t_mseg-werks.
t_final-lifnr = t_mseg-lifnr.
t_final-charg = t_mseg-charg.
t_final-matnr = t_mseg-matnr.
t_final-ebeln = t_mseg-ebeln.
t_final-mblnr = t_mseg-mblnr.
t_final-menge1 = t_mseg-menge.
t_final-erfmg1 = t_mseg-erfmg.
*----- Getting data from MKPF
READ TABLE t_mkpf WITH KEY mblnr = t_mseg-mblnr
BINARY SEARCH.
IF sy-subrc = 0.
t_final-blart = t_mkpf-blart.
t_final-mblnr = t_mkpf-mblnr.
t_final-budat = t_mkpf-budat.
ENDIF.
*----- Getting data from MARA
READ TABLE t_mara WITH KEY matnr = t_mseg-matnr
BINARY SEARCH.
IF sy-subrc = 0.
t_final-zeiar = t_mara-zeiar.
t_final-mtart = t_mara-mtart.
t_final-groes = t_mara-groes.
ENDIF.
*----- Getting data from MBEW
READ TABLE t_mbew WITH KEY matnr = t_mseg-matnr
BINARY SEARCH.
IF sy-subrc = 0.
t_final-bklas = t_mbew-bklas.
ENDIF.
*----- Getting data from MAKT
READ TABLE t_makt WITH KEY matnr = t_mseg-matnr
BINARY SEARCH.
IF sy-subrc = 0.
t_final-maktx = t_makt-maktx.
ENDIF.
*----- Getting data from LFA1
READ TABLE t_lfa1 WITH KEY lifnr = t_mseg-lifnr
BINARY SEARCH.
IF sy-subrc = 0.
t_final-name1 = t_lfa1-name1.
ENDIF.
APPEND t_final.
CLEAR t_final.
ENDLOOP.
DELETE t_final WHERE budat NOT IN s_date AND bwart = '' AND mtart = ''.
*****************************validation***********************************
IF t_final[] IS INITIAL.
MESSAGE i000(zamit).
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " sub_move_data
&----
*& Form sub_alv_fetch
&----
text
----
--> p1 text
<-- p2 text
----
FORM sub_alv_fetch .
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-seltext_m = 'MAT CODE'.
wa_fieldcat-col_pos = '1'.
wa_fieldcat-just = 'L'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MAKTX'.
wa_fieldcat-seltext_m = 'MAT DSCRP'.
wa_fieldcat-col_pos = '2'.
wa_fieldcat-just = 'L'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MBLNR'.
wa_fieldcat-seltext_m = 'MAT DOC'.
wa_fieldcat-col_pos = '3'.
wa_fieldcat-just = 'L'.
wa_fieldcat-outputlen = 30.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'BUDAT'.
wa_fieldcat-seltext_m = 'DATE'.
wa_fieldcat-col_pos = '4'.
wa_fieldcat-just = 'L'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'LIFNR'.
wa_fieldcat-seltext_m = 'VENDER CODE'.
wa_fieldcat-col_pos = '5'.
wa_fieldcat-just = 'L'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'NAME1'.
wa_fieldcat-seltext_m = 'VENDER NAME' . "UP TO DATE PRODUCTION'.
wa_fieldcat-col_pos = '6'.
wa_fieldcat-just = 'L'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'EBELN'.
wa_fieldcat-seltext_m = 'PO.NO.'.
wa_fieldcat-col_pos = '7'.
wa_fieldcat-just = 'L'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'CHARG'.
wa_fieldcat-seltext_m = 'BATCH NO'.
wa_fieldcat-col_pos = '8'.
wa_fieldcat-just = 'L'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'ZEIAR'.
wa_fieldcat-seltext_m = 'GSM'.
wa_fieldcat-col_pos = '9'.
wa_fieldcat-just = 'L'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'ZROES'.
wa_fieldcat-seltext_m = 'WIDTH'.
wa_fieldcat-col_pos = '10'.
wa_fieldcat-just = 'L'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'BKLAS'.
wa_fieldcat-seltext_m = 'VALUATION'.
wa_fieldcat-col_pos = '11'.
wa_fieldcat-just = 'L'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MENGE1'.
wa_fieldcat-seltext_m = 'QT IN P'.
wa_fieldcat-col_pos = '12'.
wa_fieldcat-just = 'L'.
wa_fieldcat-DO_SUM = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'ERFMG1'.
wa_fieldcat-seltext_m = 'QT IN BASE UNIT'.
wa_fieldcat-col_pos = '13'.
wa_fieldcat-just = 'L'.
wa_fieldcat-DO_SUM = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
ENDFORM. " sub_alv_fetch
&----
*& Form sub_alv_display
&----
text
----
--> p1 text
<-- p2 text
----
FORM sub_alv_display .
IF NOT t_final[] IS INITIAL.
PERFORM fill_list_header USING lt_top_of_page[].
PERFORM eventtab_build USING gt_events[].
PERFORM fill_layout USING ls_layout.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = ls_layout
it_fieldcat = it_fieldcat
it_events = gt_events[]
i_save = 'A'
TABLES
t_outtab = t_final
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE e899(5at) WITH 'ALV List Can not be generated!!!'.
ENDIF.
ELSE.
MESSAGE e899(5at) WITH 'No Data found on Selected Option!!!'.
ENDIF.
ENDFORM. " ALV_DISPLAY
&----
*& Form fill_list_header
&----
Filling List Header
----
FORM fill_list_header USING p_slis_t_listheader TYPE slis_t_listheader.
DATA: ls_line TYPE slis_listheader.
DATA : w_date TYPE sy-datum,
w_str TYPE string,
str_low TYPE string, "SELECT-OPTION LOW
str_high TYPE string, "SELECT-OPTION HIGH
str TYPE string. "FINAL STRING
w_date = sy-datum.
CONCATENATE w_date6(2) '.' w_date4(2) '.' w_date+0(4) INTO w_str.
w_str = 'PAPER RECIEPT REGISTER'.
CLEAR ls_line.
ls_line-typ = 'H'.
ls_line-info = w_str.
APPEND ls_line TO lt_top_of_page.
CLEAR ls_line.
LOOP AT s_date.
ls_line-typ = 'S'.
ls_line-key = 'POSTING DATE'. "'text-100.
CONCATENATE s_date-low6(2) '.' s_date-low4(2) '.' s_date-low+0(4) INTO str_low.
CONCATENATE s_date-high6(2) '.' s_date-high4(2) '.' s_date-high+0(4) INTO str_high.
IF str_high = '' OR str_high = '00.00.0000'.
MOVE str_low TO str.
ELSE.
CONCATENATE str_low str_high INTO str SEPARATED BY ' TO '.
ENDIF.
ENDLOOP.
ls_line-typ = 'S'.
ls_line-key = 'POSTING DATE'. "'text-100.
ls_line-info = str.
APPEND ls_line TO lt_top_of_page.
CLEAR ls_line.
ENDFORM. "fill_list_header
&----
*& Form eventtab_build
&----
Building Eventtab
----
FORM eventtab_build USING lt_events TYPE slis_t_event.
DATA: ls_event TYPE slis_alv_event.
MOVE 'TOP_OF_PAGE' TO ls_event-name.
MOVE 'TOP_OF_PAGE' TO ls_event-form.
APPEND ls_event TO lt_events.
CLEAR ls_event.
ENDFORM. " eventtab_build
&----
*& Form fill_layout
&----
Filling layout
----
FORM fill_layout USING p_ls_layout TYPE slis_layout_alv.
p_ls_layout-zebra = 'X'.
p_ls_layout-cell_merge = 'X'.
p_ls_layout-colwidth_optimize = 'X'.
ENDFORM. " fill_layout
&----
*& Form TOP_OF_PAGE
&----
Building Top-of-Page
----
FORM top_of_page. " dynamically system function calling *********
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
i_logo = 'GREENPLY_LOGO'
it_list_commentary = lt_top_of_page.
ENDFORM. "top_of_page
2007 Mar 09 12:17 PM
Remove the left Justification option , as this is only applicable to character fields
wa_fieldcat-fieldname = 'MENGE1'.
wa_fieldcat-datatype = 'QUAN'.
wa_fieldcat-seltext_m = 'QT IN P'.
wa_fieldcat-col_pos = '12'.
wa_fieldcat-DO_SUM = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'ERFMG1'.
wa_fieldcat-datatype = 'QUAN'.
wa_fieldcat-seltext_m = 'QT IN BASE UNIT'.
wa_fieldcat-col_pos = '13'.
wa_fieldcat-DO_SUM = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
2007 Mar 09 12:11 PM
Hello,
May this dump error is due to the SUM OVERFLOW error
you can do this way..
PARAMETERS fact TYPE i.
DATA: fact_save TYPE i,
res(16) TYPE p.
ARITHMETIC_ERRORS contains COMPUTE_BCD_OVERFLOW ***
CATCH SYSTEM-EXCEPTIONS ARITHMETIC_ERRORS = 5.
res = fact_save = fact.
SUBTRACT 1 FROM fact.
DO fact TIMES.
MULTIPLY res BY fact. "<- COMPUTE_BCD_OVERFLOW
SUBTRACT 1 FROM fact.
ENDDO.
ENDCATCH.
IF sy-subrc = 5.
WRITE: / 'Overflow! Factorial of', fact_save,
'cannot be calculated.'.
ELSE.
WRITE: / 'Factorial of', fact_save, 'gives', res.
ENDIF.
the same way you can handle your case.
Regards
Vasanth
2007 Mar 09 12:17 PM
Remove the left Justification option , as this is only applicable to character fields
wa_fieldcat-fieldname = 'MENGE1'.
wa_fieldcat-datatype = 'QUAN'.
wa_fieldcat-seltext_m = 'QT IN P'.
wa_fieldcat-col_pos = '12'.
wa_fieldcat-DO_SUM = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'ERFMG1'.
wa_fieldcat-datatype = 'QUAN'.
wa_fieldcat-seltext_m = 'QT IN BASE UNIT'.
wa_fieldcat-col_pos = '13'.
wa_fieldcat-DO_SUM = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.