Skip to Content
0
Former Member
Aug 25, 2006 at 12:39 PM

datanot populated into itabs

31 Views

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