2008 Feb 12 3:55 PM
hi team,
i had a alv output program...it is working fine,,,but the problem is that one g/l account is one of the field in alv output..when i am executing the output that g/l account fields is getting the same value in the output .. i.e is repetiting the values wt could be the problem..can any one tell me answer.................................................
g/l account plant material code quantity unit rate value
10000 1000 578989 50,000
10000 1001 556898 10,000
10000 1003 9897823 5000
10000 1000
10000
10000
10000
like every thing is working fine wt could be the problem.......................................... for the g/l account is repetitive same value/////////////// ,,,,,,,,,,,,,,,,,,,,,,,,,,,
i am attaching the code also.......................................
report ztestreport3.
----
Program name |YR_FI_GLACCOUNTBREAKUP_SIV
Created by |Sivaram
Date |27/12/2007
----
*REPORT yr_fi_glaccountbreakup_siv.
----
TABLES
----
TABLES : mkpf,mseg,skb1.
----
SELECTION-SCREEN
----
PARAMETER: p_bukrs LIKE mseg-bukrs DEFAULT 1000.
SELECT-OPTIONS : p_gsber FOR mseg-gsber NO-EXTENSION,
s_bwtar FOR mseg-bwtar NO-EXTENSION,
******************
s_saknr FOR skb1-saknr NO-EXTENSION,
s_budat FOR mkpf-budat."OBLIGATORY NO-EXTENSION.
----
DATA DEFINITIONS
----
TYPE-POOLS: slis.
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv,
ls_fieldcat TYPE slis_fieldcat_alv,
layout TYPE slis_layout_alv,
wa_it_listheader TYPE slis_listheader,
it_listheader TYPE slis_t_listheader,
gt_sort TYPE slis_t_sortinfo_alv,
g_repid LIKE sy-repid.
TYPES: BEGIN OF typ_mkpf,
mblnr LIKE mkpf-mblnr,
mjahr LIKE mkpf-mjahr,
ZEILE LIKE MSEG-ZEILE,
budat LIKE mkpf-budat,
BWTAR LIKE MSEG-BWTAR,
MATNR LIKE MSEG-MATNR,
LIFNR LIKE MSEG-LIFNR,
MENGE LIKE MSEG-MENGE,
MEINS LIKE MSEG-MEINS,
GSBER LIKE MSEG-GSBER,
END OF typ_mkpf.
TYPES : BEGIN OF typ_mseg,
bukrs LIKE mseg-bukrs,
mblnr LIKE mseg-mblnr,
zeile LIKE mseg-zeile,
bwtar LIKE mseg-bwtar,
matnr LIKE mseg-matnr,
LIFNR LIKE MSEG-LIFNR,
menge LIKE mseg-menge,
meins LIKE mseg-meins,
gsber LIKE mseg-gsber,
werks LIKE mseg-werks,
dmbtr LIKE mseg-dmbtr,
END OF typ_mseg.
TYPES: BEGIN OF typ_skb1,
bukrs LIKE skb1-bukrs,
saknr LIKE skb1-saknr,
END OF typ_skb1.
TYPES : BEGIN OF typ_final,
mblnr LIKE mkpf-mblnr,
mjahr LIKE mkpf-mjahr,
gsber LIKE mseg-gsber,
zeile LIKE mseg-zeile,
budat LIKE mkpf-budat,
bwtar LIKE mseg-bwtar,
werks LIKE bseg-werks,
matnr LIKE mseg-matnr,
maktx LIKE makt-maktx,
LIFNR LIKE MSEG-LIFNR,
menge LIKE mseg-menge,
meins LIKE mseg-meins,
wrbtr LIKE bseg-wrbtr,
dmbtr LIKE mseg-dmbtr,
bukrs LIKE skb1-bukrs,
saknr LIKE skb1-saknr,
rate TYPE bseg-wrbtr,
END OF typ_final.
TYPES : BEGIN OF typ_makt,
matnr LIKE makt-matnr,
maktx LIKE makt-maktx,
END OF typ_makt.
TYPES : BEGIN OF typ_bseg,
bukrs LIKE bseg-bukrs,
gsber LIKE bseg-gsber,
belnr LIKE bseg-belnr,
matnr LIKE bseg-matnr,
wrbtr LIKE bseg-wrbtr,
werks LIKE bseg-werks,
MENGE LIKE BSEG-MENGE,
END OF typ_bseg.
TYPES : BEGIN OF typ_bsim,
belnr LIKE bsim-belnr,
matnr LIKE bsim-matnr,
bwtar LIKE bsim-bwtar,
menge LIKE bsim-menge,
meins LIKE bsim-meins,
dmbtr LIKE bsim-dmbtr,
END OF typ_bsim.
DATA: itab_mkpf TYPE TABLE OF typ_mkpf WITH HEADER LINE,
itab_mseg TYPE TABLE OF typ_mseg WITH HEADER LINE,
itab_final TYPE TABLE OF typ_final WITH HEADER LINE,
itab_bseg TYPE TABLE OF typ_bseg WITH HEADER LINE,
itab_makt TYPE TABLE OF typ_makt WITH HEADER LINE ,
itab_bsim TYPE TABLE OF typ_bsim WITH HEADER LINE,
itab_skb1 TYPE TABLE OF typ_skb1 WITH HEADER LINE.
itab_gla TYPE TABLE OF typ_ska1 WITH HEADER LINE.
DATA : w_amt(15),
w_amt1 LIKE bseg-wrbtr,
*INITIALIZATION.
----
initialization.
g_repid = sy-repid.
PERFORM fieldcat_init USING gt_fieldcat[].
*
PERFORM sort_init USING gt_sort[].
----
*START OF SELECTION
----
START-OF-SELECTION.
SELECT mblnr mjahr budat FROM mkpf INTO CORRESPONDING FIELDS OF TABLE
itab_mkpf
WHERE budat IN s_budat.
SELECT bukrs
mblnr
zeile
bwtar
matnr
gsber
werks
menge
meins
dmbtr
FROM mseg INTO CORRESPONDING FIELDS OF TABLE itab_mseg
FOR ALL ENTRIES IN itab_mkpf WHERE bukrs EQ p_bukrs AND mblnr
EQ itab_mkpf-mblnr AND gsber IN p_gsber
AND bwtar IN s_bwtar AND mjahr EQ itab_mkpf-mjahr.
SELECT bukrs gsber belnr matnr wrbtr werks FROM bseg INTO
*CORRESPONDING FIELDS OF TABLE itab_bseg FOR ALL ENTRIES IN itab_mseg
WHERE belnr EQ itab_mseg-mblnr AND matnr EQ itab_mseg-matnr AND
*bukrs EQ p_bukrs AND gsber IN p_gsber.
******************************************************
SELECT bukrs saknr
FROM skb1
INTO corresponding fieldS of table itab_skb1 WHERE bukrs EQ
p_bukrs.
AND SAKNR EQ S_SAKNR.
FOR ALL ENTRIES IN ITAB_MSEG
WHERE BUKRS EQ ITAB_MSEG-BUKRS
AND SAKNR EQ S_SAKNR.
************************************************
SELECT BELNR MATNR MENGE MEINS DMBTR BWTAR FROM BSIM INTO
*CORRESPONDING FIELDS OF TABLE ITAB_Bsim FOR ALL ENTRIES IN ITAB_MSEG
WHERE BELNR EQ ITAB_MSEG-MBLNR AND MATNR EQ ITAB_MSEG-MATNR AND
*BWTAR EQ ITAB_MSEG-BWTAR.
WHERE BELNR EQ ITAB_MSEG-MBLNR AND MATNR EQ ITAB_MSEG-MATNR.
SELECT matnr
maktx FROM makt
INTO TABLE itab_makt FOR ALL ENTRIES IN
itab_mseg WHERE matnr EQ itab_mseg-matnr.
SELECT saknr FROM ska1 INTO TABLE ITAB_Mkpf FOR ALL ENTRIES IN
*ITAB_MSEG WHERE saknr EQ ITAB_MSEG-saknr.
LOOP AT itab_mkpf.
LOOP AT itab_mseg WHERE mblnr EQ itab_mkpf-mblnr.
MOVE-CORRESPONDING itab_mseg TO itab_final.
**************
LOOP AT itab_skb1 WHERE bukrs EQ itab_mseg-bukrs.
MOVE-CORRESPONDING itab_skb1 TO itab_final.
*******************
LOOP AT itab_makt WHERE matnr EQ itab_mseg-matnr.
MOVE-CORRESPONDING itab_makt TO itab_final.
APPEND itab_final.
CLEAR itab_final.
ENDLOOP.
ENDLOOP.
ENDLOOP.
ENDLOOP.
DELETE itab_final WHERE bwtar IS INITIAL.
LOOP AT itab_final .
PERFORM convert_amount.
MODIFY itab_final.
CLEAR itab_final.
ENDLOOP.
*******ALV****************************************
REFRESH gt_fieldcat.
PERFORM : fieldcat_init USING gt_fieldcat[].
PERFORM : sort_init USING gt_sort[].
CLEAR layout.
layout-window_titlebar = 'GL Account Break up'.
layout-colwidth_optimize = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid
it_fieldcat = gt_fieldcat
is_layout = layout
it_sort = gt_sort
TABLES
t_outtab = itab_final.
DESCRIBE TABLE ITAB_MSEG LINES SY-TFILL.
*
WRITE SY-TFILL.
&----
*& Form FIELDCAT_INIT
&----
text
----
-->RT_FIELDCAT[] text
----
FORM fieldcat_init USING rt_fieldcat TYPE slis_t_fieldcat_alv.
*DATA : LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
CLEAR ls_fieldcat.
*
CLEAR LS_FIELDCAT.
LS_FIELDCAT-ROW_POS = '1'.
LS_FIELDCAT-COL_POS = '10'.
LS_FIELDCAT-TABNAME = 'ITAB_FINAL'.
LS_FIELDCAT-FIELDNAME = 'saknr'.
LS_FIELDCAT-SELTEXT_L = 'G/L Account'.
APPEND LS_FIELDCAT TO RT_FIELDCAT.
CLEAR ls_fieldcat.
ls_fieldcat-row_pos = '1'.
ls_fieldcat-col_pos = '1'.
ls_fieldcat-tabname = 'ITAB_FINAL'.
ls_fieldcat-fieldname = 'SAKNR'.
ls_fieldcat-seltext_l = 'GL ACCOUNT'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-row_pos = '1'.
ls_fieldcat-col_pos = '2'.
ls_fieldcat-tabname = 'ITAB_FINAL'.
ls_fieldcat-fieldname = 'BWTAR'.
ls_fieldcat-seltext_l = 'VAL . TYPE'.
APPEND ls_fieldcat TO rt_fieldcat.
ls_fieldcat-row_pos = '1'.
ls_fieldcat-col_pos = '3'.
ls_fieldcat-tabname = 'ITAB_FINAL'.
ls_fieldcat-fieldname = 'GSBER'.
ls_fieldcat-seltext_l = 'BUS. AREA'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-row_pos = '1'.
ls_fieldcat-col_pos = '4'.
ls_fieldcat-tabname = 'ITAB_FINAL'.
ls_fieldcat-fieldname = 'WERKS'.
ls_fieldcat-seltext_l = 'PLANT'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-row_pos = '1'.
ls_fieldcat-col_pos = '5'.
ls_fieldcat-tabname = 'ITAB_FINAL'.
ls_fieldcat-fieldname = 'MATNR'.
ls_fieldcat-seltext_l = 'MAT. CODE'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-row_pos = '1'.
ls_fieldcat-col_pos = '6'.
ls_fieldcat-tabname = 'ITAB_FINAL'.
ls_fieldcat-fieldname = 'MAKTX'.
ls_fieldcat-seltext_l = 'MAT DESCRIPTION'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-row_pos = '1'.
ls_fieldcat-col_pos = '7'.
ls_fieldcat-tabname = 'ITAB_FINAL'.
ls_fieldcat-fieldname = 'MENGE'.
ls_fieldcat-seltext_l = 'QUANTITY'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-row_pos = '1'.
ls_fieldcat-col_pos = '8'.
ls_fieldcat-tabname = 'ITAB_FINAL'.
ls_fieldcat-fieldname = 'MEINS'.
ls_fieldcat-seltext_l = 'UNIT '.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-row_pos = '1'.
ls_fieldcat-col_pos = '9'.
ls_fieldcat-tabname = 'ITAB_FINAL'.
ls_fieldcat-fieldname = 'RATE'.
ls_fieldcat-seltext_l = 'RATE'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-row_pos = '1'.
ls_fieldcat-col_pos = '10'.
ls_fieldcat-tabname = 'ITAB_FINAL'.
ls_fieldcat-fieldname = 'DMBTR'.
ls_fieldcat-seltext_l = 'VALUE'.
APPEND ls_fieldcat TO rt_fieldcat.
ENDFORM. " FIELDCAT_INIT
&----
*& Form SORT_INIT
&----
text
----
-->RT_SORT text
----
FORM sort_init USING rt_sort TYPE slis_t_sortinfo_alv.
DATA lt_sort TYPE slis_sortinfo_alv.
lt_sort-spos = 1.
lt_sort-fieldname = 'BWTAR'.
lt_sort-up = 'X'.
lt_sort-subtot = 'X'.
APPEND lt_sort TO rt_sort.
CLEAR lt_sort.
lt_sort-spos = 2.
lt_sort-tabname = 'ITAB_FINAL'.
lt_sort-fieldname = 'DMBTR'.
lt_sort-up = 'X'.
lt_sort-group = 'UL'.
lt_sort-subtot = 'X'.
APPEND lt_sort TO rt_sort.
CLEAR lt_sort.
lt_sort-spos = 3.
lt_sort-tabname = 'ITAB_FINAL'.
lt_sort-fieldname = 'MENGE'.
lt_sort-up = 'X'.
lt_sort-group = 'UL'.
lt_sort-subtot = 'X'.
APPEND lt_sort TO rt_sort.
ENDFORM. " SORT_INIT
----
FORM convert_amount.
CLEAR : w_amt,w_amt1.
w_amt = itab_final-dmbtr.
PERFORM convert_to_amount USING w_amt CHANGING w_amt1.
MOVE w_amt1 TO itab_final-rate.
ENDFORM.
----
FORM convert_to_amount *
----
........ *
----
--> VALUE *
--> W_AMT *
--> W_AMT1 *
----
FORM convert_to_amount using w_amt changing w_amt1.
REPLACE ',' WITH '' INTO w_amt.
CONDENSE w_amt NO-GAPS.
REPLACE ',' WITH '' INTO w_amt.
CONDENSE w_amt NO-GAPS.
IF not itab_final-menge IS INITIAL.
w_amt1 = w_amt / itab_final-menge .
ELSE .
w_amt1 = w_amt.
ENDIF.
ENDFORM.
2008 Feb 13 3:42 AM
Hi,
The problem might be with this piece of code
LOOP AT itab_mkpf.
LOOP AT itab_mseg WHERE mblnr EQ itab_mkpf-mblnr.
MOVE-CORRESPONDING itab_mseg TO itab_final.
LOOP AT itab_skb1 WHERE bukrs EQ itab_mseg-bukrs.
MOVE-CORRESPONDING itab_skb1 TO itab_final.
LOOP AT itab_makt WHERE matnr EQ itab_mseg-matnr.
MOVE-CORRESPONDING itab_makt TO itab_final.
APPEND itab_final.
CLEAR itab_final.
ENDLOOP.
ENDLOOP.
ENDLOOP.
ENDLOOP.
try changing it like below
LOOP AT itab_mkpf.
Read table itab_mseg with key mblnr EQ itab_mkpf-mblnr.
MOVE-CORRESPONDING itab_mseg TO itab_final.
Read table itab_skb1 with key bukrs EQ itab_mseg-bukrs.
MOVE-CORRESPONDING itab_skb1 TO itab_final.
Read table itab_makt with key matnr EQ itab_mseg-matnr.
MOVE-CORRESPONDING itab_makt TO itab_final.
APPEND itab_final.
CLEAR itab_final.
ENDLOOP.
Cheers,
jose.
Edited by: jose on Feb 13, 2008 4:43 AM