2008 Jul 02 7:52 AM
Hi Experts,
I want one Alv interactive report sample program , please send the report.
Rewards are help ful answers.
Thanks & Regards,
N.Narasimha Rao,
2008 Jul 02 7:55 AM
Hi,
Refer below code
&----
*& Report ZGRIR
*&
&----
*&
*&
&----
REPORT zgrir
NO STANDARD PAGE HEADING.
----
TABLES *
----
TABLES : bsis. "Accounting: Secondary Index for G/L Accounts
----
TYPE-POOL *
----
TYPE-POOLS : slis. "Global types for generic cunning building blocks
----
CONSTANTS *
----
CONSTANTS : c_top_of_page(15) TYPE c VALUE 'SUB_TOP_OF_PAGE'.
----
TYPES *
----
TYPES : BEGIN OF t_bsis,
bukrs TYPE bukrs,
zuonr TYPE dzuonr,
gjahr TYPE gjahr,
belnr TYPE belnr_d,
budat TYPE budat,
bldat TYPE bldat,
blart TYPE blart,
shkzg TYPE shkzg,
dmbtr TYPE dmbtr,
xref3 TYPE xref3,
mblnr TYPE mblnr,
ebeln TYPE ebeln,
ebelp TYPE ebelp,
txz01 TYPE txz01,
menge TYPE menge_d,
mblnr1 TYPE mblnr,
mjahr TYPE mjahr,
lfpos TYPE lfpos,
lifnr TYPE lifnr,
name1 TYPE name1_gp,
END OF t_bsis,
BEGIN OF t_bkpf,
belnr TYPE belnr_d,
gjahr TYPE gjahr,
awkey TYPE awkey,
END OF t_bkpf,
BEGIN OF t_mseg,
mblnr TYPE mblnr,
mjahr TYPE mjahr,
lifnr TYPE elifn,
erfmg TYPE erfmg,
ebeln TYPE bstnr,
ebelp TYPE ebelp,
lfpos TYPE lfpos,
txz01 TYPE txz01,
END OF t_mseg,
BEGIN OF t_mkpf,
mblnr TYPE mblnr,
mjahr TYPE mjahr,
usnam TYPE usnam,
END OF t_mkpf,
BEGIN OF t_lfa1,
lifnr TYPE lifnr,
name1 TYPE name1_gp,
END OF t_lfa1,
BEGIN OF t_ekpo,
ebeln TYPE ebeln,
ebelp TYPE ebelp,
txz01 TYPE txz01,
END OF t_ekpo,
BEGIN OF t_ekbe,
ebeln TYPE ebeln,
ebelp TYPE ebelp,
belnr TYPE mblnr,
menge TYPE menge_d,
END OF t_ekbe,
BEGIN OF t_bsik,
bukrs TYPE bukrs,
lifnr TYPE lifnr,
gjahr TYPE gjahr,
belnr TYPE belnr_d,
END OF t_bsik,
BEGIN OF t_final,
blart TYPE blart,
belnr TYPE belnr_d,
bldat TYPE bldat,
budat TYPE budat,
lifnr TYPE lifnr,
name1 TYPE name1,
xref3 TYPE xref3,
zuonr TYPE dzuonr,
dmbtr TYPE dmbtr,
ebeln TYPE ebeln,
txz01 TYPE txz01,
erfmg TYPE erfmg,
menge TYPE menge_d,
mblnr TYPE mblnr,
END OF t_final.
----
Work Areas *
----
DATA : wa_bsis TYPE t_bsis,
wa_bkpf TYPE t_bkpf,
wa_mseg TYPE t_mseg,
wa_mkpf TYPE t_mkpf,
wa_lfa1 TYPE t_lfa1,
wa_dtlfa1 TYPE t_lfa1,
wa_ekpo TYPE t_ekpo,
wa_ekbe TYPE t_ekbe,
wa_bsik TYPE t_bsik,
wa_final TYPE t_final,
wa_layout TYPE slis_layout_alv.
----
Internal tables *
----
DATA : it_bsis TYPE STANDARD TABLE OF t_bsis,
it_bkpf TYPE STANDARD TABLE OF t_bkpf,
it_mseg TYPE STANDARD TABLE OF t_mseg,
it_mkpf TYPE STANDARD TABLE OF t_mkpf,
it_lfa1 TYPE STANDARD TABLE OF t_lfa1,
it_dtlfa1 TYPE STANDARD TABLE OF t_lfa1,
it_ekpo TYPE STANDARD TABLE OF t_ekpo,
it_ekbe TYPE STANDARD TABLE OF t_ekbe,
it_bsik TYPE STANDARD TABLE OF t_bsik,
it_final TYPE STANDARD TABLE OF t_final,
it_events TYPE slis_t_event,
it_header TYPE slis_t_listheader,
it_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
----
PARAMETERS & SELECT-OPTIONS *
----
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
PARAMETERS : p_bukrs LIKE bsis-bukrs OBLIGATORY DEFAULT '1000',
p_hkont LIKE bsis-hkont OBLIGATORY.
SELECT-OPTIONS : s_blart FOR bsis-blart,
s_budat FOR bsis-budat OBLIGATORY.
SELECTION-SCREEN END OF BLOCK blk1.
----
START-OF-SELECTION *
----
START-OF-SELECTION.
PERFORM sub_read_bsis.
PERFORM sub_read_bkpf.
PERFORM sub_read_mseg.
PERFORM sub_read_mkpf.
PERFORM sub_read_lfa1.
PERFORM sub_read_ekpo.
PERFORM sub_read_ekbe.
PERFORM sub_read_bsik.
PERFORM sub_read_dtlfa1.
PERFORM sub_collect_data.
----
END-OF-SELECTION *
----
END-OF-SELECTION.
*--This perform creates the ALV events
PERFORM sub_create_events.
PERFORM sub_field_catalog.
PERFORM sub_display_data.
&----
*& Form sub_read_bsis
&----
text
----
FORM sub_read_bsis .
*--Local Variables
DATA : lv_index LIKE sy-tabix.
SELECT bukrs
zuonr
gjahr
belnr
budat
bldat
blart
shkzg
dmbtr
xref3
FROM bsis
INTO CORRESPONDING FIELDS OF TABLE it_bsis
WHERE bukrs EQ p_bukrs
AND hkont EQ p_hkont
AND blart IN s_blart
AND budat IN s_budat.
IF sy-subrc EQ 0.
SORT it_bsis BY zuonr belnr.
ENDIF.
LOOP AT it_bsis INTO wa_bsis.
lv_index = sy-tabix.
wa_bsis-mblnr = wa_bsis-xref3+4(10).
wa_bsis-lfpos = wa_bsis-xref3+14(4).
wa_bsis-ebeln = wa_bsis-zuonr+0(10).
wa_bsis-ebelp = wa_bsis-zuonr+10(5).
MODIFY it_bsis FROM wa_bsis INDEX lv_index
TRANSPORTING mblnr lfpos ebeln ebelp.
CLEAR : wa_bsis.
ENDLOOP.
ENDFORM. " sub_read_bsis
&----
*& Form SUB_READ_BKPF
&----
text
----
FORM sub_read_bkpf .
*--Local Variables
DATA : lv_index LIKE sy-tabix.
IF NOT it_bsis[] IS INITIAL.
SELECT belnr
gjahr
awkey
FROM bkpf
INTO TABLE it_bkpf
FOR ALL ENTRIES IN it_bsis
WHERE bukrs EQ it_bsis-bukrs
AND belnr EQ it_bsis-belnr
AND gjahr EQ it_bsis-gjahr.
IF sy-subrc EQ 0.
SORT it_bkpf BY belnr gjahr.
ENDIF.
ENDIF.
SORT it_bsis BY belnr gjahr.
IF NOT it_bsis[] IS INITIAL.
LOOP AT it_bsis INTO wa_bsis.
lv_index = sy-tabix.
CLEAR : wa_bkpf.
READ TABLE it_bkpf INTO wa_bkpf WITH KEY belnr = wa_bsis-belnr
gjahr = wa_bsis-gjahr
BINARY SEARCH.
IF sy-subrc EQ 0.
wa_bsis-mblnr1 = wa_bkpf-awkey+0(10).
ENDIF.
MODIFY it_bsis FROM wa_bsis INDEX lv_index
TRANSPORTING mblnr1.
CLEAR : wa_bkpf,
wa_bsis.
ENDLOOP.
ENDIF.
ENDFORM. " SUB_READ_BKPF
&----
*& Form sub_read_mseg
&----
text
----
FORM sub_read_mseg .
*--Local Variables
DATA : lv_index LIKE sy-tabix.
IF NOT it_bsis[] IS INITIAL.
LOOP AT it_bsis INTO wa_bsis.
lv_index = sy-tabix.
wa_bsis-mjahr = wa_bsis-budat+0(4).
MODIFY it_bsis FROM wa_bsis INDEX lv_index
TRANSPORTING mjahr.
CLEAR : wa_bsis.
ENDLOOP.
SELECT mblnr
mjahr
lifnr
erfmg
ebeln
ebelp
lfpos
FROM mseg
INTO CORRESPONDING FIELDS OF TABLE it_mseg
FOR ALL ENTRIES IN it_bsis
WHERE mblnr EQ it_bsis-mblnr
AND mjahr EQ it_bsis-mjahr.
IF sy-subrc EQ 0.
SORT it_mseg BY mblnr mjahr lfpos.
ENDIF.
ENDIF.
SORT it_bsis BY mblnr mjahr lfpos.
IF NOT it_mseg[] IS INITIAL.
LOOP AT it_bsis INTO wa_bsis.
lv_index = sy-tabix.
CLEAR : wa_mseg.
READ TABLE it_mseg INTO wa_mseg WITH KEY mblnr = wa_bsis-mblnr
mjahr = wa_bsis-mjahr
lfpos = wa_bsis-lfpos
BINARY SEARCH.
IF sy-subrc EQ 0.
wa_bsis-ebeln = wa_mseg-ebeln.
wa_bsis-ebelp = wa_mseg-ebelp.
ENDIF.
MODIFY it_bsis FROM wa_bsis INDEX lv_index
TRANSPORTING ebeln ebelp.
CLEAR : wa_bsis,
wa_mseg.
ENDLOOP.
ENDIF.
ENDFORM. " sub_read_mseg
&----
*& Form sub_read_mkpf
&----
text
----
FORM sub_read_mkpf .
IF NOT it_bsis[] IS INITIAL.
SELECT mblnr
mjahr
usnam
FROM mkpf
INTO TABLE it_mkpf
FOR ALL ENTRIES IN it_bsis
WHERE mblnr EQ it_bsis-mblnr
AND mjahr EQ it_bsis-mjahr.
IF sy-subrc EQ 0.
SORT it_mkpf BY mblnr mjahr.
ENDIF.
ENDIF.
ENDFORM. " sub_read_mkpf
&----
*& Form sub_read_lfa1
&----
text
----
FORM sub_read_lfa1 .
IF NOT it_mseg[] IS INITIAL.
SELECT lifnr
name1
FROM lfa1
INTO TABLE it_lfa1
FOR ALL ENTRIES IN it_mseg
WHERE lifnr EQ it_mseg-lifnr.
IF sy-subrc EQ 0.
SORT it_lfa1 BY lifnr.
ENDIF.
ENDIF.
ENDFORM. " sub_readǝlfa1
&----
*& Form sub_read_ekpo
&----
text
----
FORM sub_read_ekpo .
*--Local Variables
DATA : lv_index LIKE sy-tabix.
IF NOT it_mseg[] IS INITIAL.
SELECT ebeln
ebelp
txz01
FROM ekpo
INTO TABLE it_ekpo
FOR ALL ENTRIES IN it_mseg
WHERE ebeln EQ it_mseg-ebeln
AND ebelp EQ it_mseg-ebelp.
IF sy-subrc EQ 0.
SORT it_ekpo BY ebeln ebelp.
ENDIF.
SORT it_mseg BY ebeln ebelp.
LOOP AT it_mseg INTO wa_mseg.
lv_index = sy-tabix.
CLEAR : wa_ekpo.
READ TABLE it_ekpo INTO wa_ekpo WITH KEY ebeln = wa_mseg-ebeln
ebelp = wa_mseg-ebelp
BINARY SEARCH.
IF sy-subrc EQ 0.
wa_mseg-txz01 = wa_ekpo-txz01.
ENDIF.
MODIFY it_mseg FROM wa_mseg INDEX lv_index
TRANSPORTING txz01.
CLEAR : wa_mseg,
wa_ekpo.
ENDLOOP.
ENDIF.
ENDFORM. " sub_read_ekpo
&----
*& Form SUB_READ_EKBE
&----
text
----
FORM sub_read_ekbe .
*--Local Variables
DATA : lv_index LIKE sy-tabix.
IF NOT it_bsis[] IS INITIAL.
SELECT ebeln
ebelp
belnr
menge
FROM ekbe
INTO TABLE it_ekbe
FOR ALL ENTRIES IN it_bsis
WHERE ebeln EQ it_bsis-ebeln
AND ebelp EQ it_bsis-ebelp
AND belnr EQ it_bsis-mblnr1
AND vgabe EQ '2'.
IF sy-subrc EQ 0.
SORT it_ekbe BY ebeln ebelp belnr.
ENDIF.
SORT it_bsis BY ebeln ebelp mblnr1.
LOOP AT it_bsis INTO wa_bsis.
lv_index = sy-tabix.
CLEAR : wa_ekpo.
READ TABLE it_ekpo INTO wa_ekpo WITH KEY ebeln = wa_bsis-ebeln
ebelp = wa_bsis-ebelp
BINARY SEARCH.
IF sy-subrc EQ 0.
wa_bsis-txz01 = wa_ekpo-txz01.
ENDIF.
CLEAR : wa_ekbe.
READ TABLE it_ekbe INTO wa_ekbe WITH KEY ebeln = wa_bsis-ebeln
ebelp = wa_bsis-ebelp
belnr = wa_bsis-mblnr1
BINARY SEARCH.
IF sy-subrc EQ 0.
wa_bsis-menge = wa_ekbe-menge.
ENDIF.
MODIFY it_bsis FROM wa_bsis INDEX lv_index
TRANSPORTING txz01 menge.
CLEAR : wa_bsis,
wa_ekpo.
ENDLOOP.
ENDIF.
ENDFORM. " SUB_READ_EKBE
&----
*& Form sub_read_bsik
&----
text
----
FORM sub_read_bsik .
*--Local Variables
DATA : lv_index LIKE sy-tabix.
IF NOT it_bsis[] IS INITIAL.
SELECT bukrs
lifnr
gjahr
belnr
FROM bsik
INTO TABLE it_bsik
FOR ALL ENTRIES IN it_bsis
WHERE bukrs EQ it_bsis-bukrs
AND gjahr EQ it_bsis-gjahr
AND belnr EQ it_bsis-belnr.
IF sy-subrc EQ 0.
SORT it_bsik BY belnr gjahr.
ENDIF.
SORT it_bsis BY belnr gjahr.
LOOP AT it_bsis INTO wa_bsis.
lv_index = sy-tabix.
CLEAR : wa_bsik.
READ TABLE it_bsik INTO wa_bsik WITH KEY belnr = wa_bsis-belnr
gjahr = wa_bsis-gjahr
BINARY SEARCH.
IF sy-subrc EQ 0.
wa_bsis-lifnr = wa_bsik-lifnr.
ENDIF.
MODIFY it_bsis FROM wa_bsis INDEX lv_index
TRANSPORTING lifnr.
CLEAR : wa_bsis,
wa_bsik.
ENDLOOP.
ENDIF.
ENDFORM. " sub_read_bsik
&----
*& Form sub_read_dtlfa1
&----
text
----
FORM sub_read_dtlfa1 .
*--Local Variables
DATA : lv_index LIKE sy-tabix.
IF NOT it_bsis[] IS INITIAL.
SELECT lifnr
name1
FROM lfa1
INTO TABLE it_dtlfa1
FOR ALL ENTRIES IN it_bsis
WHERE lifnr EQ it_bsis-lifnr.
IF sy-subrc EQ 0.
SORT it_dtlfa1 BY lifnr.
ENDIF.
SORT it_bsis BY lifnr.
LOOP AT it_bsis INTO wa_bsis.
lv_index = sy-tabix.
CLEAR : wa_dtlfa1.
READ TABLE it_dtlfa1 INTO wa_dtlfa1 WITH KEY lifnr = wa_bsis-lifnr
BINARY SEARCH.
IF sy-subrc EQ 0.
wa_bsis-name1 = wa_dtlfa1-name1.
ENDIF.
MODIFY it_bsis FROM wa_bsis INDEX lv_index
TRANSPORTING name1.
CLEAR : wa_bsis,
wa_dtlfa1.
ENDLOOP.
ENDIF.
ENDFORM. " sub_read_dtlfa1
&----
*& Form sub_collect_data
&----
text
----
FORM sub_collect_data .
*--Local Variables
DATA : lv_index LIKE sy-tabix.
SORT it_bsis BY mblnr gjahr ebeln ebelp.
SORT it_mseg BY mblnr mjahr ebeln ebelp.
IF NOT it_bsis[] IS INITIAL.
LOOP AT it_bsis INTO wa_bsis.
wa_final-blart = wa_bsis-blart.
wa_final-belnr = wa_bsis-belnr.
wa_final-bldat = wa_bsis-bldat.
wa_final-budat = wa_bsis-budat.
wa_final-xref3 = wa_bsis-xref3.
wa_final-zuonr = wa_bsis-zuonr.
wa_final-ebeln = wa_bsis-ebeln.
wa_final-txz01 = wa_bsis-txz01.
wa_final-lifnr = wa_bsis-lifnr.
IF wa_bsis-shkzg EQ 'H'.
wa_final-dmbtr = wa_bsis-dmbtr * ( -1 ).
ELSE.
wa_final-dmbtr = wa_bsis-dmbtr.
ENDIF.
IF wa_bsis-blart EQ 'RE'.
wa_final-menge = wa_bsis-menge.
ENDIF.
CLEAR : wa_mseg.
READ TABLE it_mseg INTO wa_mseg WITH KEY mblnr = wa_bsis-mblnr
mjahr = wa_bsis-mjahr
ebeln = wa_bsis-ebeln
ebelp = wa_bsis-ebelp
BINARY SEARCH.
IF sy-subrc EQ 0.
wa_final-lifnr = wa_mseg-lifnr.
wa_final-txz01 = wa_mseg-txz01.
IF wa_bsis-blart EQ 'WE'.
wa_final-erfmg = wa_mseg-erfmg.
ENDIF.
IF wa_bsis-ebeln IS INITIAL.
wa_final-ebeln = wa_mseg-ebeln.
ENDIF.
ENDIF.
IF wa_bsis-blart EQ 'WE'.
wa_final-mblnr = wa_bsis-mblnr.
ENDIF.
APPEND wa_final TO it_final.
CLEAR : wa_bsis,
wa_final,
wa_mseg,
wa_mkpf.
ENDLOOP.
ENDIF.
SORT it_final BY lifnr .
IF NOT it_final[] IS INITIAL.
LOOP AT it_final INTO wa_final.
lv_index = sy-tabix.
CLEAR : wa_lfa1.
READ TABLE it_lfa1 INTO wa_lfa1 WITH KEY lifnr = wa_final-lifnr
BINARY SEARCH.
IF sy-subrc EQ 0.
wa_final-name1 = wa_lfa1-name1.
ELSE.
CLEAR : wa_dtlfa1.
READ TABLE it_dtlfa1 INTO wa_dtlfa1 WITH KEY lifnr = wa_final-lifnr
BINARY SEARCH.
IF sy-subrc EQ 0.
wa_final-name1 = wa_dtlfa1-name1.
ENDIF.
ENDIF.
MODIFY it_final FROM wa_final INDEX lv_index
TRANSPORTING name1.
CLEAR : wa_final,
wa_lfa1.
ENDLOOP.
ENDIF.
ENDFORM. " sub_collect_data
&----
*& Form sub_create_events *
&----
This form will display the ALV Events *
----
FORM sub_create_events .
*--Local Work Area
DATA: lwa_event TYPE slis_alv_event. "Work area for Events
*--Call Function to display the events for the ALV
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 1
IMPORTING
et_events = it_events.
*--Sort by Name
SORT it_events BY name.
*--Clear
CLEAR lwa_event.
READ TABLE it_events INTO lwa_event WITH KEY name = slis_ev_top_of_page
BINARY SEARCH.
IF sy-subrc = 0.
MOVE c_top_of_page TO lwa_event-form.
MODIFY it_events FROM lwa_event TRANSPORTING form WHERE
name = slis_ev_top_of_page.
ENDIF.
*--Clear
CLEAR : lwa_event.
ENDFORM. "sub_create_events
&----
*& Form sub_top_of_page *
&----
This form is to build the Page Header *
----
FORM sub_top_of_page .
*--Local Variable
DATA : lv_title(120) TYPE c, " Title
lv_blart(30) TYPE c,
lv_date(30) TYPE c,
lv_bdate1(10) TYPE c,
lv_bdate2(10) TYPE c,
lv_hkont(10) TYPE c.
*--Local Work Area
DATA : lwa_line TYPE slis_listheader. " Hold list header
WRITE : p_hkont TO lv_hkont.
SHIFT lv_hkont LEFT DELETING LEADING '0'.
*--Title Display
lwa_line-typ = 'H'. " header
lv_title = sy-title.
lwa_line-info = lv_title.
APPEND lwa_line TO it_header.
CLEAR lwa_line.
*--Compnay code
lwa_line-typ = 'S'. " Item
WRITE: p_bukrs TO lv_month.
lwa_line-key = text-017.
lwa_line-info = p_bukrs.
APPEND lwa_line TO it_header.
CLEAR lwa_line.
*--GL account
lwa_line-typ = 'S'. " Item
WRITE: p_bud TO lv_bud.
lwa_line-key = text-018.
lwa_line-info = lv_hkont.
APPEND lwa_line TO it_header.
CLEAR lwa_line.
IF NOT s_blart[] IS INITIAL.
IF NOT s_blart-high IS INITIAL.
CONCATENATE s_blart-low 'to' s_blart-high INTO lv_blart SEPARATED BY space.
*--Document type
lwa_line-typ = 'S'. " Item
WRITE: p_bud TO lv_bud.
lwa_line-key = text-019.
lwa_line-info = lv_blart.
ELSE.
*--Document type
lwa_line-typ = 'S'. " Item
WRITE: p_bud TO lv_bud.
lwa_line-key = text-019.
lwa_line-info = s_blart-low.
ENDIF.
ENDIF.
APPEND lwa_line TO it_header.
CLEAR: lwa_line.
IF NOT s_budat-high IS INITIAL.
WRITE: s_budat-low TO lv_bdate1.
WRITE: s_budat-high TO lv_bdate2.
CONCATENATE lv_bdate1 'to' lv_bdate2 INTO lv_date SEPARATED BY space.
*--Posting Date
lwa_line-typ = 'S'. " Item
WRITE: p_bud TO lv_bud.
lwa_line-key = text-020.
lwa_line-info = lv_date.
ELSE.
*--Posting Date
lwa_line-typ = 'S'. " Item
WRITE: s_budat-low TO lv_bdate1.
lwa_line-key = text-020.
lwa_line-info = lv_bdate1.
ENDIF.
APPEND lwa_line TO it_header.
CLEAR: lwa_line.
*--This funcation module will display the top of the page
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_header.
*--Free
FREE : it_header.
ENDFORM. "sub_top_of_page
&----
*& Form user_command
&----
text
----
-->U_COM text
----
FORM user_command USING u_com LIKE sy-ucomm
sel_field TYPE slis_selfield.
*--Local Variables
DATA : lv_belnr TYPE belnr_d,
lv_bukrs TYPE bukrs,
lv_gjahr TYPE gjahr.
IF sel_field-fieldname EQ 'BELNR'.
READ TABLE it_bsis INTO wa_bsis WITH KEY belnr = sel_field-value.
IF sy-subrc EQ 0.
lv_belnr = wa_bsis-belnr.
lv_bukrs = wa_bsis-bukrs.
lv_gjahr = wa_bsis-gjahr.
ENDIF.
CASE u_com.
WHEN '&IC1'.
SELECT SINGLE belnr
bukrs
gjahr
FROM bsis
INTO (lv_belnr,lv_bukrs,lv_gjahr)
WHERE belnr EQ lv_belnr
AND bukrs EQ lv_bukrs
AND gjahr EQ lv_gjahr.
IF sy-subrc EQ 0.
SET PARAMETER ID : 'BLN' FIELD lv_belnr,
'BUK' FIELD lv_bukrs,
'GJR' FIELD lv_gjahr.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDIF.
ENDFORM. "user_command
&----
*& Form sub_field_catalog
&----
text
----
FORM sub_field_catalog .
it_fieldcat-fieldname = 'BELNR'.
it_fieldcat-seltext_m = text-003.
it_fieldcat-col_pos = 0.
it_fieldcat-outputlen = 10.
it_fieldcat-key = 'X'.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'BLART'.
it_fieldcat-seltext_m = text-002.
it_fieldcat-col_pos = 1.
it_fieldcat-outputlen = 2.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'BLDAT'.
it_fieldcat-seltext_m = text-004.
it_fieldcat-col_pos = 2.
it_fieldcat-outputlen = 8.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'BUDAT'.
it_fieldcat-seltext_m = text-005.
it_fieldcat-col_pos = 3.
it_fieldcat-outputlen = 8.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'LIFNR'.
it_fieldcat-seltext_m = text-006.
it_fieldcat-col_pos = 4.
it_fieldcat-outputlen = 10.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'NAME1'.
it_fieldcat-seltext_m = text-007.
it_fieldcat-col_pos = 5.
it_fieldcat-outputlen = 35.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'XREF3'.
it_fieldcat-seltext_m = text-008.
it_fieldcat-col_pos = 6.
it_fieldcat-outputlen = 20.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'ZUONR'.
it_fieldcat-seltext_m = text-009.
it_fieldcat-col_pos = 7.
it_fieldcat-outputlen = 18.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'DMBTR'.
it_fieldcat-seltext_m = text-010.
it_fieldcat-col_pos = 8.
it_fieldcat-outputlen = 13.
it_fieldcat-do_sum = 'X'.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'EBELN'.
it_fieldcat-seltext_m = text-011.
it_fieldcat-col_pos = 9.
it_fieldcat-outputlen = 10.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'TXZ01'.
it_fieldcat-seltext_m = text-012.
it_fieldcat-col_pos = 10.
it_fieldcat-outputlen = 40.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'ERFMG'.
it_fieldcat-seltext_m = text-013.
it_fieldcat-col_pos = 11.
it_fieldcat-outputlen = 13.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'MENGE'.
it_fieldcat-seltext_m = text-014.
it_fieldcat-col_pos = 12.
it_fieldcat-outputlen = 13.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'MBLNR'.
it_fieldcat-seltext_m = text-015.
it_fieldcat-col_pos = 13.
it_fieldcat-outputlen = 10.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
ENDFORM. " sub_field_catalog
&----
*& Form sub_display_data
&----
text
----
FORM sub_display_data .
*--Local Variables
DATA : lv_repid LIKE sy-repid.
*--Pass the Report name
lv_repid = sy-repid.
wa_layout-colwidth_optimize = 'X'.
IF NOT it_final[] IS INITIAL.
*--Call the function module to display the ALV report
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = lv_repid
is_layout = wa_layout
it_fieldcat = it_fieldcat[]
i_default = 'X'
i_save = 'A'
i_callback_user_command = 'USER_COMMAND'
is_variant = wa_variant
it_events = it_events
is_print = wa_print
it_sort = li_sort
TABLES
t_outtab = it_final
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ELSE.
*--No data found for the given selection criteria.
MESSAGE text-016 TYPE 'I'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " sub_display_data.
Regards,
Prashant
2008 Jul 02 7:54 AM
TYPE-POOLS: SLIS.
*type declaration for values from ekko
TYPES: BEGIN OF I_EKKO,
EBELN LIKE EKKO-EBELN,
AEDAT LIKE EKKO-AEDAT,
BUKRS LIKE EKKO-BUKRS,
BSART LIKE EKKO-BSART,
LIFNR LIKE EKKO-LIFNR,
END OF I_EKKO.
DATA: IT_EKKO TYPE STANDARD TABLE OF I_EKKO INITIAL SIZE 0,
WA_EKKO TYPE I_EKKO.
*type declaration for values from ekpo
TYPES: BEGIN OF I_EKPO,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
MATNR LIKE EKPO-MATNR,
MENGE LIKE EKPO-MENGE,
MEINS LIKE EKPO-MEINS,
NETPR LIKE EKPO-NETPR,
END OF I_EKPO.
DATA: IT_EKPO TYPE STANDARD TABLE OF I_EKPO INITIAL SIZE 0,
WA_EKPO TYPE I_EKPO .
*variable for Report ID
DATA: V_REPID LIKE SY-REPID .
*declaration for fieldcatalog
DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
DATA: IT_LISTHEADER TYPE SLIS_T_LISTHEADER.
declaration for events table where user comand or set PF status will
be defined
DATA: V_EVENTS TYPE SLIS_T_EVENT,
WA_EVENT TYPE SLIS_ALV_EVENT.
declartion for layout
DATA: ALV_LAYOUT TYPE SLIS_LAYOUT_ALV.
declaration for variant(type of display we want)
DATA: I_VARIANT TYPE DISVARIANT,
I_VARIANT1 TYPE DISVARIANT,
I_SAVE(1) TYPE C.
*PARAMETERS : p_var TYPE disvariant-variant.
*Title displayed when the alv list is displayed
DATA: I_TITLE_EKKO TYPE LVC_TITLE VALUE 'FIRST LIST DISPLAYED'.
DATA: I_TITLE_EKPO TYPE LVC_TITLE VALUE 'SECONDRY LIST DISPLAYED'.
INITIALIZATION.
V_REPID = SY-REPID.
PERFORM BUILD_FIELDCATLOG.
PERFORM EVENT_CALL.
PERFORM POPULATE_EVENT.
START-OF-SELECTION.
PERFORM DATA_RETRIEVAL.
PERFORM BUILD_LISTHEADER USING IT_LISTHEADER.
PERFORM DISPLAY_ALV_REPORT.
&----
*& Form BUILD_FIELDCATLOG
&----
Fieldcatalog has all the field details from ekko
----
FORM BUILD_FIELDCATLOG.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'EBELN'.
WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'AEDAT'.
WA_FIELDCAT-SELTEXT_M = 'DATE.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'BUKRS'.
WA_FIELDCAT-SELTEXT_M = 'COMPANY CODE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'BUKRS'.
WA_FIELDCAT-SELTEXT_M = 'DOCMENT TYPE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKKO'.
WA_FIELDCAT-FIELDNAME = 'LIFNR'.
WA_FIELDCAT-NO_OUT = 'X'.
WA_FIELDCAT-SELTEXT_M = 'VENDOR CODE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
ENDFORM. "BUILD_FIELDCATLOG
&----
*& Form EVENT_CALL
&----
we get all events - TOP OF PAGE or USER COMMAND in table v_events
----
FORM EVENT_CALL.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = V_EVENTS
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. "EVENT_CALL
&----
*& Form POPULATE_EVENT
&----
Events populated for TOP OF PAGE & USER COMAND
----
FORM POPULATE_EVENT.
READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'TOP_OF_PAGE'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-FORM.
ENDIF.
READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'USER_COMMAND'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-NAME.
ENDIF.
ENDFORM. "POPULATE_EVENT
&----
*& Form data_retrieval
&----
retreiving values from the database table ekko
----
FORM DATA_RETRIEVAL.
SELECT EBELN AEDAT BUKRS BSART LIFNR FROM EKKO INTO TABLE IT_EKKO.
ENDFORM. "data_retrieval
&----
*& Form bUild_listheader
&----
text
----
-->I_LISTHEADEtext
----
FORM BUILD_LISTHEADER USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
DATA HLINE TYPE SLIS_LISTHEADER.
HLINE-INFO = 'this is my first alv pgm'.
HLINE-TYP = 'H'.
ENDFORM. "build_listheader
&----
*& Form display_alv_report
&----
text
----
FORM DISPLAY_ALV_REPORT.
V_REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_GRID_TITLE = I_TITLE_EKKO
I_GRID_SETTINGS =
IS_LAYOUT = ALV_LAYOUT
IT_FIELDCAT = I_FIELDCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
i_default = 'ZLAY1'
I_SAVE = 'A'
is_variant = i_variant
IT_EVENTS = V_EVENTS
TABLES
T_OUTTAB = IT_EKKO
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. "display_alv_report
&----
*& Form TOP_OF_PAGE
&----
text
----
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_LISTHEADER
i_logo =
I_END_OF_LIST_GRID =
.
ENDFORM. "TOP_OF_PAGE
&----
*& Form USER_COMMAND
&----
text
----
-->R_UCOMM text
-->, text
-->RS_SLEFIELDtext
----
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN '&IC1'.
READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TABINDEX.
PERFORM BUILD_FIELDCATLOG_EKPO.
PERFORM EVENT_CALL_EKPO.
PERFORM POPULATE_EVENT_EKPO.
PERFORM DATA_RETRIEVAL_EKPO.
PERFORM BUILD_LISTHEADER_EKPO USING IT_LISTHEADER.
PERFORM DISPLAY_ALV_EKPO.
ENDCASE.
ENDFORM. "user_command
&----
*& Form BUILD_FIELDCATLOG_EKPO
&----
text
----
FORM BUILD_FIELDCATLOG_EKPO.
WA_FIELDCAT-TABNAME = 'IT_EKPO'.
WA_FIELDCAT-FIELDNAME = 'EBELN'.
WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_EKPO'.
WA_FIELDCAT-FIELDNAME = 'EBELP'.
WA_FIELDCAT-SELTEXT_M = 'LINE NO'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'MATNR'.
WA_FIELDCAT-SELTEXT_M = 'MATERIAL NO.'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'MENGE'.
WA_FIELDCAT-SELTEXT_M = 'QUANTITY'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'MEINS'.
WA_FIELDCAT-SELTEXT_M = 'UOM'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'I_EKPO'.
WA_FIELDCAT-FIELDNAME = 'NETPR'.
WA_FIELDCAT-SELTEXT_M = 'PRICE'.
APPEND WA_FIELDCAT TO I_FIELDCAT.
CLEAR WA_FIELDCAT.
ENDFORM. "BUILD_FIELDCATLOG_EKPO
&----
*& Form event_call_ekpo
&----
we get all events - TOP OF PAGE or USER COMMAND in table v_events
----
FORM EVENT_CALL_EKPO.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = V_EVENTS
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. "event_call_ekpo
&----
*& Form POPULATE_EVENT
&----
Events populated for TOP OF PAGE & USER COMAND
----
FORM POPULATE_EVENT_EKPO.
READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC EQ 0.
WA_EVENT-FORM = 'TOP_OF_PAGE'.
MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
WA_EVENT-FORM.
ENDIF.
ENDFORM. "POPULATE_EVENT
&----
*& Form TOP_OF_PAGE
&----
text
----
FORM F_TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_LISTHEADER
i_logo =
I_END_OF_LIST_GRID =
.
ENDFORM. "TOP_OF_PAGE
&----
*& Form USER_COMMAND
&----
text
----
-->R_UCOMM text
-->, text
-->RS_SLEFIELDtext
----
*retreiving values from the database table ekko
FORM DATA_RETRIEVAL_EKPO.
SELECT EBELN EBELP MATNR MENGE MEINS NETPR FROM EKPO INTO TABLE IT_EKPO.
ENDFORM.
FORM BUILD_LISTHEADER_EKPO USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
DATA: HLINE1 TYPE SLIS_LISTHEADER.
HLINE1-TYP = 'H'.
HLINE1-INFO = 'CHECKING PGM'.
ENDFORM.
FORM DISPLAY_ALV_EKPO.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = V_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE = I_TITLE_EKPO
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT = I_FIELDCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT =
I_SAVE = 'A'
IS_VARIANT =
IT_EVENTS = V_EVENTS
TABLES
T_OUTTAB = IT_EKPO
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.
Ankesh Jindal
2008 Jul 02 7:54 AM
&----
*& Report Z_ALVREPORT *
*& *
&----
*& *
*& *
&----
report z_alvreport .
tables:vbak,vbap,mara.
type-pools: slis.
*PARAMETERS:P_VBELN TYPE VBAK-VBELN.
types: begin of i_vbak,
vbeln like vbak-vbeln,
erdat like vbak-erdat,
erzet like vbak-erzet,
ernam like vbak-ernam,
LINE_COLOR(4) TYPE C, "ROW COLOR
end of i_vbak.
data: it_vbak type standard table of i_vbak initial size 0,
wa_vbak type i_vbak.
*DATA:wa_sort1 TYPE slis_t_sortinfo_alv.
*TYPES:BEGIN OF I_MARA,
MATNR LIKE MARA-MATNR,
MTART LIKE MARA-MTART,
END OF I_MARA.
*
*DATA: IT_MARA TYPE STANDARD TABLE OF I_MARA INITIAL SIZE 0,
WA_MARA TYPE I_MARA.
*************************************************************
*DATA: WA_COLOR TYPE LVC_S_SCOL. "FOR ROW COLOR
*DATA: IT_COLOR TYPE TABLE OF LVC_S_SCOL.
**********************************************************
types: begin of i_vbap,
vbeln like vbap-vbeln,
posnr like vbap-posnr,
matnr like vbap-matnr,
matwa like vbap-matwa,
end of i_vbap.
data: it_vbap type standard table of i_vbap initial size 0,
wa_vbap type i_vbap .
*variable for current report ID
data: v_repid like sy-repid .
*declaration for fieldcatalog
data: i_fieldcat type slis_t_fieldcat_alv,
wa_fieldcat type slis_fieldcat_alv.
data: it_listheader type slis_t_listheader.
declaration for events table where user comand or set PF status will be defined
data: v_events type slis_t_event,
wa_event type slis_alv_event.
declartion for layout
data: alv_layout type slis_layout_alv.
declaration for variant(type of display we want)
data: i_variant type disvariant,
i_variant1 type disvariant,
i_save(1) type c,
col_pos type i.
*Title displayed when the alv list is displayed
data: i_title_vbak type lvc_title value 'FIRST LIST DISPLAYED'.
data: i_title_vbap type lvc_title value 'SECONDRY LIST DISPLAYED'.
initialization.
v_repid = sy-repid.
perform build_fieldcatlog.
PERFORM BUILD_LAYOUT. "FOR COLOR
perform event_call.
perform populate_event.
start-of-selection.
perform data_retrieval.
perform build_listheader using it_listheader.
perform display_alv_report.
&----
*& Form BUILD_FIELDCATLOG
&----
Fieldcatalog has all the field details from vbak
----
form build_fieldcatlog.
wa_fieldcat-tabname = 'IT_VBAK'.
wa_fieldcat-fieldname = 'VBELN'.
wa_fieldcat-seltext_m = 'SALES DOCUMENT NUMBER.'.
wa_fieldcat-hotspot = 'X'.
WA_FIELDCAT-COL_POS = 1.
wa_fieldcat-emphasize = 'C110'.
wa_fieldcat-edit = 'X'.
append wa_fieldcat to i_fieldcat.
clear wa_fieldcat.
wa_fieldcat-tabname = 'IT_VBAK'.
wa_fieldcat-fieldname = 'ERDAT'.
wa_fieldcat-seltext_m = 'DATE.'.
WA_FIELDCAT-COL_POS = 2.
wa_fieldcat-emphasize = 'C210'.
wa_fieldcat-edit = 'X'.
append wa_fieldcat to i_fieldcat.
clear wa_fieldcat.
wa_fieldcat-tabname = 'IT_VBAK'.
wa_fieldcat-fieldname = 'ERZET'.
wa_fieldcat-seltext_m = 'ENTRY TIME'.
WA_FIELDCAT-COL_POS = 3.
wa_fieldcat-emphasize = 'C310'.
append wa_fieldcat to i_fieldcat.
clear wa_fieldcat.
wa_fieldcat-tabname = 'IT_VBAK'.
wa_fieldcat-fieldname = 'ERNAM'.
wa_fieldcat-seltext_m = 'NAME'.
WA_FIELDCAT-COL_POS = 4.
wa_fieldcat-emphasize = 'C410'.
append wa_fieldcat to i_fieldcat.
clear wa_fieldcat.
wa_fieldcat-tabname = 'IT_VBAK'.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-seltext_m = 'MATERIAL NUMBER'.
WA_FIELDCAT-COL_POS = 4.
wa_fieldcat-emphasize = 'C510'.
wa_fieldcat-hotspot = 'X'.
append wa_fieldcat to i_fieldcat.
clear wa_fieldcat.
endform. "BUILD_FIELDCATLOG
*******************************************************************
*form build_layout
********************************************************************
*FORM BUILD_LAYOUT.
*
*ALV_LAYOUT-INFO_FIELDNAME = 'LINE_COLOR'.
*
*ENDFORM. "END BUILD_LAYOUT.
********************************************************************
&----
*& Form EVENT_CALL
&----
we get all events - TOP OF PAGE or USER COMMAND in table v_events
----
form event_call.
call function 'REUSE_ALV_EVENTS_GET'
exporting
i_list_type = 0
importing
et_events = v_events
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2
.
if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
endform. "EVENT_CALL
&----
*& Form POPULATE_EVENT
&----
Events populated for TOP OF PAGE & USER COMAND
----
form populate_event.
read table v_events into wa_event with key name = 'TOP_OF_PAGE'.
if sy-subrc eq 0.
wa_event-form = 'TOP_OF_PAGE'.
modify v_events from wa_event transporting form where name =
wa_event-form.
endif.
read table v_events into wa_event with key name = 'USER_COMMAND'.
if sy-subrc eq 0.
wa_event-form = 'USER_COMMAND'.
modify v_events from wa_event transporting form where name =
wa_event-name.
endif.
endform. "POPULATE_EVENT
&----
*& Form data_retrieval
&----
retreiving values from the database table vbak
----
form data_retrieval.
*DATA:ID_COLOR(1) TYPE C.
select vbeln erdat erzet ernam from vbak into table it_vbak .
SELECT MATNR FROM MARA INTO TABLE IT_MARA.
LOOP AT IT_VBAK INTO WA_VBAK.
WA_VBAK-LINE_COLOR = 'C410'.
ID_COLOR = ID_COLOR + 1.
IF ID_COLOR = 7.
ID_COLOR = 1.
ENDIF.
CONCATENATE 'C' ID_COLOR '10' INTO WA_VBAK-LINE_COLOR.
MODIFY IT_VBAK FROM WA_VBAK.
ENDLOOP.
endform. "data_retrieval
&----
*& Form bUild_listheader
&----
text
----
-->I_LISTHEADEtext
----
form build_listheader using i_listheader type slis_t_listheader.
data hline type slis_listheader.
hline-info = 'THIS IS INTERACTIVE ALV'.
hline-typ = 'H'.
endform. "build_listheader
&----
*& Form Status
&----
using the PF-Status enable the SAVE, UPDATE, BACK, CANCEL and EXIT
button and give some OKCODE has been give to each of these Button
and this is handled in USER_COMMAND
----
form status using p_extab type slis_t_extab.
*----PF Status -
set pf-status 'STATUS'.
endform. " status
&----
*& Form display_alv_report
&----
text
----
form display_alv_report.
v_repid = sy-repid.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = v_repid
i_callback_pf_status_set = 'STATUS'
i_callback_user_command = 'USER_COMMAND'
i_callback_top_of_page = 'TOP_OF_PAGE'
i_grid_title = i_title_vbak
I_GRID_SETTINGS =
is_layout = alv_layout
it_fieldcat = i_fieldcat[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT = wa_sort1
IT_FILTER =
IS_SEL_HIDE =
i_default = 'ZLAY1'
i_save = 'A'
is_variant = i_variant
it_events = v_events
tables
t_outtab = it_vbak
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
endform. "display_alv_report
&----
*& Form TOP_OF_PAGE
&----
text
----
form top_of_page.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = it_listheader
i_logo = 'ENJOYSAP_LOGO'
I_END_OF_LIST_GRID = 'TOP_OF_PAGE'.
.
endform. "TOP_OF_PAGE
&----
*& Form USER_COMMAND
&----
form user_command using r_ucomm like sy-ucomm
rs_selfield type slis_selfield.
case r_ucomm.
when '&IC1'.
if rs_selfield-fieldname = 'VBELN'.
read table it_vbak into wa_vbak index rs_selfield-tabindex.
refresh i_fieldcat.
perform build_fieldcatlog_vbap.
perform event_call_vbap.
perform populate_event_vbap.
perform data_retrieval_vbap.
perform build_listheader using it_listheader.
perform display_alv_vbap.
elseif rs_selfield-fieldname = 'MATNR'.
set parameter id 'MAT' field mara-matnr.
call transaction 'ZCHANG' and skip first screen.
endif.
when 'SAVE'.
loop at it_vbak into wa_vbak.
modify it_vbak from wa_vbak.
endloop.
endcase.
endform. "user_command
&----
*& Form BUILD_FIELDCATLOG_VBAP
&----
text
----
form build_fieldcatlog_vbap.
wa_fieldcat-tabname = 'IT_VBAP'.
wa_fieldcat-fieldname = 'VBELN'.
wa_fieldcat-seltext_m = 'SALES DNO.'.
wa_fieldcat-emphasize = 'C110'.
append wa_fieldcat to i_fieldcat.
clear wa_fieldcat.
wa_fieldcat-tabname = 'IT_VBAP'.
wa_fieldcat-fieldname = 'POSNR'.
wa_fieldcat-seltext_m = 'ITEM'.
wa_fieldcat-emphasize = 'C210'.
append wa_fieldcat to i_fieldcat.
clear wa_fieldcat.
wa_fieldcat-tabname = 'IT_VBAP'.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-seltext_m = 'MATERIAL NO.'.
wa_fieldcat-emphasize = 'C310'.
wa_fieldcat-edit = 'X'.
append wa_fieldcat to i_fieldcat.
clear wa_fieldcat.
wa_fieldcat-tabname = 'IT_VBAP'.
wa_fieldcat-fieldname = 'MATWA'.
wa_fieldcat-seltext_m = 'MATERIAL'.
wa_fieldcat-emphasize = 'C410'.
wa_fieldcat-edit = 'X'.
append wa_fieldcat to i_fieldcat.
clear wa_fieldcat.
endform. "BUILD_FIELDCATLOG_VBAP
&----
*& Form event_call_vbap
&----
we get all events - TOP OF PAGE or USER COMMAND in table v_events
----
form event_call_vbap.
call function 'REUSE_ALV_EVENTS_GET'
exporting
i_list_type = 0
importing
et_events = v_events
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2
.
if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
endform. "event_call_VBAP
&----
*& Form POPULATE_EVENT
&----
Events populated for TOP OF PAGE & USER COMAND
----
form populate_event_vbap.
read table v_events into wa_event with key name = 'TOP_OF_PAGE'.
if sy-subrc eq 0.
wa_event-form = 'TOP_OF_PAGE'.
modify v_events from wa_event transporting form where name = wa_event-form.
endif.
endform. "POPULATE_EVENT
&----
*& Form TOP_OF_PAGE
&----
text
----
form f_top_of_page.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = it_listheader
i_logo =
I_END_OF_LIST_GRID =
.
endform. "TOP_OF_PAGE
&----
*& Form USER_COMMAND
&----
*retreiving values from the database table VBAP
form data_retrieval_vbap.
select vbeln posnr matnr matwa from vbap into table it_vbap. " WHERE VBELN = P_VBELN.
endform.
form build_listheader_vbap using i_listheader type slis_t_listheader.
data: hline1 type slis_listheader.
hline1-typ = 'H'.
hline1-info = 'CHECKING PGM'.
endform.
form display_alv_vbap.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
i_callback_program = v_repid
i_callback_pf_status_set = 'GUI_STAT'
I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND'
i_callback_top_of_page = 'TOP_OF_PAGE'
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
i_grid_title = i_title_vbap
I_GRID_SETTINGS =
IS_LAYOUT = ALV_LAYOUT
it_fieldcat = i_fieldcat[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT =
i_save = 'A'
IS_VARIANT =
it_events = v_events
tables
t_outtab = it_vbap
exceptions
program_error = 1
others = 2
.
if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
endform.
.
2008 Jul 02 7:55 AM
Hi,
Refer below code
&----
*& Report ZGRIR
*&
&----
*&
*&
&----
REPORT zgrir
NO STANDARD PAGE HEADING.
----
TABLES *
----
TABLES : bsis. "Accounting: Secondary Index for G/L Accounts
----
TYPE-POOL *
----
TYPE-POOLS : slis. "Global types for generic cunning building blocks
----
CONSTANTS *
----
CONSTANTS : c_top_of_page(15) TYPE c VALUE 'SUB_TOP_OF_PAGE'.
----
TYPES *
----
TYPES : BEGIN OF t_bsis,
bukrs TYPE bukrs,
zuonr TYPE dzuonr,
gjahr TYPE gjahr,
belnr TYPE belnr_d,
budat TYPE budat,
bldat TYPE bldat,
blart TYPE blart,
shkzg TYPE shkzg,
dmbtr TYPE dmbtr,
xref3 TYPE xref3,
mblnr TYPE mblnr,
ebeln TYPE ebeln,
ebelp TYPE ebelp,
txz01 TYPE txz01,
menge TYPE menge_d,
mblnr1 TYPE mblnr,
mjahr TYPE mjahr,
lfpos TYPE lfpos,
lifnr TYPE lifnr,
name1 TYPE name1_gp,
END OF t_bsis,
BEGIN OF t_bkpf,
belnr TYPE belnr_d,
gjahr TYPE gjahr,
awkey TYPE awkey,
END OF t_bkpf,
BEGIN OF t_mseg,
mblnr TYPE mblnr,
mjahr TYPE mjahr,
lifnr TYPE elifn,
erfmg TYPE erfmg,
ebeln TYPE bstnr,
ebelp TYPE ebelp,
lfpos TYPE lfpos,
txz01 TYPE txz01,
END OF t_mseg,
BEGIN OF t_mkpf,
mblnr TYPE mblnr,
mjahr TYPE mjahr,
usnam TYPE usnam,
END OF t_mkpf,
BEGIN OF t_lfa1,
lifnr TYPE lifnr,
name1 TYPE name1_gp,
END OF t_lfa1,
BEGIN OF t_ekpo,
ebeln TYPE ebeln,
ebelp TYPE ebelp,
txz01 TYPE txz01,
END OF t_ekpo,
BEGIN OF t_ekbe,
ebeln TYPE ebeln,
ebelp TYPE ebelp,
belnr TYPE mblnr,
menge TYPE menge_d,
END OF t_ekbe,
BEGIN OF t_bsik,
bukrs TYPE bukrs,
lifnr TYPE lifnr,
gjahr TYPE gjahr,
belnr TYPE belnr_d,
END OF t_bsik,
BEGIN OF t_final,
blart TYPE blart,
belnr TYPE belnr_d,
bldat TYPE bldat,
budat TYPE budat,
lifnr TYPE lifnr,
name1 TYPE name1,
xref3 TYPE xref3,
zuonr TYPE dzuonr,
dmbtr TYPE dmbtr,
ebeln TYPE ebeln,
txz01 TYPE txz01,
erfmg TYPE erfmg,
menge TYPE menge_d,
mblnr TYPE mblnr,
END OF t_final.
----
Work Areas *
----
DATA : wa_bsis TYPE t_bsis,
wa_bkpf TYPE t_bkpf,
wa_mseg TYPE t_mseg,
wa_mkpf TYPE t_mkpf,
wa_lfa1 TYPE t_lfa1,
wa_dtlfa1 TYPE t_lfa1,
wa_ekpo TYPE t_ekpo,
wa_ekbe TYPE t_ekbe,
wa_bsik TYPE t_bsik,
wa_final TYPE t_final,
wa_layout TYPE slis_layout_alv.
----
Internal tables *
----
DATA : it_bsis TYPE STANDARD TABLE OF t_bsis,
it_bkpf TYPE STANDARD TABLE OF t_bkpf,
it_mseg TYPE STANDARD TABLE OF t_mseg,
it_mkpf TYPE STANDARD TABLE OF t_mkpf,
it_lfa1 TYPE STANDARD TABLE OF t_lfa1,
it_dtlfa1 TYPE STANDARD TABLE OF t_lfa1,
it_ekpo TYPE STANDARD TABLE OF t_ekpo,
it_ekbe TYPE STANDARD TABLE OF t_ekbe,
it_bsik TYPE STANDARD TABLE OF t_bsik,
it_final TYPE STANDARD TABLE OF t_final,
it_events TYPE slis_t_event,
it_header TYPE slis_t_listheader,
it_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
----
PARAMETERS & SELECT-OPTIONS *
----
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
PARAMETERS : p_bukrs LIKE bsis-bukrs OBLIGATORY DEFAULT '1000',
p_hkont LIKE bsis-hkont OBLIGATORY.
SELECT-OPTIONS : s_blart FOR bsis-blart,
s_budat FOR bsis-budat OBLIGATORY.
SELECTION-SCREEN END OF BLOCK blk1.
----
START-OF-SELECTION *
----
START-OF-SELECTION.
PERFORM sub_read_bsis.
PERFORM sub_read_bkpf.
PERFORM sub_read_mseg.
PERFORM sub_read_mkpf.
PERFORM sub_read_lfa1.
PERFORM sub_read_ekpo.
PERFORM sub_read_ekbe.
PERFORM sub_read_bsik.
PERFORM sub_read_dtlfa1.
PERFORM sub_collect_data.
----
END-OF-SELECTION *
----
END-OF-SELECTION.
*--This perform creates the ALV events
PERFORM sub_create_events.
PERFORM sub_field_catalog.
PERFORM sub_display_data.
&----
*& Form sub_read_bsis
&----
text
----
FORM sub_read_bsis .
*--Local Variables
DATA : lv_index LIKE sy-tabix.
SELECT bukrs
zuonr
gjahr
belnr
budat
bldat
blart
shkzg
dmbtr
xref3
FROM bsis
INTO CORRESPONDING FIELDS OF TABLE it_bsis
WHERE bukrs EQ p_bukrs
AND hkont EQ p_hkont
AND blart IN s_blart
AND budat IN s_budat.
IF sy-subrc EQ 0.
SORT it_bsis BY zuonr belnr.
ENDIF.
LOOP AT it_bsis INTO wa_bsis.
lv_index = sy-tabix.
wa_bsis-mblnr = wa_bsis-xref3+4(10).
wa_bsis-lfpos = wa_bsis-xref3+14(4).
wa_bsis-ebeln = wa_bsis-zuonr+0(10).
wa_bsis-ebelp = wa_bsis-zuonr+10(5).
MODIFY it_bsis FROM wa_bsis INDEX lv_index
TRANSPORTING mblnr lfpos ebeln ebelp.
CLEAR : wa_bsis.
ENDLOOP.
ENDFORM. " sub_read_bsis
&----
*& Form SUB_READ_BKPF
&----
text
----
FORM sub_read_bkpf .
*--Local Variables
DATA : lv_index LIKE sy-tabix.
IF NOT it_bsis[] IS INITIAL.
SELECT belnr
gjahr
awkey
FROM bkpf
INTO TABLE it_bkpf
FOR ALL ENTRIES IN it_bsis
WHERE bukrs EQ it_bsis-bukrs
AND belnr EQ it_bsis-belnr
AND gjahr EQ it_bsis-gjahr.
IF sy-subrc EQ 0.
SORT it_bkpf BY belnr gjahr.
ENDIF.
ENDIF.
SORT it_bsis BY belnr gjahr.
IF NOT it_bsis[] IS INITIAL.
LOOP AT it_bsis INTO wa_bsis.
lv_index = sy-tabix.
CLEAR : wa_bkpf.
READ TABLE it_bkpf INTO wa_bkpf WITH KEY belnr = wa_bsis-belnr
gjahr = wa_bsis-gjahr
BINARY SEARCH.
IF sy-subrc EQ 0.
wa_bsis-mblnr1 = wa_bkpf-awkey+0(10).
ENDIF.
MODIFY it_bsis FROM wa_bsis INDEX lv_index
TRANSPORTING mblnr1.
CLEAR : wa_bkpf,
wa_bsis.
ENDLOOP.
ENDIF.
ENDFORM. " SUB_READ_BKPF
&----
*& Form sub_read_mseg
&----
text
----
FORM sub_read_mseg .
*--Local Variables
DATA : lv_index LIKE sy-tabix.
IF NOT it_bsis[] IS INITIAL.
LOOP AT it_bsis INTO wa_bsis.
lv_index = sy-tabix.
wa_bsis-mjahr = wa_bsis-budat+0(4).
MODIFY it_bsis FROM wa_bsis INDEX lv_index
TRANSPORTING mjahr.
CLEAR : wa_bsis.
ENDLOOP.
SELECT mblnr
mjahr
lifnr
erfmg
ebeln
ebelp
lfpos
FROM mseg
INTO CORRESPONDING FIELDS OF TABLE it_mseg
FOR ALL ENTRIES IN it_bsis
WHERE mblnr EQ it_bsis-mblnr
AND mjahr EQ it_bsis-mjahr.
IF sy-subrc EQ 0.
SORT it_mseg BY mblnr mjahr lfpos.
ENDIF.
ENDIF.
SORT it_bsis BY mblnr mjahr lfpos.
IF NOT it_mseg[] IS INITIAL.
LOOP AT it_bsis INTO wa_bsis.
lv_index = sy-tabix.
CLEAR : wa_mseg.
READ TABLE it_mseg INTO wa_mseg WITH KEY mblnr = wa_bsis-mblnr
mjahr = wa_bsis-mjahr
lfpos = wa_bsis-lfpos
BINARY SEARCH.
IF sy-subrc EQ 0.
wa_bsis-ebeln = wa_mseg-ebeln.
wa_bsis-ebelp = wa_mseg-ebelp.
ENDIF.
MODIFY it_bsis FROM wa_bsis INDEX lv_index
TRANSPORTING ebeln ebelp.
CLEAR : wa_bsis,
wa_mseg.
ENDLOOP.
ENDIF.
ENDFORM. " sub_read_mseg
&----
*& Form sub_read_mkpf
&----
text
----
FORM sub_read_mkpf .
IF NOT it_bsis[] IS INITIAL.
SELECT mblnr
mjahr
usnam
FROM mkpf
INTO TABLE it_mkpf
FOR ALL ENTRIES IN it_bsis
WHERE mblnr EQ it_bsis-mblnr
AND mjahr EQ it_bsis-mjahr.
IF sy-subrc EQ 0.
SORT it_mkpf BY mblnr mjahr.
ENDIF.
ENDIF.
ENDFORM. " sub_read_mkpf
&----
*& Form sub_read_lfa1
&----
text
----
FORM sub_read_lfa1 .
IF NOT it_mseg[] IS INITIAL.
SELECT lifnr
name1
FROM lfa1
INTO TABLE it_lfa1
FOR ALL ENTRIES IN it_mseg
WHERE lifnr EQ it_mseg-lifnr.
IF sy-subrc EQ 0.
SORT it_lfa1 BY lifnr.
ENDIF.
ENDIF.
ENDFORM. " sub_readǝlfa1
&----
*& Form sub_read_ekpo
&----
text
----
FORM sub_read_ekpo .
*--Local Variables
DATA : lv_index LIKE sy-tabix.
IF NOT it_mseg[] IS INITIAL.
SELECT ebeln
ebelp
txz01
FROM ekpo
INTO TABLE it_ekpo
FOR ALL ENTRIES IN it_mseg
WHERE ebeln EQ it_mseg-ebeln
AND ebelp EQ it_mseg-ebelp.
IF sy-subrc EQ 0.
SORT it_ekpo BY ebeln ebelp.
ENDIF.
SORT it_mseg BY ebeln ebelp.
LOOP AT it_mseg INTO wa_mseg.
lv_index = sy-tabix.
CLEAR : wa_ekpo.
READ TABLE it_ekpo INTO wa_ekpo WITH KEY ebeln = wa_mseg-ebeln
ebelp = wa_mseg-ebelp
BINARY SEARCH.
IF sy-subrc EQ 0.
wa_mseg-txz01 = wa_ekpo-txz01.
ENDIF.
MODIFY it_mseg FROM wa_mseg INDEX lv_index
TRANSPORTING txz01.
CLEAR : wa_mseg,
wa_ekpo.
ENDLOOP.
ENDIF.
ENDFORM. " sub_read_ekpo
&----
*& Form SUB_READ_EKBE
&----
text
----
FORM sub_read_ekbe .
*--Local Variables
DATA : lv_index LIKE sy-tabix.
IF NOT it_bsis[] IS INITIAL.
SELECT ebeln
ebelp
belnr
menge
FROM ekbe
INTO TABLE it_ekbe
FOR ALL ENTRIES IN it_bsis
WHERE ebeln EQ it_bsis-ebeln
AND ebelp EQ it_bsis-ebelp
AND belnr EQ it_bsis-mblnr1
AND vgabe EQ '2'.
IF sy-subrc EQ 0.
SORT it_ekbe BY ebeln ebelp belnr.
ENDIF.
SORT it_bsis BY ebeln ebelp mblnr1.
LOOP AT it_bsis INTO wa_bsis.
lv_index = sy-tabix.
CLEAR : wa_ekpo.
READ TABLE it_ekpo INTO wa_ekpo WITH KEY ebeln = wa_bsis-ebeln
ebelp = wa_bsis-ebelp
BINARY SEARCH.
IF sy-subrc EQ 0.
wa_bsis-txz01 = wa_ekpo-txz01.
ENDIF.
CLEAR : wa_ekbe.
READ TABLE it_ekbe INTO wa_ekbe WITH KEY ebeln = wa_bsis-ebeln
ebelp = wa_bsis-ebelp
belnr = wa_bsis-mblnr1
BINARY SEARCH.
IF sy-subrc EQ 0.
wa_bsis-menge = wa_ekbe-menge.
ENDIF.
MODIFY it_bsis FROM wa_bsis INDEX lv_index
TRANSPORTING txz01 menge.
CLEAR : wa_bsis,
wa_ekpo.
ENDLOOP.
ENDIF.
ENDFORM. " SUB_READ_EKBE
&----
*& Form sub_read_bsik
&----
text
----
FORM sub_read_bsik .
*--Local Variables
DATA : lv_index LIKE sy-tabix.
IF NOT it_bsis[] IS INITIAL.
SELECT bukrs
lifnr
gjahr
belnr
FROM bsik
INTO TABLE it_bsik
FOR ALL ENTRIES IN it_bsis
WHERE bukrs EQ it_bsis-bukrs
AND gjahr EQ it_bsis-gjahr
AND belnr EQ it_bsis-belnr.
IF sy-subrc EQ 0.
SORT it_bsik BY belnr gjahr.
ENDIF.
SORT it_bsis BY belnr gjahr.
LOOP AT it_bsis INTO wa_bsis.
lv_index = sy-tabix.
CLEAR : wa_bsik.
READ TABLE it_bsik INTO wa_bsik WITH KEY belnr = wa_bsis-belnr
gjahr = wa_bsis-gjahr
BINARY SEARCH.
IF sy-subrc EQ 0.
wa_bsis-lifnr = wa_bsik-lifnr.
ENDIF.
MODIFY it_bsis FROM wa_bsis INDEX lv_index
TRANSPORTING lifnr.
CLEAR : wa_bsis,
wa_bsik.
ENDLOOP.
ENDIF.
ENDFORM. " sub_read_bsik
&----
*& Form sub_read_dtlfa1
&----
text
----
FORM sub_read_dtlfa1 .
*--Local Variables
DATA : lv_index LIKE sy-tabix.
IF NOT it_bsis[] IS INITIAL.
SELECT lifnr
name1
FROM lfa1
INTO TABLE it_dtlfa1
FOR ALL ENTRIES IN it_bsis
WHERE lifnr EQ it_bsis-lifnr.
IF sy-subrc EQ 0.
SORT it_dtlfa1 BY lifnr.
ENDIF.
SORT it_bsis BY lifnr.
LOOP AT it_bsis INTO wa_bsis.
lv_index = sy-tabix.
CLEAR : wa_dtlfa1.
READ TABLE it_dtlfa1 INTO wa_dtlfa1 WITH KEY lifnr = wa_bsis-lifnr
BINARY SEARCH.
IF sy-subrc EQ 0.
wa_bsis-name1 = wa_dtlfa1-name1.
ENDIF.
MODIFY it_bsis FROM wa_bsis INDEX lv_index
TRANSPORTING name1.
CLEAR : wa_bsis,
wa_dtlfa1.
ENDLOOP.
ENDIF.
ENDFORM. " sub_read_dtlfa1
&----
*& Form sub_collect_data
&----
text
----
FORM sub_collect_data .
*--Local Variables
DATA : lv_index LIKE sy-tabix.
SORT it_bsis BY mblnr gjahr ebeln ebelp.
SORT it_mseg BY mblnr mjahr ebeln ebelp.
IF NOT it_bsis[] IS INITIAL.
LOOP AT it_bsis INTO wa_bsis.
wa_final-blart = wa_bsis-blart.
wa_final-belnr = wa_bsis-belnr.
wa_final-bldat = wa_bsis-bldat.
wa_final-budat = wa_bsis-budat.
wa_final-xref3 = wa_bsis-xref3.
wa_final-zuonr = wa_bsis-zuonr.
wa_final-ebeln = wa_bsis-ebeln.
wa_final-txz01 = wa_bsis-txz01.
wa_final-lifnr = wa_bsis-lifnr.
IF wa_bsis-shkzg EQ 'H'.
wa_final-dmbtr = wa_bsis-dmbtr * ( -1 ).
ELSE.
wa_final-dmbtr = wa_bsis-dmbtr.
ENDIF.
IF wa_bsis-blart EQ 'RE'.
wa_final-menge = wa_bsis-menge.
ENDIF.
CLEAR : wa_mseg.
READ TABLE it_mseg INTO wa_mseg WITH KEY mblnr = wa_bsis-mblnr
mjahr = wa_bsis-mjahr
ebeln = wa_bsis-ebeln
ebelp = wa_bsis-ebelp
BINARY SEARCH.
IF sy-subrc EQ 0.
wa_final-lifnr = wa_mseg-lifnr.
wa_final-txz01 = wa_mseg-txz01.
IF wa_bsis-blart EQ 'WE'.
wa_final-erfmg = wa_mseg-erfmg.
ENDIF.
IF wa_bsis-ebeln IS INITIAL.
wa_final-ebeln = wa_mseg-ebeln.
ENDIF.
ENDIF.
IF wa_bsis-blart EQ 'WE'.
wa_final-mblnr = wa_bsis-mblnr.
ENDIF.
APPEND wa_final TO it_final.
CLEAR : wa_bsis,
wa_final,
wa_mseg,
wa_mkpf.
ENDLOOP.
ENDIF.
SORT it_final BY lifnr .
IF NOT it_final[] IS INITIAL.
LOOP AT it_final INTO wa_final.
lv_index = sy-tabix.
CLEAR : wa_lfa1.
READ TABLE it_lfa1 INTO wa_lfa1 WITH KEY lifnr = wa_final-lifnr
BINARY SEARCH.
IF sy-subrc EQ 0.
wa_final-name1 = wa_lfa1-name1.
ELSE.
CLEAR : wa_dtlfa1.
READ TABLE it_dtlfa1 INTO wa_dtlfa1 WITH KEY lifnr = wa_final-lifnr
BINARY SEARCH.
IF sy-subrc EQ 0.
wa_final-name1 = wa_dtlfa1-name1.
ENDIF.
ENDIF.
MODIFY it_final FROM wa_final INDEX lv_index
TRANSPORTING name1.
CLEAR : wa_final,
wa_lfa1.
ENDLOOP.
ENDIF.
ENDFORM. " sub_collect_data
&----
*& Form sub_create_events *
&----
This form will display the ALV Events *
----
FORM sub_create_events .
*--Local Work Area
DATA: lwa_event TYPE slis_alv_event. "Work area for Events
*--Call Function to display the events for the ALV
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 1
IMPORTING
et_events = it_events.
*--Sort by Name
SORT it_events BY name.
*--Clear
CLEAR lwa_event.
READ TABLE it_events INTO lwa_event WITH KEY name = slis_ev_top_of_page
BINARY SEARCH.
IF sy-subrc = 0.
MOVE c_top_of_page TO lwa_event-form.
MODIFY it_events FROM lwa_event TRANSPORTING form WHERE
name = slis_ev_top_of_page.
ENDIF.
*--Clear
CLEAR : lwa_event.
ENDFORM. "sub_create_events
&----
*& Form sub_top_of_page *
&----
This form is to build the Page Header *
----
FORM sub_top_of_page .
*--Local Variable
DATA : lv_title(120) TYPE c, " Title
lv_blart(30) TYPE c,
lv_date(30) TYPE c,
lv_bdate1(10) TYPE c,
lv_bdate2(10) TYPE c,
lv_hkont(10) TYPE c.
*--Local Work Area
DATA : lwa_line TYPE slis_listheader. " Hold list header
WRITE : p_hkont TO lv_hkont.
SHIFT lv_hkont LEFT DELETING LEADING '0'.
*--Title Display
lwa_line-typ = 'H'. " header
lv_title = sy-title.
lwa_line-info = lv_title.
APPEND lwa_line TO it_header.
CLEAR lwa_line.
*--Compnay code
lwa_line-typ = 'S'. " Item
WRITE: p_bukrs TO lv_month.
lwa_line-key = text-017.
lwa_line-info = p_bukrs.
APPEND lwa_line TO it_header.
CLEAR lwa_line.
*--GL account
lwa_line-typ = 'S'. " Item
WRITE: p_bud TO lv_bud.
lwa_line-key = text-018.
lwa_line-info = lv_hkont.
APPEND lwa_line TO it_header.
CLEAR lwa_line.
IF NOT s_blart[] IS INITIAL.
IF NOT s_blart-high IS INITIAL.
CONCATENATE s_blart-low 'to' s_blart-high INTO lv_blart SEPARATED BY space.
*--Document type
lwa_line-typ = 'S'. " Item
WRITE: p_bud TO lv_bud.
lwa_line-key = text-019.
lwa_line-info = lv_blart.
ELSE.
*--Document type
lwa_line-typ = 'S'. " Item
WRITE: p_bud TO lv_bud.
lwa_line-key = text-019.
lwa_line-info = s_blart-low.
ENDIF.
ENDIF.
APPEND lwa_line TO it_header.
CLEAR: lwa_line.
IF NOT s_budat-high IS INITIAL.
WRITE: s_budat-low TO lv_bdate1.
WRITE: s_budat-high TO lv_bdate2.
CONCATENATE lv_bdate1 'to' lv_bdate2 INTO lv_date SEPARATED BY space.
*--Posting Date
lwa_line-typ = 'S'. " Item
WRITE: p_bud TO lv_bud.
lwa_line-key = text-020.
lwa_line-info = lv_date.
ELSE.
*--Posting Date
lwa_line-typ = 'S'. " Item
WRITE: s_budat-low TO lv_bdate1.
lwa_line-key = text-020.
lwa_line-info = lv_bdate1.
ENDIF.
APPEND lwa_line TO it_header.
CLEAR: lwa_line.
*--This funcation module will display the top of the page
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_header.
*--Free
FREE : it_header.
ENDFORM. "sub_top_of_page
&----
*& Form user_command
&----
text
----
-->U_COM text
----
FORM user_command USING u_com LIKE sy-ucomm
sel_field TYPE slis_selfield.
*--Local Variables
DATA : lv_belnr TYPE belnr_d,
lv_bukrs TYPE bukrs,
lv_gjahr TYPE gjahr.
IF sel_field-fieldname EQ 'BELNR'.
READ TABLE it_bsis INTO wa_bsis WITH KEY belnr = sel_field-value.
IF sy-subrc EQ 0.
lv_belnr = wa_bsis-belnr.
lv_bukrs = wa_bsis-bukrs.
lv_gjahr = wa_bsis-gjahr.
ENDIF.
CASE u_com.
WHEN '&IC1'.
SELECT SINGLE belnr
bukrs
gjahr
FROM bsis
INTO (lv_belnr,lv_bukrs,lv_gjahr)
WHERE belnr EQ lv_belnr
AND bukrs EQ lv_bukrs
AND gjahr EQ lv_gjahr.
IF sy-subrc EQ 0.
SET PARAMETER ID : 'BLN' FIELD lv_belnr,
'BUK' FIELD lv_bukrs,
'GJR' FIELD lv_gjahr.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDIF.
ENDFORM. "user_command
&----
*& Form sub_field_catalog
&----
text
----
FORM sub_field_catalog .
it_fieldcat-fieldname = 'BELNR'.
it_fieldcat-seltext_m = text-003.
it_fieldcat-col_pos = 0.
it_fieldcat-outputlen = 10.
it_fieldcat-key = 'X'.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'BLART'.
it_fieldcat-seltext_m = text-002.
it_fieldcat-col_pos = 1.
it_fieldcat-outputlen = 2.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'BLDAT'.
it_fieldcat-seltext_m = text-004.
it_fieldcat-col_pos = 2.
it_fieldcat-outputlen = 8.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'BUDAT'.
it_fieldcat-seltext_m = text-005.
it_fieldcat-col_pos = 3.
it_fieldcat-outputlen = 8.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'LIFNR'.
it_fieldcat-seltext_m = text-006.
it_fieldcat-col_pos = 4.
it_fieldcat-outputlen = 10.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'NAME1'.
it_fieldcat-seltext_m = text-007.
it_fieldcat-col_pos = 5.
it_fieldcat-outputlen = 35.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'XREF3'.
it_fieldcat-seltext_m = text-008.
it_fieldcat-col_pos = 6.
it_fieldcat-outputlen = 20.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'ZUONR'.
it_fieldcat-seltext_m = text-009.
it_fieldcat-col_pos = 7.
it_fieldcat-outputlen = 18.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'DMBTR'.
it_fieldcat-seltext_m = text-010.
it_fieldcat-col_pos = 8.
it_fieldcat-outputlen = 13.
it_fieldcat-do_sum = 'X'.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'EBELN'.
it_fieldcat-seltext_m = text-011.
it_fieldcat-col_pos = 9.
it_fieldcat-outputlen = 10.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'TXZ01'.
it_fieldcat-seltext_m = text-012.
it_fieldcat-col_pos = 10.
it_fieldcat-outputlen = 40.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'ERFMG'.
it_fieldcat-seltext_m = text-013.
it_fieldcat-col_pos = 11.
it_fieldcat-outputlen = 13.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'MENGE'.
it_fieldcat-seltext_m = text-014.
it_fieldcat-col_pos = 12.
it_fieldcat-outputlen = 13.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
it_fieldcat-fieldname = 'MBLNR'.
it_fieldcat-seltext_m = text-015.
it_fieldcat-col_pos = 13.
it_fieldcat-outputlen = 10.
APPEND it_fieldcat TO it_fieldcat.
CLEAR it_fieldcat.
ENDFORM. " sub_field_catalog
&----
*& Form sub_display_data
&----
text
----
FORM sub_display_data .
*--Local Variables
DATA : lv_repid LIKE sy-repid.
*--Pass the Report name
lv_repid = sy-repid.
wa_layout-colwidth_optimize = 'X'.
IF NOT it_final[] IS INITIAL.
*--Call the function module to display the ALV report
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = lv_repid
is_layout = wa_layout
it_fieldcat = it_fieldcat[]
i_default = 'X'
i_save = 'A'
i_callback_user_command = 'USER_COMMAND'
is_variant = wa_variant
it_events = it_events
is_print = wa_print
it_sort = li_sort
TABLES
t_outtab = it_final
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ELSE.
*--No data found for the given selection criteria.
MESSAGE text-016 TYPE 'I'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " sub_display_data.
Regards,
Prashant