Application Development 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: 

pls send me an alv rep using REUSE_ALV_BLOCK_LIST_DISPLAY

aarif_baig
Active Participant
2 REPLIES 2

Former Member
0 Kudos

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

Former Member
0 Kudos

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