‎2008 Mar 26 11:21 AM
hi all,
can anybody give me an alv report example using OOPS concept.
regards,
uday
‎2008 Mar 26 11:24 AM
hi use the sample example..
REPORT ALV_LIGHTS.
TYPES: BEGIN OF ty_alv,
lights(1) TYPE c, "Exception, Holding the value of the lights
text(20) TYPE c, "some text
END OF ty_alv.
DATA: gs_alv TYPE ty_alv,
gt_alv TYPE TABLE OF ty_alv,
gr_alv TYPE REF TO cl_salv_table,
gr_columns TYPE REF TO cl_salv_columns_table.
START-OF-SELECTION.
gs_alv-lights = '1'. "Color red
gs_alv-text = 'RED SIGNAL'.
APPEND gs_alv TO gt_alv.
gs_alv-lights = '2'. "Color yellow
gs_alv-text = 'YELLOW SIGNAL'.
APPEND gs_alv TO gt_alv.
gs_alv-lights = '3'. "Color green
gs_alv-text = 'GREEN SIGNAL'.
APPEND gs_alv TO gt_alv.
CALL METHOD cl_salv_table=>factory
IMPORTING
r_salv_table = gr_alv
CHANGING
t_table = gt_alv. gr_columns = gr_alv->get_columns( ).
gr_columns->set_exception_column( value = 'LIGHTS' ).
CALL METHOD gr_alv->display.
check this ..
http://www.saptechnical.com/Tutorials/ALV/ColumnExcl.htm
http://www.saptechnical.com/Tutorials/ALV/ALVTreeDemo/ALVTreeDemo.htm
regards,
venkat.
Edited by: venkat appikonda on Mar 26, 2008 12:25 PM
‎2008 Mar 26 11:25 AM
Hi,
Goto SE38 give BCALV* and press F4 u will get the list of standard ALV with oops.
Regards,
Prashant
‎2008 Mar 26 11:25 AM
‎2008 Mar 26 11:26 AM
Hi,
see these examples.
example1:
DATA:t_mara TYPE TABLE OF mara.
DATA:FCAT TYPE LVC_T_FCAT.
DATA:G_CONTAINER TYPE SCRFNAME VALUE 'TABC',"TABC is *container in screen 101
GRID TYPE REF TO CL_GUI_ALV_GRID,
G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
set screen 101.
MODULE STATUS_0101 output.
IF G_CUSTOM_CONTAINER IS INITIAL.
CREATE OBJECT G_CUSTOM_CONTAINER "CREATING OBJECT FOR CUSTOM CONTAINER
EXPORTING CONTAINER_NAME = G_CONTAINER.
CREATE OBJECT GRID "CREATING GRID IN WRKBNCH SCREEN
EXPORTING I_PARENT = G_CUSTOM_CONTAINER.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_STRUCTURE_NAME = 'MARA'
CHANGING
CT_FIELDCAT = FCAT[].
SELECT * from mara into table t_mara.
CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY
CHANGING
IT_FIELDCATALOG = FCAT[]
IT_OUTTAB = t_MARA.
ENDIF.
ENDMODULE.
flow logic of screen 101:
PROCESS BEFORE OUTPUT.
MODULE STATUS_0101.
PROCESS AFTER INPUT.
***************************************************************************
example2:
DATA:G_DOCKING_CONTAINER_1 TYPE REF TO CL_GUI_DOCKING_CONTAINER,
g_grid TYPE REF TO CL_GUI_ALV_GRID.
DATA:itab like sflight occurs 0 with header line,
okcode like sy-ucomm.
select * from sflight into table itab.
set screen 101.
MODULE STATUS_0101 OUTPUT.
SET PF-STATUS 'MENU'.
SET TITLEBAR 'TIT'.
perform create_and_init_controls.
ENDMODULE. " STATUS_0101 OUTPUT
FORM create_and_init_controls .
CREATE OBJECT G_DOCKING_CONTAINER_1
EXPORTING
REPID = sy-repid
DYNNR = '101'
SIDE = cl_gui_docking_container=>DOCK_AT_top
EXTENSION = 100.
CREATE OBJECT G_GRID
EXPORTING
I_PARENT = G_DOCKING_CONTAINER_1.
CALL METHOD G_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'SFLIGHT'
CHANGING
IT_OUTTAB = itab[].
ENDFORM. " create_and_init_controls
MODULE user_command_0101 INPUT.
CASE okcode.
WHEN 'BACK'.
SET SCREEN 0.
ENDCASE.
ENDMODULE. " user_command_0101 INPUT
flow logic of screen 101:
PROCESS BEFORE OUTPUT.
MODULE STATUS_0101.
PROCESS AFTER INPUT.
MODULE user_command_0101.
rgds,
bharat.
‎2008 Mar 26 11:29 AM
Sample Alv reports with OOPS concept:
got ot se38 and check out the following for your reference:
BC_ALV_GRID_CONTROL
BC_ALVHIERGRID1_D100
BC_ALVHIERGRID1_D210
BC_ALVHIERGRID1_HIER
BC_ALV_DEMO_HTML_D0100
BC_ALV_GRID_CONTROL
BC_ALVEXCEL
BC_ALVEXCEL_D100
BC_ALVEXCEL_D210
BC_ALVEXCEL_HIER
BC_ALVEXCEL_SAP_TEMPL
BC_ALVEXCEL_SAP_TEMPL_F01
BC_ALVEXCEL_SAP_TEMPL_TOP
BC_ALVEXCELTOP
BC_ALVHIERGRID1_D100
BC_ALVHIERGRID1_D210
BC_ALVHIERGRID1_HIER
BC_ALVHIERTOP
Please take a look at the report I made using OO ALV:
code
&----
*& Report ZFI_VENDOR_PYMT_INQUIRY
*&
*& PROGRAM TYPE : Report
*& RICEF ID : 536
*& TITLE : ZFI_VENDOR_PYMT_INQUIRY
*& SAP Module : FI - AP
*& CREATION DATE : 08/09/2007
*& AUTHOR : Aris Hidalgo
*& DESIGNER : Aris Hidalgo
&----
*& DESCRIPTION :
&----
$*********************************************************************
*$ CHANGE HISTORY
*$----
*$ DATE | T-Num | Description | Reference
| | |
$*********************************************************************
REPORT zfi_vendor_pymt_inquiry
NO STANDARD PAGE HEADING
MESSAGE-ID zfi.
-
Data Dictionary Table/s *
-
TABLES: lfa1,
bkpf,
bsak,
payr,
zcheck_monitor.
CLASS lcl_event_receiver DEFINITION DEFERRED.
-
Global Data/s *
-
DATA: gt_fieldcat TYPE lvc_t_fcat,
ok_code TYPE syst-ucomm,
save_ok TYPE syst-ucomm,
g_repid TYPE syst-repid,
gs_layout TYPE lvc_s_layo,
gv_container TYPE scrfname VALUE 'CUSTOM_CONTROL',
grid1 TYPE REF TO cl_gui_alv_grid,
custom_container TYPE REF TO cl_gui_custom_container,
event_receiver TYPE REF TO lcl_event_receiver,
gs_disvariant TYPE disvariant.
-
Global Structure/s *
-
TYPES: BEGIN OF t_output,
bukrs TYPE bsak-bukrs,
lifnr TYPE lfa1-lifnr,
name1 TYPE lfa1-name1,
lnrza TYPE lfa1-name1, "Name of alternate payee
augbl TYPE bsak-augbl,
belnr TYPE bsak-belnr,
buzei TYPE bsak-buzei,
budat TYPE bsak-budat,
bldat TYPE bsak-bldat,
dmbtr TYPE bsak-dmbtr,
wrbtr TYPE bsak-wrbtr,
waers TYPE bsak-waers,
zchect TYPE zcheck_monitor-zchect,
zaldt TYPE payr-zaldt,
xblnr TYPE bsak-xblnr,
sgtxt TYPE bsak-sgtxt,
zuonr TYPE bsak-zuonr,
blart TYPE bsak-blart,
zrcdap TYPE zcheck_monitor-zrcdap,
zrlsvd TYPE zcheck_monitor-zrlsvd,
zbancd TYPE zcheck_monitor-zbancd,
usnam TYPE bkpf-usnam,
gjahr TYPE bsak-gjahr,
END OF t_output.
-
Global Internal Table/s *
-
DATA: gt_output TYPE STANDARD TABLE OF t_output.
-
Global Work Area/s *
-
DATA: wa_output LIKE LINE OF gt_output.
-
SELECTION-SCREEN *
-
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
SELECT-OPTIONS: s_bukrs FOR bsak-bukrs OBLIGATORY,
s_lifnr FOR bsak-lifnr,
s_ktokk FOR lfa1-ktokk,
s_sortl FOR lfa1-sortl.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-003.
SELECT-OPTIONS: s_belnr FOR bkpf-belnr,
s_bldat FOR bsak-bldat,
s_budat FOR bkpf-budat,
s_blart FOR bsak-blart,
s_umskz FOR bsak-umskz,
s_xblnr FOR bsak-xblnr,
s_usnam FOR bkpf-usnam,
s_gjahr FOR bsak-gjahr NO INTERVALS NO-DISPLAY.
SELECTION-SCREEN END OF BLOCK b3.
SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE text-026.
SELECT-OPTIONS: s_zchect FOR zcheck_monitor-zchect,
s_zaldt FOR payr-zaldt.
SELECTION-SCREEN END OF BLOCK b4.
SELECTION-SCREEN END OF BLOCK b1.
*/ CLASS DEFINITION/S
-
CLASS lcl_data_def DEFINITION
-
*
-
CLASS lcl_data_def DEFINITION ABSTRACT.
PROTECTED SECTION.
TYPES: BEGIN OF t_vendor_details,
bukrs TYPE bsik-bukrs,
umskz TYPE bsik-umskz,
augdt TYPE bsik-augdt,
augbl TYPE bsik-augbl,
belnr TYPE bsik-belnr,
buzei TYPE bsik-buzei,
budat TYPE bsik-budat,
bldat TYPE bsik-bldat,
xblnr TYPE bsik-xblnr,
blart TYPE bsik-blart,
dmbtr TYPE bsik-dmbtr,
wrbtr TYPE bsik-wrbtr,
waers TYPE bsik-waers,
sgtxt TYPE bsik-sgtxt,
zuonr TYPE bsik-zuonr,
shkzg TYPE bsik-shkzg,
gjahr TYPE bsik-gjahr,
empfb TYPE bsik-empfb,
ktokk TYPE lfa1-ktokk,
sortl TYPE lfa1-sortl,
lifnr TYPE lfa1-lifnr,
name1 TYPE lfa1-name1,
lnrza TYPE lfa1-lnrza,
usnam TYPE bkpf-usnam,
END OF t_vendor_details.
TYPES: BEGIN OF t_bkpf,
bukrs TYPE bkpf-bukrs,
belnr TYPE bkpf-belnr,
gjahr TYPE bkpf-gjahr,
usnam TYPE bkpf-usnam,
END OF t_bkpf.
TYPES: BEGIN OF t_alt_payee,
lifnr TYPE lfa1-lifnr,
name1 TYPE lfa1-name1,
END OF t_alt_payee.
TYPES: BEGIN OF t_payment_details,
zzbukr TYPE zcheck_monitor-zzbukr,
zvblnr TYPE zcheck_monitor-zvblnr,
zchect TYPE zcheck_monitor-zchect,
zrcdap TYPE zcheck_monitor-zrcdap,
zrlsvd TYPE zcheck_monitor-zrlsvd,
zbancd TYPE zcheck_monitor-zbancd,
END OF t_payment_details.
TYPES: BEGIN OF t_payr,
zbukr TYPE payr-zbukr,
chect TYPE payr-chect,
vblnr TYPE payr-vblnr,
zaldt TYPE payr-zaldt,
END OF t_payr.
CLASS-DATA: gt_vendor_details TYPE STANDARD TABLE OF t_vendor_details,
gt_bkpf TYPE HASHED TABLE OF t_bkpf
WITH UNIQUE KEY bukrs belnr gjahr,
gt_alt_payee TYPE HASHED TABLE OF t_alt_payee
WITH UNIQUE KEY lifnr,
gt_payment_details TYPE STANDARD TABLE OF t_payment_details,
gt_payr TYPE STANDARD TABLE OF t_payr,
gr_zvblnr TYPE RANGE OF zcheck_monitor-zvblnr,
wa_zvblnr LIKE LINE OF gr_zvblnr.
ENDCLASS. "lcl_data_def DEFINITION
-
CLASS lcl_get_data DEFINITION
-
*
-
CLASS lcl_get_data DEFINITION INHERITING FROM lcl_data_def.
PUBLIC SECTION.
METHODS: get_records,
get_altpayee_name,
get_payment_details_1,
get_payment_details_2,
process_data,
get_check_num.
PRIVATE SECTION.
TYPES: BEGIN OF t_bsas,
bukrs TYPE bsas-bukrs,
belnr TYPE bsas-belnr,
gjahr TYPE bsas-gjahr,
buzei TYPE bsas-buzei,
augbl TYPE bsas-augbl,
END OF t_bsas.
TYPES: BEGIN OF t_bsak,
bukrs TYPE bsak-bukrs,
belnr TYPE bsak-belnr,
gjahr TYPE bsak-gjahr,
buzei TYPE bsak-buzei,
augbl TYPE bsak-augbl,
lifnr TYPE bsak-lifnr,
empfb TYPE bsak-empfb,
END OF t_bsak.
TYPES: BEGIN OF t_payr_dum,
zbukr TYPE payr-zbukr,
vblnr TYPE payr-vblnr,
gjahr TYPE payr-gjahr,
chect TYPE payr-chect,
zaldt TYPE payr-zaldt,
END OF t_payr_dum.
TYPES: BEGIN OF t_alt_payee2,
lifnr TYPE lfa1-lifnr,
name1 TYPE lfa1-name1,
lnrza TYPE lfa1-lnrza,
END OF t_alt_payee2.
DATA: lt_vendor_details_dum TYPE STANDARD TABLE OF t_vendor_details,
lt_bsas TYPE SORTED TABLE OF t_bsas
WITH NON-UNIQUE KEY bukrs belnr gjahr,
lt_bsak TYPE SORTED TABLE OF t_bsak
WITH NON-UNIQUE KEY bukrs belnr gjahr,
lt_payr TYPE SORTED TABLE OF t_payr_dum
WITH NON-UNIQUE KEY zbukr vblnr gjahr,
lt_alt_payee2 TYPE HASHED TABLE OF t_alt_payee2
WITH UNIQUE KEY lifnr,
lt_alt_payee_dum LIKE lt_alt_payee2,
lt_payment_details TYPE SORTED TABLE OF t_payment_details
WITH NON-UNIQUE KEY zzbukr zvblnr zchect.
ENDCLASS. "lcl_get_data DEFINITION
-
CLASS lcl_alv_routines DEFINITION
-
*
-
CLASS lcl_alv_routines DEFINITION INHERITING FROM lcl_data_def.
PUBLIC SECTION.
METHODS: build_fieldcat FINAL.
CLASS-DATA: wa_fieldcat LIKE LINE OF gt_fieldcat.
ENDCLASS. "lcl_alv_routines DEFINITION
-
CLASS lcl_event_receiver DEFINITION
-
*
-
CLASS lcl_event_receiver DEFINITION INHERITING FROM lcl_alv_routines FINAL.
PUBLIC SECTION.
METHODS: handle_hotspot_click
FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING
e_row_id
e_column_id
es_row_no.
ENDCLASS. "lcl_event_receiver DEFINITION
*/ CLASS IMPLEMENTATIONS
-
CLASS lcl_get_data IMPLEMENTATION
-
*
-
CLASS lcl_get_data IMPLEMENTATION.
METHOD get_records
METHOD get_records.
IF s_zchect] IS INITIAL AND s_zaldt[ IS INITIAL.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = 0
text = text-031.
Get records from BSIK(Open Items)
SELECT bsik~bukrs bsik~umskz bsik~augdt bsik~augbl bsik~belnr
bsik~buzei bsik~budat bsik~bldat bsik~xblnr bsik~blart
bsik~dmbtr bsik~wrbtr bsik~waers bsik~sgtxt bsik~zuonr
bsik~shkzg bsik~gjahr bsik~empfb lfa1~ktokk lfa1~sortl
lfa1~lifnr lfa1~name1 lfa1~lnrza
FROM bsik
INNER JOIN lfa1
ON lfa1~lifnr = bsik~lifnr
INTO TABLE gt_vendor_details
WHERE bsik~mandt = sy-mandt
AND bsik~lifnr IN s_lifnr
AND bsik~bukrs IN s_bukrs
AND bsik~gjahr IN s_gjahr
AND bsik~belnr IN s_belnr
AND bsik~budat IN s_budat
AND bsik~bldat IN s_bldat
AND bsik~blart IN s_blart
AND bsik~umskz IN s_umskz
AND bsik~xblnr IN s_xblnr
AND lfa1~ktokk IN s_ktokk
AND lfa1~sortl IN s_sortl.
Get records from BSAK(Cleared Items)
SELECT bsak~bukrs bsak~umskz bsak~augdt bsak~augbl bsak~belnr
bsak~buzei bsak~budat bsak~bldat bsak~xblnr bsak~blart
bsak~dmbtr bsak~wrbtr bsak~waers bsak~sgtxt bsak~zuonr
bsak~shkzg bsak~gjahr bsak~empfb lfa1~ktokk lfa1~sortl
lfa1~lifnr lfa1~name1 lfa1~lnrza
FROM bsak
INNER JOIN lfa1
ON lfa1~lifnr = bsak~lifnr
APPENDING table gt_vendor_details
WHERE bsak~mandt = sy-mandt
AND bsak~lifnr IN s_lifnr
AND bsak~bukrs IN s_bukrs
AND bsak~gjahr IN s_gjahr
AND bsak~belnr IN s_belnr
AND bsak~budat IN s_budat
AND bsak~bldat IN s_bldat
AND bsak~blart IN s_blart
AND bsak~umskz IN s_umskz
AND bsak~xblnr IN s_xblnr
AND lfa1~ktokk IN s_ktokk
AND lfa1~sortl IN s_sortl.
ELSE.
CALL METHOD me->get_payment_details_2.
Get records from BSAK(Cleared Items)
SELECT bsak~bukrs bsak~umskz bsak~augdt bsak~augbl bsak~belnr
bsak~buzei bsak~budat bsak~bldat bsak~xblnr bsak~blart
bsak~dmbtr bsak~wrbtr bsak~waers bsak~sgtxt bsak~zuonr
bsak~shkzg bsak~gjahr bsak~empfb lfa1~ktokk lfa1~sortl
lfa1~lifnr lfa1~name1 lfa1~lnrza
FROM bsak
INNER JOIN lfa1
ON lfa1~lifnr = bsak~lifnr
INTO TABLE gt_vendor_details
FOR ALL ENTRIES IN gt_payment_details
WHERE bsak~mandt = sy-mandt
AND bsak~lifnr IN s_lifnr
AND bsak~bukrs = gt_payment_details-zzbukr
AND bsak~gjahr IN s_gjahr
AND bsak~belnr IN s_belnr
AND bsak~budat IN s_budat
AND bsak~bldat IN s_bldat
AND bsak~blart IN s_blart
AND bsak~umskz IN s_umskz
AND bsak~xblnr IN s_xblnr
AND lfa1~ktokk IN s_ktokk
AND lfa1~sortl IN s_sortl
AND bsak~augbl = gt_payment_details-zvblnr.
ENDIF.
IF NOT gt_vendor_details[] IS INITIAL.
CALL METHOD me->get_altpayee_name.
CALL METHOD me->get_payment_details_1.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = 0
text = text-032.
Process data
CALL METHOD me->process_data.
ENDIF.
ENDMETHOD. "get_records
METHOD get_altpayee_name
METHOD get_altpayee_name.
SELECT lifnr name1
FROM lfa1
INTO TABLE gt_alt_payee
FOR ALL ENTRIES IN gt_vendor_details
WHERE lifnr = gt_vendor_details-lnrza.
ENDMETHOD. "get_altpayee_name
METHOD get_payment_details_1
METHOD get_payment_details_1.
IF s_zchect] IS INITIAL AND s_zaldt[ IS INITIAL.
SELECT zzbukr zvblnr zchect zrcdap zrlsvd zbancd
FROM zcheck_monitor
INTO TABLE gt_payment_details
FOR ALL ENTRIES IN gt_vendor_details
WHERE zzbukr = gt_vendor_details-bukrs
AND zvblnr = gt_vendor_details-augbl.
DELETE gt_payment_details WHERE zvblnr IS INITIAL.
IF NOT gt_payment_details[] IS INITIAL.
SELECT zbukr chect vblnr zaldt
FROM payr
INTO TABLE gt_payr
FOR ALL ENTRIES IN gt_payment_details
WHERE zbukr = gt_payment_details-zzbukr
AND vblnr = gt_payment_details-zvblnr
AND chect = gt_payment_details-zchect
AND zaldt IN s_zaldt.
DELETE gt_payr WHERE vblnr IS INITIAL.
ENDIF.
ENDIF.
ENDMETHOD. "get_payment_details_1
METHOD get_payment_details_2
METHOD get_payment_details_2.
SELECT zzbukr zvblnr zchect
zrcdap zrlsvd zbancd
FROM zcheck_monitor
INTO TABLE gt_payment_details
WHERE zzbukr IN s_bukrs
AND zchect IN s_zchect.
IF NOT gt_payment_details[] IS INITIAL.
SELECT zbukr chect vblnr zaldt
FROM payr
INTO TABLE gt_payr
FOR ALL ENTRIES IN gt_payment_details
WHERE zbukr = gt_payment_details-zzbukr
AND vblnr = gt_payment_details-zvblnr
AND chect = gt_payment_details-zchect
AND zaldt IN s_zaldt.
ENDIF.
ENDMETHOD. "get_payment_details_2
METHOD process_data
METHOD process_data.
FIELD-SYMBOLS: <fs_vendor_details> LIKE LINE OF gt_vendor_details,
<fs_bkpf> LIKE LINE OF gt_bkpf,
<fs_alt_payee> LIKE LINE OF gt_alt_payee,
<fs_payment_details> LIKE LINE OF gt_payment_details,
<fs_payr> LIKE LINE OF gt_payr.
FIELD-SYMBOLS: <fs_vendor_details_dum> LIKE LINE OF lt_vendor_details_dum,
<fs_bsas> LIKE LINE OF lt_bsas,
<fs_bsak> LIKE LINE OF lt_bsak,
<fs_payr2> LIKE LINE OF lt_payr,
<fs_alt_payee_dum> LIKE LINE OF lt_alt_payee_dum,
<fs_alt_payee2> LIKE LINE OF lt_alt_payee2,
<fs_payment_details2> LIKE LINE OF lt_payment_details.
Limit records to check number specified
IF NOT s_zchect[] IS INITIAL.
LOOP AT gt_payment_details ASSIGNING <fs_payment_details>.
wa_zvblnr-sign = 'I'.
wa_zvblnr-option = 'EQ'.
MOVE <fs_payment_details>-zvblnr TO wa_zvblnr-low.
APPEND wa_zvblnr TO gr_zvblnr.
CLEAR wa_zvblnr.
ENDLOOP.
DELETE gt_vendor_details WHERE NOT augbl IN gr_zvblnr.
ENDIF.
Limit records to check date specified
IF NOT s_zaldt[] IS INITIAL.
REFRESH gr_zvblnr.
LOOP AT gt_payr ASSIGNING <fs_payr>.
wa_zvblnr-sign = 'I'.
wa_zvblnr-option = 'EQ'.
MOVE <fs_payr>-vblnr TO wa_zvblnr-low.
APPEND wa_zvblnr TO gr_zvblnr.
CLEAR wa_zvblnr.
ENDLOOP.
IF gr_zvblnr[] IS INITIAL.
REFRESH gt_vendor_details.
ELSE.
DELETE gt_vendor_details WHERE NOT augbl IN gr_zvblnr.
ENDIF.
ENDIF.
IF NOT gt_vendor_details[] IS INITIAL.
SELECT bukrs belnr gjahr usnam
FROM bkpf
INTO TABLE gt_bkpf
FOR ALL ENTRIES IN gt_vendor_details
WHERE bukrs = gt_vendor_details-bukrs
AND belnr = gt_vendor_details-belnr
AND gjahr = gt_vendor_details-gjahr
AND usnam IN s_usnam.
IF NOT gt_bkpf[] IS INITIAL.
lt_vendor_details_dum] = gt_vendor_details[.
DELETE lt_vendor_details_dum WHERE blart 'ZP'
AND blart 'KZ'.
Get check number(For check cutting)
IF NOT lt_vendor_details_dum[] IS INITIAL.
CALL METHOD me->get_check_num.
ENDIF.
DELETE gt_vendor_details WHERE blart = 'KZ'
OR blart = 'ZP'.
SORT gt_payment_details BY zzbukr zvblnr.
SORT gt_vendor_details BY bukrs augbl.
LOOP AT gt_vendor_details ASSIGNING <fs_vendor_details>.
Limit records to be passed according to username(If applicable)
READ TABLE gt_bkpf ASSIGNING <fs_bkpf> WITH TABLE KEY bukrs = <fs_vendor_details>-bukrs
belnr = <fs_vendor_details>-belnr
gjahr = <fs_vendor_details>-gjahr.
IF sy-subrc = 0.
MOVE <fs_bkpf>-usnam TO wa_output-usnam.
IF <fs_vendor_details>-shkzg = 'H'. "Credit
<fs_vendor_details>-dmbtr = <fs_vendor_details>-dmbtr * -1.
<fs_vendor_details>-wrbtr = <fs_vendor_details>-wrbtr * -1.
ENDIF.
Pass records to output table
MOVE: <fs_vendor_details>-bukrs TO wa_output-bukrs,
<fs_vendor_details>-lifnr TO wa_output-lifnr,
<fs_vendor_details>-name1 TO wa_output-name1,
<fs_vendor_details>-augbl TO wa_output-augbl,
<fs_vendor_details>-belnr TO wa_output-belnr,
<fs_vendor_details>-buzei TO wa_output-buzei,
<fs_vendor_details>-budat TO wa_output-budat,
<fs_vendor_details>-bldat TO wa_output-bldat,
<fs_vendor_details>-dmbtr TO wa_output-dmbtr,
<fs_vendor_details>-wrbtr TO wa_output-wrbtr,
<fs_vendor_details>-waers TO wa_output-waers,
<fs_vendor_details>-xblnr TO wa_output-xblnr,
<fs_vendor_details>-sgtxt TO wa_output-sgtxt,
<fs_vendor_details>-zuonr TO wa_output-zuonr,
<fs_vendor_details>-blart TO wa_output-blart,
<fs_vendor_details>-gjahr TO wa_output-gjahr.
Pass name of alternate payee
IF NOT <fs_vendor_details>-lnrza IS INITIAL.
READ TABLE gt_alt_payee ASSIGNING <fs_alt_payee>
WITH TABLE KEY lifnr = <fs_vendor_details>-lnrza.
IF sy-subrc = 0.
MOVE <fs_alt_payee>-name1 TO wa_output-lnrza.
ENDIF.
ELSE.
MOVE <fs_vendor_details>-empfb TO wa_output-lnrza.
ENDIF.
Pass payment details
IF NOT <fs_vendor_details>-augbl IS INITIAL.
READ TABLE gt_payment_details ASSIGNING <fs_payment_details>
WITH KEY zzbukr = <fs_vendor_details>-bukrs
zvblnr = <fs_vendor_details>-augbl
BINARY SEARCH.
IF sy-subrc = 0.
MOVE: <fs_payment_details>-zchect TO wa_output-zchect,
<fs_payment_details>-zrcdap TO wa_output-zrcdap,
<fs_payment_details>-zrlsvd TO wa_output-zrlsvd,
<fs_payment_details>-zbancd TO wa_output-zbancd.
Pass payment date
READ TABLE gt_payr ASSIGNING <fs_payr> WITH KEY zbukr = <fs_vendor_details>-bukrs
chect = wa_output-zchect
vblnr = <fs_vendor_details>-augbl.
IF sy-subrc = 0.
MOVE <fs_payr>-zaldt TO wa_output-zaldt.
ELSE.
CONTINUE.
ENDIF.
ENDIF.
Routine for moving check number if transaction is check-cutting
IF wa_output-zchect IS INITIAL.
READ TABLE lt_bsas ASSIGNING <fs_bsas> WITH TABLE KEY bukrs = <fs_vendor_details>-bukrs
belnr = <fs_vendor_details>-augbl
gjahr = <fs_vendor_details>-gjahr.
IF sy-subrc = 0.
READ TABLE lt_bsak ASSIGNING <fs_bsak> WITH TABLE KEY bukrs = <fs_bsas>-bukrs
belnr = <fs_bsas>-augbl
gjahr = <fs_bsas>-gjahr.
IF sy-subrc = 0.
IF wa_output-lnrza IS INITIAL.
READ TABLE lt_alt_payee_dum ASSIGNING <fs_alt_payee_dum> WITH TABLE KEY lifnr = <fs_bsak>-lifnr.
IF sy-subrc = 0.
READ TABLE lt_alt_payee2 ASSIGNING <fs_alt_payee2> WITH TABLE KEY lifnr = <fs_alt_payee_dum>-lnrza.
IF sy-subrc = 0.
wa_output-lnrza = <fs_alt_payee2>-name1.
ELSE.
wa_output-lnrza = <fs_bsak>-empfb.
ENDIF.
ENDIF.
ENDIF.
READ TABLE lt_payr ASSIGNING <fs_payr2> WITH TABLE KEY zbukr = <fs_bsak>-bukrs
vblnr = <fs_bsak>-augbl
gjahr = <fs_bsak>-gjahr.
IF sy-subrc = 0.
wa_output-zchect = <fs_payr2>-chect.
wa_output-zaldt = <fs_payr2>-zaldt.
READ TABLE lt_payment_details ASSIGNING <fs_payment_details2> WITH TABLE KEY zzbukr = <fs_payr2>-zbukr
zvblnr = <fs_payr2>-vblnr
zchect = <fs_payr2>-chect.
IF sy-subrc = 0.
MOVE: <fs_payment_details2>-zrcdap TO wa_output-zrcdap,
<fs_payment_details2>-zrlsvd TO wa_output-zrlsvd,
<fs_payment_details2>-zbancd TO wa_output-zbancd.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
APPEND wa_output TO gt_output.
CLEAR wa_output.
ELSE.
CONTINUE.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ENDMETHOD. "process_data
METHOD get_check_num
METHOD get_check_num.
SELECT bukrs belnr gjahr
buzei augbl
FROM bsas
INTO TABLE lt_bsas
FOR ALL ENTRIES IN lt_vendor_details_dum
WHERE bukrs = lt_vendor_details_dum-bukrs
AND belnr = lt_vendor_details_dum-augbl
AND gjahr = lt_vendor_details_dum-gjahr
AND buzei BETWEEN '001' AND '999'.
IF NOT lt_bsas[] IS INITIAL.
SELECT bukrs belnr gjahr
buzei augbl lifnr
empfb
FROM bsak
INTO TABLE lt_bsak
FOR ALL ENTRIES IN lt_bsas
WHERE bukrs = lt_bsas-bukrs
AND belnr = lt_bsas-augbl
AND gjahr = lt_bsas-gjahr
AND buzei BETWEEN '001' AND '999'.
IF NOT lt_bsak[] IS INITIAL.
Get check number and check date
SELECT zbukr vblnr gjahr chect zaldt
FROM payr
INTO TABLE lt_payr
FOR ALL ENTRIES IN lt_bsak
WHERE zbukr = lt_bsak-bukrs
AND vblnr = lt_bsak-augbl
AND gjahr = lt_bsak-gjahr.
IF NOT lt_payr[] IS INITIAL.
Get check details
SELECT zzbukr zvblnr zchect
zrcdap zrlsvd zbancd
FROM zcheck_monitor
INTO TABLE lt_payment_details
FOR ALL ENTRIES IN lt_payr
WHERE zzbukr = lt_payr-zbukr
AND zvblnr = lt_payr-vblnr
AND zchect = lt_payr-chect.
ENDIF.
SELECT lifnr name1 lnrza
FROM lfa1
INTO TABLE lt_alt_payee_dum
FOR ALL ENTRIES IN lt_bsak
WHERE lifnr = lt_bsak-lifnr.
Get alternate payee
SELECT lifnr name1 lnrza
FROM lfa1
INTO TABLE lt_alt_payee2
FOR ALL ENTRIES IN lt_alt_payee_dum
WHERE lifnr = lt_alt_payee_dum-lnrza.
ENDIF.
ENDIF.
ENDMETHOD. "get_check_num
ENDCLASS. "lcl_get_data IMPLEMENTATION
-
CLASS lcl_alv_routines IMPLEMENTATION
-
*
-
CLASS lcl_alv_routines IMPLEMENTATION.
METHOD build_fieldcat
METHOD build_fieldcat.
DEFINE m_fieldcat.
add 1 to wa_fieldcat-col_pos.
wa_fieldcat-fieldname = &1.
wa_fieldcat-tabname = &2.
wa_fieldcat-coltext = &3.
wa_fieldcat-outputlen = &4.
wa_fieldcat-fix_column = &5.
wa_fieldcat-just = &6.
wa_fieldcat-do_sum = &7.
wa_fieldcat-emphasize = &8.
wa_fieldcat-hotspot = &9.
append wa_fieldcat to gt_fieldcat.
clear wa_fieldcat.
END-OF-DEFINITION.
m_fieldcat 'BUKRS' 'gt_output' text-006 '' '' '' '' '' ''.
m_fieldcat 'LIFNR' 'gt_output' text-007 '' '' '' '' '' ''.
m_fieldcat 'NAME1' 'gt_output' text-008 '' '' '' '' '' ''.
m_fieldcat 'LNRZA' 'gt_output' text-009 '' '' '' '' '' ''.
m_fieldcat 'ZCHECT' 'gt_output' text-015 '' '' '' '' '' ''.
m_fieldcat 'ZALDT' 'gt_output' text-016 '' '' '' '' '' ''.
m_fieldcat 'DMBTR' 'gt_output' text-013 '' '' 'R' 'X' '' ''.
m_fieldcat 'WRBTR' 'gt_output' text-014 '' '' 'R' 'X' '' ''.
m_fieldcat 'AUGBL' 'gt_output' text-010 '' '' '' '' '' ''.
m_fieldcat 'BELNR' 'gt_output' text-011 '' '' '' '' 'C410' 'X'.
m_fieldcat 'BUZEI' 'gt_output' text-029 '' '' '' '' '' ''.
m_fieldcat 'BUDAT' 'gt_output' text-012 '' '' '' '' '' ''.
m_fieldcat 'BLDAT' 'gt_output' text-028 '' '' '' '' '' ''.
m_fieldcat 'WAERS' 'gt_output' text-030 '' '' '' '' '' ''.
m_fieldcat 'XBLNR' 'gt_output' text-017 '' '' '' '' '' ''.
m_fieldcat 'SGTXT' 'gt_output' text-018 '' '' '' '' '' ''.
m_fieldcat 'ZUONR' 'gt_output' text-019 '' '' '' '' '' ''.
m_fieldcat 'BLART' 'gt_output' text-020 '' '' '' '' '' ''.
m_fieldcat 'ZRCDAP' 'gt_output' text-021 '' '' '' '' '' ''.
m_fieldcat 'ZRLSVD' 'gt_output' text-022 '' '' '' '' '' ''.
m_fieldcat 'ZBANCD' 'gt_output' text-023 '' '' '' '' '' ''.
m_fieldcat 'USNAM' 'gt_output' text-024 '' '' '' '' '' ''.
ENDMETHOD. "build_fieldcat
ENDCLASS. "lcl_alv_routines IMPLEMENTATION
-
CLASS lcl_event_receiver IMPLEMENTATION
-
*
-
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_hotspot_click.
CLEAR wa_output.
READ TABLE gt_output INDEX e_row_id INTO wa_output.
IF NOT wa_output-belnr IS INITIAL
AND e_column_id = 'BELNR'.
SET PARAMETER ID 'BLN' FIELD wa_output-belnr.
SET PARAMETER ID 'BUK' FIELD wa_output-bukrs.
SET PARAMETER ID 'GJR' FIELD wa_output-gjahr.
Display accounting document
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ENDIF.
ENDMETHOD. "handle_hotspot_click
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
-
START-OF-SELECTION *
-
START-OF-SELECTION.
DATA: o_lcl_get_data TYPE REF TO lcl_get_data.
CREATE OBJECT o_lcl_get_data.
CALL METHOD o_lcl_get_data->get_records.
-
END-OF-SELECTION *
-
END-OF-SELECTION.
IF NOT gt_output[] IS INITIAL.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = 0
text = text-033.
CALL SCREEN 100.
ELSE.
MESSAGE i000 WITH text-025.
ENDIF.
&----
*& Module STATUS_0100 OUTPUT
&----
text
-
MODULE status_0100 OUTPUT.
SET PF-STATUS '100'.
SET TITLEBAR 'TITLE100'.
DATA: o_lcl_alv_routines TYPE REF TO lcl_alv_routines.
CREATE OBJECT o_lcl_alv_routines.
g_repid = sy-repid.
IF custom_container IS INITIAL.
CREATE OBJECT custom_container
EXPORTING
container_name = gv_container
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
IF sy-subrc NE 0.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = g_repid
txt2 = sy-subrc
txt1 = text-004.
ENDIF.
CREATE OBJECT grid1
EXPORTING
i_parent = custom_container.
Build fieldcatalog for initial display
CALL METHOD o_lcl_alv_routines->build_fieldcat.
Sort output table
SORT gt_output BY bukrs lifnr zchect zaldt augbl.
gs_disvariant-report = sy-repid.
Display initial window
CALL METHOD grid1->set_table_for_first_display
EXPORTING
i_structure_name = ''
is_layout = gs_layout
i_save = 'A'
is_variant = gs_disvariant
CHANGING
it_outtab = gt_output
it_fieldcatalog = gt_fieldcat.
CREATE OBJECT event_receiver.
Trigger event when user clicks hotspot field
SET HANDLER event_receiver->handle_hotspot_click FOR grid1.
ENDIF.
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = grid1.
ENDMODULE. " STATUS_0100 OUTPUT
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
-
MODULE user_command_0100 INPUT.
save_ok = ok_code.
CASE save_ok.
WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
CALL METHOD custom_container->free.
CALL METHOD cl_gui_cfw=>flush.
IF sy-subrc 0.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = g_repid
txt2 = sy-subrc
txt1 = text-005.
ENDIF.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
[/code]
Hope it helps...
please reward points if useful.
‎2008 Mar 26 11:30 AM
HI,
Goto Se38 --> Input BCALV* and press F4, you can have number of ALV programs using OO ABAP.
Thanks,
Sriram Ponna.
‎2008 Mar 26 11:34 AM
hi,
here i have take one custom control on screen 100 and its name is CC_ALV...
here is code
*&---------------------------------------------------------------------*
*& Report ZALV_OOP
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zalv_oop.
*----------------------------------------------------------------------*
* CLASS lcl_event_handler DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_handler DEFINITION .
PUBLIC SECTION .
METHODS:
*--Double-click control
handle_double_click
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column es_row_no.
PRIVATE SECTION.
ENDCLASS. "lcl_event_handler DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_event_handler IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_handler IMPLEMENTATION .
*--Handle Double Click
METHOD handle_double_click .
PERFORM handle_double_click USING e_row e_column es_row_no .
ENDMETHOD . "handle_double_click
ENDCLASS . "lcl_event_handler IMPLEMENTATION
TABLES : mseg.
DATA : BEGIN OF itab OCCURS 0,
mblnr LIKE mseg-mblnr,
matnr LIKE mseg-matnr,
menge LIKE mseg-menge,
END OF itab.
DATA : gr_alvgrid TYPE REF TO cl_gui_alv_grid,
gr_ccontainer TYPE REF TO cl_gui_custom_container,
gt_fcat TYPE lvc_t_fcat,
gs_layo TYPE lvc_s_layo.
DATA gr_event_handler TYPE REF TO lcl_event_handler .
DATA : ok_code LIKE sy-ucomm.
DATA : t_mat LIKE mara-matnr.
DATA: variant TYPE disvariant.
SELECTION-SCREEN : BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_mblnr FOR mseg-mblnr.
SELECTION-SCREEN : END OF BLOCK blk1.
START-OF-SELECTION.
SET SCREEN 100.
CREATE OBJECT gr_event_handler .
PERFORM get_data.
PERFORM dis_data.
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM get_data.
SELECT mblnr matnr menge FROM mseg INTO CORRESPONDING FIELDS OF TABLE itab
WHERE mblnr IN s_mblnr.
variant-report = sy-repid.
variant-username = sy-uname.
ENDFORM. "get_data
*&---------------------------------------------------------------------*
*& Form dis_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM dis_data.
IF gr_alvgrid IS INITIAL.
CREATE OBJECT gr_ccontainer
EXPORTING
container_name = 'CC_ALV'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT gr_alvgrid
EXPORTING
i_parent = gr_ccontainer
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
OTHERS = 5.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
PERFORM create_fcat CHANGING gt_fcat.
PERFORM create_layout CHANGING gs_layo.
CALL METHOD gr_alvgrid->set_table_for_first_display
EXPORTING
* I_BUFFER_ACTIVE =
* I_BYPASSING_BUFFER =
* I_CONSISTENCY_CHECK =
* I_STRUCTURE_NAME =
is_variant = variant
i_save = 'A'
* I_DEFAULT = 'X'
is_layout = gs_layo
* IS_PRINT =
* IT_SPECIAL_GROUPS =
* IT_TOOLBAR_EXCLUDING =
* IT_HYPERLINK =
* IT_ALV_GRAPHICS =
* IT_EXCEPT_QINFO =
* IR_SALV_ADAPTER =
CHANGING
it_outtab = itab[]
it_fieldcatalog = gt_fcat
* IT_SORT =
* IT_FILTER =
* EXCEPTIONS
* INVALID_PARAMETER_COMBINATION = 1
* PROGRAM_ERROR = 2
* TOO_MANY_LINES = 3
* others = 4
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
SET HANDLER gr_event_handler->handle_double_click FOR gr_alvgrid .
ENDIF.
ENDFORM. "dis_data
*&---------------------------------------------------------------------*
*& Form create_fcat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_GT_FCAT text
*----------------------------------------------------------------------*
FORM create_fcat CHANGING pt_fcat TYPE lvc_t_fcat.
DATA : ls_fcat TYPE lvc_s_fcat.
ls_fcat-fieldname = 'MBLNR'.
ls_fcat-coltext = 'Material Doc.'.
APPEND ls_fcat TO pt_fcat.
ls_fcat-fieldname = 'MATNR'.
ls_fcat-coltext = 'Material'.
APPEND ls_fcat TO pt_fcat.
ls_fcat-fieldname = 'MENGE'.
ls_fcat-coltext = 'Quantity'.
APPEND ls_fcat TO pt_fcat.
ENDFORM. " create_fcat
*&---------------------------------------------------------------------*
*& Form create_layout
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_GS_LAYO text
*----------------------------------------------------------------------*
FORM create_layout CHANGING ps_layo TYPE lvc_s_layo.
ps_layo-zebra = 'X'.
ENDFORM. " create_layout
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'ZALV_OOP'.
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
ok_code = sy-ucomm.
CASE ok_code.
WHEN 'BACK' OR 'UP' OR 'CANC'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Form handle_double_click
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->I_ROW text
* -->I_COLUMN text
* -->IS_ROW_NO text
*----------------------------------------------------------------------*
FORM handle_double_click USING i_row TYPE lvc_s_row
i_column TYPE lvc_s_col
is_row_no TYPE lvc_s_roid.
READ TABLE itab INDEX is_row_no-row_id .
IF sy-subrc = 0 .
IF i_column = 'MATNR'.
t_mat = itab-matnr.
SET PARAMETER ID 'MAT' FIELD t_mat.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
SET PARAMETER ID 'MAT' FIELD space.
ELSEIF i_column = 'MBLNR'.
CALL TRANSACTION 'MIGO'.
ENDIF .
ENDIF.
ENDFORM . "handle_double_click
reward if usefull...