08-25-2006 1:39 PM
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
08-25-2006 1:44 PM
1.hope u are getting the data from MSEG.
2.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 .
<b> here u are getting the daat into output , but not calling APPEND and the same time u are cleaing the dat</b>
clear: gt_makt,
gt_mseg,
gt_mkpf,
gt_output_final.
Regards
Prabhu
endloop.
08-25-2006 1:45 PM
Try the highlighted changes.
> *&----
> -
*
> *& 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,
> harg OBLIGATORY, "batch
> s_bwart FOR mseg-bwart OBLIGATORY.
> wart 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 =
> rg = 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 =
> atnr = gt_mseg-matnr
> binary search.
> if sy-subrc = 0.
> gt_output_final-maktx = gt_makt-maktx.
> endif.
>
> read table gt_mkpf with key mblnr =
> blnr = gt_mseg-mblnr
> binary search.
> if sy-subrc = 0.
> gt_output_final-budat = gt_mkpf-budat.
> endif.
>
<b>>* APPEND gt_output_final.</b>
>
> 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 .
<b>> APPEND gt_output_final.</b>
> 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
> 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.
> menge. "for allpositive ones
>
> else.
> g_tot = g_tot - gt_grqty-menge.
> menge. "for all negative ones
> endif.
> ENDLOOP.
> ENDFORM. "fetch_grqty
>
> regards,
> sirisha
08-25-2006 1:48 PM
hi,
please mention which internal table don't have data.
check it in debug mode.
kathir.
08-25-2006 1:54 PM
As per your APPEND statement in the loop it seems you would be populating only partial information to the final internal table and that also if you find the corresponding information in gt_mcha. The APPEND statement should be for the clear statement for final internal table...in that case you will have the required information in the internal table.
datanot populated into itabs
Posted: Aug 25, 2006 1:39 PM
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.
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.
<b>*APPEND gt_output_final.</b>
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 .
<b>APPEND gt_output_final.</b>
clear: gt_makt,
gt_mseg,
gt_mkpf,
gt_output_final.
endloop.
Regards
Anurag