‎2008 May 07 10:19 AM
Hi Experts,
How can I get ALV list display using methods and classes?
Thanks in advance.
‎2008 May 07 10:21 AM
Hi,
check the standard programs in se38
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...
Regards,
Raj.
‎2008 May 07 10:25 AM
Have a look at below link:
[ALV LIST USING OO STYLE SAMPLE CODE |http://abapprogramming.blogspot.com/2007/11/alv-list-using-oo-style-sample-code.html]
1. Create a Control (for Custom and Split Containers only)
2. Instantiate a Container Object (in case of Custom and Split Containers, specify the control which is created by us in Screen painter) CREATE OBJECT
3. Instantiate an Object of the kind of report that has to be displayed (List, Grid or Tree). CREATE OBJECT . Here we need to specify the Parent Container as the so that it sits in that container.
4. Call appropriate methods to display the report on the screen. CALL METHOD ->
Example:
DATA : g_dock TYPE REF TO cl_gui_docking_container,
g_split TYPE REF TO cl_gui_easy_splitter_container,
g_cont1 TYPE REF TO cl_gui_container,
g_cont2 TYPE REF TO cl_gui_container,
g_grid1 TYPE REF TO cl_gui_alv_grid,
g_grid2 TYPE REF TO cl_gui_alv_grid.
i_mara is an internal table of structure MARA
SELECT * FROM mara INTO TABLE i_mara.
i_kna1 is an internal table of structure KNA1
SELECT * FROM kna1 INTO TABLE i_kna1.
To create an Object of type Docking Container
CREATE OBJECT g_dock
EXPORTING
side = cl_gui_docking_container=>dock_at_top
extension = 200 .
To Create an Object of Type Split Container. Here we can see that the Docking *Container Created above has been used as a parent .
CREATE OBJECT g_split
EXPORTING
parent = g_dock
orientation = 1 .
Easy Split container splits one Control into 2 manageable controls, each of them is used * to handle one GUI Container each
g_cont1 = g_split->top_left_container.
g_cont2 = g_split->bottom_right_container.
To Create an Object of type Grid . Here we can see that the Left Split Container * Created above has been used as a parent .
CREATE OBJECT g_grid1
EXPORTING
i_parent = g_cont1 .
To Create an Object of type Grid . Here we can see that the Right Split Container * Created above has been used as a parent .
CREATE OBJECT g_grid2
EXPORTING
i_parent = g_cont2 .
The method of Grid Control Object is used to display the Data.
CALL METHOD g_grid1->set_table_for_first_display
EXPORTING
i_structure_name = 'MARA'
CHANGING
it_outtab = i_mara[] .
The method of Grid Control Object is used to display the Data.
CALL METHOD g_grid2->set_table_for_first_display
EXPORTING
i_structure_name = 'KNA1'
CHANGING
it_outtab = i_kna1[] .
‎2008 May 07 10:28 AM
Hi,
Check This link:
http://www.saptechnical.com/Tutorials/ALV/ALVMainPage.htm
further you can have a look at BCALV_GRID_01 to 09 programs and DWDM transaction for more wxamples on OO abap.
Regards,
Shiva
‎2008 May 07 10:39 AM
thank u guys........but these code will give me a GRID display. But I want ALV list display.
‎2008 May 07 10:51 AM
Hi,
After grid display you can change to List display in Grid options
Regards
Dinesh
‎2008 May 07 11:11 AM
Hi Dinesh,
Can you please tell me how to change the output from grid to list.
thanks in advance.
‎2008 May 07 10:32 AM
hi,
Process to create ALV with OOPs:
Step 1:
Create a container. There are 2 type of containers: docking and custom.
Go to SE38.Create a program. Use Pattern button to create object for docking container. Click ABAP Object Pattern radio button. Click Create object radio button. Give Instance as o_docking and class as cl_gui_docking_contianer.
Step 2:
Create a grid inside the container.
Use Pattern button to create the same. Make the parent of grid as container.
Click ABAP Object Pattern radio button. Click Create object radio button. Give Instance as o_grid and class as cl_gui_alv_grid. Create object o_grid.
Step 3:
Call the function lvc_fieldcatalog_merge to get the field catalog.
Pass the structure name.
Step 4:
Call the method of grid set_table_for_first_display to display the output.
Click ABAP Object Pattern radio button. Click Call Method radio button. Give Instance as o_grid and Class/Interface as cl_gui_alv_grid and Method as set_table_for_first_display.
w_variant-report = sy-repid.
Call method o_grid->set_table_for_first_display
Step 5:
Fill the internal table itab with values by using logic.
select * from mara into table itab up to 100 rows.
call screen 9000.
Create a screen by double clicking 9000 in the above line. Fill the description for the screen. In the flow logic, uncomment the PBO and PAI module and create those in main program (for simplicity).
Step 6:
Create GUI status. Create GUI Title if required. That can be done by using display object List (CtrlShiftF5).Then in left side, right click the program and create GUI Status and Title.
Step 7:
Free the memory occupied once the BACK, EXIT or CANCEL button is clicked. Use Pattern button to call the method FREE of cl_gui_alv_grid and cl_gui_docking_container.
Click ABAP Object Pattern radio button. Click Call Method radio button. Give Instance as o_grid and Class/Interface as cl_gui_alv_grid and Method as Free.
Similarly Click Call Method radio button. Give Instance as o_docking and Class/Interface as cl_gui_docking_container and Method as Free.
Hope this helps.