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

ALV list display using OOPs concept

Former Member
0 Likes
1,651

Hi Experts,

How can I get ALV list display using methods and classes?

Thanks in advance.

7 REPLIES 7
Read only

Former Member
0 Likes
1,019

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.

Read only

Former Member
0 Likes
1,019

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[] .

Read only

Former Member
0 Likes
1,019

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

Read only

0 Likes
1,019

thank u guys........but these code will give me a GRID display. But I want ALV list display.

Read only

0 Likes
1,019

Hi,

After grid display you can change to List display in Grid options

Regards

Dinesh

Read only

0 Likes
1,019

Hi Dinesh,

Can you please tell me how to change the output from grid to list.

thanks in advance.

Read only

Former Member
0 Likes
1,019

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.