Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

problem in the code(it is not entering into the inner loop condition)

Former Member
0 Likes
846

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:/ .

5 REPLIES 5
Read only

Former Member
0 Likes
799

Check if internal table i_bseg has entries.

Read only

Former Member
0 Likes
799

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

Read only

athavanraja
Active Contributor
0 Likes
799

just debug, you will find out the issue quicker than a reply from SDN.

Regards

Raja

Read only

Former Member
0 Likes
799

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

Read only

Former Member
0 Likes
799

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