‎2007 Sep 12 6:49 AM
Hi All,
Can any one provide me sample codes/transaction for ALV programs using OOPS concepts.
Thanks,
Vinod.
‎2007 Sep 12 6:52 AM
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
‎2007 Sep 12 6:57 AM
Hi,
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...
P.S.Please award points if it helps...
‎2007 Sep 12 6:58 AM
Hi,
Try this.
<i>REPORT ZLOGO.
CONSTANTS: cntl_true TYPE i VALUE 1,
cntl_false TYPE i VALUE 0.
DATA:h_picture TYPE REF TO cl_gui_picture,
h_pic_container TYPE REF TO cl_gui_custom_container.
DATA: graphic_url(255),
graphic_refresh(1),
g_result LIKE cntl_true.
DATA: BEGIN OF graphic_table OCCURS 0,
line(255) TYPE x,
END OF graphic_table.
DATA: graphic_size TYPE i.
CALL SCREEN 100.
&----
*& Module PICTURE OUTPUT
&----
text
----
MODULE picture OUTPUT.
DATA: l_graphic_xstr TYPE xstring,
l_graphic_conv TYPE i,
l_graphic_offs TYPE i.
CALL METHOD cl_ssf_xsf_utilities=>get_bds_graphic_as_bmp
EXPORTING
p_object = 'GRAPHICS'
p_name = 'EDS'"IMAGE NAME - Image name from SE78
p_id = 'BMAP'
p_btype = 'BCOL'
RECEIVING
p_bmp = l_graphic_xstr
EXCEPTIONS
not_found = 1
OTHERS = 2.
graphic_size = XSTRLEN( l_graphic_xstr ).
CHECK graphic_size > 0.
l_graphic_conv = graphic_size.
l_graphic_offs = 0.
WHILE l_graphic_conv > 255.
graphic_table-line = l_graphic_xstr+l_graphic_offs(255).
APPEND graphic_table.
l_graphic_offs = l_graphic_offs + 255.
l_graphic_conv = l_graphic_conv - 255.
ENDWHILE.
graphic_table-line = l_graphic_xstr+l_graphic_offs(l_graphic_conv).
APPEND graphic_table.
CALL FUNCTION 'DP_CREATE_URL'
EXPORTING
type = 'image'
subtype = cndp_sap_tab_unknown " 'X-UNKNOWN'
size = graphic_size
lifetime = cndp_lifetime_transaction "'T'
TABLES
data = graphic_table
CHANGING
url = graphic_url
EXCEPTIONS
dp_invalid_parameter = 1
dp_error_put_table = 2
dp_error_general = 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.
EXIT.
ENDIF.
CREATE OBJECT h_pic_container
EXPORTING container_name = 'LOGO'.
CREATE OBJECT h_picture EXPORTING parent = h_pic_container.
CALL METHOD h_picture->load_picture_from_url
EXPORTING
url = graphic_url
IMPORTING
RESULT = g_result.
ENDMODULE.</i>
Enjoy SAP.
Pankaj Singh.
‎2007 Sep 12 7:01 AM
‎2007 Sep 12 11:09 AM