hi every body,
i am writing code for tolarance report but in my report the data is not populated into my internal tables
so could you guide me fix where is my bug plz have a look on my below code
&----
*& Report ZMMTOLARANCE_REPORT
*&
&----
*&
*&
&----
REPORT ZMMTOLARANCE_REPORT.
----
Tables *
----
TABLES: MARA, "General Material Data
MAKT, "Material Description
MKPF, "Header: Material Document
MCHA, "Batches
MSEG. "Document Segment: Material
----
Types *
----
TYPE-POOLS: SLIS.
----
Internal Tables *
----
data: fieldcat_tab type slis_t_fieldcat_alv with header line.
DATA: begin of gt_mseg occurs 0,
matnr LIKE mseg-matnr,
charg LIKE mseg-charg,
mblnr LIKE mseg-mblnr,
menge LIKE mseg-menge,
meins LIKE mseg-meins,
bwart LIKE mseg-bwart,
end of gt_mseg,
begin of gt_makt occurs 0,
matnr LIKE makt-matnr,
maktx LIKE makt-maktx,
end of gt_makt,
begin of gt_mcha occurs 0,
charg LIKE mcha-charg,
lvorm LIKE mcha-lvorm,
end of gt_mcha,
begin of gt_mkpf occurs 0,
mblnr LIKE mkpf-mblnr,
budat LIKE mkpf-budat,
end of gt_mkpf,
begin of gt_output_final occurs 0,
matnr LIKE mseg-matnr,
maktx LIKE makt-maktx,
charg LIKE mseg-charg,
budat LIKE mkpf-budat,
grqty LIKE mseg-menge,
qty_remn LIKE mseg-menge,
meins LIKE mseg-meins,
inv_adjst LIKE mseg-menge,
toler_per TYPE P DECIMALS 1,
end of gt_output_final.
DATA: BEGIN OF gt_grqty OCCURS 0,
charg LIKE mseg-charg,
bwart LIKE mseg-bwart,
menge LIKE mseg-menge,
END OF gt_grqty.
DATA: BEGIN OF gt_qtyrem OCCURS 0,
bwart LIKE mseg-bwart,
shkzg LIKE mseg-shkzg,
bstmg LIKE mseg-bstmg,
END OF gt_qtyrem.
DATA: BEGIN OF gt_MATKL OCCURS 0,
MATNR LIKE MARA-MATNR,
MATKL LIKE MARA-MATKL,
END OF gt_MATKL.
----
Work Areas *
----
----
Variables *
----
DATA: g_tot TYPE P DECIMALS 2,
g_tot2 TYPE P DECIMALS 2,
g_grqty TYPE P DECIMALS 2,
g_qtyrem TYPE P DECIMALS 2,
g_inv_adjst TYPE P DECIMALS 2,
g_toler_per TYPE P DECIMALS 1.
----
S e l e c t O p t i o n s *
P a r a m e t e r s *
----
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
SELECT-OPTIONS: s_matkl FOR mara-matkl OBLIGATORY, "material group
s_charg FOR mseg-charg OBLIGATORY, "batch
s_bwart FOR mseg-bwart OBLIGATORY. "movement type
PARAMETERS p_tol TYPE P DECIMALS 1 OBLIGATORY."tolerance level
SELECTION-SCREEN END OF BLOCK B1.
************************************************************************
START-OF-SELECTION. *
************************************************************************
START-OF-SELECTION.
PERFORM f_fetch_data.
PERFORM f_prepare_fieldcat.
PERFORM f_display_report.
END-OF-SELECTION.
&----
*& Form f_fetch_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM f_fetch_data.
*SELECT SINGLE MATNR
MATKL
FROM MARA
INTO GT_MATKL
WHERE MATNR = GT_MSEG-MATNR
AND MATKL IN S_MATKL.
*
SELECT matnr
charg
mblnr
menge
meins
bwart
FROM mseg
INTO TABLE gt_mseg
WHERE charg in s_charg
AND bwart in s_bwart.
if sy-subrc = 0.
sort gt_mseg by matnr.
SELECT matnr
maktx
FROM makt
INTO TABLE gt_makt
FOR ALL ENTRIES in gt_mseg
WHERE matnr = gt_mseg-matnr.
if sy-subrc = 0.
sort gt_makt by matnr.
endif.
sort gt_mseg by charg.
Selecting reconciled batches
SELECT charg
lvorm
FROM mcha
INTO table gt_mcha
FOR ALL ENTRIES in gt_mseg
WHERE charg = gt_mseg-charg
AND lvorm <> 'X'.
if sy-subrc = 0.
sort gt_mcha by charg.
endif.
SELECT mblnr
budat
FROM mkpf
INTO TABLE gt_mkpf
FOR ALL ENTRIES in gt_mseg
WHERE mblnr = gt_mseg-mblnr.
if sy-subrc = 0.
sort gt_mkpf by mblnr.
endif.
endif.
Preparation of final internal table
loop at gt_mseg .
read table gt_mcha with key charg = gt_mseg-charg
binary search.
if sy-subrc = 0.
gt_output_final-matnr = gt_mseg-matnr.
g_toler_per = g_inv_adjst / g_tot .
if g_toler_per GT p_tol.
gt_output_final-charg = gt_mseg-charg.
endif.
read table gt_makt with key matnr = gt_mseg-matnr
binary search.
if sy-subrc = 0.
gt_output_final-maktx = gt_makt-maktx.
endif.
read table gt_mkpf with key mblnr = gt_mseg-mblnr
binary search.
if sy-subrc = 0.
gt_output_final-budat = gt_mkpf-budat.
endif.
APPEND gt_output_final.
endif.
MOVE gt_mseg-menge TO g_inv_adjst .
MOVE: g_tot TO gt_output_final-grqty,
g_qtyrem TO gt_output_final-qty_remn,
g_inv_adjst TO gt_output_final-inv_adjst,
g_toler_per TO gt_output_final-toler_per .
clear: gt_makt,
gt_mseg,
gt_mkpf,
gt_output_final.
endloop.
ENDFORM. " f_fetch_data
*&----
*
*& Form f_prepare_fieldcat
*&----
*
Subroutine to prepare field catalog
*----
*
FORM f_prepare_fieldcat.
fieldcat_tab-col_pos = 1.
fieldcat_tab-tabname = 'GT_OUTPUT_FINAL'.
fieldcat_tab-fieldname = 'MATNR'.
fieldcat_tab-seltext_l = 'Material ID'.
append fieldcat_tab.
fieldcat_tab-col_pos = 2.
fieldcat_tab-tabname = 'GT_OUTPUT_FINAL'.
fieldcat_tab-fieldname = 'MAKTX'.
fieldcat_tab-seltext_l = 'Description'.
append fieldcat_tab.
fieldcat_tab-col_pos = 3.
fieldcat_tab-tabname = 'GT_OUTPUT_FINAL'.
fieldcat_tab-fieldname = 'CHARG'.
fieldcat_tab-seltext_l = 'Batch #'.
append fieldcat_tab.
fieldcat_tab-col_pos = 4.
fieldcat_tab-tabname = 'GT_OUTPUT_FINAL'.
fieldcat_tab-fieldname = 'BUDAT'.
fieldcat_tab-seltext_l = 'Goods Receipt Date'.
append fieldcat_tab.
fieldcat_tab-col_pos = 5.
fieldcat_tab-tabname = 'GT_OUTPUT_FINAL'.
fieldcat_tab-fieldname = 'MENGE'.
fieldcat_tab-seltext_l = 'Goods Receipt Quantity'.
append fieldcat_tab.
fieldcat_tab-col_pos = 6.
fieldcat_tab-tabname = 'GT_OUTPUT_FINAL'.
fieldcat_tab-fieldname = 'QTY_REMN'.
fieldcat_tab-seltext_l = 'Quantity Remaining'.
append fieldcat_tab.
fieldcat_tab-col_pos = 7.
fieldcat_tab-tabname = 'GT_OUTPUT_FINAL'.
fieldcat_tab-fieldname = 'MEINS'.
fieldcat_tab-seltext_l = 'Unit OF Measure'.
append fieldcat_tab.
fieldcat_tab-col_pos = 8.
fieldcat_tab-tabname = 'GT_OUTPUT_FINAL'.
fieldcat_tab-fieldname = 'INV_ADJST'.
fieldcat_tab-seltext_l = 'Inventory Adjustments'.
append fieldcat_tab.
fieldcat_tab-col_pos = 9.
fieldcat_tab-tabname = 'GT_OUTPUT_FINAL'.
fieldcat_tab-fieldname = 'TOLER_PER'.
fieldcat_tab-seltext_l = 'Tolerance Percentage'.
append fieldcat_tab.
ENDFORM. " f_prepare_fieldcat
&----
*& Form f_display_report
&----
text
----
--> p1 text
<-- p2 text
----
FORM f_display_report.
DATA:
l_repid LIKE sy-repid.
l_repid = sy-repid.
call function 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = 'X'
I_CALLBACK_PROGRAM = l_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT = fieldcat_tab[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = 'A'
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
IT_ALV_GRAPHICS =
IT_ADD_FIELDCAT =
IT_HYPERLINK =
I_HTML_HEIGHT_TOP =
I_HTML_HEIGHT_END =
IT_EXCEPT_QINFO =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
tables
t_outtab = gt_output_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. " f_display_report
*For retriving quantity remaing value
FORM fetch_qtyremaining.
RANGES : r_bwart for mseg-bwart.
CLEAR: r_bwart,
gt_qtyrem.
REFRESH r_bwart.
r_bwart-low = '200'.
r_bwart-high = '292'.
r_bwart-sign = 'BT'.
r_bwart-option = 'I'.
APPEND r_bwart.
r_bwart-low = '551'.
r_bwart-high = '556'.
r_bwart-sign = 'BT'.
r_bwart-option = 'I'.
APPEND r_bwart.
r_bwart-low = '701'.
r_bwart-high = '718'.
r_bwart-sign = 'BT'.
r_bwart-option = 'I'.
APPEND r_bwart.
g_tot2 = 0.
SELECT bwart
shkzg
bstmg
FROM mseg
INTO table gt_qtyrem
WHERE bwart in r_bwart.
if mseg-shkzg = 'H'.
g_tot2 = g_tot2 - mseg-bstmg.
elseif mseg-shkzg = 'S'.
g_tot2 = g_tot2 + mseg-bstmg.
endif.
perform fetch_grqty.
g_qtyrem = g_grqty - g_tot2 .
ENDFORM. "fetch_qtyremaining
*For retriving goods reciept quantity.
FORM fetch_grqty.
CLEAR gt_grqty.
SELECT charg
bwart
menge
INTO TABLE gt_grqty
FROM mseg
WHERE charg IN s_charg
AND bwart IN ('101','102','561','562','563','564','565','566').
SORT gt_grqty.
LOOP at gt_grqty.
at new charg.
g_tot = 0.
endat.
if s_bwart EQ '101' OR
s_bwart EQ '561' OR
s_bwart EQ '563' OR
s_bwart EQ '565' .
g_tot = g_tot + gt_grqty-menge. "for allpositive ones
else.
g_tot = g_tot - gt_grqty-menge. "for all negative ones
endif.
ENDLOOP.
ENDFORM. "fetch_grqty
regards,
sirisha