2007 Nov 12 10:37 AM
&----
*& 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
2007 Nov 12 10:39 AM
2007 Nov 14 6:47 AM
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
| User | Count |
|---|---|
| 6 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |