09-03-2007 9:51 AM
09-03-2007 10:04 AM
HI
here is your code
&----
*& Report RFTREY35 *
*& *
&----
*& *
*& *
&----
REPORT RFTREY35 NO STANDARD PAGE HEADING
LINE-SIZE 132.
TYPE-POOLS: SLIS.
DATA:
T001 LIKE T001,
FDSB LIKE FDSB,
FDSR LIKE FDSR,
FDES LIKE FDES.
internal tables:
DATA: BEGIN OF IFDSB OCCURS 500.
INCLUDE STRUCTURE FDSB.
DATA: END OF IFDSB.
DATA: BEGIN OF IFDSR OCCURS 500.
INCLUDE STRUCTURE FDSR.
DATA: END OF IFDSR.
DATA: BEGIN OF IFDES OCCURS 500.
INCLUDE STRUCTURE FDES.
DATA: END OF IFDES.
DATA: BEGIN OF IT001 OCCURS 500.
INCLUDE STRUCTURE T001.
DATA: END OF IT001.
constants:
CONSTANTS:
C_FDSB LIKE RSRD1-OBJNAME VALUE 'FDSBDIST',
C_FDSR LIKE RSRD1-OBJNAME VALUE 'FDSRDIST',
C_FDES LIKE RSRD1-OBJNAME VALUE 'FDESDIST',
C_APLID(2) TYPE C VALUE 'AI',
C_R2(2) TYPE C VALUE 'R2',
C_R3(2) TYPE C VALUE 'R3'.
global data:
DATA:
TOPCRTL TYPE I VALUE 0,
I TYPE I,
CURRENCY_BUKRS LIKE T001-WAERS,
SAPSYS LIKE C_R2.
*
DATA: BEGIN OF THEAD OCCURS 1,
TABNAME LIKE DFIES-TABNAME,
ARCHK LIKE FDES-ARCHK,
BUKRS LIKE FDSB-BUKRS,
BNKKO LIKE FDSB-BNKKO,
GRUPP LIKE FDES-GRUPP,
EBENE LIKE FDSB-EBENE,
DISPW LIKE FDSB-DISPW,
DATUM LIKE FDSB-DATUM,
AVDAT LIKE FDSB-AVDAT,
GSBER LIKE FDSB-GSBER,
DMSHB LIKE FDSB-DMSHB,
WRSHB LIKE FDSB-WRSHB,
WAERS LIKE T001-WAERS,
END OF THEAD .
DATA: FDSB_THEAD LIKE THEAD OCCURS 10000 WITH HEADER LINE.
DATA: FDSR_THEAD LIKE THEAD OCCURS 10000.
DATA: FDES_THEAD LIKE THEAD OCCURS 10000.
get data from memory.
IMPORT SAPSYS FROM MEMORY ID C_APLID.
IF SY-SUBRC <> 0.
MESSAGE E999(67) WITH TEXT-001.
ENDIF.
IMPORT IFDSB FROM MEMORY ID C_FDSB.
IF SY-SUBRC <> 0.
MESSAGE E999(67) WITH TEXT-002.
ENDIF.
IMPORT IFDSR FROM MEMORY ID C_FDSR.
IF SY-SUBRC <> 0.
MESSAGE E999(67) WITH TEXT-003.
ENDIF.
IMPORT IFDES FROM MEMORY ID C_FDES.
IF SY-SUBRC <> 0.
MESSAGE E999(67) WITH TEXT-004.
ENDIF.
leave to list-processing.
PERFORM DISPLAY_TABLES TABLES IFDSB IFDSR IFDES.
last step is to free the global memory.
FREE MEMORY ID C_APLID.
FREE MEMORY ID C_FDSB.
FREE MEMORY ID C_FDSR.
FREE MEMORY ID C_FDES.
----
FORM DISPLAY_TABLES *
----
........ *
----
--> IFDSB *
--> IFDSR *
--> IFDES *
----
FORM DISPLAY_TABLES TABLES IFDSB STRUCTURE IFDSB
IFDSR STRUCTURE IFDSR
IFDES STRUCTURE IFDES.
DATA:
ALV_NAME_THEAD TYPE SLIS_TABNAME VALUE 'THEAD',
ALV_REPID LIKE SY-REPID,
ALV_KEYINFO TYPE SLIS_KEYINFO_ALV,
ALV_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
ALV_LAYOUT TYPE SLIS_LAYOUT_ALV,
ALV_PRINT TYPE SLIS_PRINT_ALV,
ALV_SORT TYPE SLIS_T_SORTINFO_ALV,
ALV_EVENTS TYPE SLIS_T_EVENT,
ALV_VARIANT LIKE DISVARIANT.
DATA STRUC_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
DATA STRUC_SORTINFO TYPE SLIS_SORTINFO_ALV.
ALV Vorbereitung
TOPCRTL = 1.
ALV_REPID = SY-REPID.
Events
PERFORM EVENTS_BUILD CHANGING ALV_EVENTS.
Define List Layout
ALV_LAYOUT-NO_TOTALLINE = 'X'.
ALV_LAYOUT-F2CODE = 'RESU'.
ALV initialisation
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
I_CALLBACK_PROGRAM = ALV_REPID
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'.
Prepare CM tables for ALV
REFRESH THEAD.
STRUC_FIELDCAT-REF_TABNAME = 'FDSB'.
LOOP AT IFDSB.
ON CHANGE OF IFDSB-BUKRS.
PERFORM GET_CURRENCY USING IFDSB-BUKRS
CHANGING THEAD-WAERS.
ENDON.
MOVE-CORRESPONDING IFDSB TO THEAD.
THEAD-TABNAME = STRUC_FIELDCAT-REF_TABNAME.
APPEND THEAD.
ENDLOOP.
FDSB_THEAD[] = THEAD[].
STRUC_FIELDCAT-TABNAME = 'FDSB_THEAD'.
Felder
PERFORM PREPARE_ALV_FIELDCATALOG USING ALV_REPID
STRUC_FIELDCAT-TABNAME
STRUC_FIELDCAT-REF_TABNAME
CHANGING ALV_FIELDCAT.
PERFORM PREPARE_EMTY_COLUMNS TABLES FDSB_THEAD
CHANGING ALV_FIELDCAT.
Sortierung:
PERFORM SORT_BUILD USING STRUC_FIELDCAT-TABNAME
STRUC_FIELDCAT-REF_TABNAME
CHANGING ALV_SORT.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = ALV_LAYOUT
IT_FIELDCAT = ALV_FIELDCAT
I_TABNAME = STRUC_FIELDCAT-TABNAME
IT_EVENTS = ALV_EVENTS
IT_SORT = ALV_SORT
I_TEXT = TEXT-020
TABLES
T_OUTTAB = FDSB_THEAD
EXCEPTIONS
OTHERS = 4.
REFRESH THEAD.
STRUC_FIELDCAT-REF_TABNAME = 'FDSR'.
LOOP AT IFDSR.
ON CHANGE OF IFDSR-BUKRS.
PERFORM GET_CURRENCY USING IFDSR-BUKRS
CHANGING THEAD-WAERS.
ENDON.
MOVE-CORRESPONDING IFDSR TO THEAD.
THEAD-TABNAME = STRUC_FIELDCAT-REF_TABNAME.
APPEND THEAD.
ENDLOOP.
FDSR_THEAD[] = THEAD[].
STRUC_FIELDCAT-TABNAME = 'FDSR_THEAD'.
Felder
PERFORM PREPARE_ALV_FIELDCATALOG USING ALV_REPID
STRUC_FIELDCAT-TABNAME
STRUC_FIELDCAT-REF_TABNAME
CHANGING ALV_FIELDCAT.
PERFORM PREPARE_EMTY_COLUMNS TABLES FDSR_THEAD
CHANGING ALV_FIELDCAT.
Sortierung:
PERFORM SORT_BUILD USING STRUC_FIELDCAT-TABNAME
STRUC_FIELDCAT-REF_TABNAME
CHANGING ALV_SORT.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = ALV_LAYOUT
IT_FIELDCAT = ALV_FIELDCAT
I_TABNAME = STRUC_FIELDCAT-TABNAME
IT_EVENTS = ALV_EVENTS
IT_SORT = ALV_SORT
I_TEXT = TEXT-021
TABLES
T_OUTTAB = FDSR_THEAD
EXCEPTIONS
OTHERS = 4.
REFRESH THEAD.
STRUC_FIELDCAT-REF_TABNAME = 'FDES'.
LOOP AT IFDES.
ON CHANGE OF IFDES-BUKRS.
PERFORM GET_CURRENCY USING IFDES-BUKRS
CHANGING THEAD-WAERS.
ENDON.
MOVE-CORRESPONDING IFDES TO THEAD.
THEAD-TABNAME = STRUC_FIELDCAT-REF_TABNAME.
APPEND THEAD.
ENDLOOP.
FDES_THEAD[] = THEAD[].
STRUC_FIELDCAT-TABNAME = 'FDES_THEAD'.
Felder
PERFORM PREPARE_ALV_FIELDCATALOG USING ALV_REPID
STRUC_FIELDCAT-TABNAME
STRUC_FIELDCAT-REF_TABNAME
CHANGING ALV_FIELDCAT.
PERFORM PREPARE_EMTY_COLUMNS TABLES FDES_THEAD
CHANGING ALV_FIELDCAT.
Sortierung:
PERFORM SORT_BUILD USING STRUC_FIELDCAT-TABNAME
STRUC_FIELDCAT-REF_TABNAME
CHANGING ALV_SORT.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = ALV_LAYOUT
IT_FIELDCAT = ALV_FIELDCAT
I_TABNAME = STRUC_FIELDCAT-TABNAME
IT_EVENTS = ALV_EVENTS
IT_SORT = ALV_SORT
I_TEXT = TEXT-022
TABLES
T_OUTTAB = FDES_THEAD
EXCEPTIONS
OTHERS = 4.
just make the call...
ALV_PRINT-NO_PRINT_LISTINFOS = 'X'.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
EXPORTING
IS_PRINT = ALV_PRINT.
ENDFORM.
&----
*& Form GET_CURRENCY
&----
FORM GET_CURRENCY USING VALUE(BUKRS) LIKE T001-BUKRS
CHANGING VALUE(CUR) LIKE T001-WAERS.
READ TABLE IT001 INTO T001 WITH KEY BUKRS = BUKRS.
IF SY-SUBRC <> 0.
SELECT SINGLE * FROM T001 WHERE BUKRS = BUKRS.
CHECK SY-SUBRC = 0.
APPEND T001 TO IT001.
ENDIF.
CUR = T001-WAERS.
ENDFORM. " GET_CURRENCY
----
FORM TOP_OF_PAGE *
----
........ *
----
FORM TOP_OF_PAGE.
DATA:
TTOP TYPE SLIS_T_LISTHEADER,
WTOP LIKE LINE OF TTOP.
wtop-typ = 'H'.
append wtop to ttop.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = ttop.
ENDFORM.
----
FORM TOP_OF_LIST *
----
........ *
----
FORM TOP_OF_LIST.
DATA:
TTOP TYPE SLIS_T_LISTHEADER,
WTOP LIKE LINE OF TTOP.
IF TOPCRTL > 3.
TOPCRTL = 1.
ENDIF.
CASE TOPCRTL.
WHEN 1. "Tagesfinanzstatus
WTOP-INFO = TEXT-020.
TOPCRTL = TOPCRTL + 1.
WHEN 2. "kurzfristige FDispo
WTOP-INFO = TEXT-021.
TOPCRTL = TOPCRTL + 1.
WHEN 3. "Einzelposten/Avise
WTOP-INFO = TEXT-022.
TOPCRTL = TOPCRTL + 1.
WHEN OTHERS.
WTOP-INFO = TEXT-019.
ENDCASE.
WTOP-TYP = 'H'.
APPEND WTOP TO TTOP.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = TTOP.
ENDFORM.
----
FORM END_OF_LIST *
----
........ *
----
FORM END_OF_LIST.
DATA:
EOLCRTL LIKE TOPCRTL,
LINES_ITAB(10) TYPE C,
TTOP TYPE SLIS_T_LISTHEADER,
WTOP LIKE LINE OF TTOP.
EOLCRTL = TOPCRTL - 1.
CASE EOLCRTL.
WHEN 1. "Tagesfinanzstatus
WTOP-INFO = TEXT-030.
DESCRIBE TABLE IFDSB LINES LINES_ITAB.
WHEN 2. "kurzfristige FDispo
WTOP-INFO = TEXT-031.
DESCRIBE TABLE IFDSR LINES LINES_ITAB.
WHEN 3. "Einzelposten/Avise
WTOP-INFO = TEXT-032.
DESCRIBE TABLE IFDES LINES LINES_ITAB.
WHEN OTHERS.
ENDCASE.
CONDENSE LINES_ITAB NO-GAPS.
CONCATENATE WTOP-INFO LINES_ITAB INTO WTOP-INFO SEPARATED BY SPACE.
WTOP-TYP = 'H'.
APPEND WTOP TO TTOP.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = TTOP.
ENDFORM.
----
FORM EVENTS_BUILD
----
FORM EVENTS_BUILD CHANGING VALUE(T_EVENT) TYPE SLIS_T_EVENT.
DATA:
W_EVENT TYPE SLIS_ALV_EVENT.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 1
IMPORTING
ET_EVENTS = T_EVENT.
READ TABLE T_EVENT INTO W_EVENT
WITH KEY NAME = SLIS_EV_TOP_OF_PAGE.
W_EVENT-FORM = 'TOP_OF_PAGE'.
IF SY-SUBRC <> 0.
W_EVENT-NAME = SLIS_EV_TOP_OF_PAGE.
APPEND W_EVENT TO T_EVENT.
ELSE.
MODIFY T_EVENT FROM W_EVENT INDEX SY-TABIX.
ENDIF.
READ TABLE T_EVENT INTO W_EVENT
WITH KEY NAME = SLIS_EV_END_OF_LIST.
W_EVENT-FORM = 'END_OF_LIST'.
IF SY-SUBRC <> 0.
W_EVENT-NAME = SLIS_EV_END_OF_LIST.
APPEND W_EVENT TO T_EVENT.
ELSE.
MODIFY T_EVENT FROM W_EVENT INDEX SY-TABIX.
ENDIF.
READ TABLE T_EVENT INTO W_EVENT
WITH KEY NAME = SLIS_EV_TOP_OF_LIST.
W_EVENT-FORM = 'TOP_OF_LIST'.
IF SY-SUBRC <> 0.
W_EVENT-NAME = SLIS_EV_TOP_OF_LIST.
APPEND W_EVENT TO T_EVENT.
ELSE.
MODIFY T_EVENT FROM W_EVENT INDEX SY-TABIX.
ENDIF.
READ TABLE T_EVENT INTO W_EVENT
WITH KEY NAME = SLIS_EV_USER_COMMAND.
W_EVENT-FORM = 'USER_COMMAND'.
IF SY-SUBRC <> 0.
W_EVENT-NAME = SLIS_EV_USER_COMMAND.
APPEND W_EVENT TO T_EVENT.
ELSE.
MODIFY T_EVENT FROM W_EVENT INDEX SY-TABIX.
ENDIF.
ENDFORM.
&----
*& Form PREPARE_ALV_FIELDCATALOG
&----
FORM PREPARE_ALV_FIELDCATALOG USING VALUE(ALV_REPID) LIKE SY-REPID
VALUE(TABNAME) TYPE
SLIS_FIELDCAT_ALV-TABNAME
VALUE(REF_TABNAME) TYPE
SLIS_FIELDCAT_ALV-REF_TABNAME
CHANGING VALUE(T_FIELDCAT)
TYPE SLIS_T_FIELDCAT_ALV.
DATA:
STRUC_FIELCAT TYPE SLIS_FIELDCAT_ALV,
TMP_COL_POS LIKE STRUC_FIELCAT-COL_POS,
ALV_NAME_THEAD TYPE SLIS_TABNAME VALUE 'THEAD'.
RANGES:
SO_FDSB FOR DFIES-FIELDNAME.
ALV_NAME_THEAD = TABNAME.
REFRESH T_FIELDCAT.
clear struc_fielcat.
struc_fielcat-no_sum = 'X'.
struc_fielcat-col_pos = 0.
struc_fielcat-tabname = alv_name_thead.
struc_fielcat-fieldname = 'TABNAME'.
struc_fielcat-ref_tabname = 'DFIES'.
struc_fielcat-ref_fieldname = 'TABNAME'.
append struc_fielcat to t_fieldcat.
SO_FDSB-OPTION = 'EQ'.
SO_FDSB-SIGN = 'I'.
SO_FDSB-LOW = 'BUKRS'. APPEND SO_FDSB.
SO_FDSB-LOW = 'ARCHK'. APPEND SO_FDSB.
SO_FDSB-LOW = 'BNKKO'. APPEND SO_FDSB.
SO_FDSB-LOW = 'GRUPP'. APPEND SO_FDSB.
SO_FDSB-LOW = 'EBENE'. APPEND SO_FDSB.
SO_FDSB-LOW = 'DISPW'. APPEND SO_FDSB.
SO_FDSB-LOW = 'DATUM'. APPEND SO_FDSB.
SO_FDSB-LOW = 'AVDAT'. APPEND SO_FDSB.
SO_FDSB-LOW = 'GSBER'. APPEND SO_FDSB.
SO_FDSB-LOW = 'DMSHB'. APPEND SO_FDSB.
SO_FDSB-LOW = 'WRSHB'. APPEND SO_FDSB.
*
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = ALV_REPID
I_INTERNAL_TABNAME = ALV_NAME_THEAD
I_STRUCTURE_NAME = REF_TABNAME
CHANGING
CT_FIELDCAT = T_FIELDCAT
EXCEPTIONS
OTHERS = 1.
DELETE ADJACENT DUPLICATES FROM T_FIELDCAT.
delete t_fieldcat where not fieldname in so_fdsb.
STRUC_FIELCAT-NO_OUT = 'X'.
STRUC_FIELCAT-COL_POS = 0.
STRUC_FIELCAT-KEY = SPACE.
MODIFY T_FIELDCAT FROM STRUC_FIELCAT TRANSPORTING NO_OUT COL_POS
WHERE NOT FIELDNAME IN SO_FDSB.
MODIFY T_FIELDCAT FROM STRUC_FIELCAT TRANSPORTING KEY
WHERE KEY = 'X'.
LOOP AT SO_FDSB.
READ TABLE T_FIELDCAT INTO STRUC_FIELCAT
WITH KEY FIELDNAME = SO_FDSB-LOW.
IF SY-SUBRC = 0.
IF SO_FDSB-LOW <> 'ARCHK' AND SO_FDSB-LOW <> 'TABNAME'.
TMP_COL_POS = TMP_COL_POS + 1.
STRUC_FIELCAT-COL_POS = TMP_COL_POS.
ELSE.
STRUC_FIELCAT-COL_POS = 0.
ENDIF.
MODIFY T_FIELDCAT FROM STRUC_FIELCAT TRANSPORTING COL_POS
WHERE FIELDNAME = STRUC_FIELCAT-FIELDNAME.
ENDIF.
ENDLOOP.
LOOP AT SO_FDSB WHERE LOW = 'WRSHB' OR LOW = 'DMSHB'.
READ TABLE T_FIELDCAT INTO STRUC_FIELCAT
WITH KEY FIELDNAME = SO_FDSB-LOW.
IF SY-SUBRC = 0.
STRUC_FIELCAT-DO_SUM = 'X'.
MODIFY T_FIELDCAT FROM STRUC_FIELCAT TRANSPORTING DO_SUM
WHERE FIELDNAME = STRUC_FIELCAT-FIELDNAME.
ENDIF.
ENDLOOP.
STRUC_FIELCAT-NO_OUT = 'X'.
MODIFY T_FIELDCAT FROM STRUC_FIELCAT TRANSPORTING NO_OUT
WHERE COL_POS = 0.
ENDFORM. " PREPARE_ALV_FIELDCATALOG
&----
*& Form SORT_BUILD
&----
text
----
<--P_ALV_SORT text
----
FORM SORT_BUILD "using value(tabname) type slis_tabname
USING VALUE(TABNAME) TYPE SLIS_FIELDCAT_ALV-TABNAME
VALUE(REF_TABNAME) TYPE
SLIS_FIELDCAT_ALV-REF_TABNAME
CHANGING VALUE(TSORT) TYPE SLIS_T_SORTINFO_ALV.
DATA:
WSORT LIKE LINE OF TSORT,
TMP_SPOS LIKE WSORT-SPOS VALUE 1.
REFRESH TSORT.
clear wsort.
wsort-spos = tmp_spos.
tmp_spos = tmp_spos + 1.
wsort-fieldname = 'TABNAME'.
wsort-tabname = ref_tabname.
wsort-up = 'X'.
wsort-subtot = 'X'.
wsort-group = '*'.
append wsort to tsort.
IF REF_TABNAME = 'FDES'.
CLEAR WSORT.
WSORT-SPOS = TMP_SPOS.
TMP_SPOS = TMP_SPOS + 1.
WSORT-FIELDNAME = 'ARCHK'.
WSORT-TABNAME = TABNAME.
WSORT-UP = 'X'.
APPEND WSORT TO TSORT.
ENDIF.
CLEAR WSORT.
WSORT-SPOS = TMP_SPOS.
TMP_SPOS = TMP_SPOS + 1.
WSORT-FIELDNAME = 'DISPW'.
WSORT-SUBTOT = 'X'.
WSORT-TABNAME = TABNAME.
WSORT-UP = 'X'.
APPEND WSORT TO TSORT.
CLEAR WSORT.
WSORT-SPOS = TMP_SPOS.
TMP_SPOS = TMP_SPOS + 1.
WSORT-FIELDNAME = 'BUKRS'.
WSORT-TABNAME = TABNAME.
WSORT-UP = 'X'.
wsort-subtot = 'X'.
APPEND WSORT TO TSORT.
IF REF_TABNAME <> 'FDSR'.
CLEAR WSORT.
WSORT-SPOS = TMP_SPOS.
TMP_SPOS = TMP_SPOS + 1.
WSORT-FIELDNAME = 'BNKKO'.
WSORT-TABNAME = TABNAME.
WSORT-UP = 'X'.
APPEND WSORT TO TSORT.
ENDIF.
IF REF_TABNAME <> 'FDSB'.
CLEAR WSORT.
WSORT-SPOS = TMP_SPOS.
TMP_SPOS = TMP_SPOS + 1.
WSORT-FIELDNAME = 'GRUPP'.
WSORT-TABNAME = TABNAME.
WSORT-UP = 'X'.
APPEND WSORT TO TSORT.
ENDIF.
CLEAR WSORT.
WSORT-SPOS = TMP_SPOS.
TMP_SPOS = TMP_SPOS + 1.
WSORT-FIELDNAME = 'EBENE'.
WSORT-TABNAME = TABNAME.
WSORT-UP = 'X'.
APPEND WSORT TO TSORT.
ENDFORM. " SORT_BUILD
----
FORM PREPARE_EMTY_COLUMNS *
----
FORM PREPARE_EMTY_COLUMNS TABLES THEAD STRUCTURE THEAD
CHANGING VALUE(ALV_FIELDCAT) TYPE
SLIS_T_FIELDCAT_ALV.
DATA STRUC_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
LOOP AT THEAD WHERE NOT AVDAT IS INITIAL.
EXIT.
ENDLOOP.
IF SY-SUBRC <> 0.
STRUC_FIELDCAT-NO_OUT = 'X'.
MODIFY ALV_FIELDCAT FROM STRUC_FIELDCAT TRANSPORTING NO_OUT
WHERE FIELDNAME = 'AVDAT'.
ENDIF.
LOOP AT THEAD WHERE NOT GSBER IS INITIAL.
EXIT.
ENDLOOP.
IF SY-SUBRC <> 0.
STRUC_FIELDCAT-NO_OUT = 'X'.
MODIFY ALV_FIELDCAT FROM STRUC_FIELDCAT TRANSPORTING NO_OUT
WHERE FIELDNAME = 'GSBER'.
ENDIF.
LOOP AT THEAD WHERE NOT GRUPP IS INITIAL.
EXIT.
ENDLOOP.
IF SY-SUBRC <> 0.
STRUC_FIELDCAT-NO_OUT = 'X'.
MODIFY ALV_FIELDCAT FROM STRUC_FIELDCAT TRANSPORTING NO_OUT
WHERE FIELDNAME = 'GRUPP'.
ENDIF.
LOOP AT THEAD WHERE NOT BNKKO IS INITIAL.
EXIT.
ENDLOOP.
IF SY-SUBRC <> 0.
STRUC_FIELDCAT-NO_OUT = 'X'.
MODIFY ALV_FIELDCAT FROM STRUC_FIELDCAT TRANSPORTING NO_OUT
WHERE FIELDNAME = 'BNKKO'.
ENDIF.
ENDFORM.
----
FORM USER_COMMAND *
----
........ *
----
--> VALUE(UCOMM) *
--> VALUE(RS_SELFIELD) *
----
FORM USER_COMMAND USING VALUE(UCOMM) LIKE SY-UCOMM
VALUE(RS_SELFIELD) TYPE SLIS_SELFIELD.
DATA: STRUC_THEAD LIKE LINE OF THEAD.
CASE UCOMM.
WHEN 'RESU'.
CALL TRANSACTION 'FF$5' AND SKIP FIRST SCREEN.
WHEN 'STAT'.
CALL TRANSACTION 'FF7A'.
WHEN 'XFER'.
CALL TRANSACTION 'FF$L'.
WHEN 'SPOO'.
CALL TRANSACTION 'SP01' AND SKIP FIRST SCREEN.
WHEN 'SHOW'.
WHEN OTHERS.
ENDCASE.
ENDFORM.
thanks
vivekanand
09-03-2007 10:05 AM
Hi 1 more.....
&----
*& Report Z8TT_ALV *
*& *
&----
*& *
*& *
&----
REPORT Z8TT_ALV .
----
TYPE-POOLS *
----
TYPE-POOLS: SLIS.
----
TABLES *
----
TABLES: SCARR, SPFLI.
----
VARIABLES *
----
DATA: G_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
G_SORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE,
GT_PRINT TYPE SLIS_PRINT_ALV,
GS_LAYOUT TYPE SLIS_LAYOUT_ALV,
GT_EVENTS TYPE SLIS_T_EVENT,
G_PROGRAM TYPE SY-REPID,
TAB_NAME TYPE STRING,
W_TABIX TYPE STRING.
----
TYPES *
----
TYPES: BEGIN OF TY_SPFLI,
MANDT TYPE SPFLI-MANDT,
CARRID TYPE SPFLI-CARRID,
CONNID TYPE SPFLI-CONNID,
COUNTRYFR TYPE SPFLI-COUNTRYFR,
CITYFROM TYPE SPFLI-CITYFROM,
AIRPFROM TYPE SPFLI-AIRPFROM,
COUNTRYTO TYPE SPFLI-COUNTRYTO,
CITYTO TYPE SPFLI-CITYTO.
TYPES: END OF TY_SPFLI.
TYPES: BEGIN OF TY_STUFF,
TABNAME TYPE TABNAME,
TDREF TYPE REF TO DATA,
END OF TY_STUFF.
DATA T_STUFF TYPE TABLE OF TY_STUFF WITH NON-UNIQUE KEY TABNAME.
DATA: DESCR_STRUCT_REF TYPE REF TO CL_ABAP_STRUCTDESCR,
DATAREF TYPE REF TO DATA,
WA_FCAT TYPE LVC_S_FCAT,
IT_FIELDCATALOG TYPE LVC_T_FCAT.
----
FIELD-SYMBOLS *
----
FIELD-SYMBOLS: <LINE> TYPE ANY,
<FIELD> TYPE ANY,
<COMPONENT> TYPE ABAP_COMPDESCR,
<DYN_TABLE> TYPE STANDARD TABLE,
<FS> TYPE ANY,
<DYN_WA>,
<TABLE>.
----
INTERNAL TABLES *
----
DATA: T_SPFLI TYPE STANDARD TABLE OF TY_SPFLI WITH HEADER LINE,
T_SPFLI_HEADER TYPE STANDARD TABLE OF TY_SPFLI WITH HEADER LINE,
T_SPFLI_DETAIL TYPE STANDARD TABLE OF TY_SPFLI WITH HEADER LINE.
----
MACROS *
----
DEFINE CLEAN_TABLE.
CLEAR &1.
REFRESH &1.
END-OF-DEFINITION.
----
SELECTION SCREEN *
----
SELECTION-SCREEN BEGIN OF BLOCK B01 WITH FRAME TITLE TEXT-B01.
SELECT-OPTIONS:
S_CARRID FOR SCARR-CARRID.
SELECTION-SCREEN END OF BLOCK B01.
----
PRINCIPAL
----
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM GENERATE_ALV.
PERFORM GENERATE_ALV_LIST.
----
FORM GET_DATA *
----
Retrieve data *
----
FORM GET_DATA.
SELECT MANDT CARRID CONNID COUNTRYFR CITYFROM
AIRPFROM COUNTRYTO CITYTO
INTO TABLE T_SPFLI
FROM SPFLI
WHERE CARRID IN S_CARRID.
IF NOT T_SPFLI[] IS INITIAL.
T_SPFLI_HEADER[] = T_SPFLI[].
DELETE ADJACENT DUPLICATES FROM T_SPFLI_HEADER
COMPARING CARRID.
ENDIF.
ENDFORM.
&----
*& Form GENERATE_ALV *
&----
Generate the ALV *
----
FORM GENERATE_ALV.
IF NOT T_SPFLI_HEADER[] IS INITIAL.
PERFORM CUSTOM_DATA_ALV USING G_FIELDCAT[].
PERFORM BUILD_SORT.
ENDIF.
ENDFORM. "GENERATE_ALV
&----
*& Form CUSTOM_DATA_ALV *
&----
Create ALV Catalog. *
----
FORM CUSTOM_DATA_ALV USING T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: L_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
CLEAR: T_FIELDCAT.
REFRESH: T_FIELDCAT.
CLEAR L_FIELDCAT.
L_FIELDCAT-TABNAME = 'T_SPFLI'.
L_FIELDCAT-FIELDNAME = 'CARRID'.
L_FIELDCAT-SELTEXT_L = 'Airline carrier ID'.
L_FIELDCAT-COL_POS = 1.
L_FIELDCAT-OUTPUTLEN = 15.
APPEND L_FIELDCAT TO T_FIELDCAT.
CLEAR L_FIELDCAT.
L_FIELDCAT-TABNAME = 'T_SPFLI'.
L_FIELDCAT-FIELDNAME = 'CONNID'.
L_FIELDCAT-SELTEXT_L = 'Flight connection Id'.
L_FIELDCAT-COL_POS = 2.
L_FIELDCAT-OUTPUTLEN = 15.
APPEND L_FIELDCAT TO T_FIELDCAT.
CLEAR L_FIELDCAT.
L_FIELDCAT-TABNAME = 'T_SPFLI'.
L_FIELDCAT-FIELDNAME = 'COUNTRYFR'.
L_FIELDCAT-SELTEXT_L = 'Country key'.
L_FIELDCAT-COL_POS = 3.
L_FIELDCAT-OUTPUTLEN = 15.
APPEND L_FIELDCAT TO T_FIELDCAT.
CLEAR L_FIELDCAT.
L_FIELDCAT-TABNAME = 'T_SPFLI'.
L_FIELDCAT-FIELDNAME = 'CITYFROM'.
L_FIELDCAT-SELTEXT_L = 'City of departure'.
L_FIELDCAT-COL_POS = 4.
L_FIELDCAT-OUTPUTLEN = 15.
APPEND L_FIELDCAT TO T_FIELDCAT.
CLEAR L_FIELDCAT.
L_FIELDCAT-TABNAME = 'T_SPFLI'.
L_FIELDCAT-FIELDNAME = 'AIRPFROM'.
L_FIELDCAT-SELTEXT_L = 'Airport of departure'.
L_FIELDCAT-COL_POS = 5.
L_FIELDCAT-OUTPUTLEN = 15.
APPEND L_FIELDCAT TO T_FIELDCAT.
CLEAR L_FIELDCAT.
L_FIELDCAT-TABNAME = 'T_SPFLI'.
L_FIELDCAT-FIELDNAME = 'COUNTRYTO'.
L_FIELDCAT-SELTEXT_L = 'Country key'.
L_FIELDCAT-COL_POS = 6.
L_FIELDCAT-OUTPUTLEN = 15.
APPEND L_FIELDCAT TO T_FIELDCAT.
CLEAR L_FIELDCAT.
L_FIELDCAT-TABNAME = 'T_SPFLI'.
L_FIELDCAT-FIELDNAME = 'CITYTO'.
L_FIELDCAT-SELTEXT_L = 'Arrival city'.
L_FIELDCAT-COL_POS = 7.
L_FIELDCAT-OUTPUTLEN = 15.
APPEND L_FIELDCAT TO T_FIELDCAT.
ENDFORM. "CUSTOM_DATA_ALV
&----
*& Form BUILD_SORT *
&----
Build Sort table *
----
FORM BUILD_SORT.
CLEAR G_SORT.
G_SORT-SPOS = 1.
G_SORT-FIELDNAME = 'CARRID'.
G_SORT-UP = 'X'.
APPEND G_SORT.
ENDFORM.
----
FORM GENERATE_ALV_LIST *
----
Generate ALV list *
----
FORM GENERATE_ALV_LIST.
DATA L_STUFF TYPE TY_STUFF.
G_PROGRAM = SY-REPID.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
I_CALLBACK_PROGRAM = G_PROGRAM.
LOOP AT T_SPFLI_HEADER.
W_TABIX = SY-TABIX.
CLEAN_TABLE T_SPFLI_DETAIL.
LOOP AT T_SPFLI INTO T_SPFLI_DETAIL
WHERE CARRID EQ T_SPFLI_HEADER-CARRID.
APPEND T_SPFLI_DETAIL.
ENDLOOP.
CONCATENATE 'TABLE_' W_TABIX INTO
TAB_NAME.
PERFORM CREATE_TABLE USING 'SPFLI' TAB_NAME.
LOOP AT T_SPFLI_DETAIL ASSIGNING <LINE>.
ASSIGN <DYN_WA> TO <TABLE>.
<TABLE> = <LINE>.
APPEND <DYN_WA> TO <DYN_TABLE>.
ENDLOOP.
PERFORM CREATE_ALV_LIST TABLES <DYN_TABLE>.
ENDLOOP.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
EXPORTING
IS_PRINT = GT_PRINT.
ENDFORM.
----
FORM CREATE_ALV_LIST *
----
Create ALV List *
----
FORM CREATE_ALV_LIST TABLES T_TABLE STRUCTURE T_SPFLI_DETAIL.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IT_FIELDCAT = G_FIELDCAT
IS_LAYOUT = GS_LAYOUT
I_TABNAME = 'T_SPFLI'
IT_EVENTS = GT_EVENTS
TABLES
T_OUTTAB = T_TABLE.
ENDFORM.
----
FORM CREATE_TABLE *
----
Create dynamic table *
----
FORM CREATE_TABLE USING MY_TAB TAB_NAME.
DATA L_STUFF TYPE TY_STUFF.
CREATE DATA DATAREF TYPE (MY_TAB).
ASSIGN DATAREF->* TO <FS>.
DESCR_STRUCT_REF ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA( <FS> ).
CLEAN_TABLE IT_FIELDCATALOG.
LOOP AT DESCR_STRUCT_REF->COMPONENTS ASSIGNING <COMPONENT>.
WA_FCAT-FIELDNAME = <COMPONENT>-NAME.
WA_FCAT-REF_TABLE = MY_TAB.
WA_FCAT-REF_FIELD = <COMPONENT>-NAME.
APPEND WA_FCAT TO IT_FIELDCATALOG.
ENDLOOP.
CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
EXPORTING
IT_FIELDCATALOG = IT_FIELDCATALOG
IMPORTING
EP_TABLE = DATAREF
EXCEPTIONS
OTHERS = 1.
ASSIGN DATAREF->* TO <DYN_TABLE>.
L_STUFF-TABNAME = TAB_NAME.
CREATE DATA L_STUFF-TDREF LIKE LINE OF <DYN_TABLE>.
ASSIGN L_STUFF-TDREF->* TO <DYN_WA>.
ENDFORM. "CREATE_TABLE
PLEASE REWARD IF HELPFUL
THANKS
VIVEKANAND