2006 May 13 7:55 AM
Hi all,
Here is the code and inthe code there is a comment called "<b>calculation for the advance payment</b>"
here even though the innerloop condition is satisfied
it is not entering into the loop instead it is coming out plz check it out the code and let me know where i am going wrong it's very urgent and i need to deliver this report by tuesday
&----
*& Report ZFI_SUPPLIER_PAYMENTS *
*& *
&----
*& *
*& *
&----
REPORT zfi_supplier_payments.
TYPE-POOLS: slis.
TABLES: ekko,
ekkn,
rseg,
rbkp,
bkpf,
bseg.
SELECT-OPTIONS: pspnr FOR ekkn-ps_psp_pnr,
submi FOR ekko-submi,
gjahr FOR bkpf-gjahr NO INTERVALS NO-EXTENSION.
TYPES:BEGIN OF ekko,
ebeln LIKE ekko-ebeln,
END OF ekko.
TYPES:BEGIN OF ekkn,
ebeln LIKE ekkn-ebeln,
pspnr LIKE ekkn-ps_psp_pnr,
END OF ekkn.
TYPES:BEGIN OF ekko_ekkn,
lifnr LIKE ekko-lifnr,
ebeln LIKE ekkn-ebeln,
END OF ekko_ekkn.
TYPES:BEGIN OF rseg,
ebeln LIKE rseg-ebeln,
belnr LIKE rseg-belnr,
END OF rseg.
TYPES:BEGIN OF rbkp,
belnr LIKE rbkp-belnr,
lifnr LIKE rbkp-lifnr,
END OF rbkp.
TYPES:BEGIN OF bkpf,
belnr LIKE bkpf-belnr,
awkey(10),
END OF bkpf.
TYPES:BEGIN OF b_seg,
rebzg LIKE bseg-rebzg,
END OF b_seg.
TYPES:BEGIN OF bseg,
belnr LIKE bseg-belnr,
augbl LIKE bseg-augbl,
bschl LIKE bseg-bschl,
umskz LIKE bseg-umskz,
zuonr LIKE bseg-zuonr,
wrbtr LIKE bseg-wrbtr,
rebzg LIKE bseg-rebzg,
lifnr LIKE bseg-lifnr,
END OF bseg.
TYPES:BEGIN OF final_tab_header,
ebeln LIKE rseg-ebeln,
belnr LIKE rbkp-belnr,
ekko_lifnr LIKE ekko-lifnr,
rbkp_lifnr LIKE rbkp-lifnr,
belnn LIKE bkpf-belnr,
i_value TYPE p DECIMALS 2,
a_value TYPE p DECIMALS 2,
r_value TYPE p DECIMALS 2,
l_value TYPE p DECIMALS 2,
p_value TYPE p DECIMALS 2,
f_value TYPE p DECIMALS 2,
END OF final_tab_header.
TYPES:BEGIN OF final_tab_i,
wrbtr LIKE bseg-wrbtr,
hkont LIKE bseg-hkont,
mwskz LIKE bseg-mwskz,
belnr LIKE bseg-belnr,
bschl LIKE bseg-bschl,
buzei LIKE bseg-buzei,
END OF final_tab_i.
TYPES:BEGIN OF final_tab_item,
ebeln LIKE rseg-ebeln,
belnr LIKE rbkp-belnr,
ekko_lifnr LIKE ekko-lifnr,
rbkp_lifnr LIKE rbkp-lifnr,
belnn LIKE bkpf-belnr,
END OF final_tab_item.
TYPES:BEGIN OF final_tab,
ebeln LIKE rseg-ebeln,
belnr LIKE rbkp-belnr,
ekko_lifnr LIKE ekko-lifnr,
rbkp_lifnr LIKE rbkp-lifnr,
belnn LIKE bkpf-belnr,
i_value TYPE p DECIMALS 2,
a_value TYPE p DECIMALS 2,
r_value TYPE p DECIMALS 2,
l_value TYPE p DECIMALS 2,
p_value TYPE p DECIMALS 2,
f_value TYPE p DECIMALS 2,
END OF final_tab.
DATA: i_ekko TYPE STANDARD TABLE OF ekko WITH HEADER LINE.
DATA: i_ekkn TYPE STANDARD TABLE OF ekkn WITH HEADER LINE.
DATA: i_rseg TYPE STANDARD TABLE OF rseg WITH HEADER LINE.
DATA: i_rbkp TYPE STANDARD TABLE OF rbkp WITH HEADER LINE.
DATA: i_bkpf TYPE STANDARD TABLE OF bkpf WITH HEADER LINE.
DATA: i_b_seg TYPE STANDARD TABLE OF b_seg WITH HEADER LINE.
DATA: i_final_tab TYPE STANDARD TABLE OF final_tab WITH HEADER LINE.
DATA: i_final_tab_header TYPE STANDARD TABLE OF final_tab_header WITH HEADER LINE.
DATA: i_final_tab_item TYPE STANDARD TABLE OF final_tab_item WITH HEADER LINE.
DATA: i_final_tab_i TYPE STANDARD TABLE OF final_tab_i WITH HEADER LINE.
DATA: i_bseg TYPE STANDARD TABLE OF bseg WITH HEADER LINE.
DATA: i_ekko_ekkn TYPE STANDARD TABLE OF ekko_ekkn WITH HEADER LINE.
**variables
DATA: t_index TYPE i VALUE '0',
i_value TYPE p DECIMALS 2 VALUE '0.00',
a_value TYPE p DECIMALS 2 VALUE '0.00',
p_value TYPE p DECIMALS 2 VALUE '0.00',
o_ebeln TYPE string.
**for alv
DATA: g_repid LIKE sy-repid,
gt_fieldcat TYPE slis_t_fieldcat_alv,
gs_keyinfo TYPE slis_keyinfo_alv,
g_tabname_header TYPE slis_tabname,
g_tabname_item TYPE slis_tabname,
ls_layout TYPE slis_layout_alv,
l_i_event TYPE slis_alv_event.
**Initialization
INITIALIZATION.
g_repid = sy-repid.
g_tabname_header = 'i_final_tab_header'.
g_tabname_item = 'i_final_tab_i'.
CLEAR gs_keyinfo.
gs_keyinfo-header01 = 'BELNN'.
gs_keyinfo-item01 = 'BELNR'.
ls_layout-group_change_edit = 'X'.
ls_layout-colwidth_optimize = 'X'.
ls_layout-zebra = 'X'.
ls_layout-detail_popup = 'X'.
ls_layout-get_selinfos = 'X'.
ls_layout-window_titlebar = 'Supplier Payments'.
ls_layout-no_keyfix = 'X'.
PERFORM e01_fieldcat_init USING gt_fieldcat[].
**Start-Of-Selection
START-OF-SELECTION.
PERFORM selection.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = g_repid
it_fieldcat = gt_fieldcat[]
i_tabname_header = g_tabname_header
i_tabname_item = g_tabname_item
is_keyinfo = gs_keyinfo
is_layout = ls_layout
TABLES
t_outtab_header = i_final_tab_header
t_outtab_item = i_final_tab_i.
**End-Of-Selection
END-OF-SELECTION.
&----
*& Form selection
&----
text
----
FORM selection.
***read ebeln from ekko into table i_ekko for the selected submi.
*SELECT ebeln
FROM ekko INTO TABLE i_ekko WHERE submi IN submi.
*
*SORT i_ekko BY ebeln.
*CLEAR i_ekko.
*
*
*
***read ebeln wbs element from ekkn into table i_ekkn for the selected ebeln in the table i_ekko..
*
*IF NOT i_ekko[] IS INITIAL.
*
SELECT ebeln
ps_psp_pnr
FROM ekkn INTO TABLE i_ekkn FOR ALL ENTRIES IN i_ekko
WHERE ebeln = i_ekko-ebeln AND
ps_psp_pnr IN pspnr.
*
*ENDIF.
*
*SORT i_ekkn BY ebeln.
*CLEAR i_ekkn.
**edited
SELECT ekko~lifnr
ekkn~ebeln
FROM ekko INNER JOIN ekkn ON ( ekkoebeln = ekknebeln )
INTO TABLE i_ekko_ekkn WHERE ekkn~ps_psp_pnr IN pspnr AND
ekko~submi IN submi.
SORT i_ekko_ekkn BY ebeln.
CLEAR i_ekko_ekkn.
**read ebeln belnr from rseg into table i_rseg for the selected ebeln in the table i_ekkn.
IF NOT i_ekko_ekkn[] IS INITIAL.
SELECT ebeln
belnr
FROM rseg INTO TABLE i_rseg FOR ALL ENTRIES IN i_ekko_ekkn
WHERE ebeln = i_ekko_ekkn-ebeln AND
gjahr IN gjahr.
ENDIF.
SORT i_rseg BY ebeln.
CLEAR i_rseg.
**read belnr lifnr from rbkp into table i_rbkp for the selected ebeln belnr in the table i_rseg.
IF NOT i_rseg[] IS INITIAL.
SELECT belnr
lifnr
FROM rbkp INTO TABLE i_rbkp FOR ALL ENTRIES IN i_rseg
WHERE belnr = i_rseg-belnr AND
gjahr IN gjahr.
ENDIF.
SORT i_rbkp BY belnr.
CLEAR i_rbkp.
**read all belnr awkey from bkpf
SELECT belnr
awkey FROM bkpf INTO TABLE i_bkpf WHERE gjahr IN gjahr.
SORT i_bkpf BY belnr awkey.
CLEAR i_bkpf.
***read belnr from j_bkpf for the selected entries in i_rseg for belnr eq awkey of 1'st 10 digits
*
*
*IF NOT i_rseg[] IS INITIAL.
*
LOOP AT i_rseg.
*
CLEAR j_bkpf.
READ TABLE j_bkpf WITH KEY awkey = i_rseg-belnr.
*
IF sy-subrc EQ 0.
*
i_bkpf-belnr = j_bkpf-belnr.
*
APPEND i_bkpf.
CLEAR i_bkpf.
*
ENDIF.
*
ENDLOOP.
*
*ENDIF.
*
*SORT i_bkpf BY belnr.
*CLEAR i_bkpf.
main header internal table populated with values ebeln belnr lifnr & bkpf-belnr where awkey of
first 10 digits must be equal to rseg-belnr or rbkp-belnr
*IF NOT i_rseg[] IS INITIAL.
*
LOOP AT i_rseg.
*
i_final_tab-ebeln = i_rseg-ebeln.
*
CLEAR i_rbkp.
READ TABLE i_rbkp WITH KEY belnr = i_rseg-belnr.
*
IF sy-subrc EQ 0.
*
i_final_tab-belnr = i_rbkp-belnr.
i_final_tab-lifnr = i_rbkp-lifnr.
*
ENDIF.
*
CLEAR i_bkpf.
READ TABLE i_bkpf WITH KEY awkey = i_rseg-belnr.
*
IF sy-subrc EQ 0.
*
i_final_tab-belnn = i_bkpf-belnr.
*
ENDIF.
*
APPEND i_final_tab.
CLEAR i_final_tab.
*
ENDLOOP.
*
*ENDIF.
*
*SORT i_final_tab BY belnr.
*CLEAR i_final_tab.
*
*
IF NOT i_ekko_ekkn[] IS INITIAL.
LOOP AT i_ekko_ekkn.
i_final_tab-ebeln = i_ekko_ekkn-ebeln.
i_final_tab-ekko_lifnr = i_ekko_ekkn-lifnr.
CLEAR i_rseg.
READ TABLE i_rseg WITH KEY ebeln = i_ekko_ekkn-ebeln.
IF sy-subrc EQ 0.
i_final_tab-belnr = i_rseg-belnr.
ENDIF.
CLEAR i_rbkp.
READ TABLE i_rbkp WITH KEY belnr = i_rseg-belnr.
IF sy-subrc EQ 0.
i_final_tab-rbkp_lifnr = i_rbkp-lifnr.
ENDIF.
CLEAR i_bkpf.
READ TABLE i_bkpf WITH KEY awkey = i_rseg-belnr.
IF sy-subrc EQ 0.
i_final_tab-belnn = i_bkpf-belnr.
ENDIF.
APPEND i_final_tab.
CLEAR i_final_tab.
ENDLOOP.
ENDIF.
SORT i_final_tab BY ebeln.
CLEAR i_final_tab.
DELETE ADJACENT DUPLICATES FROM i_final_tab COMPARING ebeln.
IF NOT i_final_tab[] IS INITIAL.
LOOP AT i_final_tab.
i_final_tab_header-ebeln = i_final_tab-ebeln.
i_final_tab_header-belnr = i_final_tab-belnr.
i_final_tab_header-ekko_lifnr = i_final_tab-ekko_lifnr.
i_final_tab_header-rbkp_lifnr = i_final_tab-rbkp_lifnr.
i_final_tab_header-belnn = i_final_tab-belnn.
APPEND i_final_tab_header.
CLEAR i_final_tab_header.
ENDLOOP.
ENDIF.
SORT i_final_tab_header BY ebeln.
CLEAR i_final_tab_header.
IF NOT i_final_tab[] IS INITIAL.
LOOP AT i_final_tab.
i_final_tab_item-ebeln = i_final_tab-ebeln.
i_final_tab_item-belnr = i_final_tab-belnr.
i_final_tab_item-ekko_lifnr = i_final_tab-ekko_lifnr.
i_final_tab_item-rbkp_lifnr = i_final_tab-rbkp_lifnr.
i_final_tab_item-belnn = i_final_tab-belnn.
APPEND i_final_tab_item.
CLEAR i_final_tab_item.
ENDLOOP.
ENDIF.
SORT i_final_tab_item BY ebeln .
CLEAR i_final_tab_item.
**read all the entries from bseg for the accounting document number i.e..belnn of i_final_tab_header
IF NOT i_final_tab_header[] IS INITIAL.
SELECT
belnr
augbl
bschl
umskz
zuonr
wrbtr
rebzg
lifnr
FROM bseg INTO TABLE i_bseg
FOR ALL ENTRIES IN i_final_tab_header
WHERE
belnr = i_final_tab_header-belnn AND
gjahr IN gjahr.
ENDIF.
SORT i_bseg BY belnr.
CLEAR i_bseg.
*
**read all entries from bseg for the posting key eq 21.
SELECT rebzg
FROM bseg INTO TABLE i_b_seg WHERE bschl EQ '21' AND
gjahr IN gjahr.
SORT i_b_seg BY rebzg.
CLEAR i_b_seg.
**delete the entries from i_final_tab_item if i_b_seg of rebzg eq i_final_tab_item of belnn.
IF NOT i_b_seg[] IS INITIAL.
LOOP AT i_final_tab_item.
t_index = sy-tabix.
CLEAR i_b_seg.
READ TABLE i_b_seg WITH KEY rebzg = i_final_tab_item-belnn.
IF sy-subrc EQ 0.
DELETE i_final_tab_item INDEX t_index.
ENDIF.
ENDLOOP.
ENDIF.
SORT i_final_tab_item BY ebeln.
CLEAR i_final_tab_item.
calculation for the invoice amount
IF NOT i_final_tab_header[] IS INITIAL.
LOOP AT i_final_tab_header.
t_index = sy-tabix.
LOOP AT i_bseg WHERE belnr = i_final_tab_header-belnn.
IF i_bseg-bschl EQ '31'.
i_value = i_value + i_bseg-wrbtr.
ENDIF.
ENDLOOP.
**move values to i_final_tab
i_final_tab_header-i_value = i_value.
MODIFY i_final_tab_header INDEX t_index TRANSPORTING i_value.
reinitialize values
i_value = '0.00'.
ENDLOOP.
SORT i_final_tab_header BY ebeln.
CLEAR i_final_tab_header.
ENDIF.
calculation for the part payment
IF NOT i_final_tab_header[] IS INITIAL.
LOOP AT i_final_tab_header.
t_index = sy-tabix.
LOOP AT i_bseg WHERE rebzg = i_final_tab_header-belnn.
IF i_bseg-augbl EQ space.
p_value = p_value + i_bseg-wrbtr.
ELSE.
p_value = '0.00'.
ENDIF.
ENDLOOP.
**move values to i_final_tab
i_final_tab_header-p_value = p_value.
MODIFY i_final_tab_header INDEX t_index TRANSPORTING p_value.
reinitialize values
p_value = '0.00'.
ENDLOOP.
SORT i_final_tab_header BY ebeln.
CLEAR i_final_tab_header.
ENDIF.
calculation for the advance payment
IF NOT i_final_tab_header[] IS INITIAL.
LOOP AT i_final_tab_header.
t_index = sy-tabix.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = i_final_tab_header-ebeln
IMPORTING
output = o_ebeln.
LOOP AT i_bseg where ( umskz = 'A' AND lifnr = i_final_tab_header-ekko_lifnr AND
zuonr = o_ebeln ).
IF i_bseg-augbl EQ space AND i_bseg-bschl EQ '29'.
a_value = a_value + i_bseg-wrbtr.
ENDIF.
IF i_bseg-augbl NE space.
a_value = '0.00'.
ENDIF.
ENDLOOP.
CLEAR i_bseg.
**move values to i_final_tab
i_final_tab_header-a_value = a_value.
MODIFY i_final_tab_header INDEX t_index TRANSPORTING a_value.
reinitialize values
a_value = '0.00'.
ENDLOOP.
SORT i_final_tab_header BY ebeln.
CLEAR i_final_tab_header.
ENDIF.
SELECT wrbtr
hkont
mwskz
belnr
bschl
buzei
FROM bseg INTO TABLE i_final_tab_i FOR ALL ENTRIES IN i_final_tab_item WHERE belnr = i_final_tab_item-belnn AND
gjahr IN gjahr AND
( bschl = '31' OR
bschl = '81' OR
bschl = '40' ).
ENDFORM. "SELECTION
----
FORM E01_FIELDCAT_INIT *
----
........ *
----
--> E01_LT_FIELDCAT *
----
FORM e01_fieldcat_init USING e01_lt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'EBELN'.
ls_fieldcat-tabname = g_tabname_header.
ls_fieldcat-seltext_l = 'Purchase Order Number'.
ls_fieldcat-ref_fieldname = 'EBELN'.
ls_fieldcat-ref_tabname = 'EKKO'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'EKKO_LIFNR'.
ls_fieldcat-tabname = g_tabname_header.
ls_fieldcat-seltext_l = 'Vendor Number'.
ls_fieldcat-ref_fieldname = 'EKKO_LIFNR'.
ls_fieldcat-ref_tabname = 'EKKO'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'BELNR'.
ls_fieldcat-tabname = g_tabname_header.
ls_fieldcat-ref_fieldname = 'BELNR'.
ls_fieldcat-ref_tabname = 'RBSEG'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'RBKP_LIFNR'.
ls_fieldcat-tabname = g_tabname_header.
ls_fieldcat-seltext_l = 'Invoice Vendor Number'.
ls_fieldcat-ref_fieldname = 'RBKP_LIFNR'.
ls_fieldcat-ref_tabname = 'RBKP'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'BELNN'.
ls_fieldcat-tabname = g_tabname_header.
ls_fieldcat-seltext_l = 'Accounting Document Number'.
ls_fieldcat-ref_fieldname = 'BELNN'.
ls_fieldcat-ref_tabname = 'BKPF'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'I_VALUE'.
ls_fieldcat-tabname = g_tabname_header.
ls_fieldcat-ref_fieldname = 'I_VALUE'.
ls_fieldcat-seltext_l = 'Invoice Value'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'A_VALUE'.
ls_fieldcat-tabname = g_tabname_header.
ls_fieldcat-ref_fieldname = 'A_VALUE'.
ls_fieldcat-seltext_l = 'Advance Value'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'P_VALUE'.
ls_fieldcat-tabname = g_tabname_header.
ls_fieldcat-ref_fieldname = 'P_VALUE'.
ls_fieldcat-seltext_l = 'Part Value'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'HKONT'.
ls_fieldcat-tabname = g_tabname_item.
ls_fieldcat-ref_fieldname = 'HKONT'.
ls_fieldcat-ref_tabname = 'BSEG'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'BUZEI'.
ls_fieldcat-tabname = g_tabname_item.
ls_fieldcat-ref_fieldname = 'BUZEI'.
ls_fieldcat-ref_tabname = 'BSEG'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'BSCHL'.
ls_fieldcat-tabname = g_tabname_item.
ls_fieldcat-ref_fieldname = 'BSCHL'.
ls_fieldcat-ref_tabname = 'BSEG'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'MWSKZ'.
ls_fieldcat-tabname = g_tabname_item.
ls_fieldcat-ref_fieldname = 'MWSKZ'.
ls_fieldcat-ref_tabname = 'BSEG'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'WRBTR'.
ls_fieldcat-tabname = g_tabname_item.
ls_fieldcat-ref_fieldname = 'WRBTR'.
ls_fieldcat-ref_tabname = 'BSEG'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
ENDFORM. "E01_FIELDCAT_INIT
*WRITE:/ .
Hi all,
Here is the code and inthe code there is a comment called "<b>calculation for the advance payment</b>"
here even though the innerloop condition is satisfied
it is not entering into the loop instead it is coming out plz check it out the code and let me know where i am going wrong it's very urgent and i need to deliver this report by tuesday
&----
*& Report ZFI_SUPPLIER_PAYMENTS *
*& *
&----
*& *
*& *
&----
REPORT zfi_supplier_payments.
TYPE-POOLS: slis.
TABLES: ekko,
ekkn,
rseg,
rbkp,
bkpf,
bseg.
SELECT-OPTIONS: pspnr FOR ekkn-ps_psp_pnr,
submi FOR ekko-submi,
gjahr FOR bkpf-gjahr NO INTERVALS NO-EXTENSION.
TYPES:BEGIN OF ekko,
ebeln LIKE ekko-ebeln,
END OF ekko.
TYPES:BEGIN OF ekkn,
ebeln LIKE ekkn-ebeln,
pspnr LIKE ekkn-ps_psp_pnr,
END OF ekkn.
TYPES:BEGIN OF ekko_ekkn,
lifnr LIKE ekko-lifnr,
ebeln LIKE ekkn-ebeln,
END OF ekko_ekkn.
TYPES:BEGIN OF rseg,
ebeln LIKE rseg-ebeln,
belnr LIKE rseg-belnr,
END OF rseg.
TYPES:BEGIN OF rbkp,
belnr LIKE rbkp-belnr,
lifnr LIKE rbkp-lifnr,
END OF rbkp.
TYPES:BEGIN OF bkpf,
belnr LIKE bkpf-belnr,
awkey(10),
END OF bkpf.
TYPES:BEGIN OF b_seg,
rebzg LIKE bseg-rebzg,
END OF b_seg.
TYPES:BEGIN OF bseg,
belnr LIKE bseg-belnr,
augbl LIKE bseg-augbl,
bschl LIKE bseg-bschl,
umskz LIKE bseg-umskz,
zuonr LIKE bseg-zuonr,
wrbtr LIKE bseg-wrbtr,
rebzg LIKE bseg-rebzg,
lifnr LIKE bseg-lifnr,
END OF bseg.
TYPES:BEGIN OF final_tab_header,
ebeln LIKE rseg-ebeln,
belnr LIKE rbkp-belnr,
ekko_lifnr LIKE ekko-lifnr,
rbkp_lifnr LIKE rbkp-lifnr,
belnn LIKE bkpf-belnr,
i_value TYPE p DECIMALS 2,
a_value TYPE p DECIMALS 2,
r_value TYPE p DECIMALS 2,
l_value TYPE p DECIMALS 2,
p_value TYPE p DECIMALS 2,
f_value TYPE p DECIMALS 2,
END OF final_tab_header.
TYPES:BEGIN OF final_tab_i,
wrbtr LIKE bseg-wrbtr,
hkont LIKE bseg-hkont,
mwskz LIKE bseg-mwskz,
belnr LIKE bseg-belnr,
bschl LIKE bseg-bschl,
buzei LIKE bseg-buzei,
END OF final_tab_i.
TYPES:BEGIN OF final_tab_item,
ebeln LIKE rseg-ebeln,
belnr LIKE rbkp-belnr,
ekko_lifnr LIKE ekko-lifnr,
rbkp_lifnr LIKE rbkp-lifnr,
belnn LIKE bkpf-belnr,
END OF final_tab_item.
TYPES:BEGIN OF final_tab,
ebeln LIKE rseg-ebeln,
belnr LIKE rbkp-belnr,
ekko_lifnr LIKE ekko-lifnr,
rbkp_lifnr LIKE rbkp-lifnr,
belnn LIKE bkpf-belnr,
i_value TYPE p DECIMALS 2,
a_value TYPE p DECIMALS 2,
r_value TYPE p DECIMALS 2,
l_value TYPE p DECIMALS 2,
p_value TYPE p DECIMALS 2,
f_value TYPE p DECIMALS 2,
END OF final_tab.
DATA: i_ekko TYPE STANDARD TABLE OF ekko WITH HEADER LINE.
DATA: i_ekkn TYPE STANDARD TABLE OF ekkn WITH HEADER LINE.
DATA: i_rseg TYPE STANDARD TABLE OF rseg WITH HEADER LINE.
DATA: i_rbkp TYPE STANDARD TABLE OF rbkp WITH HEADER LINE.
DATA: i_bkpf TYPE STANDARD TABLE OF bkpf WITH HEADER LINE.
DATA: i_b_seg TYPE STANDARD TABLE OF b_seg WITH HEADER LINE.
DATA: i_final_tab TYPE STANDARD TABLE OF final_tab WITH HEADER LINE.
DATA: i_final_tab_header TYPE STANDARD TABLE OF final_tab_header WITH HEADER LINE.
DATA: i_final_tab_item TYPE STANDARD TABLE OF final_tab_item WITH HEADER LINE.
DATA: i_final_tab_i TYPE STANDARD TABLE OF final_tab_i WITH HEADER LINE.
DATA: i_bseg TYPE STANDARD TABLE OF bseg WITH HEADER LINE.
DATA: i_ekko_ekkn TYPE STANDARD TABLE OF ekko_ekkn WITH HEADER LINE.
**variables
DATA: t_index TYPE i VALUE '0',
i_value TYPE p DECIMALS 2 VALUE '0.00',
a_value TYPE p DECIMALS 2 VALUE '0.00',
p_value TYPE p DECIMALS 2 VALUE '0.00',
o_ebeln TYPE string.
**for alv
DATA: g_repid LIKE sy-repid,
gt_fieldcat TYPE slis_t_fieldcat_alv,
gs_keyinfo TYPE slis_keyinfo_alv,
g_tabname_header TYPE slis_tabname,
g_tabname_item TYPE slis_tabname,
ls_layout TYPE slis_layout_alv,
l_i_event TYPE slis_alv_event.
**Initialization
INITIALIZATION.
g_repid = sy-repid.
g_tabname_header = 'i_final_tab_header'.
g_tabname_item = 'i_final_tab_i'.
CLEAR gs_keyinfo.
gs_keyinfo-header01 = 'BELNN'.
gs_keyinfo-item01 = 'BELNR'.
ls_layout-group_change_edit = 'X'.
ls_layout-colwidth_optimize = 'X'.
ls_layout-zebra = 'X'.
ls_layout-detail_popup = 'X'.
ls_layout-get_selinfos = 'X'.
ls_layout-window_titlebar = 'Supplier Payments'.
ls_layout-no_keyfix = 'X'.
PERFORM e01_fieldcat_init USING gt_fieldcat[].
**Start-Of-Selection
START-OF-SELECTION.
PERFORM selection.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = g_repid
it_fieldcat = gt_fieldcat[]
i_tabname_header = g_tabname_header
i_tabname_item = g_tabname_item
is_keyinfo = gs_keyinfo
is_layout = ls_layout
TABLES
t_outtab_header = i_final_tab_header
t_outtab_item = i_final_tab_i.
**End-Of-Selection
END-OF-SELECTION.
&----
*& Form selection
&----
text
----
FORM selection.
***read ebeln from ekko into table i_ekko for the selected submi.
*SELECT ebeln
FROM ekko INTO TABLE i_ekko WHERE submi IN submi.
*
*SORT i_ekko BY ebeln.
*CLEAR i_ekko.
*
*
*
***read ebeln wbs element from ekkn into table i_ekkn for the selected ebeln in the table i_ekko..
*
*IF NOT i_ekko[] IS INITIAL.
*
SELECT ebeln
ps_psp_pnr
FROM ekkn INTO TABLE i_ekkn FOR ALL ENTRIES IN i_ekko
WHERE ebeln = i_ekko-ebeln AND
ps_psp_pnr IN pspnr.
*
*ENDIF.
*
*SORT i_ekkn BY ebeln.
*CLEAR i_ekkn.
**edited
SELECT ekko~lifnr
ekkn~ebeln
FROM ekko INNER JOIN ekkn ON ( ekkoebeln = ekknebeln )
INTO TABLE i_ekko_ekkn WHERE ekkn~ps_psp_pnr IN pspnr AND
ekko~submi IN submi.
SORT i_ekko_ekkn BY ebeln.
CLEAR i_ekko_ekkn.
**read ebeln belnr from rseg into table i_rseg for the selected ebeln in the table i_ekkn.
IF NOT i_ekko_ekkn[] IS INITIAL.
SELECT ebeln
belnr
FROM rseg INTO TABLE i_rseg FOR ALL ENTRIES IN i_ekko_ekkn
WHERE ebeln = i_ekko_ekkn-ebeln AND
gjahr IN gjahr.
ENDIF.
SORT i_rseg BY ebeln.
CLEAR i_rseg.
**read belnr lifnr from rbkp into table i_rbkp for the selected ebeln belnr in the table i_rseg.
IF NOT i_rseg[] IS INITIAL.
SELECT belnr
lifnr
FROM rbkp INTO TABLE i_rbkp FOR ALL ENTRIES IN i_rseg
WHERE belnr = i_rseg-belnr AND
gjahr IN gjahr.
ENDIF.
SORT i_rbkp BY belnr.
CLEAR i_rbkp.
**read all belnr awkey from bkpf
SELECT belnr
awkey FROM bkpf INTO TABLE i_bkpf WHERE gjahr IN gjahr.
SORT i_bkpf BY belnr awkey.
CLEAR i_bkpf.
***read belnr from j_bkpf for the selected entries in i_rseg for belnr eq awkey of 1'st 10 digits
*
*
*IF NOT i_rseg[] IS INITIAL.
*
LOOP AT i_rseg.
*
CLEAR j_bkpf.
READ TABLE j_bkpf WITH KEY awkey = i_rseg-belnr.
*
IF sy-subrc EQ 0.
*
i_bkpf-belnr = j_bkpf-belnr.
*
APPEND i_bkpf.
CLEAR i_bkpf.
*
ENDIF.
*
ENDLOOP.
*
*ENDIF.
*
*SORT i_bkpf BY belnr.
*CLEAR i_bkpf.
main header internal table populated with values ebeln belnr lifnr & bkpf-belnr where awkey of
first 10 digits must be equal to rseg-belnr or rbkp-belnr
*IF NOT i_rseg[] IS INITIAL.
*
LOOP AT i_rseg.
*
i_final_tab-ebeln = i_rseg-ebeln.
*
CLEAR i_rbkp.
READ TABLE i_rbkp WITH KEY belnr = i_rseg-belnr.
*
IF sy-subrc EQ 0.
*
i_final_tab-belnr = i_rbkp-belnr.
i_final_tab-lifnr = i_rbkp-lifnr.
*
ENDIF.
*
CLEAR i_bkpf.
READ TABLE i_bkpf WITH KEY awkey = i_rseg-belnr.
*
IF sy-subrc EQ 0.
*
i_final_tab-belnn = i_bkpf-belnr.
*
ENDIF.
*
APPEND i_final_tab.
CLEAR i_final_tab.
*
ENDLOOP.
*
*ENDIF.
*
*SORT i_final_tab BY belnr.
*CLEAR i_final_tab.
*
*
IF NOT i_ekko_ekkn[] IS INITIAL.
LOOP AT i_ekko_ekkn.
i_final_tab-ebeln = i_ekko_ekkn-ebeln.
i_final_tab-ekko_lifnr = i_ekko_ekkn-lifnr.
CLEAR i_rseg.
READ TABLE i_rseg WITH KEY ebeln = i_ekko_ekkn-ebeln.
IF sy-subrc EQ 0.
i_final_tab-belnr = i_rseg-belnr.
ENDIF.
CLEAR i_rbkp.
READ TABLE i_rbkp WITH KEY belnr = i_rseg-belnr.
IF sy-subrc EQ 0.
i_final_tab-rbkp_lifnr = i_rbkp-lifnr.
ENDIF.
CLEAR i_bkpf.
READ TABLE i_bkpf WITH KEY awkey = i_rseg-belnr.
IF sy-subrc EQ 0.
i_final_tab-belnn = i_bkpf-belnr.
ENDIF.
APPEND i_final_tab.
CLEAR i_final_tab.
ENDLOOP.
ENDIF.
SORT i_final_tab BY ebeln.
CLEAR i_final_tab.
DELETE ADJACENT DUPLICATES FROM i_final_tab COMPARING ebeln.
IF NOT i_final_tab[] IS INITIAL.
LOOP AT i_final_tab.
i_final_tab_header-ebeln = i_final_tab-ebeln.
i_final_tab_header-belnr = i_final_tab-belnr.
i_final_tab_header-ekko_lifnr = i_final_tab-ekko_lifnr.
i_final_tab_header-rbkp_lifnr = i_final_tab-rbkp_lifnr.
i_final_tab_header-belnn = i_final_tab-belnn.
APPEND i_final_tab_header.
CLEAR i_final_tab_header.
ENDLOOP.
ENDIF.
SORT i_final_tab_header BY ebeln.
CLEAR i_final_tab_header.
IF NOT i_final_tab[] IS INITIAL.
LOOP AT i_final_tab.
i_final_tab_item-ebeln = i_final_tab-ebeln.
i_final_tab_item-belnr = i_final_tab-belnr.
i_final_tab_item-ekko_lifnr = i_final_tab-ekko_lifnr.
i_final_tab_item-rbkp_lifnr = i_final_tab-rbkp_lifnr.
i_final_tab_item-belnn = i_final_tab-belnn.
APPEND i_final_tab_item.
CLEAR i_final_tab_item.
ENDLOOP.
ENDIF.
SORT i_final_tab_item BY ebeln .
CLEAR i_final_tab_item.
**read all the entries from bseg for the accounting document number i.e..belnn of i_final_tab_header
IF NOT i_final_tab_header[] IS INITIAL.
SELECT
belnr
augbl
bschl
umskz
zuonr
wrbtr
rebzg
lifnr
FROM bseg INTO TABLE i_bseg
FOR ALL ENTRIES IN i_final_tab_header
WHERE
belnr = i_final_tab_header-belnn AND
gjahr IN gjahr.
ENDIF.
SORT i_bseg BY belnr.
CLEAR i_bseg.
*
**read all entries from bseg for the posting key eq 21.
SELECT rebzg
FROM bseg INTO TABLE i_b_seg WHERE bschl EQ '21' AND
gjahr IN gjahr.
SORT i_b_seg BY rebzg.
CLEAR i_b_seg.
**delete the entries from i_final_tab_item if i_b_seg of rebzg eq i_final_tab_item of belnn.
IF NOT i_b_seg[] IS INITIAL.
LOOP AT i_final_tab_item.
t_index = sy-tabix.
CLEAR i_b_seg.
READ TABLE i_b_seg WITH KEY rebzg = i_final_tab_item-belnn.
IF sy-subrc EQ 0.
DELETE i_final_tab_item INDEX t_index.
ENDIF.
ENDLOOP.
ENDIF.
SORT i_final_tab_item BY ebeln.
CLEAR i_final_tab_item.
calculation for the invoice amount
IF NOT i_final_tab_header[] IS INITIAL.
LOOP AT i_final_tab_header.
t_index = sy-tabix.
LOOP AT i_bseg WHERE belnr = i_final_tab_header-belnn.
IF i_bseg-bschl EQ '31'.
i_value = i_value + i_bseg-wrbtr.
ENDIF.
ENDLOOP.
**move values to i_final_tab
i_final_tab_header-i_value = i_value.
MODIFY i_final_tab_header INDEX t_index TRANSPORTING i_value.
reinitialize values
i_value = '0.00'.
ENDLOOP.
SORT i_final_tab_header BY ebeln.
CLEAR i_final_tab_header.
ENDIF.
calculation for the part payment
IF NOT i_final_tab_header[] IS INITIAL.
LOOP AT i_final_tab_header.
t_index = sy-tabix.
LOOP AT i_bseg WHERE rebzg = i_final_tab_header-belnn.
IF i_bseg-augbl EQ space.
p_value = p_value + i_bseg-wrbtr.
ELSE.
p_value = '0.00'.
ENDIF.
ENDLOOP.
**move values to i_final_tab
i_final_tab_header-p_value = p_value.
MODIFY i_final_tab_header INDEX t_index TRANSPORTING p_value.
reinitialize values
p_value = '0.00'.
ENDLOOP.
SORT i_final_tab_header BY ebeln.
CLEAR i_final_tab_header.
ENDIF.
calculation for the advance payment
IF NOT i_final_tab_header[] IS INITIAL.
LOOP AT i_final_tab_header.
t_index = sy-tabix.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = i_final_tab_header-ebeln
IMPORTING
output = o_ebeln.
LOOP AT i_bseg where ( umskz = 'A' AND lifnr = i_final_tab_header-ekko_lifnr AND
zuonr = o_ebeln ).
IF i_bseg-augbl EQ space AND i_bseg-bschl EQ '29'.
a_value = a_value + i_bseg-wrbtr.
ENDIF.
IF i_bseg-augbl NE space.
a_value = '0.00'.
ENDIF.
ENDLOOP.
CLEAR i_bseg.
**move values to i_final_tab
i_final_tab_header-a_value = a_value.
MODIFY i_final_tab_header INDEX t_index TRANSPORTING a_value.
reinitialize values
a_value = '0.00'.
ENDLOOP.
SORT i_final_tab_header BY ebeln.
CLEAR i_final_tab_header.
ENDIF.
SELECT wrbtr
hkont
mwskz
belnr
bschl
buzei
FROM bseg INTO TABLE i_final_tab_i FOR ALL ENTRIES IN i_final_tab_item WHERE belnr = i_final_tab_item-belnn AND
gjahr IN gjahr AND
( bschl = '31' OR
bschl = '81' OR
bschl = '40' ).
ENDFORM. "SELECTION
----
FORM E01_FIELDCAT_INIT *
----
........ *
----
--> E01_LT_FIELDCAT *
----
FORM e01_fieldcat_init USING e01_lt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'EBELN'.
ls_fieldcat-tabname = g_tabname_header.
ls_fieldcat-seltext_l = 'Purchase Order Number'.
ls_fieldcat-ref_fieldname = 'EBELN'.
ls_fieldcat-ref_tabname = 'EKKO'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'EKKO_LIFNR'.
ls_fieldcat-tabname = g_tabname_header.
ls_fieldcat-seltext_l = 'Vendor Number'.
ls_fieldcat-ref_fieldname = 'EKKO_LIFNR'.
ls_fieldcat-ref_tabname = 'EKKO'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'BELNR'.
ls_fieldcat-tabname = g_tabname_header.
ls_fieldcat-ref_fieldname = 'BELNR'.
ls_fieldcat-ref_tabname = 'RBSEG'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'RBKP_LIFNR'.
ls_fieldcat-tabname = g_tabname_header.
ls_fieldcat-seltext_l = 'Invoice Vendor Number'.
ls_fieldcat-ref_fieldname = 'RBKP_LIFNR'.
ls_fieldcat-ref_tabname = 'RBKP'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'BELNN'.
ls_fieldcat-tabname = g_tabname_header.
ls_fieldcat-seltext_l = 'Accounting Document Number'.
ls_fieldcat-ref_fieldname = 'BELNN'.
ls_fieldcat-ref_tabname = 'BKPF'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'I_VALUE'.
ls_fieldcat-tabname = g_tabname_header.
ls_fieldcat-ref_fieldname = 'I_VALUE'.
ls_fieldcat-seltext_l = 'Invoice Value'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'A_VALUE'.
ls_fieldcat-tabname = g_tabname_header.
ls_fieldcat-ref_fieldname = 'A_VALUE'.
ls_fieldcat-seltext_l = 'Advance Value'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'P_VALUE'.
ls_fieldcat-tabname = g_tabname_header.
ls_fieldcat-ref_fieldname = 'P_VALUE'.
ls_fieldcat-seltext_l = 'Part Value'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'HKONT'.
ls_fieldcat-tabname = g_tabname_item.
ls_fieldcat-ref_fieldname = 'HKONT'.
ls_fieldcat-ref_tabname = 'BSEG'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'BUZEI'.
ls_fieldcat-tabname = g_tabname_item.
ls_fieldcat-ref_fieldname = 'BUZEI'.
ls_fieldcat-ref_tabname = 'BSEG'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'BSCHL'.
ls_fieldcat-tabname = g_tabname_item.
ls_fieldcat-ref_fieldname = 'BSCHL'.
ls_fieldcat-ref_tabname = 'BSEG'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'MWSKZ'.
ls_fieldcat-tabname = g_tabname_item.
ls_fieldcat-ref_fieldname = 'MWSKZ'.
ls_fieldcat-ref_tabname = 'BSEG'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'WRBTR'.
ls_fieldcat-tabname = g_tabname_item.
ls_fieldcat-ref_fieldname = 'WRBTR'.
ls_fieldcat-ref_tabname = 'BSEG'.
ls_fieldcat-key = 'X'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-no_sum = 'X'.
ls_fieldcat-sp_group = 'A'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
ENDFORM. "E01_FIELDCAT_INIT
*WRITE:/ .
2006 May 13 8:48 AM
2006 May 13 10:36 AM
HI
GOOD
IF NOT i_final_tab[] IS INITIAL.
LOOP AT i_final_tab.
i_final_tab_header-ebeln = i_final_tab-ebeln.
i_final_tab_header-belnr = i_final_tab-belnr.
i_final_tab_header-ekko_lifnr = i_final_tab-ekko_lifnr.
i_final_tab_header-rbkp_lifnr = i_final_tab-rbkp_lifnr.
i_final_tab_header-belnn = i_final_tab-belnn.
APPEND i_final_tab_header.
CLEAR i_final_tab_header.
ENDLOOP.
THI LINE YOU CHECK PROPERLY BCZ DATA IS NOT THERE IN
i_final_tab_header
THANKS
MRUTYUN
2006 May 13 11:22 AM
just debug, you will find out the issue quicker than a reply from SDN.
Regards
Raja
2006 May 13 11:44 AM
Hello Ravi,
You have used conversio n exit before looping into internal table....
FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = i_final_tab_header-ebeln
IMPORTING
output = o_ebeln
Just cross check if o_ebeln( with appended zeros) value after conversion exit is matching with valuein the internal table..
Hope this will help you!
Cheers,
Nilesh
2006 May 13 8:59 PM
The other suggestions may help, but I don't think this is your main problem.
This is the sort of program that might run in a development environment, but will be extremely slow in a production environment.
The program does a number of selects that won't be able to use an index effectively. BSEG is a large table. You have to use more than the fiscal year (GJAHR). You should use the key that you have already retrieved from BKPF.
It also does a number of nested loops. You should be using indexed reads and binary searches instead.
Rob