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

Former Member
0 Likes
531

&----


*& Report Name:- ZSA_ALV_BOOK_CUSTOM Create Date : -

*& Author Name:-

*& Program Title:-

&----


*&

&----


REPORT ZSA_ALV_BOOK_CUSTOM.

TABLES: SBOOK, SCUSTOM.

TYPE-POOLS: SLIS.

DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

GT_FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV,

GT_FIELDCAT2 TYPE SLIS_T_FIELDCAT_ALV,

GS_LAYOUT TYPE SLIS_LAYOUT_ALV,

GT_EVENTS TYPE SLIS_T_EVENT,

GT_EVENTS1 TYPE SLIS_T_EVENT,

GT_HEADER TYPE SLIS_T_LISTHEADER,

I_SORT TYPE SLIS_T_SORTINFO_ALV.

DATA: BEGIN OF IT_SBOOK OCCURS 0,

CARRID TYPE SBOOK-CARRID,

CONNID TYPE SBOOK-CONNID,

FLDATE TYPE SBOOK-FLDATE,

END OF IT_SBOOK,

WA_SBOOK LIKE LINE OF IT_SBOOK,

BEGIN OF IT_SBOOK1 OCCURS 0,

CARRID TYPE SBOOK-CARRID,

CONNID TYPE SBOOK-CONNID,

FLDATE TYPE SBOOK-FLDATE,

BOOKID TYPE SBOOK-BOOKID,

CUSTOMID TYPE SBOOK-CUSTOMID,

END OF IT_SBOOK1,

WA_SBOOK1 LIKE LINE OF IT_SBOOK1,

BEGIN OF IT_SCUSTOM OCCURS 0,

ID TYPE SCUSTOM-ID,

NAME TYPE SCUSTOM-NAME,

COUNTRY TYPE SCUSTOM-COUNTRY,

END OF IT_SCUSTOM,

WA_SCUSTOM LIKE LINE OF IT_SCUSTOM.

DATA: G_REPID LIKE SY-REPID.

DATA: G_VARIANT LIKE DISVARIANT.

DATA: GX_VARIANT LIKE DISVARIANT,

G_DEFAULT TYPE C,

G_SAVE(1) TYPE C,

G_EXIT(1) TYPE C.

CONSTANTS:

FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',

FORMNAME_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'.

SELECT-OPTIONS CARRID FOR SBOOK-CARRID.

SELECT-OPTIONS CONNID FOR SBOOK-CONNID.

SELECTION-SCREEN SKIP 1.

SELECTION-SCREEN BEGIN OF BLOCK 0 WITH FRAME TITLE TEXT-006.

PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT.

SELECTION-SCREEN END OF BLOCK 0.

SELECTION-SCREEN SKIP 1.

SELECTION-SCREEN BEGIN OF BLOCK A WITH FRAME TITLE TEXT-060.

PARAMETERS:

P_ZEBRA AS CHECKBOX DEFAULT ' ',

P_NOCOLH AS CHECKBOX DEFAULT ' ',

P_NOVLIN AS CHECKBOX DEFAULT ' ',

P_COLOPT AS CHECKBOX DEFAULT ' ',

P_KEYHOT AS CHECKBOX DEFAULT ' ',

P_NOINPT AS CHECKBOX DEFAULT ' ',

P_MERGE AS CHECKBOX DEFAULT ' '.

SELECTION-SCREEN END OF BLOCK A.

INITIALIZATION.

G_REPID = SY-REPID.

  • PERFORM BUILD_LAYOUT.

PERFORM BUILD_HEADER USING GT_HEADER.

PERFORM EVENTTAB_BUILD USING GT_EVENTS[].

PERFORM EVENTTAB_BUILD1 USING GT_EVENTS1[].

PERFORM FIELDCAT_INIT USING GT_FIELDCAT[].

  • PERFORM T_SORT_BUILD USING I_SORT.

*Set Options: save variants userspecific or general

G_SAVE = 'A'.

PERFORM VARIANT_INIT.

    • Get default variant

  • GX_VARIANT = G_VARIANT.

  • CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'

  • EXPORTING

  • I_SAVE = G_SAVE

  • CHANGING

  • CS_VARIANT = GX_VARIANT

  • EXCEPTIONS

  • NOT_FOUND = 2.

  • IF SY-SUBRC = 0.

  • P_VARI = GX_VARIANT-VARIANT.

  • ENDIF.

    • Process on value request

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.

PERFORM F4_FOR_VARIANT.

  • PAI

AT SELECTION-SCREEN.

PERFORM PAI_OF_SELECTION_SCREEN.

START-OF-SELECTION.

PERFORM DATA_SELECTION.

SORT IT_SBOOK BY CARRID CONNID FLDATE.

PERFORM DATA_DISPLAY.

END-OF-SELECTION.

  • PERFORM COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[].

&----


*& Form FIELDCAT_INIT

&----


  • text

----


  • -->P_GT_FIELDCAT[] text

----


FORM FIELDCAT_INIT USING P_GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

CLEAR P_GT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'CARRID'.

LS_FIELDCAT-TABNAME = 'IT_SBOOK'.

LS_FIELDCAT-SELTEXT_S = 'CARRIER'.

APPEND LS_FIELDCAT TO P_GT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'CONNID'.

LS_FIELDCAT-TABNAME = 'IT_SBOOK'.

LS_FIELDCAT-SELTEXT_S = 'CONNECTION ID'.

APPEND LS_FIELDCAT TO P_GT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'FLDATE'.

LS_FIELDCAT-TABNAME = 'IT_SBOOK'.

LS_FIELDCAT-SELTEXT_S = 'FLIGHT DATE'.

APPEND LS_FIELDCAT TO P_GT_FIELDCAT.

ENDFORM. " FIELDCAT_INIT

*PERFORM USER_COMMAND.

&----


*& Form DATA_SELECTION

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DATA_SELECTION.

SELECT DISTINCT CARRID CONNID FLDATE FROM SBOOK

INTO TABLE IT_SBOOK

WHERE CARRID IN CARRID AND CONNID IN CONNID.

ENDFORM. " DATA_SELECTION

&----


*& Form DATA_DISPLAY

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DATA_DISPLAY .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = G_REPID

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

  • I_CALLBACK_TOP_OF_PAGE = ' '

IS_LAYOUT = GS_LAYOUT

IT_FIELDCAT = GT_FIELDCAT

IT_EVENTS = GT_EVENTS

IS_VARIANT = G_VARIANT

IT_SORT = I_SORT[]

I_SAVE = G_SAVE

TABLES

T_OUTTAB = IT_SBOOK

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " DATA_DISPLAY

&----


*& Form USER_COMMAND

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM SELECT_FIELD TYPE SLIS_SELFIELD.

DATA: FIELD_VAL TYPE SLIS_FIELDNAME,

FIELD_NAME TYPE SLIS_FIELDNAME.

FIELD_NAME = SELECT_FIELD-FIELDNAME.

FIELD_VAL = SELECT_FIELD-VALUE.

CASE R_UCOMM.

WHEN '&IC1'.

READ TABLE IT_SBOOK INTO WA_SBOOK INDEX SELECT_FIELD-TABINDEX.

PERFORM FIELDCAT_INIT1 USING GT_FIELDCAT1[].

PERFORM DATA_SELECTION1.

PERFORM DATA_DISPLAY1.

ENDCASE.

ENDFORM. " USER_COMMAND

&----


*& Form DATA_SELECTION1

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DATA_SELECTION1.

CLEAR IT_SBOOK1[].

SELECT CARRID CONNID FLDATE BOOKID CUSTOMID FROM SBOOK

INTO TABLE IT_SBOOK1

WHERE CARRID = WA_SBOOK-CARRID AND CONNID = WA_SBOOK-CONNID AND FLDATE = WA_SBOOK-FLDATE.

ENDFORM. " DATA_SELECTION1

&----


*& Form DATA_DISPLAY1

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DATA_DISPLAY1.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = G_REPID

I_CALLBACK_USER_COMMAND = 'USER_COMMAND1'

  • I_CALLBACK_TOP_OF_PAGE = ' '

IS_LAYOUT = GS_LAYOUT

IT_FIELDCAT = GT_FIELDCAT1

IT_EVENTS = GT_EVENTS1

TABLES

T_OUTTAB = IT_SBOOK1

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " DATA_DISPLAY1

&----


*& Form FIELDCAT_INIT1

&----


  • text

----


  • -->P_GT_FIELDCAT1[] text

----


FORM FIELDCAT_INIT1 USING P_GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

CLEAR P_GT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'CARRID'.

LS_FIELDCAT-TABNAME = 'IT_SBOOK1'.

LS_FIELDCAT-SELTEXT_S = 'CARRIER'.

APPEND LS_FIELDCAT TO P_GT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'CONNID'.

LS_FIELDCAT-TABNAME = 'IT_SBOOK1'.

LS_FIELDCAT-SELTEXT_S = 'CONNECTION ID'.

APPEND LS_FIELDCAT TO P_GT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'FLDATE'.

LS_FIELDCAT-TABNAME = 'IT_SBOOK1'.

LS_FIELDCAT-SELTEXT_S = 'FLIGHT DATE'.

APPEND LS_FIELDCAT TO P_GT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'BOOKID'.

LS_FIELDCAT-TABNAME = 'IT_SBOOK1'.

LS_FIELDCAT-SELTEXT_S = 'BOOK ID'.

APPEND LS_FIELDCAT TO P_GT_FIELDCAT.

ENDFORM. " FIELDCAT_INIT1

&----


*& Form USER_COMMAND1

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM USER_COMMAND1 USING R_UCOMM LIKE SY-UCOMM SELECT_FIELD TYPE SLIS_SELFIELD.

DATA: FIELD_VAL TYPE SLIS_FIELDNAME,

FIELD_NAME TYPE SLIS_FIELDNAME.

FIELD_NAME = SELECT_FIELD-FIELDNAME.

FIELD_VAL = SELECT_FIELD-VALUE.

CASE R_UCOMM.

WHEN '&IC1'.

READ TABLE IT_SBOOK1 INTO WA_SBOOK1 INDEX SELECT_FIELD-TABINDEX.

PERFORM FIELDCAT_INIT2 USING GT_FIELDCAT2[].

PERFORM DATA_SELECTION2.

PERFORM DATA_DISPLAY2.

  • CASE FIELD_NAME.

  • WHEN 'CARRID'.

ENDCASE.

ENDFORM. " USER_COMMAND1

&----


*& Form FIELDCAT_INIT2

&----


  • text

----


  • -->P_GT_FIELDCAT2[] text

----


FORM FIELDCAT_INIT2 USING P_GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

CLEAR P_GT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'ID'.

LS_FIELDCAT-TABNAME = 'IT_SCUSTOM'.

LS_FIELDCAT-SELTEXT_S = 'CUSTOMER ID'.

APPEND LS_FIELDCAT TO P_GT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'NAME'.

LS_FIELDCAT-TABNAME = 'IT_SCUSTOM'.

LS_FIELDCAT-SELTEXT_S = 'CUSTOMER NAME'.

APPEND LS_FIELDCAT TO P_GT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'COUNTRY'.

LS_FIELDCAT-TABNAME = 'IT_SCUSTOM'.

LS_FIELDCAT-SELTEXT_S = 'COUNTRY'.

APPEND LS_FIELDCAT TO P_GT_FIELDCAT.

ENDFORM. " FIELDCAT_INIT2

&----


*& Form DATA_SELECTION2

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DATA_SELECTION2 .

CLEAR IT_SCUSTOM[].

SELECT ID NAME COUNTRY FROM SCUSTOM

INTO CORRESPONDING FIELDS OF TABLE IT_SCUSTOM

WHERE ID = WA_SBOOK1-CUSTOMID.

ENDFORM. " DATA_SELECTION2

&----


*& Form DATA_DISPLAY2

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DATA_DISPLAY2 .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = G_REPID

  • I_CALLBACK_USER_COMMAND = 'USER_COMMAND1'

I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'

IS_LAYOUT = GS_LAYOUT

IT_FIELDCAT = GT_FIELDCAT2

IT_EVENTS = GT_EVENTS

TABLES

T_OUTTAB = IT_SCUSTOM

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " DATA_DISPLAY2

&----


*& Form BUILD_LAYOUT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


*FORM BUILD_LAYOUT .

*

  • GS_LAYOUT-NO_INPUT = 'X'.

    • GS_LAYOUT-WINDOW_TITLEBAR = ' ---- BY SAGAR'.

    • GS_LAYOUT-F2CODE = '&IC1'.

    • GS_LAYOUT-HOTSPOT_FIELDNAME = 'MONTH'.

    • GS_LAYOUT-GET_SELINFOS = 'X'.

    • GS_LAYOUT-EXPAND_ALL = 'X'.

  • GS_LAYOUT-ZEBRA = 'X'.

  • GS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.

    • GS_LAYOUT-NO_COLHEAD = ' '.

    • GS_LAYOUT-NO_VLINE = ' '.

    • GS_LAYOUT-INFO_FIELDNAME = 'WS_COLOR'.

*

*ENDFORM. " BUILD_LAYOUT

&----


*& Form EVENTTAB_BUILD

&----


  • text

----


  • -->P_GT_EVENTS[] text

----


FORM EVENTTAB_BUILD USING LT_EVENTS TYPE SLIS_T_EVENT.

DATA: LS_EVENT TYPE SLIS_ALV_EVENT.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = LT_EVENTS.

READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE INTO LS_EVENT.

IF SY-SUBRC = 0.

LS_EVENT-FORM = FORMNAME_TOP_OF_PAGE.

MODIFY LT_EVENTS FROM LS_EVENT TRANSPORTING FORM WHERE NAME = LS_EVENT-FORM.

ENDIF.

READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_USER_COMMAND INTO LS_EVENT.

IF SY-SUBRC = 0.

LS_EVENT-FORM = FORMNAME_USER_COMMAND.

MODIFY LT_EVENTS FROM LS_EVENT TRANSPORTING FORM WHERE NAME = LS_EVENT-FORM.

ENDIF.

ENDFORM. " EVENTTAB_BUILD

FORM BUILD_HEADER USING RT_HEADER TYPE SLIS_T_LISTHEADER.

DATA: TP TYPE SLIS_LISTHEADER.

DATA: TEXT(20) TYPE C,

DT(10).

TP-TYP = 'H'.

TP-INFO = 'BOOKING ALV REPORT'.

APPEND TP TO RT_HEADER.

CLEAR TP.

WRITE SY-DATUM TO DT DD/MM/YYYY.

CONCATENATE 'DATE :' DT INTO TEXT.

TP-TYP = 'S'.

TP-INFO = TEXT.

APPEND TP TO RT_HEADER.

CLEAR TP.

ENDFORM.

FORM TOP_OF_PAGE.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = GT_HEADER

I_LOGO = 'ENJOYSAP_LOGO'.

ENDFORM.

&----


*& Form EVENTTAB_BUILD1

&----


  • text

----


  • -->P_GT_EVENTS[] text

----


FORM EVENTTAB_BUILD1 USING LT_EVENTS TYPE SLIS_T_EVENT.

DATA: LS_EVENT TYPE SLIS_ALV_EVENT.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = LT_EVENTS.

READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE INTO LS_EVENT.

IF SY-SUBRC = 0.

LS_EVENT-FORM = FORMNAME_TOP_OF_PAGE.

MODIFY LT_EVENTS FROM LS_EVENT TRANSPORTING FORM WHERE NAME = LS_EVENT-FORM.

ENDIF.

READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_USER_COMMAND INTO LS_EVENT.

IF SY-SUBRC = 0.

LS_EVENT-FORM = 'USER_COMMAND1'.

MODIFY LT_EVENTS FROM LS_EVENT TRANSPORTING FORM WHERE NAME = LS_EVENT-FORM.

ENDIF.

ENDFORM. " EVENTTAB_BUILD1

FORM F4_FOR_VARIANT.

*

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

EXPORTING

IS_VARIANT = G_VARIANT

I_SAVE = G_SAVE

  • it_default_fieldcat =

IMPORTING

E_EXIT = G_EXIT

ES_VARIANT = GX_VARIANT

EXCEPTIONS

NOT_FOUND = 2.

IF SY-SUBRC = 2.

MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ELSE.

IF G_EXIT = SPACE.

P_VARI = GX_VARIANT-VARIANT.

ENDIF.

ENDIF.

ENDFORM.

&----


*& Form PAI_OF_SELECTION_SCREEN

&----


  • text

----


FORM PAI_OF_SELECTION_SCREEN.

*

IF NOT P_VARI IS INITIAL.

MOVE G_VARIANT TO GX_VARIANT.

MOVE P_VARI TO GX_VARIANT-VARIANT.

CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'

EXPORTING

I_SAVE = G_SAVE

CHANGING

CS_VARIANT = GX_VARIANT.

G_VARIANT = GX_VARIANT.

ELSE.

PERFORM VARIANT_INIT.

ENDIF.

ENDFORM. " PAI_OF_SELECTION_SCREEN

&----


*& Form VARIANT_INIT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM VARIANT_INIT.

CLEAR G_VARIANT.

G_VARIANT-REPORT = G_REPID.

ENDFORM. " VARIANT_INIT

&----


*& Form T_SORT_BUILD

&----


  • text

----


  • -->P_I_SORT text

----


FORM T_SORT_BUILD USING P_I_SORT TYPE SLIS_T_SORTINFO_ALV.

DATA: LS_SORT TYPE SLIS_SORTINFO_ALV.

LS_SORT-FIELDNAME = 'CARRID'.

LS_SORT-SPOS = 1.

LS_SORT-UP = 'X'.

LS_SORT-SUBTOT = 'X'.

APPEND LS_SORT TO P_I_SORT.

LS_SORT-FIELDNAME = 'CONNID'.

LS_SORT-SPOS = 2.

LS_SORT-UP = 'X'.

LS_SORT-SUBTOT = 'X'.

APPEND LS_SORT TO P_I_SORT.

LS_SORT-FIELDNAME = 'FLDATE'.

LS_SORT-SPOS = 3.

LS_SORT-UP = 'X'.

LS_SORT-SUBTOT = 'X'.

APPEND LS_SORT TO P_I_SORT.

ENDFORM. " T_SORT_BUILD

&----


*& Report Name:- ZSA_ALV_BOOK_CUSTOM Create Date : -

*& Author Name:-

*& Program Title:-

&----


*&

&----


REPORT ZSA_ALV_BOOK_CUSTOM.

TABLES: SBOOK, SCUSTOM.

TYPE-POOLS: SLIS.

DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

GT_FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV,

GT_FIELDCAT2 TYPE SLIS_T_FIELDCAT_ALV,

GS_LAYOUT TYPE SLIS_LAYOUT_ALV,

GT_EVENTS TYPE SLIS_T_EVENT,

GT_EVENTS1 TYPE SLIS_T_EVENT,

GT_HEADER TYPE SLIS_T_LISTHEADER,

I_SORT TYPE SLIS_T_SORTINFO_ALV.

DATA: BEGIN OF IT_SBOOK OCCURS 0,

CARRID TYPE SBOOK-CARRID,

CONNID TYPE SBOOK-CONNID,

FLDATE TYPE SBOOK-FLDATE,

END OF IT_SBOOK,

WA_SBOOK LIKE LINE OF IT_SBOOK,

BEGIN OF IT_SBOOK1 OCCURS 0,

CARRID TYPE SBOOK-CARRID,

CONNID TYPE SBOOK-CONNID,

FLDATE TYPE SBOOK-FLDATE,

BOOKID TYPE SBOOK-BOOKID,

CUSTOMID TYPE SBOOK-CUSTOMID,

END OF IT_SBOOK1,

WA_SBOOK1 LIKE LINE OF IT_SBOOK1,

BEGIN OF IT_SCUSTOM OCCURS 0,

ID TYPE SCUSTOM-ID,

NAME TYPE SCUSTOM-NAME,

COUNTRY TYPE SCUSTOM-COUNTRY,

END OF IT_SCUSTOM,

WA_SCUSTOM LIKE LINE OF IT_SCUSTOM.

DATA: G_REPID LIKE SY-REPID.

DATA: G_VARIANT LIKE DISVARIANT.

DATA: GX_VARIANT LIKE DISVARIANT,

G_DEFAULT TYPE C,

G_SAVE(1) TYPE C,

G_EXIT(1) TYPE C.

CONSTANTS:

FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',

FORMNAME_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'.

SELECT-OPTIONS CARRID FOR SBOOK-CARRID.

SELECT-OPTIONS CONNID FOR SBOOK-CONNID.

SELECTION-SCREEN SKIP 1.

SELECTION-SCREEN BEGIN OF BLOCK 0 WITH FRAME TITLE TEXT-006.

PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT.

SELECTION-SCREEN END OF BLOCK 0.

SELECTION-SCREEN SKIP 1.

SELECTION-SCREEN BEGIN OF BLOCK A WITH FRAME TITLE TEXT-060.

PARAMETERS:

P_ZEBRA AS CHECKBOX DEFAULT ' ',

P_NOCOLH AS CHECKBOX DEFAULT ' ',

P_NOVLIN AS CHECKBOX DEFAULT ' ',

P_COLOPT AS CHECKBOX DEFAULT ' ',

P_KEYHOT AS CHECKBOX DEFAULT ' ',

P_NOINPT AS CHECKBOX DEFAULT ' ',

P_MERGE AS CHECKBOX DEFAULT ' '.

SELECTION-SCREEN END OF BLOCK A.

INITIALIZATION.

G_REPID = SY-REPID.

  • PERFORM BUILD_LAYOUT.

PERFORM BUILD_HEADER USING GT_HEADER.

PERFORM EVENTTAB_BUILD USING GT_EVENTS[].

PERFORM EVENTTAB_BUILD1 USING GT_EVENTS1[].

PERFORM FIELDCAT_INIT USING GT_FIELDCAT[].

  • PERFORM T_SORT_BUILD USING I_SORT.

*Set Options: save variants userspecific or general

G_SAVE = 'A'.

PERFORM VARIANT_INIT.

    • Get default variant

  • GX_VARIANT = G_VARIANT.

  • CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'

  • EXPORTING

  • I_SAVE = G_SAVE

  • CHANGING

  • CS_VARIANT = GX_VARIANT

  • EXCEPTIONS

  • NOT_FOUND = 2.

  • IF SY-SUBRC = 0.

  • P_VARI = GX_VARIANT-VARIANT.

  • ENDIF.

    • Process on value request

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.

PERFORM F4_FOR_VARIANT.

  • PAI

AT SELECTION-SCREEN.

PERFORM PAI_OF_SELECTION_SCREEN.

START-OF-SELECTION.

PERFORM DATA_SELECTION.

SORT IT_SBOOK BY CARRID CONNID FLDATE.

PERFORM DATA_DISPLAY.

END-OF-SELECTION.

  • PERFORM COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[].

&----


*& Form FIELDCAT_INIT

&----


  • text

----


  • -->P_GT_FIELDCAT[] text

----


FORM FIELDCAT_INIT USING P_GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

CLEAR P_GT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'CARRID'.

LS_FIELDCAT-TABNAME = 'IT_SBOOK'.

LS_FIELDCAT-SELTEXT_S = 'CARRIER'.

APPEND LS_FIELDCAT TO P_GT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'CONNID'.

LS_FIELDCAT-TABNAME = 'IT_SBOOK'.

LS_FIELDCAT-SELTEXT_S = 'CONNECTION ID'.

APPEND LS_FIELDCAT TO P_GT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'FLDATE'.

LS_FIELDCAT-TABNAME = 'IT_SBOOK'.

LS_FIELDCAT-SELTEXT_S = 'FLIGHT DATE'.

APPEND LS_FIELDCAT TO P_GT_FIELDCAT.

ENDFORM. " FIELDCAT_INIT

*PERFORM USER_COMMAND.

&----


*& Form DATA_SELECTION

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DATA_SELECTION.

SELECT DISTINCT CARRID CONNID FLDATE FROM SBOOK

INTO TABLE IT_SBOOK

WHERE CARRID IN CARRID AND CONNID IN CONNID.

ENDFORM. " DATA_SELECTION

&----


*& Form DATA_DISPLAY

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DATA_DISPLAY .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = G_REPID

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

  • I_CALLBACK_TOP_OF_PAGE = ' '

IS_LAYOUT = GS_LAYOUT

IT_FIELDCAT = GT_FIELDCAT

IT_EVENTS = GT_EVENTS

IS_VARIANT = G_VARIANT

IT_SORT = I_SORT[]

I_SAVE = G_SAVE

TABLES

T_OUTTAB = IT_SBOOK

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " DATA_DISPLAY

&----


*& Form USER_COMMAND

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM SELECT_FIELD TYPE SLIS_SELFIELD.

DATA: FIELD_VAL TYPE SLIS_FIELDNAME,

FIELD_NAME TYPE SLIS_FIELDNAME.

FIELD_NAME = SELECT_FIELD-FIELDNAME.

FIELD_VAL = SELECT_FIELD-VALUE.

CASE R_UCOMM.

WHEN '&IC1'.

READ TABLE IT_SBOOK INTO WA_SBOOK INDEX SELECT_FIELD-TABINDEX.

PERFORM FIELDCAT_INIT1 USING GT_FIELDCAT1[].

PERFORM DATA_SELECTION1.

PERFORM DATA_DISPLAY1.

ENDCASE.

ENDFORM. " USER_COMMAND

&----


*& Form DATA_SELECTION1

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DATA_SELECTION1.

CLEAR IT_SBOOK1[].

SELECT CARRID CONNID FLDATE BOOKID CUSTOMID FROM SBOOK

INTO TABLE IT_SBOOK1

WHERE CARRID = WA_SBOOK-CARRID AND CONNID = WA_SBOOK-CONNID AND FLDATE = WA_SBOOK-FLDATE.

ENDFORM. " DATA_SELECTION1

&----


*& Form DATA_DISPLAY1

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DATA_DISPLAY1.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = G_REPID

I_CALLBACK_USER_COMMAND = 'USER_COMMAND1'

  • I_CALLBACK_TOP_OF_PAGE = ' '

IS_LAYOUT = GS_LAYOUT

IT_FIELDCAT = GT_FIELDCAT1

IT_EVENTS = GT_EVENTS1

TABLES

T_OUTTAB = IT_SBOOK1

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " DATA_DISPLAY1

&----


*& Form FIELDCAT_INIT1

&----


  • text

----


  • -->P_GT_FIELDCAT1[] text

----


FORM FIELDCAT_INIT1 USING P_GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

CLEAR P_GT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'CARRID'.

LS_FIELDCAT-TABNAME = 'IT_SBOOK1'.

LS_FIELDCAT-SELTEXT_S = 'CARRIER'.

APPEND LS_FIELDCAT TO P_GT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'CONNID'.

LS_FIELDCAT-TABNAME = 'IT_SBOOK1'.

LS_FIELDCAT-SELTEXT_S = 'CONNECTION ID'.

APPEND LS_FIELDCAT TO P_GT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'FLDATE'.

LS_FIELDCAT-TABNAME = 'IT_SBOOK1'.

LS_FIELDCAT-SELTEXT_S = 'FLIGHT DATE'.

APPEND LS_FIELDCAT TO P_GT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'BOOKID'.

LS_FIELDCAT-TABNAME = 'IT_SBOOK1'.

LS_FIELDCAT-SELTEXT_S = 'BOOK ID'.

APPEND LS_FIELDCAT TO P_GT_FIELDCAT.

ENDFORM. " FIELDCAT_INIT1

&----


*& Form USER_COMMAND1

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM USER_COMMAND1 USING R_UCOMM LIKE SY-UCOMM SELECT_FIELD TYPE SLIS_SELFIELD.

DATA: FIELD_VAL TYPE SLIS_FIELDNAME,

FIELD_NAME TYPE SLIS_FIELDNAME.

FIELD_NAME = SELECT_FIELD-FIELDNAME.

FIELD_VAL = SELECT_FIELD-VALUE.

CASE R_UCOMM.

WHEN '&IC1'.

READ TABLE IT_SBOOK1 INTO WA_SBOOK1 INDEX SELECT_FIELD-TABINDEX.

PERFORM FIELDCAT_INIT2 USING GT_FIELDCAT2[].

PERFORM DATA_SELECTION2.

PERFORM DATA_DISPLAY2.

  • CASE FIELD_NAME.

  • WHEN 'CARRID'.

ENDCASE.

ENDFORM. " USER_COMMAND1

&----


*& Form FIELDCAT_INIT2

&----


  • text

----


  • -->P_GT_FIELDCAT2[] text

----


FORM FIELDCAT_INIT2 USING P_GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

CLEAR P_GT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'ID'.

LS_FIELDCAT-TABNAME = 'IT_SCUSTOM'.

LS_FIELDCAT-SELTEXT_S = 'CUSTOMER ID'.

APPEND LS_FIELDCAT TO P_GT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'NAME'.

LS_FIELDCAT-TABNAME = 'IT_SCUSTOM'.

LS_FIELDCAT-SELTEXT_S = 'CUSTOMER NAME'.

APPEND LS_FIELDCAT TO P_GT_FIELDCAT.

CLEAR LS_FIELDCAT.

LS_FIELDCAT-FIELDNAME = 'COUNTRY'.

LS_FIELDCAT-TABNAME = 'IT_SCUSTOM'.

LS_FIELDCAT-SELTEXT_S = 'COUNTRY'.

APPEND LS_FIELDCAT TO P_GT_FIELDCAT.

ENDFORM. " FIELDCAT_INIT2

&----


*& Form DATA_SELECTION2

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DATA_SELECTION2 .

CLEAR IT_SCUSTOM[].

SELECT ID NAME COUNTRY FROM SCUSTOM

INTO CORRESPONDING FIELDS OF TABLE IT_SCUSTOM

WHERE ID = WA_SBOOK1-CUSTOMID.

ENDFORM. " DATA_SELECTION2

&----


*& Form DATA_DISPLAY2

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DATA_DISPLAY2 .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = G_REPID

  • I_CALLBACK_USER_COMMAND = 'USER_COMMAND1'

I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'

IS_LAYOUT = GS_LAYOUT

IT_FIELDCAT = GT_FIELDCAT2

IT_EVENTS = GT_EVENTS

TABLES

T_OUTTAB = IT_SCUSTOM

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " DATA_DISPLAY2

&----


*& Form BUILD_LAYOUT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


*FORM BUILD_LAYOUT .

*

  • GS_LAYOUT-NO_INPUT = 'X'.

    • GS_LAYOUT-WINDOW_TITLEBAR = ' ---- BY SAGAR'.

    • GS_LAYOUT-F2CODE = '&IC1'.

    • GS_LAYOUT-HOTSPOT_FIELDNAME = 'MONTH'.

    • GS_LAYOUT-GET_SELINFOS = 'X'.

    • GS_LAYOUT-EXPAND_ALL = 'X'.

  • GS_LAYOUT-ZEBRA = 'X'.

  • GS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.

    • GS_LAYOUT-NO_COLHEAD = ' '.

    • GS_LAYOUT-NO_VLINE = ' '.

    • GS_LAYOUT-INFO_FIELDNAME = 'WS_COLOR'.

*

*ENDFORM. " BUILD_LAYOUT

&----


*& Form EVENTTAB_BUILD

&----


  • text

----


  • -->P_GT_EVENTS[] text

----


FORM EVENTTAB_BUILD USING LT_EVENTS TYPE SLIS_T_EVENT.

DATA: LS_EVENT TYPE SLIS_ALV_EVENT.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = LT_EVENTS.

READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE INTO LS_EVENT.

IF SY-SUBRC = 0.

LS_EVENT-FORM = FORMNAME_TOP_OF_PAGE.

MODIFY LT_EVENTS FROM LS_EVENT TRANSPORTING FORM WHERE NAME = LS_EVENT-FORM.

ENDIF.

READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_USER_COMMAND INTO LS_EVENT.

IF SY-SUBRC = 0.

LS_EVENT-FORM = FORMNAME_USER_COMMAND.

MODIFY LT_EVENTS FROM LS_EVENT TRANSPORTING FORM WHERE NAME = LS_EVENT-FORM.

ENDIF.

ENDFORM. " EVENTTAB_BUILD

FORM BUILD_HEADER USING RT_HEADER TYPE SLIS_T_LISTHEADER.

DATA: TP TYPE SLIS_LISTHEADER.

DATA: TEXT(20) TYPE C,

DT(10).

TP-TYP = 'H'.

TP-INFO = 'BOOKING ALV REPORT'.

APPEND TP TO RT_HEADER.

CLEAR TP.

WRITE SY-DATUM TO DT DD/MM/YYYY.

CONCATENATE 'DATE :' DT INTO TEXT.

TP-TYP = 'S'.

TP-INFO = TEXT.

APPEND TP TO RT_HEADER.

CLEAR TP.

ENDFORM.

FORM TOP_OF_PAGE.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = GT_HEADER

I_LOGO = 'ENJOYSAP_LOGO'.

ENDFORM.

&----


*& Form EVENTTAB_BUILD1

&----


  • text

----


  • -->P_GT_EVENTS[] text

----


FORM EVENTTAB_BUILD1 USING LT_EVENTS TYPE SLIS_T_EVENT.

DATA: LS_EVENT TYPE SLIS_ALV_EVENT.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = LT_EVENTS.

READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE INTO LS_EVENT.

IF SY-SUBRC = 0.

LS_EVENT-FORM = FORMNAME_TOP_OF_PAGE.

MODIFY LT_EVENTS FROM LS_EVENT TRANSPORTING FORM WHERE NAME = LS_EVENT-FORM.

ENDIF.

READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_USER_COMMAND INTO LS_EVENT.

IF SY-SUBRC = 0.

LS_EVENT-FORM = 'USER_COMMAND1'.

MODIFY LT_EVENTS FROM LS_EVENT TRANSPORTING FORM WHERE NAME = LS_EVENT-FORM.

ENDIF.

ENDFORM. " EVENTTAB_BUILD1

FORM F4_FOR_VARIANT.

*

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

EXPORTING

IS_VARIANT = G_VARIANT

I_SAVE = G_SAVE

  • it_default_fieldcat =

IMPORTING

E_EXIT = G_EXIT

ES_VARIANT = GX_VARIANT

EXCEPTIONS

NOT_FOUND = 2.

IF SY-SUBRC = 2.

MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ELSE.

IF G_EXIT = SPACE.

P_VARI = GX_VARIANT-VARIANT.

ENDIF.

ENDIF.

ENDFORM.

&----


*& Form PAI_OF_SELECTION_SCREEN

&----


  • text

----


FORM PAI_OF_SELECTION_SCREEN.

*

IF NOT P_VARI IS INITIAL.

MOVE G_VARIANT TO GX_VARIANT.

MOVE P_VARI TO GX_VARIANT-VARIANT.

CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'

EXPORTING

I_SAVE = G_SAVE

CHANGING

CS_VARIANT = GX_VARIANT.

G_VARIANT = GX_VARIANT.

ELSE.

PERFORM VARIANT_INIT.

ENDIF.

ENDFORM. " PAI_OF_SELECTION_SCREEN

&----


*& Form VARIANT_INIT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM VARIANT_INIT.

CLEAR G_VARIANT.

G_VARIANT-REPORT = G_REPID.

ENDFORM. " VARIANT_INIT

&----


*& Form T_SORT_BUILD

&----


  • text

----


  • -->P_I_SORT text

----


FORM T_SORT_BUILD USING P_I_SORT TYPE SLIS_T_SORTINFO_ALV.

DATA: LS_SORT TYPE SLIS_SORTINFO_ALV.

LS_SORT-FIELDNAME = 'CARRID'.

LS_SORT-SPOS = 1.

LS_SORT-UP = 'X'.

LS_SORT-SUBTOT = 'X'.

APPEND LS_SORT TO P_I_SORT.

LS_SORT-FIELDNAME = 'CONNID'.

LS_SORT-SPOS = 2.

LS_SORT-UP = 'X'.

LS_SORT-SUBTOT = 'X'.

APPEND LS_SORT TO P_I_SORT.

LS_SORT-FIELDNAME = 'FLDATE'.

LS_SORT-SPOS = 3.

LS_SORT-UP = 'X'.

LS_SORT-SUBTOT = 'X'.

APPEND LS_SORT TO P_I_SORT.

ENDFORM. " T_SORT_BUILD

2 REPLIES 2
Read only

Former Member
0 Likes
485

Hi,

and the question is...

Read only

Former Member
0 Likes
485

report ZVBN1_BDC

no standard page heading line-size 255.

***********TYPE DECLARATION**************

TYPES: BEGIN OF TY_RECORD,

MATNR TYPE MATNR,

SSCODE TYPE KNRMAT,

SSUCODE TYPE KNRMAT,

SSUYEAR TYPE KNRMAT,

END OF TY_RECORD.

*******************************************

***************DATA DECLARATION***********

data: begin of record OCCURS 0,

  • data element: KSCHN

KSCHL_001(004),

    • data element: MATNR

  • MATNR_002(018),

    • data element: KODATAB

  • DATAB_003(010),

    • data element: KODATBI

  • DATBI_004(010),

  • data element: MATNR

MATNR_005(018),

  • data element: KODATAB

DATAB_006(010),

  • data element: KODATBI

DATBI_007(010),

  • data element: KONDA_V

KONDA_01_008(002),

  • data element: DISPKNRMM

DISPKNRMM_01_009(013),

  • data element: DISPKNRNM

DISPKNRNM_01_010(013),

  • data element: KNRME

KNRME_01_011(003),

  • data element: DISPKNRZM

DISPKNRZM_01_012(013),

  • data element: KNREZ

KNREZ_01_013(003),

  • data element: KNRRR

KNRRR_01_014(003),

  • data element: KNRDD

KNRDD_01_015(001),

  • data element: KNRMAT

KNRMAT_01_016(018),

MARK(1),

end of record,

IT_RECORD TYPE STANDARD TABLE OF TY_RECORD,

WA_RECORD TYPE TY_RECORD,

CNT TYPE I,

CNT1 TYPE I,

CNT2 TYPE I,

TABIX TYPE I,

MATNR TYPE MATNR.

DATA: FLNAME TYPE STRING,

FILE_NAME TYPE IBIPPARMS-PATH.

DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.

  • messages of call transaction

DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

**************************************

******selection screen**************

PARAMETER: P_FL TYPE IBIPPARMS-PATH.

**************************************

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FL. "GETTING F4 FOR FLAT FILE.

CALL FUNCTION 'F4_FILENAME'

EXPORTING

PROGRAM_NAME = SYST-CPROG

DYNPRO_NUMBER = SYST-DYNNR

  • FIELD_NAME = 'FL'

IMPORTING

FILE_NAME = P_FL.

start-of-selection.

IF P_FL <> ''.

FLNAME = P_FL.

perform open_group.

CALL FUNCTION 'GUI_UPLOAD' "UPLOADING DATA FROM FILE TO THE INTERNAL TABLE

EXPORTING

FILENAME = FLNAME

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = 'X'

  • HEADER_LENGTH = 0

  • READ_BY_LINE = 'X'

  • DAT_MODE = ' '

  • CODEPAGE = ' '

  • IGNORE_CERR = ABAP_TRUE

  • REPLACEMENT = '#'

  • CHECK_BOM = ' '

  • VIRUS_SCAN_PROFILE =

  • NO_AUTH_CHECK = ' '

  • IMPORTING

  • FILELENGTH =

  • HEADER =

TABLES

DATA_TAB = IT_RECORD

  • EXCEPTIONS

  • FILE_OPEN_ERROR = 1

  • FILE_READ_ERROR = 2

  • NO_BATCH = 3

  • GUI_REFUSE_FILETRANSFER = 4

  • INVALID_TYPE = 5

  • NO_AUTHORITY = 6

  • UNKNOWN_ERROR = 7

  • BAD_DATA_FORMAT = 8

  • HEADER_NOT_ALLOWED = 9

  • SEPARATOR_NOT_ALLOWED = 10

  • HEADER_TOO_LONG = 11

  • UNKNOWN_DP_ERROR = 12

  • ACCESS_DENIED = 13

  • DP_OUT_OF_MEMORY = 14

  • DISK_FULL = 15

  • DP_TIMEOUT = 16

  • OTHERS = 17

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

LOOP AT IT_RECORD INTO WA_RECORD.

CNT = CNT + 1.

IF WA_RECORD-SSCODE <> ''.

RECORD-KSCHL_001 = 'NA00'.

  • RECORD-MATNR_002 = WA_RECORD-MATNR.

  • RECORD-DATAB_003 = '03.10.2007'.

  • RECORD-DATBI_004 = '31.12.9999'.

RECORD-MATNR_005 = WA_RECORD-MATNR.

RECORD-DATAB_006 = '10.10.2007'.

RECORD-DATBI_007 = '31.12.9999'.

RECORD-KNRMAT_01_016 = WA_RECORD-SSCODE.

RECORD-KONDA_01_008 = '03' .

RECORD-DISPKNRMM_01_009 = '1'.

RECORD-DISPKNRNM_01_010 = '1'.

RECORD-KNRME_01_011 = 'EA'.

RECORD-DISPKNRZM_01_012 ='1'.

RECORD-KNREZ_01_013 = 'EA'.

RECORD-KNRRR_01_014 = '2'.

RECORD-KNRDD_01_015 = '2'.

APPEND RECORD TO RECORD.

  • PERFORM BDC_FILL.

ENDIF.

IF WA_RECORD-SSUCODE <> ''.

RECORD-KSCHL_001 = 'NA00'.

  • RECORD-MATNR_002 = WA_RECORD-MATNR.

  • RECORD-DATAB_003 = '03.10.2007'.

  • RECORD-DATBI_004 = '31.12.9999'.

RECORD-MATNR_005 = WA_RECORD-MATNR.

RECORD-DATAB_006 = '10.10.2007'.

RECORD-DATBI_007 = '31.12.9999'.

RECORD-KNRMAT_01_016 = WA_RECORD-SSUCODE.

RECORD-KONDA_01_008 = '04'.

RECORD-DISPKNRMM_01_009 = '1'.

RECORD-DISPKNRNM_01_010 = '1'.

RECORD-KNRME_01_011 = 'EA'.

RECORD-DISPKNRZM_01_012 ='1'.

RECORD-KNREZ_01_013 = 'EA'.

RECORD-KNRRR_01_014 = '2'.

RECORD-KNRDD_01_015 = '2'.

APPEND RECORD TO RECORD.

  • PERFORM BDC_FILL.

ENDIF.

IF WA_RECORD-SSUYEAR <> ''.

RECORD-KSCHL_001 = 'NA00'.

  • RECORD-MATNR_002 = WA_RECORD-MATNR.

  • RECORD-DATAB_003 = '03.10.2007'.

  • RECORD-DATBI_004 = '31.12.9999'.

RECORD-MATNR_005 = WA_RECORD-MATNR.

RECORD-DATAB_006 = '10.10.2007'.

RECORD-DATBI_007 = '31.12.9999'.

RECORD-KNRMAT_01_016 = WA_RECORD-SSUYEAR.

RECORD-KONDA_01_008 = '05'.

RECORD-DISPKNRMM_01_009 = '1'.

RECORD-DISPKNRNM_01_010 = '1'.

RECORD-KNRME_01_011 = 'EA'.

RECORD-DISPKNRZM_01_012 = '1'.

RECORD-KNREZ_01_013 = 'EA'.

RECORD-KNRRR_01_014 = '2'.

RECORD-KNRDD_01_015 = '2'.

APPEND RECORD TO RECORD.

  • PERFORM BDC_FILL.

ENDIF.

ENDLOOP.

SORT RECORD.

  • READ TABLE RECORD INDEX 1.

  • IF SY-SUBRC = 0.

  • MATNR = RECORD-MATNR_005.

  • ENDIF.

ELSE.

MESSAGE 'PLEASE FILL THE FILE NAME.' TYPE 'A'.

ENDIF.

LOOP AT RECORD.

CNT2 = CNT2 + 1.

  • IF RECORD-MATNR_005 = MATNR.

IF CNT2 = 1.

MATNR = RECORD-MATNR_005.

PERFORM BDC_FILL.

MATNR = RECORD-MATNR_005.

CLEAR RECORD.

ELSEIF RECORD-MARK <> 'X'.

MATNR = RECORD-MATNR_005.

PERFORM BDC_FILL.

MATNR = RECORD-MATNR_005.

CLEAR RECORD.

ENDIF.

ENDLOOP.

perform close_group.

&----


*& Form BDC_FILL

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM BDC_FILL .

perform bdc_dynpro using 'SAPMV13N' '0100'.

perform bdc_field using 'BDC_CURSOR'

'N000-KSCHL'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'N000-KSCHL'

record-KSCHL_001.

perform bdc_dynpro using 'SAPMV13N' '1901'.

perform bdc_field using 'BDC_CURSOR'

'KOMG-MATNR'.

perform bdc_field using 'BDC_OKCODE'

'=DRAU'.

  • perform bdc_field using 'KOMG-MATNR'

  • record-MATNR_002.

  • perform bdc_field using 'N000-DATAB'

  • record-DATAB_003.

  • perform bdc_field using 'N000-DATBI'

  • record-DATBI_004.

perform bdc_dynpro using 'SAPMV13N' '2901'.

perform bdc_field using 'BDC_CURSOR'

'KONDN-KNRMAT(01)'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'KOMG-MATNR'

record-MATNR_005.

perform bdc_field using 'N000-DATAB'

record-DATAB_006.

perform bdc_field using 'N000-DATBI'

record-DATBI_007.

****************************************************************

LOOP AT RECORD WHERE MATNR_005 = MATNR.

TABIX = SY-TABIX.

CNT1 = CNT1 + 1.

DATA: STR TYPE STRING,

STR1 TYPE STRING,

STR2 TYPE STRING,

CHR(5) TYPE C.

STR1 = 'KOMG-KONDA'.

CHR = CNT1.

STR2 = CHR.

CONDENSE STR2. "COUNT RECORDS FOR THE PARTICULAR MATNR.

CONCATENATE STR1 '(0' STR2 ')' INTO STR.

perform bdc_field using 'BDC_CURSOR'

STR.

perform bdc_field using STR

record-KONDA_01_008.

CLEAR STR.

STR1 = 'MV13N-DISPKNRMM'.

CONCATENATE STR1 '(0' STR2 ')' INTO STR.

perform bdc_field using STR

record-DISPKNRMM_01_009.

CLEAR STR.

STR1 = 'MV13N-DISPKNRNM'.

CONCATENATE STR1 '(0' STR2 ')' INTO STR.

perform bdc_field using STR

record-DISPKNRNM_01_010.

CLEAR STR.

STR1 = 'KONDN-KNRME'.

CONCATENATE STR1 '(0' STR2 ')' INTO STR.

perform bdc_field using STR

record-KNRME_01_011.

CLEAR STR.

STR1 = 'MV13N-DISPKNRZM'.

CONCATENATE STR1 '(0' STR2 ')' INTO STR.

perform bdc_field using STR

record-DISPKNRZM_01_012.

CLEAR STR.

STR1 = 'KONDN-KNREZ'.

CONCATENATE STR1 '(0' STR2 ')' INTO STR.

perform bdc_field using STR

record-KNREZ_01_013.

CLEAR STR.

STR1 = 'KONDN-KNRRR'.

CONCATENATE STR1 '(0' STR2 ')' INTO STR.

perform bdc_field using STR

record-KNRRR_01_014.

CLEAR STR.

STR1 = 'KONDN-KNRDD'.

CONCATENATE STR1 '(0' STR2 ')' INTO STR.

perform bdc_field using STR

record-KNRDD_01_015.

CLEAR STR.

STR1 = 'KONDN-KNRMAT'.

CONCATENATE STR1 '(0' STR2 ')' INTO STR.

perform bdc_field using STR

record-KNRMAT_01_016.

CLEAR: STR1, CHR, STR, STR2.

RECORD-MARK = 'X'.

MODIFY RECORD INDEX TABIX TRANSPORTING MARK.

ENDLOOP.

  • SORT BDCDATA.

perform bdc_dynpro using 'SAPMV13N' '2901'.

perform bdc_field using 'BDC_CURSOR'

'KOMG-MATNR'.

perform bdc_field using 'BDC_OKCODE'

'=SICH'.

  • CNT1 = CNT1 + 1.

  • READ TABLE RECORD INDEX CNT1.

  • MATNR = RECORD-MATNR_005.

  • CLEAR CNT1.

perform bdc_transaction using 'VBN1'.

READ TABLE MESSTAB INDEX CNT.

PERFORM BDC_MSG.

  • RECORD-MARK = 'X'.

  • MODIFY RECORD INDEX TABIX TRANSPORTING MARK.

ENDFORM. " BDC_FILL

&----


*& Form OPEN_GROUP

&----


  • text

----


FORM OPEN_GROUP.

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

CLIENT = SY-MANDT

GROUP = 'VBN1'

USER = SY-UNAME

KEEP = 'X'.

ENDFORM. "OPEN_GROUP

&----


*& Form CLOSE_GROUP

&----


  • text

----


FORM CLOSE_GROUP.

CALL FUNCTION 'BDC_CLOSE_GROUP'.

ENDFORM. "CLOSE_GROUP

&----


*& Form bdc_transaction

&----


  • text

----


  • -->P_0522 text

----


FORM bdc_transaction USING VALUE(P_0522).

CALL TRANSACTION 'VBN1' USING BDCDATA

MODE 'A'

UPDATE 'A'

MESSAGES INTO MESSTAB.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

TCODE = 'VBN1'

TABLES

DYNPROTAB = BDCDATA.

REFRESH BDCDATA.

ENDFORM. " bdc_transaction

&----


*& Form BDC_DYNPRO

&----


  • text

----


  • -->PROGRAM text

  • -->DYNPRO text

----


FORM BDC_DYNPRO USING PROGRAM DYNPRO.

CLEAR BDCDATA.

BDCDATA-PROGRAM = PROGRAM.

BDCDATA-DYNPRO = DYNPRO.

BDCDATA-DYNBEGIN = 'X'.

APPEND BDCDATA.

ENDFORM. "BDC_DYNPRO

&----


*& Form BDC_FIELD

&----


  • text

----


  • -->FNAM text

  • -->FVAL text

----


FORM BDC_FIELD USING FNAM FVAL.

CLEAR BDCDATA.

BDCDATA-FNAM = FNAM.

BDCDATA-FVAL = FVAL.

APPEND BDCDATA.

ENDFORM. "BDC_FIELD

&----


*& Form BDC_MSG

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM BDC_MSG .

IF MESSTAB-MSGTYP = 'S'.

WRITE: / 'RECORD HAS BEEN SUCCESSFULLY INSERTED FOR:', record-matnr_005,

RECORD-KNRMAT_01_016.

ELSEIF MESSTAB-MSGTYP = 'E'.

WRITE: / 'ERROR OCCURED DURING INSERTING DATA FOR', MESSTAB-MSGV1.

ENDIF.

ENDFORM. " BDC_MSG