29 Ağustos 2008 Cuma

Forming fieldcat from begin of structure ZFB03

*&---------------------------------------------------------------------*
*& Report ZFI_DOCLIST
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

"INCLUDE ZFIDOCLISTTOP . " global Data
REPORT ZFI_DOCLIST.
* INCLUDE ZFIDOCLISTO01 . " PBO-Modules
* INCLUDE ZFIDOCLISTI01 . " PAI-Modules
* INCLUDE ZFIDOCLISTF01 . " FORM-Routines

TABLES: BKPF , BSEG .

DATA: BEGIN OF gen_struct,
BUKRS LIKE BKPF-BUKRS,
GSBER LIKE BSEG-GSBER,
BELNR LIKE BKPF-BELNR,
GJAHR LIKE BKPF-GJAHR,
BLART LIKE BKPF-BLART,
BLDAT LIKE BKPF-BLDAT,
BUDAT LIKE BKPF-BUDAT,
XBLNR LIKE BKPF-XBLNR,
CPUDT LIKE BKPF-CPUDT,
USNAM LIKE BKPF-USNAM,
END OF gen_struct.


DATA: BEGIN OF doc_struct,
BUKRS LIKE BKPF-BUKRS,
GSBER LIKE BSEG-GSBER,
BELNR LIKE BKPF-BELNR,
GJAHR LIKE BKPF-GJAHR,
BLART LIKE BKPF-BLART,
BLDAT LIKE BKPF-BLDAT,
BUDAT LIKE BKPF-BUDAT,
XBLNR LIKE BKPF-XBLNR,
CPUDT LIKE BKPF-CPUDT,
USNAM LIKE BKPF-USNAM,
END OF doc_struct.


DATA: GEN_TABLE like TABLE OF gen_struct WITH HEADER LINE.
DATA: DOC_TABLE like TABLE OF doc_struct WITH HEADER LINE.

DATA: OK_CODE LIKE SY-UCOMM,
G_CONTAINER TYPE SCRFNAME VALUE 'BCALV_GRID_0100_CONT1',
GRID1 TYPE REF TO CL_GUI_ALV_GRID,
G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA: GT_FIELDCAT TYPE lvc_t_fcat.
DATA: KT_FIELDCAT TYPE KKBLO_T_FIELDCAT.
DATA: WA_KT_FIELDCAT type line of KKBLO_T_FIELDCAT.



CLASS lcl_event_handler DEFINITION .
PUBLIC SECTION .
METHODS:
*hotspot click control
handle_hotspot_click
FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING e_row_id e_column_id es_row_no.
PRIVATE SECTION.
ENDCLASS. "lcl_event_handler DEFINITION


CLASS lcl_event_handler IMPLEMENTATION .

*Handle Hotspot Click
METHOD handle_hotspot_click .
PERFORM handle_hotspot_click USING
e_row_id e_column_id es_row_no.
ENDMETHOD . "handle_hotspot_click
ENDCLASS .

DATA: gr_event_handler TYPE REF TO lcl_event_handler.

SELECTION-SCREEN BEGIN OF block ksa.
SELECT-OPTIONS: s_bukrs FOR bkpf-bukrs OBLIGATORY ,
s_belnr FOR bkpf-belnr ,
s_gsber FOR bseg-gsber ,
s_gjahr FOR bkpf-gjahr default sy-datum+0(4)
OBLIGATORY ,
s_blart FOR bkpf-blart ,
s_bldat FOR bkpf-bldat ,
s_cpudt FOR bkpf-cpudt ,
s_usnam FOR bkpf-usnam
default sy-uname,
s_budat FOR bkpf-budat ,
s_xblnr FOR bkpf-xblnr .
SELECTION-SCREEN END OF block ksa.

INITIALIZATION.

DATA new_date LIKE sy-datum.
CALL FUNCTION 'RE_ADD_MONTH_TO_DATE'
EXPORTING
months = '-1'
olddate = sy-datum
IMPORTING
newdate = new_date.

s_bldat-sign = 'I'.
s_bldat-option = 'BT'.
s_bldat-low = new_date.
s_bldat-high = sy-datum.
append s_bldat.

start-of-selection.

SELECT * INTO CORRESPONDING FIELDS OF TABLE doc_Table
FROM BKPF
WHERE bukrs in s_bukrs AND
belnr in s_belnr AND
gjahr in s_gjahr AND
blart in s_blart AND
bldat in s_bldat AND
budat in s_budat AND
xblnr in s_xblnr AND
cpudt in s_cpudt AND
usnam in s_usnam .


LOOP AT doc_Table.
SELECT SINGLE * INTO CORRESPONDING FIELDS OF gen_Table from BSEG
where bukrs = doc_Table-bukrs and
belnr = doc_Table-belnr and
gjahr = doc_Table-gjahr and
gsber in s_gsber .
if sy-subrc = 0.
gen_Table-blart = doc_Table-blart.
gen_Table-bldat = doc_Table-bldat.
gen_Table-budat = doc_Table-budat.
gen_Table-xblnr = doc_Table-xblnr.
gen_Table-CPUDT = doc_Table-CPUDT.
gen_Table-USNAM = doc_Table-USNAM.

APPEND gen_Table.
endif.
ENDLOOP.

CALL SCREEN 100.
PERFORM READ_DATA.

FORM READ_DATA.
ENDFORM.

FORM INIT_FIELDCAT .

call function 'K_KKB_FIELDCAT_MERGE'
exporting
i_callback_program = sy-repid
i_tabname = 'GEN_STRUCT'
i_inclname = sy-repid
I_BYPASSING_BUFFER = 'X'

changing
ct_fieldcat = kt_fieldcat[]
exceptions
inconsistent_interface = 1
others = 2.


loop at kt_fieldcat into wa_kt_fieldcat.
IF WA_KT_FIELDCAT-FIELDNAME = 'BELNR'.
wa_kt_fieldcat-hotspot = 'X'.
modify kt_fieldcat from wa_kt_fieldcat.
ENDIF.
endloop.

call function 'LVC_TRANSFER_FROM_KKBLO'
exporting
it_fieldcat_kkblo = Kt_fieldcat[]
importing
et_fieldcat_lvc = gt_fieldcat[].

CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_INTERNAL_TABNAME = 'GEN_TABLE'
CHANGING
ct_fieldcat = gt_fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.

ENDFORM.

FORM DISPLAY_ALV.


IF G_CUSTOM_CONTAINER IS INITIAL.
CREATE OBJECT G_CUSTOM_CONTAINER
EXPORTING CONTAINER_NAME = G_CONTAINER.
CREATE OBJECT GRID1
EXPORTING I_PARENT = G_CUSTOM_CONTAINER.
CREATE OBJECT gr_event_handler .

CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY
"EXPORTING

CHANGING
it_fieldcatalog = gt_fieldcat[]
it_outtab = gen_table[].


SET HANDLER gr_event_handler->handle_hotspot_click FOR grid1.

ENDIF.


ENDFORM.

*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'STATUS_100'.
"SET TITLEBAR 'Belge Listesi'.

PERFORM INIT_FIELDCAT.
PERFORM DISPLAY_ALV.

ENDMODULE. " STATUS_0100 OUTPUT


"INCLUDE ZFI_DOCLIST_STATUS_0100O01.

INCLUDE ZFI_DOCLIST_USER_COMMAND_01I01.

FORM handle_hotspot_click USING i_row_id TYPE lvc_s_row
i_column_id TYPE lvc_s_col
is_row_no TYPE lvc_s_roid.


READ TABLE gen_table INDEX is_row_no-row_id .


SET PARAMETER ID 'BUK' FIELD gen_table-bukrs.
SET PARAMETER ID 'BLN' FIELD gen_table-belnr.
SET PARAMETER ID 'GJR' FIELD gen_table-gjahr.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN .


ENDFORM.

Hiç yorum yok: