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

Performance tuning issue

Former Member
0 Likes
794

Hi Experts,

I need to performance tune this report.. While executing the report it juz goes on and one and finally gives the timeout error.. Please help me out guys as its urgent

here is the report:

&----


*& Report ZEOU_CST_CLAIM_REP *

*& *

&----


*& *

*& *

&----


REPORT zeou_cst_claim_rep.

&*********************************************************************

*& Program Name : ZEOU_CST_CLAIM_REP *

*& Title : CST Claim Report *

*& Module Name : EOU *

*& Author : Chandra Vangoor *

*& Create Date : 05.05.2006 *

*& Logical DB : None *

*& Program Type : On-Line. *

*& SAP Release : 4.7 *

*& Description : *

*& *

&*********************************************************************

*& Log Date Author Reason of change

*&

&*********************************************************************

************************************************************************

  • TABLES

************************************************************************

TABLES : a363,

mara,

marc,

makt,

ekko,

ekpo,

mkpf,

mseg,

konp,

konh.

*************************************************************************

  • SELECTION-SCREEN

*************************************************************************

SELECTION-SCREEN : BEGIN OF BLOCK cst WITH FRAME TITLE text-001.

SELECT-OPTIONS : s_matnr FOR mara-matnr, "Material Number

s_lifnr FOR ekko-lifnr, "Account Number of the Vendor

s_bedat FOR ekko-bedat, "Purchasing Document Date

s_kschl FOR konh-kschl OBLIGATORY NO INTERVALS, "Condition type

s_bwart FOR mseg-bwart OBLIGATORY NO INTERVALS. "Movement Type (Inventory Management)

PARAMETERS : p_werks LIKE marc-werks OBLIGATORY. "Plant

SELECTION-SCREEN : END OF BLOCK cst.

*----


  • INCLUDES

*----


INCLUDE zalv_data.

***************************************************************************

  • DATA - INTERNAL TABLES AND FIELD LISTS

***************************************************************************

DATA : BEGIN OF a363_itab OCCURS 0,

matnr LIKE a363-matnr, "Material Number

lifnr LIKE a363-lifnr, "Account Number of the Vendor

werks LIKE a363-werks, "Plant

kschl LIKE a363-kschl, "Condition type

knumh LIKE a363-knumh, "Condition record number

kbetr LIKE konp-kbetr, "Rate (condition amount or percentage) where no scale exists

END OF a363_itab.

DATA : BEGIN OF konp_itab OCCURS 0,

knumh LIKE a363-knumh, "Condition record number

kbetr LIKE konp-kbetr, "Rate (condition amount or percentage) where no scale exists

lifnr LIKE a363-lifnr, "Account Number of the Vendor

END OF konp_itab.

DATA : BEGIN OF ekko_itab OCCURS 0,

ebeln LIKE ekko-ebeln, "Purchasing Document Number

lifnr LIKE ekko-lifnr, "Account Number of the Vendor

bedat LIKE ekko-bedat, "Purchasing Document Date

END OF ekko_itab.

DATA : BEGIN OF ekpo_itab OCCURS 0,

ebeln LIKE ekpo-ebeln, "Purchasing Document Number

ebelp LIKE ekpo-ebelp, "Item Number of Purchasing Document

matnr LIKE ekpo-matnr, "Material Number

werks LIKE ekpo-werks, "Plant

menge LIKE ekpo-menge, "Purchase order quantity

END OF ekpo_itab.

DATA : BEGIN OF v_po_det OCCURS 0, "VENDOR + PLANT + PO DEATILS

lifnr LIKE ekko-lifnr, "Account Number of the Vendor

ebeln LIKE ekko-ebeln, "Purchasing Document Number

ebelp LIKE ekpo-ebelp, "Item Number of Purchasing Document

bedat LIKE ekko-bedat, "Purchasing Document Date

matnr LIKE ekpo-matnr, "Material Number

werks LIKE ekpo-werks, "Plant

menge LIKE ekpo-menge, "Purchase order quantity

kbetr LIKE konp-kbetr, "Rate (condition amount or percentage) where no scale exists

END OF v_po_det.

DATA : BEGIN OF mseg_itab OCCURS 0,

mblnr LIKE mseg-mblnr, "Number of Material Document

ebeln LIKE mseg-ebeln, "Purchasing Document Number

ebelp LIKE mseg-ebelp, "Item Number of Purchasing Document

matnr LIKE mseg-matnr, "Material Number

lifnr LIKE mseg-lifnr, "Account Number of the Vendor

werks LIKE mseg-werks, "Plant

menge LIKE mseg-menge, "Quantity

dmbtr LIKE mseg-dmbtr, "Amount in local currency

bwart LIKE mseg-bwart, "Movement Type (Inventory Management)

END OF mseg_itab.

DATA : BEGIN OF mkpf_itab OCCURS 0,

mblnr LIKE mkpf-mblnr, "Number of Material Document

bldat LIKE mkpf-bldat, "Document Date in Document

END OF mkpf_itab.

DATA : BEGIN OF zeou_pcrdtl_itab OCCURS 0,

matnr LIKE zeou_pcrdtl-matnr, "Material Number

lifnr LIKE zeou_pcrdtl-lifnr, "Account Number of the Vendor

mblnr LIKE zeou_pcrdtl-mblnr, "Number of Material Document

whssn LIKE zeou_pcrdtl-whssn, "Warehouse Records Entry Serial No.

whsdt LIKE zeou_pcrdtl-whsdt, "Warehouse Records Entry date

END OF zeou_pcrdtl_itab.

DATA : BEGIN OF gr_wh_info OCCURS 0, "INFO OF GR & WH BASED ON MVMT TYPE & PO

mblnr LIKE mseg-mblnr, "Number of Material Document

bldat LIKE mkpf-bldat, "Document Date in Document

ebeln LIKE mseg-ebeln, "Purchasing Document Number

ebelp LIKE ekpo-ebelp, "Item Number of Purchasing Document

matnr LIKE mseg-matnr, "Material Number

lifnr LIKE mseg-lifnr, "Account Number of the Vendor

werks LIKE mseg-werks, "Plant

menge LIKE mseg-menge, "Quantity

dmbtr LIKE mseg-dmbtr, "Amount in local currency

bwart LIKE mseg-bwart, "Movement Type (Inventory Management)

whssn LIKE zeou_pcrdtl-whssn, "Warehouse Records Entry Serial No.

whsdt LIKE zeou_pcrdtl-whsdt, "Warehouse Records Entry date

END OF gr_wh_info.

DATA : BEGIN OF bseg_itab OCCURS 0,

ebeln LIKE bseg-ebeln, "Purchasing Document Number

ebelp LIKE bseg-ebelp, "Item Number of Purchasing Document

matnr LIKE bseg-matnr, "Material Number

lifnr LIKE bseg-lifnr, "Account Number of the Vendor

werks LIKE bseg-werks, "Plant

buzid LIKE bseg-buzid, "Identification of the Line Item

bschl LIKE bseg-bschl, "Posting Key

wrbtr LIKE bseg-wrbtr, "Amount in document currency

bukrs LIKE bseg-bukrs, "Company Code

belnr LIKE bseg-belnr, "Accounting Document Number

gjahr LIKE bseg-gjahr, "Fiscal Year

END OF bseg_itab.

DATA : BEGIN OF bkpf_itab OCCURS 0,

bukrs LIKE bkpf-bukrs, "Company Code

belnr LIKE bkpf-belnr, "Accounting Document Number

gjahr LIKE bkpf-gjahr, "Fiscal Year

xblnr LIKE bkpf-xblnr, "Reference Document Number

bldat LIKE bkpf-bldat, "Document Date in Document

END OF bkpf_itab.

DATA : BEGIN OF vend_inv OCCURS 0, "VENDOR INVOICE DETAILS

ebeln LIKE bseg-ebeln, "Purchasing Document Number

ebelp LIKE bseg-ebelp, "Item Number of Purchasing Document

matnr LIKE bseg-matnr, "Material Number

lifnr LIKE bseg-lifnr, "Account Number of the Vendor

werks LIKE bseg-werks, "Plant

buzid LIKE bseg-buzid, "Identification of the Line Item

bschl LIKE bseg-bschl, "Posting Key

wrbtr LIKE bseg-wrbtr, "Amount in document currency

bukrs LIKE bseg-bukrs, "Company Code

belnr LIKE bseg-belnr, "Accounting Document Number

gjahr LIKE bseg-gjahr, "Fiscal Year

xblnr LIKE bkpf-xblnr, "Reference Document Number

bldat LIKE bkpf-bldat, "Document Date in Document

END OF vend_inv.

DATA : BEGIN OF chckinit OCCURS 0, "CHEQUE INIT INFO

ebeln LIKE bseg-ebeln, "Purchasing Document Number

ebelp LIKE bseg-ebelp, "Item Number of Purchasing Document

matnr LIKE bseg-matnr, "Material Number

lifnr LIKE bseg-lifnr, "Account Number of the Vendor

werks LIKE bseg-werks, "Plant

buzid LIKE bseg-buzid, "Identification of the Line Item

bschl LIKE bseg-bschl, "Posting Key

bukrs LIKE bkpf-bukrs, "Company Code

belnr LIKE bkpf-belnr, "Accounting Document Number

gjahr LIKE bkpf-gjahr, "Fiscal Year

koart LIKE bseg-koart, "Account type

augbl LIKE bseg-augbl, "Document Number of the Clearing Document

END OF chckinit.

DATA : BEGIN OF chckpayer OCCURS 0, "CHEQUE BANK DETAILS

vblnr LIKE payr-vblnr, "Document Number of the Payment Document

zbukr LIKE payr-zbukr, "Paying company code

gjahr LIKE payr-gjahr, "Fiscal Year

chect LIKE payr-chect, "Check Number

zaldt LIKE payr-zaldt, "Probable Payment Date (Cash Discount 1 Due)

hbkid LIKE payr-hbkid, "Short key for a house bank

END OF chckpayer.

DATA : chckpayer_u LIKE chckpayer OCCURS 0 WITH HEADER LINE. "UNIQUE CHEQUE DETAILS

DATA : BEGIN OF chckfinal OCCURS 0, "CHEQUE FINAL INFO

ebeln LIKE bseg-ebeln, "Purchasing Document Number

ebelp LIKE bseg-ebelp, "Item Number of Purchasing Document

matnr LIKE bseg-matnr, "Material Number

lifnr LIKE bseg-lifnr, "Account Number of the Vendor

werks LIKE bseg-werks, "Plant

buzid LIKE bseg-buzid, "Identification of the Line Item

bschl LIKE bseg-bschl, "Posting Key

bukrs LIKE bkpf-bukrs, "Company Code

belnr LIKE bkpf-belnr, "Accounting Document Number

gjahr LIKE bkpf-gjahr, "Fiscal Year

koart LIKE bseg-koart, "Account type

augbl LIKE bseg-augbl, "Document Number of the Clearing Document

vblnr LIKE payr-vblnr, "Document Number of the Payment Document

zbukr LIKE payr-zbukr, "Paying company code

chect LIKE payr-chect, "Check Number

zaldt LIKE payr-zaldt, "Probable Payment Date (Cash Discount 1 Due)

hbkid LIKE payr-hbkid, "Short key for a house bank

END OF chckfinal.

DATA : BEGIN OF mat_desc OCCURS 0,

matnr LIKE mara-matnr,

maktx LIKE makt-maktx,

END OF mat_desc.

DATA : BEGIN OF vend_det OCCURS 0,

lifnr LIKE lfa1-lifnr,

name1 LIKE lfa1-name1,

j_1icstno LIKE j_1imovend-j_1icstno,

END OF vend_det.

DATA : BEGIN OF cst_rep OCCURS 0, "FINAL CST REPORT

lifnr LIKE a363-lifnr, "Account Number of the Vendor

name1 LIKE lfa1-name1, "Vendor Name

j_1icstno LIKE j_1imovend-j_1icstno, " Vendor CST No.

werks LIKE a363-werks, "Plant

  • kschl LIKE a363-kschl, "Condition type

ebeln LIKE ekko-ebeln, "Purchasing Document Number

ebelp LIKE ekpo-ebelp, "Item Number of Purchasing Document

bedat LIKE ekko-bedat, "Purchasing Document Date

matnr LIKE ekpo-matnr, "Material Number

maktx LIKE makt-maktx, "Material Description.

kbetr LIKE konp-kbetr, "Rate (condition amount or percentage) where no scale exists

mblnr LIKE mseg-mblnr, "Number of Material Document

bldat LIKE mkpf-bldat, "Document Date in Document

menge LIKE mseg-menge, "Quantity

dmbtr LIKE mseg-dmbtr, "Amount in local currency

cst_dmbtr LIKE mseg-dmbtr, "CST Amount in local currency

bwart LIKE mseg-bwart, "Movement Type (Inventory Management)

whssn LIKE zeou_pcrdtl-whssn, "Warehouse Records Entry Serial No.

whsdt LIKE zeou_pcrdtl-whsdt, "Warehouse Records Entry date

buzid LIKE bseg-buzid, "Identification of the Line Item

bschl LIKE bseg-bschl, "Posting Key

wrbtr LIKE bseg-wrbtr, "Amount in document currency

cst_wrbtr LIKE bseg-wrbtr, "CST Amount in document currency

belnr LIKE bseg-belnr, "Accounting Document Number

gjahr LIKE bseg-gjahr, "Fiscal Year

xblnr LIKE bkpf-xblnr, "Reference Document Number

koart LIKE bseg-koart, "Account type

augbl LIKE bseg-augbl, "Document Number of the Clearing Document

vblnr LIKE payr-vblnr, "Document Number of the Payment Document

zbukr LIKE payr-zbukr, "Paying company code

chect LIKE payr-chect, "Check Number

zaldt LIKE payr-zaldt, "Probable Payment Date (Cash Discount 1 Due)

hbkid LIKE payr-hbkid, "Short key for a house bank

END OF cst_rep.

DATA : BEGIN OF gt_output OCCURS 0, "ALV OUTPUT

slno LIKE sy-tabix, "Serial Number

lifnr LIKE a363-lifnr, "Account Number of the Vendor

name1 LIKE lfa1-name1, "Vendor Name

j_1icstno LIKE j_1imovend-j_1icstno, " Vendor CST No.

werks LIKE a363-werks, "Plant

  • kschl LIKE a363-kschl, "Condition type

ebeln LIKE ekko-ebeln, "Purchasing Document Number

ebelp LIKE ekpo-ebelp, "Item Number of Purchasing Document

bedat LIKE ekko-bedat, "Purchasing Document Date

matnr LIKE ekpo-matnr, "Material Number

maktx LIKE makt-maktx, "Material Description

mblnr LIKE mseg-mblnr, "Number of Material Document

bldat LIKE mkpf-bldat, "Document Date in Document

menge LIKE mseg-menge, "Quantity

dmbtr LIKE mseg-dmbtr, "Amount in local currency

cst_dmbtr LIKE mseg-dmbtr, "CST Amount in local currency

bwart LIKE mseg-bwart, "Movement Type (Inventory Management)

whssn LIKE zeou_pcrdtl-whssn, "Warehouse Records Entry Serial No.

whsdt LIKE zeou_pcrdtl-whsdt, "Warehouse Records Entry date

buzid LIKE bseg-buzid, "Identification of the Line Item

bschl LIKE bseg-bschl, "Posting Key

wrbtr LIKE bseg-wrbtr, "Amount in document currency

cst_wrbtr LIKE bseg-wrbtr, "CST Amount in document currency

belnr LIKE bseg-belnr, "Accounting Document Number

gjahr LIKE bseg-gjahr, "Fiscal Year

xblnr LIKE bkpf-xblnr, "Reference Document Number

koart LIKE bseg-koart, "Account type

augbl LIKE bseg-augbl, "Document Number of the Clearing Document

vblnr LIKE payr-vblnr, "Document Number of the Payment Document

zbukr LIKE payr-zbukr, "Paying company code

chect LIKE payr-chect, "Check Number

zaldt LIKE payr-zaldt, "Probable Payment Date (Cash Discount 1 Due)

hbkid LIKE payr-hbkid, "Short key for a house bank

usr_txt1(20) TYPE c,

usr_txt2(20) TYPE c,

END OF gt_output.

****************************************************************************

*Working Variables

****************************************************************************

DATA : cst_gr LIKE mseg-dmbtr,

cst_inv LIKE bseg-wrbtr,

usr_txt1(20) TYPE c,

usr_txt2(20) TYPE c.

****************************************************************************

START-OF-SELECTION.

****************************************************************************

****************************************************************************

*Retreiving Data from a363 table for the given input

****************************************************************************

SELECT matnr

lifnr

werks

kschl

knumh

FROM a363

INTO TABLE a363_itab

WHERE matnr IN s_matnr AND lifnr IN s_lifnr AND werks EQ p_werks AND kschl IN s_kschl.

SELECT *

FROM konp

INTO CORRESPONDING FIELDS OF TABLE konp_itab

FOR ALL ENTRIES IN a363_itab

WHERE knumh EQ a363_itab-knumh.

LOOP AT a363_itab.

READ TABLE konp_itab WITH KEY knumh = a363_itab-knumh.

IF sy-subrc EQ 0.

MOVE : konp_itab-kbetr TO a363_itab-kbetr.

MODIFY a363_itab.

ENDIF.

CLEAR : a363_itab, konp_itab.

ENDLOOP.

SELECT *

FROM makt

INTO CORRESPONDING FIELDS OF TABLE mat_desc

FOR ALL ENTRIES IN a363_itab

WHERE matnr EQ a363_itab-matnr.

SELECT a~lifnr

a~name1

b~j_1icstno

INTO TABLE vend_det

FROM lfa1 AS a JOIN j_1imovend AS b

ON alifnr EQ blifnr

FOR ALL ENTRIES IN a363_itab

WHERE a~lifnr EQ a363_itab-lifnr.

****************************************************************************

  • Retreiving Data from EKKO & EKPO table for the given input

  • And Populating the V_PO_DETAILS itab

****************************************************************************

SELECT *

FROM ekko

INTO CORRESPONDING FIELDS OF TABLE ekko_itab

FOR ALL ENTRIES IN a363_itab

WHERE lifnr EQ a363_itab-lifnr AND bedat IN s_bedat.

SELECT *

FROM ekpo

INTO CORRESPONDING FIELDS OF TABLE ekpo_itab

FOR ALL ENTRIES IN a363_itab

WHERE matnr EQ a363_itab-matnr AND werks EQ a363_itab-werks AND mwskz NE 'V0'.

LOOP AT ekpo_itab.

MOVE : ekpo_itab-ebelp TO v_po_det-ebelp,

ekpo_itab-matnr TO v_po_det-matnr,

ekpo_itab-werks TO v_po_det-werks,

ekpo_itab-menge TO v_po_det-menge.

READ TABLE ekko_itab WITH KEY ebeln = ekpo_itab-ebeln.

IF sy-subrc EQ 0.

MOVE : ekko_itab-lifnr TO v_po_det-lifnr,

ekko_itab-ebeln TO v_po_det-ebeln,

ekko_itab-bedat TO v_po_det-bedat.

APPEND : v_po_det.

ENDIF.

CLEAR : ekko_itab, ekpo_itab, v_po_det.

ENDLOOP.

LOOP AT v_po_det.

READ TABLE a363_itab WITH KEY matnr = v_po_det-matnr lifnr = v_po_det-lifnr werks = v_po_det-werks.

IF sy-subrc EQ 0.

MOVE : a363_itab-kbetr TO v_po_det-kbetr.

MODIFY v_po_det.

ENDIF.

CLEAR : a363_itab, v_po_det.

ENDLOOP.

****************************************************************************

  • Retreiving Data from MKPF & MSEG & ZEOU_PCRDTL table for the given input

  • And Populating the GR_WH_info itab

****************************************************************************

SELECT *

FROM mseg

INTO CORRESPONDING FIELDS OF TABLE mseg_itab

FOR ALL ENTRIES IN v_po_det

WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND bwart IN s_bwart.

SELECT *

FROM mkpf

INTO CORRESPONDING FIELDS OF TABLE mkpf_itab

FOR ALL ENTRIES IN mseg_itab

WHERE mblnr EQ mseg_itab-mblnr.

SELECT *

FROM zeou_pcrdtl

INTO CORRESPONDING FIELDS OF TABLE zeou_pcrdtl_itab

FOR ALL ENTRIES IN mseg_itab

WHERE mblnr EQ mseg_itab-mblnr AND matnr EQ mseg_itab-matnr.

LOOP AT mseg_itab.

MOVE : mseg_itab-mblnr TO gr_wh_info-mblnr,

mseg_itab-ebeln TO gr_wh_info-ebeln,

mseg_itab-ebelp TO gr_wh_info-ebelp,

mseg_itab-matnr TO gr_wh_info-matnr,

mseg_itab-lifnr TO gr_wh_info-lifnr,

mseg_itab-werks TO gr_wh_info-werks,

mseg_itab-menge TO gr_wh_info-menge,

mseg_itab-dmbtr TO gr_wh_info-dmbtr,

mseg_itab-bwart TO gr_wh_info-bwart.

READ TABLE mkpf_itab WITH KEY mblnr = mseg_itab-mblnr.

IF sy-subrc EQ 0.

MOVE : mkpf_itab-bldat TO gr_wh_info-bldat.

ENDIF.

READ TABLE zeou_pcrdtl_itab WITH KEY mblnr = mseg_itab-mblnr.

IF sy-subrc EQ 0.

MOVE : zeou_pcrdtl_itab-whssn TO gr_wh_info-whssn,

zeou_pcrdtl_itab-whsdt TO gr_wh_info-whsdt.

ENDIF.

APPEND : gr_wh_info.

CLEAR : mseg_itab, mkpf_itab, gr_wh_info.

ENDLOOP.

****************************************************************************

  • Retreiving Data from BSEG & BKPF table

  • And Populating the Vendor Invoice Details

****************************************************************************

SELECT *

FROM bseg

INTO CORRESPONDING FIELDS OF TABLE bseg_itab

FOR ALL ENTRIES IN v_po_det

WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND buzid EQ 'W' AND bschl EQ '96'.

SELECT *

FROM bkpf

INTO CORRESPONDING FIELDS OF TABLE bkpf_itab

FOR ALL ENTRIES IN bseg_itab

WHERE bukrs EQ bseg_itab-bukrs AND belnr EQ bseg_itab-belnr AND gjahr EQ bseg_itab-gjahr.

LOOP AT bseg_itab.

MOVE : bseg_itab-ebeln TO vend_inv-ebeln,

bseg_itab-ebelp TO vend_inv-ebelp,

bseg_itab-matnr TO vend_inv-matnr,

bseg_itab-lifnr TO vend_inv-lifnr,

bseg_itab-werks TO vend_inv-werks,

bseg_itab-buzid TO vend_inv-buzid,

bseg_itab-bschl TO vend_inv-bschl,

bseg_itab-wrbtr TO vend_inv-wrbtr,

bseg_itab-bukrs TO vend_inv-bukrs,

bseg_itab-belnr TO vend_inv-belnr,

bseg_itab-gjahr TO vend_inv-gjahr.

READ TABLE bkpf_itab WITH KEY bukrs = bseg_itab-bukrs belnr = bseg_itab-belnr gjahr = bseg_itab-gjahr.

IF sy-subrc EQ 0.

MOVE : bkpf_itab-xblnr TO vend_inv-xblnr,

bkpf_itab-bldat TO vend_inv-bldat.

APPEND : vend_inv.

ENDIF.

CLEAR : vend_inv, bseg_itab, bkpf_itab.

ENDLOOP.

****************************************************************************

  • Retreiving Data from BSEG & BKPF table

  • And Populating the Cheque Info Details

****************************************************************************

SELECT *

FROM bseg

INTO CORRESPONDING FIELDS OF TABLE chckinit

FOR ALL ENTRIES IN v_po_det

WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND buzid EQ 'W' AND bschl EQ '86' AND koart EQ 'K'.

SELECT *

FROM payr

INTO CORRESPONDING FIELDS OF TABLE chckpayer

FOR ALL ENTRIES IN chckinit

WHERE vblnr EQ chckinit-augbl.

SORT chckpayer BY vblnr DESCENDING.

LOOP AT chckpayer.

ON CHANGE OF chckpayer-vblnr.

MOVE : chckpayer TO chckpayer_u.

APPEND : chckpayer_u.

CLEAR : chckpayer_u, chckpayer.

ENDON.

ENDLOOP.

LOOP AT chckinit.

MOVE : chckinit-ebeln TO chckfinal-ebeln,

chckinit-ebelp TO chckfinal-ebelp,

chckinit-matnr TO chckfinal-matnr,

chckinit-lifnr TO chckfinal-lifnr,

chckinit-werks TO chckfinal-werks,

chckinit-buzid TO chckfinal-buzid,

chckinit-bschl TO chckfinal-bschl,

chckinit-bukrs TO chckfinal-bukrs,

chckinit-gjahr TO chckfinal-gjahr,

chckinit-koart TO chckfinal-koart,

chckinit-augbl TO chckfinal-augbl.

READ TABLE chckpayer_u WITH KEY vblnr = chckinit-augbl gjahr = chckinit-gjahr.

IF sy-subrc EQ 0.

MOVE : chckpayer_u-vblnr TO chckfinal-vblnr,

chckpayer_u-zbukr TO chckfinal-zbukr,

chckpayer_u-chect TO chckfinal-chect,

chckpayer_u-zaldt TO chckfinal-zaldt,

chckpayer_u-hbkid TO chckfinal-hbkid.

APPEND : chckfinal.

ENDIF.

CLEAR : chckfinal, chckpayer_u, chckinit.

ENDLOOP.

****************************************************************************

  • Populating the final CST TABLE

****************************************************************************

LOOP AT v_po_det.

MOVE : v_po_det-lifnr TO cst_rep-lifnr,

v_po_det-werks TO cst_rep-werks,

v_po_det-ebeln TO cst_rep-ebeln,

v_po_det-ebelp TO cst_rep-ebelp,

v_po_det-bedat TO cst_rep-bedat,

v_po_det-matnr TO cst_rep-matnr,

v_po_det-kbetr TO cst_rep-kbetr.

READ TABLE gr_wh_info WITH KEY ebeln = v_po_det-ebeln ebelp = v_po_det-ebelp."matnr = v_po_det-matnr.

IF sy-subrc EQ 0.

MOVE : gr_wh_info-mblnr TO cst_rep-mblnr,

gr_wh_info-bldat TO cst_rep-bldat,

gr_wh_info-menge TO cst_rep-menge,

gr_wh_info-dmbtr TO cst_rep-dmbtr,

gr_wh_info-bwart TO cst_rep-bwart,

gr_wh_info-whssn TO cst_rep-whssn,

gr_wh_info-whsdt TO cst_rep-whsdt.

ENDIF.

READ TABLE vend_inv WITH KEY ebeln = v_po_det-ebeln ebelp = v_po_det-ebelp."matnr = v_po_det-matnr.

IF sy-subrc EQ 0.

MOVE : vend_inv-buzid TO cst_rep-buzid,

vend_inv-bschl TO cst_rep-bschl,

vend_inv-wrbtr TO cst_rep-wrbtr,

vend_inv-belnr TO cst_rep-belnr,

vend_inv-gjahr TO cst_rep-gjahr,

vend_inv-xblnr TO cst_rep-xblnr.

ENDIF.

READ TABLE chckfinal WITH KEY ebeln = v_po_det-ebeln ebelp = v_po_det-ebelp."matnr = v_po_det-matnr.

IF sy-subrc EQ 0.

MOVE : chckfinal-augbl TO cst_rep-augbl,

chckfinal-vblnr TO cst_rep-vblnr,

chckfinal-zbukr TO cst_rep-zbukr,

chckfinal-chect TO cst_rep-chect,

chckfinal-zaldt TO cst_rep-zaldt,

chckfinal-hbkid TO cst_rep-hbkid.

ENDIF.

READ TABLE mat_desc WITH KEY matnr = v_po_det-matnr.

IF sy-subrc EQ 0.

MOVE : mat_desc-maktx TO cst_rep-maktx.

ENDIF.

READ TABLE vend_det WITH KEY lifnr = v_po_det-lifnr.

IF sy-subrc EQ 0.

MOVE : vend_det-name1 TO cst_rep-name1,

vend_det-j_1icstno TO cst_rep-j_1icstno.

ENDIF.

APPEND : cst_rep.

CLEAR : cst_rep, v_po_det, gr_wh_info, vend_inv, chckfinal.

ENDLOOP.

******************************************************************

  • Populating GT_output

******************************************************************

LOOP AT cst_rep.

cst_gr = cst_rep-dmbtr * ( cst_rep-kbetr / 1000 ).

cst_inv = cst_rep-wrbtr * ( cst_rep-kbetr / 1000 ).

MOVE : cst_gr TO cst_rep-cst_dmbtr,

cst_inv TO cst_rep-cst_wrbtr.

MODIFY : cst_rep.

CLEAR : cst_rep, cst_gr, cst_inv.

ENDLOOP.

LOOP AT cst_rep.

MOVE : sy-tabix TO gt_output-slno,

cst_rep-lifnr TO gt_output-lifnr,

cst_rep-name1 TO gt_output-name1,

cst_rep-j_1icstno TO gt_output-j_1icstno,

cst_rep-werks TO gt_output-werks,

cst_rep-matnr TO gt_output-matnr,

cst_rep-maktx TO gt_output-maktx,

cst_rep-ebeln TO gt_output-ebeln,

cst_rep-ebelp TO gt_output-ebelp,

cst_rep-bedat TO gt_output-bedat,

cst_rep-mblnr TO gt_output-mblnr,

cst_rep-bldat TO gt_output-bldat,

cst_rep-menge TO gt_output-menge,

cst_rep-dmbtr TO gt_output-dmbtr,

cst_rep-cst_dmbtr TO gt_output-cst_dmbtr,

cst_rep-bwart TO gt_output-bwart,

cst_rep-whssn TO gt_output-whssn,

cst_rep-whsdt TO gt_output-whsdt,

cst_rep-buzid TO gt_output-buzid,

cst_rep-bschl TO gt_output-bschl,

cst_rep-wrbtr TO gt_output-wrbtr,

cst_rep-cst_wrbtr TO gt_output-cst_wrbtr,

cst_rep-belnr TO gt_output-belnr,

cst_rep-gjahr TO gt_output-gjahr,

cst_rep-xblnr TO gt_output-xblnr,

cst_rep-augbl TO gt_output-augbl,

cst_rep-vblnr TO gt_output-vblnr,

cst_rep-zbukr TO gt_output-zbukr,

cst_rep-chect TO gt_output-chect,

cst_rep-zaldt TO gt_output-zaldt,

cst_rep-hbkid TO gt_output-hbkid.

APPEND gt_output.

CLEAR : cst_rep, gt_output, sy-tabix.

ENDLOOP.

*----


END-OF-SELECTION.

*----


*-ALV Routine

PERFORM alv_forms.

&----


*& Form alv_forms

----


FORM alv_forms.

PERFORM alv_routines.

gx_variant = sy-repid.

CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'

EXPORTING

i_save = g_save

CHANGING

cs_variant = gx_variant

EXCEPTIONS

not_found = 2.

IF sy-subrc = 0.

vari = gx_variant-variant.

ENDIF.

PERFORM comment_build USING gt_list_top_of_page[].

PERFORM fieldcat_init USING gt_fieldcat[].

PERFORM layout_build USING gs_layout.

PERFORM print_build USING gs_print.

PERFORM alv_output.

ENDFORM. " alv_forms

&----


*& Form alv_routines

----


FORM alv_routines.

PERFORM eventtab_build USING gt_events[].

PERFORM e06_t_sort_build USING gt_sort[].

PERFORM sp_group_build USING gt_sp_group[].

g_save = 'A'.

PERFORM variant_init.

ENDFORM. " alv_routines

&----


*& Form eventtab_build

----


FORM eventtab_build USING p_gt_events TYPE slis_t_event.

DATA: ls_event TYPE slis_alv_event.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

i_list_type = 0

IMPORTING

et_events = p_gt_events.

READ TABLE p_gt_events WITH KEY name = slis_ev_top_of_page

INTO ls_event.

IF sy-subrc = 0.

MOVE slis_ev_top_of_page TO ls_event-form.

APPEND ls_event TO p_gt_events.

ENDIF.

READ TABLE p_gt_events WITH KEY name = slis_ev_user_command

INTO ls_event.

IF sy-subrc = 0.

MOVE slis_ev_user_command TO ls_event-form.

APPEND ls_event TO p_gt_events.

ENDIF.

READ TABLE p_gt_events WITH KEY name = slis_ev_pf_status_set

INTO ls_event.

IF sy-subrc = 0.

MOVE slis_ev_pf_status_set TO ls_event-form.

APPEND ls_event TO p_gt_events.

ENDIF.

SORT p_gt_events BY name.

DELETE ADJACENT DUPLICATES FROM p_gt_events.

DELETE p_gt_events WHERE form IS INITIAL.

ENDFORM. " eventtab_build

&----


*& Form sort_build

----


FORM e06_t_sort_build USING e06_lt_sort TYPE slis_t_sortinfo_alv.

DATA: ls_sort TYPE slis_sortinfo_alv.

CLEAR ls_sort.

ls_sort-fieldname = 'SLNO'.

ls_sort-spos = 1.

ls_sort-up = 'X'.

APPEND ls_sort TO e06_lt_sort.

*

  • CLEAR ls_sort.

  • ls_sort-fieldname = 'CNCNR'.

  • ls_sort-spos = 1.

  • ls_sort-up = 'X'.

  • APPEND ls_sort TO e06_lt_sort.

*

  • CLEAR ls_sort.

  • ls_sort-fieldname = 'MATNR'.

  • ls_sort-spos = 1.

  • ls_sort-up = 'X'.

  • APPEND ls_sort TO e06_lt_sort.

ENDFORM. " sort_build

&----


*& Form sp_group_build

----


FORM sp_group_build USING p_gt_sp_group TYPE slis_t_sp_group_alv.

DATA: ls_sp_group TYPE slis_sp_group_alv.

CLEAR ls_sp_group.

ls_sp_group-sp_group = 'A'.

ls_sp_group-text = 'PRODUCT'.

APPEND ls_sp_group TO p_gt_sp_group.

ENDFORM. " sp_group_build

&----


*& Form variant_init

----


FORM variant_init.

CLEAR g_variant.

g_repid = sy-repid.

g_variant-report = g_repid.

ENDFORM. " variant_init

&----


*& Form comment_build

----


FORM comment_build USING e04_lt_top_of_page TYPE slis_t_listheader.

DATA: ls_line TYPE slis_listheader.

DATA: l_date(10) TYPE c,

l_time(8) TYPE c,

l_out(255) TYPE c.

WRITE sy-datum TO l_date.

WRITE sy-uzeit TO l_time.

CONCATENATE l_date '/' l_time INTO l_out.

CLEAR ls_line.

ls_line-typ = 'H'.

CLEAR ls_line.

ls_line-typ = 'S'.

ls_line-key = 'RUN BY :'.

ls_line-info = sy-uname.

APPEND ls_line TO e04_lt_top_of_page.

CLEAR ls_line.

ls_line-typ = 'S'.

ls_line-key = 'RUN ON :'.

ls_line-info = l_out.

APPEND ls_line TO e04_lt_top_of_page.

ENDFORM. " comment_build

&----


*& Form fieldcat_init

----


FORM fieldcat_init USING e01_lt_fieldcat TYPE slis_t_fieldcat_alv.

DATA: ls_fieldcat TYPE slis_fieldcat_alv.

DATA n1(3).

DATA count(2) TYPE c.

DATA h1(10).

DATA: l_week LIKE scal-week,

l_text(17) TYPE c.

DATA cnt TYPE i.

cnt = cnt + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = 1.

ls_fieldcat-col_pos = 1.

ls_fieldcat-fieldname = 'SLNO'.

ls_fieldcat-seltext_m = 'SL.NO'.

ls_fieldcat-hotspot = 'X'.

ls_fieldcat-key = 'X'.

ls_fieldcat-key_sel = 'X'.

ls_fieldcat-just = 'R'.

ls_fieldcat-sp_group = 'A'.

APPEND ls_fieldcat TO e01_lt_fieldcat.

cnt = cnt + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = 1.

ls_fieldcat-col_pos = cnt.

ls_fieldcat-fieldname = 'LIFNR'.

ls_fieldcat-seltext_m = 'VENDOR NO.'.

ls_fieldcat-hotspot = 'X'.

ls_fieldcat-key = 'X'.

ls_fieldcat-key_sel = 'X'.

ls_fieldcat-just = 'R'.

ls_fieldcat-sp_group = 'A'.

APPEND ls_fieldcat TO e01_lt_fieldcat.

cnt = cnt + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = 1.

ls_fieldcat-col_pos = cnt.

ls_fieldcat-fieldname = 'NAME1'.

ls_fieldcat-seltext_m = 'VENDOR NAME'.

ls_fieldcat-hotspot = 'X'.

ls_fieldcat-key = 'X'.

ls_fieldcat-key_sel = 'X'.

ls_fieldcat-just = 'L'.

ls_fieldcat-sp_group = 'A'.

APPEND ls_fieldcat TO e01_lt_fieldcat.

cnt = cnt + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = 1.

ls_fieldcat-col_pos = cnt.

ls_fieldcat-fieldname = 'J_1ICSTNO'.

ls_fieldcat-seltext_m = 'VENDOR CST NO.'.

ls_fieldcat-hotspot = 'X'.

ls_fieldcat-key = 'X'.

ls_fieldcat-key_sel = 'X'.

ls_fieldcat-just = 'R'.

ls_fieldcat-sp_group = 'A'.

APPEND ls_fieldcat TO e01_lt_fieldcat.

*

  • cnt = cnt + 1.

  • CLEAR ls_fieldcat.

  • ls_fieldcat-row_pos = 1.

  • ls_fieldcat-col_pos = cnt.

  • ls_fieldcat-fieldname = 'WERKS'.

  • ls_fieldcat-seltext_m = 'PLANT'.

  • ls_fieldcat-key = 'X'.

  • ls_fieldcat-key_sel = 'X'.

  • ls_fieldcat-just = 'R'.

  • ls_fieldcat-sp_group = 'A'.

  • APPEND ls_fieldcat TO e01_lt_fieldcat.

cnt = cnt + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = 1.

ls_fieldcat-col_pos = cnt.

ls_fieldcat-fieldname = 'EBELN'.

ls_fieldcat-seltext_m = 'PO NO.'.

ls_fieldcat-key = 'X'.

ls_fieldcat-key_sel = 'X'.

ls_fieldcat-just = 'R'.

ls_fieldcat-sp_group = 'A'.

APPEND ls_fieldcat TO e01_lt_fieldcat.

*

  • cnt = cnt + 1.

  • CLEAR ls_fieldcat.

  • ls_fieldcat-row_pos = 1.

  • ls_fieldcat-col_pos = cnt.

  • ls_fieldcat-fieldname = 'EBELP'.

  • ls_fieldcat-seltext_m = 'PO ITEM'.

  • ls_fieldcat-key = 'X'.

  • ls_fieldcat-key_sel = 'X'.

  • ls_fieldcat-just = 'R'.

  • ls_fieldcat-sp_group = 'A'.

  • APPEND ls_fieldcat TO e01_lt_fieldcat.

cnt = cnt + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = 1.

ls_fieldcat-col_pos = cnt.

ls_fieldcat-fieldname = 'BEDAT'.

ls_fieldcat-seltext_m = 'PO DATE'.

ls_fieldcat-key = 'X'.

ls_fieldcat-key_sel = 'X'.

ls_fieldcat-just = 'R'.

ls_fieldcat-sp_group = 'A'.

APPEND ls_fieldcat TO e01_lt_fieldcat.

cnt = cnt + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = 1.

ls_fieldcat-col_pos = cnt.

ls_fieldcat-fieldname = 'MATNR'.

ls_fieldcat-seltext_m = 'MATERIAL.NO'.

ls_fieldcat-key = 'X'.

ls_fieldcat-key_sel = 'X'.

ls_fieldcat-just = 'R'.

ls_fieldcat-sp_group = 'A'.

APPEND ls_fieldcat TO e01_lt_fieldcat.

cnt = cnt + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = 1.

ls_fieldcat-col_pos = cnt.

ls_fieldcat-fieldname = 'MAKTX'.

ls_fieldcat-seltext_m = 'DESCRIPTION'.

ls_fieldcat-key = 'X'.

ls_fieldcat-key_sel = 'X'.

ls_fieldcat-just = 'L'.

ls_fieldcat-sp_group = 'A'.

APPEND ls_fieldcat TO e01_lt_fieldcat.

cnt = cnt + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = 1.

ls_fieldcat-col_pos = cnt.

ls_fieldcat-fieldname = 'MBLNR'.

ls_fieldcat-seltext_m = 'Receipt No.'.

ls_fieldcat-key = 'X'.

ls_fieldcat-key_sel = 'X'.

ls_fieldcat-just = 'R'.

ls_fieldcat-sp_group = 'A'.

APPEND ls_fieldcat TO e01_lt_fieldcat.

cnt = cnt + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = 1.

ls_fieldcat-col_pos = cnt.

ls_fieldcat-fieldname = 'BLDAT'.

ls_fieldcat-seltext_m = 'Receipt Date'.

ls_fieldcat-key = 'X'.

ls_fieldcat-key_sel = 'X'.

ls_fieldcat-just = 'R'.

ls_fieldcat-sp_group = 'A'.

APPEND ls_fieldcat TO e01_lt_fieldcat.

cnt = cnt + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = 1.

ls_fieldcat-col_pos = cnt.

ls_fieldcat-fieldname = 'MENGE'.

ls_fieldcat-seltext_m = 'GR QTY'.

ls_fieldcat-key = 'X'.

ls_fieldcat-key_sel = 'X'.

ls_fieldcat-just = 'R'.

ls_fieldcat-sp_group = 'A'.

APPEND ls_fieldcat TO e01_lt_fieldcat.

cnt = cnt + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = 1.

ls_fieldcat-col_pos = cnt.

ls_fieldcat-fieldname = 'DMBTR'.

ls_fieldcat-seltext_m = 'GR VALUE'.

ls_fieldcat-key = 'X'.

ls_fieldcat-key_sel = 'X'.

ls_fieldcat-just = 'R'.

ls_fieldcat-sp_group = 'A'.

APPEND ls_fieldcat TO e01_lt_fieldcat.

cnt = cnt + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = 1.

ls_fieldcat-col_pos = cnt.

ls_fieldcat-fieldname = 'CST_DMBTR'.

ls_fieldcat-seltext_m = 'GR CST'.

ls_fieldcat-key = 'X'.

ls_fieldcat-key_sel = 'X'.

ls_fieldcat-just = 'R'.

ls_fieldcat-sp_group = 'A'.

APPEND ls_fieldcat TO e01_lt_fieldcat.

  • cnt = cnt + 1.

  • CLEAR ls_fieldcat.

  • ls_fieldcat-row_pos = 1.

  • ls_fieldcat-col_pos = cnt.

  • ls_fieldcat-fieldname = 'BWART'.

  • ls_fieldcat-seltext_m = 'MVMT.TYPE'.

  • ls_fieldcat-key = 'X'.

  • ls_fieldcat-key_sel = 'X'.

  • ls_fieldcat-just = 'R'.

  • ls_fieldcat-sp_group = 'A'.

  • APPEND ls_fieldcat TO e01_lt_fieldcat.

cnt = cnt + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = 1.

ls_fieldcat-col_pos = cnt.

ls_fieldcat-fieldname = 'WHSSN'.

ls_fieldcat-seltext_m = 'Warehouse No.'.

ls_fieldcat-key = 'X'.

ls_fieldcat-key_sel = 'X'.

ls_fieldcat-just = 'R'.

ls_fieldcat-sp_group = 'A'.

APPEND ls_fieldcat TO e01_lt_fieldcat.

cnt = cnt + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = 1.

ls_fieldcat-col_pos = cnt.

ls_fieldcat-fieldname = 'WHSDT'.

ls_fieldcat-seltext_m = 'Warehouse Date'.

ls_fieldcat-key = 'X'.

ls_fieldcat-key_sel = 'X'.

ls_fieldcat-just = 'R'.

ls_fieldcat-sp_group = 'A'.

APPEND ls_fieldcat TO e01_lt_fieldcat.

cnt = cnt + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = 1.

ls_fieldcat-col_pos = cnt.

ls_fieldcat-fieldname = 'XBLNR'.

ls_fieldcat-seltext_m = 'INVOICE NO.'.

ls_fieldcat-key = 'X'.

ls_fieldcat-key_sel = 'X'.

ls_fieldcat-just = 'L'.

ls_fieldcat-sp_group = 'A'.

APPEND ls_fieldcat TO e01_lt_fieldcat.

cnt = cnt + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = 1.

ls_fieldcat-col_pos = cnt.

ls_fieldcat-fieldname = 'BLDAT'.

ls_fieldcat-seltext_m = 'Invoice Date'.

ls_fieldcat-key = 'X'.

ls_fieldcat-key_sel = 'X'.

ls_fieldcat-just = 'R'.

ls_fieldcat-sp_group = 'A'.

APPEND ls_fieldcat TO e01_lt_fieldcat.

cnt = cnt + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = 1.

ls_fieldcat-col_pos = cnt.

ls_fieldcat-fieldname = 'WRBTR'.

ls_fieldcat-seltext_m = 'Invoice Amt'.

ls_fieldcat-key = 'X'.

ls_fieldcat-key_sel = 'X'.

ls_fieldcat-just = 'R'.

ls_fieldcat-sp_group = 'A'.

APPEND ls_fieldcat TO e01_lt_fieldcat.

cnt = cnt + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = 1.

ls_fieldcat-col_pos = cnt.

ls_fieldcat-fieldname = 'CST_WRBTR'.

ls_fieldcat-seltext_m = 'Invoice CST'.

ls_fieldcat-key = 'X'.

ls_fieldcat-key_sel = 'X'.

ls_fieldcat-just = 'R'.

ls_fieldcat-sp_group = 'A'.

APPEND ls_fieldcat TO e01_lt_fieldcat.

cnt = cnt + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = 1.

ls_fieldcat-col_pos = cnt.

ls_fieldcat-fieldname = 'CHECT'.

ls_fieldcat-seltext_m = 'Cheque No.'.

ls_fieldcat-key = 'X'.

ls_fieldcat-key_sel = 'X'.

ls_fieldcat-just = 'R'.

ls_fieldcat-sp_group = 'A'.

APPEND ls_fieldcat TO e01_lt_fieldcat.

cnt = cnt + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = 1.

ls_fieldcat-col_pos = cnt.

ls_fieldcat-fieldname = 'ZALDT'.

ls_fieldcat-seltext_m = 'Cheque.Date'.

ls_fieldcat-key = 'X'.

ls_fieldcat-key_sel = 'X'.

ls_fieldcat-just = 'R'.

ls_fieldcat-sp_group = 'A'.

APPEND ls_fieldcat TO e01_lt_fieldcat.

cnt = cnt + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = 1.

ls_fieldcat-col_pos = cnt.

ls_fieldcat-fieldname = 'HBKID'.

ls_fieldcat-seltext_m = 'Cheque Bank'.

ls_fieldcat-key = 'X'.

ls_fieldcat-key_sel = 'X'.

ls_fieldcat-just = 'L'.

ls_fieldcat-sp_group = 'A'.

APPEND ls_fieldcat TO e01_lt_fieldcat.

cnt = cnt + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = 1.

ls_fieldcat-col_pos = cnt.

ls_fieldcat-fieldname = 'USR_TXT1'.

ls_fieldcat-seltext_m = 'Ref. Bank'.

ls_fieldcat-key = 'X'.

ls_fieldcat-key_sel = 'X'.

ls_fieldcat-just = 'L'.

ls_fieldcat-sp_group = 'A'.

APPEND ls_fieldcat TO e01_lt_fieldcat.

cnt = cnt + 1.

CLEAR ls_fieldcat.

ls_fieldcat-row_pos = 1.

ls_fieldcat-col_pos = cnt.

ls_fieldcat-fieldname = 'USR_TXT2'.

ls_fieldcat-seltext_m = 'C-form Number'.

ls_fieldcat-key = 'X'.

ls_fieldcat-key_sel = 'X'.

ls_fieldcat-just = 'L'.

ls_fieldcat-sp_group = 'A'.

APPEND ls_fieldcat TO e01_lt_fieldcat.

ENDFORM. " fieldcat_init

&----


*& Form layout_build

----


FORM layout_build USING e05_ls_layout TYPE slis_layout_alv.

e05_ls_layout-f2code = p_f2code.

e05_ls_layout-zebra = p_zebra.

e05_ls_layout-cell_merge = p_merge.

e05_ls_layout-colwidth_optimize = p_colopt.

  • e05_ls_layout-box_fieldname = 'BOX'.

e05_ls_layout-no_input = p_noinpt.

e05_ls_layout-no_vline = p_novlin.

e05_ls_layout-no_colhead = p_nocolh.

IF p_lights = 'X' OR p_lightc = 'X'.

e05_ls_layout-lights_fieldname = p_lignam.

ELSE.

CLEAR e05_ls_layout-lights_fieldname.

ENDIF.

IF p_before = 'X'.

e05_ls_layout-totals_before_items = 'X'.

ENDIF.

IF p_gpce = 'X'.

e05_ls_layout-group_change_edit = 'X'.

ENDIF.

e05_ls_layout-lights_condense = p_lightc.

e05_ls_layout-totals_text = p_totext.

e05_ls_layout-subtotals_text = p_sttext.

e05_ls_layout-totals_only = p_totonl.

  • e05_ls_layout-key_hotspot = 'X'. "p_keyhot.

e05_ls_layout-hotspot_fieldname = 'BOX'.

e05_ls_layout-detail_popup = p_detpop.

e05_ls_layout-no_keyfix = 'X'.

e05_ls_layout-info_fieldname = 'COL'.

e05_ls_layout-colwidth_optimize = 'X'.

  • e05_ls_layout-edit = 'X'.

ENDFORM. " layout_build

&----


*& Form print_build

----


FORM print_build USING e08_ls_print TYPE slis_print_alv.

e08_ls_print-print = p_print.

e08_ls_print-no_print_selinfos = p_nosinf.

e08_ls_print-no_coverpage = p_nocove.

e08_ls_print-no_new_page = p_nonewp.

e08_ls_print-no_print_listinfos = 'X'. "p_nolinf.

e08_ls_print-reserve_lines = p_reserv.

e08_ls_print-print = p_print.

ENDFORM. " print_build

&----


*& Form alv_output

----


FORM alv_output.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

  • i_background_id = 'ALV_BACKGROUND'

i_callback_program = g_repid

i_structure_name = 'GT_OUTPUT'

is_layout = gs_layout

it_fieldcat = gt_fieldcat[]

it_special_groups = gt_sp_group[]

it_sort = gt_sort[]

i_save = g_save

is_variant = g_variant

it_events = gt_events[]

is_print = gs_print

TABLES

t_outtab = gt_output.

ENDFORM. " alv_output

----


  • FORM PF_STATUS_SET *

----


FORM pf_status_set CHANGING it_extab TYPE slis_t_extab.

DATA: ls_extab TYPE slis_extab.

SET PF-STATUS 'ALV'.

ENDFORM. "PF_STATUS_SET

----


  • FORM TOP_OF_PAGE *

----


FORM top_of_page.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = gt_list_top_of_page.

Answers will be rewarded if found useful

Thankx in advance

Prash

7 REPLIES 7
Read only

Former Member
0 Likes
752

when u call command like this , make use ITAB should not be Empty.

<b>if a363_itab[] is not initail.

SELECT *

FROM konp

INTO CORRESPONDING FIELDS OF TABLE konp_itab

FOR ALL ENTRIES IN a363_itab

WHERE knumh EQ a363_itab-knumh.

endif.</b>

u can accessing BSEG table w/o any Key Figures , in this case u have to go fora different Options.

<b>SELECT *

FROM bseg

INTO CORRESPONDING FIELDS OF TABLE chckinit

FOR ALL ENTRIES IN v_po_det

WHERE ebeln EQ v_po_det-ebeln AND matnr EQ v_po_det-matnr AND buzid EQ 'W' AND bschl EQ '86' AND koart EQ 'K'.</b>

Regards

Prabhu

Read only

Former Member
0 Likes
752

Hi Prashant ,

Few basic stuff , in many of the tables to select teh data the code is select * , please avoid this and select only those records which are required.

Before using for all enties please check if data is there in the internal table or not.

and also please debugg the program and see which specific statement is taking a lot of time and then you can work on optimizing it

Regadrs

Arun

Read only

Former Member
0 Likes
752

DATA: IT_TEMP LIKE A363_ITAB OCCURS 0 WITH HEADER LINE.

SELECT matnr

lifnr

werks

kschl

knumh

FROM a363

INTO TABLE a363_itab

WHERE matnr IN s_matnr AND lifnr IN s_lifnr AND werks EQ p_werks AND kschl IN s_kschl.

IT_TEMP[] = A363_ITAB[].

SORT IT_TEMP BY KNUMH.

DELETE ADJACENT DUPLICATES FROM IT_TEMP COMPARING KNUMH.

IF NOT IT_TEMP[] IS INITIAL.

SELECT *

FROM konp

INTO CORRESPONDING FIELDS OF TABLE konp_itab

FOR ALL ENTRIES IN IT_TEMP

WHERE knumh EQ IT_TEMP-knumh.

ENDIF.

SORT KONP_ITAB BY KNUMH.

LOOP AT a363_itab.

*******Use binary search.

READ TABLE konp_itab WITH KEY knumh = a363_itab-knumh

BINARY SEARCH..

IF sy-subrc EQ 0.

MOVE : konp_itab-kbetr TO a363_itab-kbetr.

MODIFY a363_itab.

ENDIF.

CLEAR : a363_itab, konp_itab.

ENDLOOP.

REFRESH: IT_TEMP.

IT_TEMP[] = A363_ITAB.

SORT IT_TEMP BY MATNR.

DELETE ADJACENT DUPLICATES FROM IT_TEMP COMPARING MATNR.

IF NOT IT_TEMP[] IS INITIAL.

SELECT *

FROM makt

INTO CORRESPONDING FIELDS OF TABLE mat_desc

FOR ALL ENTRIES IN IT_TEMP

WHERE matnr EQ IT_TEMP-matnr.

ENDIF.

LIKE THIS U CHANGE UR CODE WHERE EVER POSSIBLE

Read only

Former Member
0 Likes
752

Hi

Remove all select * and get only required fields

sort the itab and in read use binary search.

get the fields in the table in other order they r stored in table

Thanks

Shiva

Read only

Former Member
0 Likes
752

Hi Prashant,

Your code runs into timeout error as you have used 'select *' in many places. Never use this as the table(s) contains millions of entries. As a result of this, the code becomes inefficent and goes into timeout.

You can use the folloing Best Practices:

1. Always specify the fields in your select stmt and not *.

2. Specify the key fields in the where clause (during comparison)

3. Wherever applicable, do specify the language (SPRAS) in the where clause.

4. Make use of Binary Search when using Read Stmt (Saves a lot of time), along with checking for INITIAL and deleting adjacent duplicates.

5. If Joins are used in program, avoid it, and make use of FOR ALL ENTRIES

I guess this will improve the performance of the program, and will not go into timeout.

PLZ REWARD POINTS IF HELPFUL.

Read only

Former Member
0 Likes
752

In just about every SELECT statement, you are not using any index. Try to re-design the selects so that you do. I'm afraid this may be a major re-write.

Rob

Read only

0 Likes
752

Please remove "*" from your code. It will definatly increase the performance