‎2007 Feb 01 5:33 AM
can u explain one interactive report
with comments
could u plz explain clearly
‎2007 Feb 01 5:36 AM
Hi,
Check this eg:
************************************************************************
Type Pools *
************************************************************************
TYPE-POOLS: SLIS, ICON.
************************************************************************
Tables *
************************************************************************
TABLES : VBRK, "Billing Master table
VBRP. "Billing Item table
************************************************************************
VARIABLES DECLARATION *
************************************************************************
DATA: STR_DATE LIKE SY-DATUM.
DATA: X_FIELDCAT_VBRK TYPE SLIS_FIELDCAT_ALV,
IT_FIELDCAT_VBRK TYPE SLIS_T_FIELDCAT_ALV.
DATA: X_FIELDCAT_VBRP TYPE SLIS_FIELDCAT_ALV,
IT_FIELDCAT_VBRP TYPE SLIS_T_FIELDCAT_ALV.
DATA: L_LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA: CUR_VBELN(15), CUR_VBELN_VALUE(15).
DATA: TEMP_VBELN(10).
DATA: CTAB LIKE SY-TABIX.
************************************************************************
Internal Tables *
************************************************************************
Internal table to hold data from VBRK
DATA: BEGIN OF IT_VBRK OCCURS 0,
VBELN LIKE VBRK-VBELN,
WAERK LIKE VBRK-WAERK,
VKORG LIKE VBRK-VKORG,
FKDAT LIKE VBRK-FKDAT,
BUKRS LIKE VBRK-BUKRS,
BUTXT LIKE T001-BUTXT,
CHECK(1) TYPE C,
END OF IT_VBRK.
Internal table to hold data from VBRP
DATA: BEGIN OF IT_VBRP OCCURS 0,
VBELN LIKE VBRP-VBELN,
POSNR LIKE VBRP-POSNR,
FKIMG LIKE VBRP-FKIMG,
VRKME LIKE VBRP-VRKME,
NETWR LIKE VBRP-NETWR,
MATNR LIKE VBRP-MATNR,
ARKTX LIKE VBRP-ARKTX,
END OF IT_VBRP.
DATA: BEGIN OF IT_T001 OCCURS 0,
BUKRS LIKE T001-BUKRS,
BUTXT LIKE T001-BUTXT,
END OF IT_T001.
************************************************************************
Selection-Screen *
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_VBELN FOR VBRK-VBELN,
S_FKDAT FOR VBRK-FKDAT,
S_MATNR FOR VBRP-MATNR.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-001.
PARAMETERS : LIST RADIOBUTTON GROUP G1,
GRID RADIOBUTTON GROUP G1 DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK B2.
************************************************************************
INITIALIZATION ********************
************************************************************************
INITIALIZATION.
STR_DATE = SY-DATUM - 200.
S_FKDAT-LOW = STR_DATE.
S_FKDAT-HIGH = SY-DATUM.
S_FKDAT-SIGN = 'I'.
APPEND S_FKDAT.
************************************************************************
At Selection-Screen Output *
************************************************************************
AT SELECTION-SCREEN OUTPUT .
LOOP AT SCREEN.
IF SCREEN-NAME = 'S_FKDAT-HIGH'.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
************************************************************************
At Selection-Screen *
************************************************************************
AT SELECTION-SCREEN.
PERFORM VALIDATION.
************************************************************************
Start of Selection *
************************************************************************
START-OF-SELECTION.
*POPULATION OF DATA INTO INTERNAL TABLE IT_VBRK AND IT_VBRP
PERFORM GET_DATA_VBRK.
PERFORM FIELDCATALOG_CHANGE.
*ALV GRID/LIST DISPLAY
PERFORM FIRST_SCREEN_DISPLAY.
&----
*& Form VALIDATION
&----
text
----
FORM VALIDATION.
IF S_VBELN[] IS NOT INITIAL.
SELECT SINGLE VBELN
FROM VBRK
INTO VBRK-VBELN
WHERE VBELN IN S_VBELN.
IF SY-SUBRC <> 0.
MESSAGE I000 WITH 'PLEASE ENTER CORRECT BILLING DOCUMENT'.
STOP.
ENDIF.
ENDIF.
IF S_FKDAT[] IS INITIAL.
MESSAGE I000 WITH 'PLEASE ENTER ALL THE MANDATORY FIELDS'.
STOP.
ENDIF.
IF S_MATNR[] IS NOT INITIAL.
SELECT SINGLE MATNR
FROM MARA
INTO VBRP-MATNR
WHERE MATNR IN S_MATNR.
IF SY-SUBRC <> 0.
MESSAGE I000 WITH 'PLEASE ENTER CORRECT MATERIAL NUMBER'.
STOP.
ENDIF.
ENDIF.
ENDFORM. "VALIDATION
&----
*& Form GET_DATA_VBRK
&----
text
----
FORM GET_DATA_VBRK.
SELECT VBELN
WAERK
VKORG
FKDAT
BUKRS
FROM VBRK INTO TABLE IT_VBRK
WHERE VBELN IN S_VBELN
AND FKDAT IN S_FKDAT.
SORT IT_VBRK BY VBELN BUKRS.
SELECT BUKRS
BUTXT
FROM T001 INTO TABLE IT_T001
FOR ALL ENTRIES IN IT_VBRK
WHERE BUKRS = IT_VBRK-BUKRS.
LOOP AT IT_VBRK.
CTAB = SY-TABIX.
LOOP AT IT_T001 WHERE BUKRS = IT_VBRK-BUKRS.
IF SY-SUBRC = 0.
IT_VBRK-BUTXT = IT_T001-BUTXT.
MODIFY IT_VBRK INDEX CTAB.
CLEAR CTAB.
ENDIF.
ENDLOOP.
ENDLOOP.
ENDFORM. "GET_DATA
&----
*& Form FIELDCATALOG_CHANGE
&----
text
----
FORM FIELDCATALOG_CHANGE.
*Layout Change
L_LAYOUT-ZEBRA = 'X'.
L_LAYOUT-BOX_FIELDNAME = 'CHECK'.
*Define seperate Color for the fields
X_FIELDCAT_VBRK-COL_POS = 1.
X_FIELDCAT_VBRK-FIELDNAME = 'CHECK'.
X_FIELDCAT_VBRK-SELTEXT_M = 'chek'.
X_FIELDCAT_VBRK-CHECKBOX = 'X'.
X_FIELDCAT_VBRK-INPUT = 'X'.
X_FIELDCAT_VBRK-EDIT = 'X'.
APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.
CLEAR X_FIELDCAT_VBRK.
X_FIELDCAT_VBRK-COL_POS = 2.
X_FIELDCAT_VBRK-TABNAME = 'IT_VBRK'.
X_FIELDCAT_VBRK-FIELDNAME = 'VBELN'.
X_FIELDCAT_VBRK-EMPHASIZE = 'C301'.
X_FIELDCAT_VBRK-OUTPUTLEN = 15.
APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.
CLEAR X_FIELDCAT_VBRK.
X_FIELDCAT_VBRK-TABNAME = 'IT_VBRK'.
X_FIELDCAT_VBRK-FIELDNAME = 'WAERK'.
X_FIELDCAT_VBRK-EMPHASIZE = 'C201'.
X_FIELDCAT_VBRK-OUTPUTLEN = 15.
APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.
CLEAR X_FIELDCAT_VBRK.
X_FIELDCAT_VBRK-TABNAME = 'IT_VBRK'.
X_FIELDCAT_VBRK-FIELDNAME = 'VKORG'.
X_FIELDCAT_VBRK-EMPHASIZE = 'C300'.
X_FIELDCAT_VBRK-OUTPUTLEN = 15.
APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.
CLEAR X_FIELDCAT_VBRK.
X_FIELDCAT_VBRK-TABNAME = 'IT_VBRK'.
X_FIELDCAT_VBRK-FIELDNAME = 'FKDAT'.
X_FIELDCAT_VBRK-EMPHASIZE = 'C600'.
X_FIELDCAT_VBRK-OUTPUTLEN = 15.
APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.
CLEAR X_FIELDCAT_VBRK.
X_FIELDCAT_VBRK-TABNAME = 'IT_VBRK'.
X_FIELDCAT_VBRK-FIELDNAME = 'BUKRS'.
X_FIELDCAT_VBRK-EMPHASIZE = 'C400'.
X_FIELDCAT_VBRK-OUTPUTLEN = 15.
APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.
CLEAR X_FIELDCAT_VBRK.
X_FIELDCAT_VBRK-TABNAME = 'IT_VBRK'.
X_FIELDCAT_VBRK-FIELDNAME = 'BUTXT'.
X_FIELDCAT_VBRK-EMPHASIZE = 'C500'.
X_FIELDCAT_VBRK-OUTPUTLEN = 15.
APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.
CLEAR X_FIELDCAT_VBRK.
ENDFORM. "FIELDCATALOG_CHANGE
&----
*& Form FIRST_SCREEN_DISPLAY
&----
text
----
FORM FIRST_SCREEN_DISPLAY.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'IT_VBRK'
I_INCLNAME = SY-REPID
CHANGING
CT_FIELDCAT = IT_FIELDCAT_VBRK
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CHECK RADIO BUTTON SELECTION AND ACCORDINGLY DISPLAY LIST OR GRID ALV
IF LIST = 'X'.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = L_LAYOUT
IT_FIELDCAT = IT_FIELDCAT_VBRK
IT_EVENTS =
TABLES
T_OUTTAB = IT_VBRK
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.
CLEAR LIST.
ENDIF.
IF GRID = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = L_LAYOUT
IT_FIELDCAT = IT_FIELDCAT_VBRK
IT_EVENTS =
TABLES
T_OUTTAB = IT_VBRK
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.
CLEAR GRID.
ENDIF.
ENDFORM. "FIRST_SCREEN_DISPLAY
&----
*& Form STATUS
&----
text
----
-->P_EXTAB text
----
FORM STATUS USING P_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'STATUS' EXCLUDING P_EXTAB.
ENDFORM. "STATUS
&----
*& Form USER_COMMAND
&----
text
----
-->R_UCOMM text
-->RS_SELFIELD text
----
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN 'BACK' OR 'CANC' OR 'EXIT'.
LEAVE TO SCREEN 0.
WHEN '&IC1'.
IF RS_SELFIELD-FIELDNAME = 'VBELN'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = RS_SELFIELD-VALUE
IMPORTING
OUTPUT = TEMP_VBELN.
TEMP_VBELN = RS_SELFIELD-VALUE.
PERFORM GET_DATA_VBRP.
PERFORM GET_SECOND_SCREEN_DISPLAY.
ENDIF.
ENDCASE.
ENDFORM. "USER_COMMAND
&----
*& Form GET_DATA_VBRP
&----
text
----
FORM GET_DATA_VBRP.
SELECT VBELN
POSNR
FKIMG
VRKME
NETWR
MATNR
ARKTX
FROM VBRP INTO TABLE IT_VBRP
WHERE VBELN = TEMP_VBELN.
IF SY-SUBRC <> 0.
MESSAGE E000 WITH ' NO BILLING DETAILS FOUND'.
EXIT.
ENDIF.
ENDFORM. "GET_DATA_VBRP
&----
*& Form GET_SECOND_SCREEN_DISPLAY
&----
text
----
FORM GET_SECOND_SCREEN_DISPLAY.
FIELDCATALOG CALL
X_FIELDCAT_VBRP-TABNAME = 'IT_VBRP'.
X_FIELDCAT_VBRP-FIELDNAME = 'VRKME'.
X_FIELDCAT_VBRP-EMPHASIZE = 'C500'.
X_FIELDCAT_VBRP-OUTPUTLEN = 10.
APPEND X_FIELDCAT_VBRP TO IT_FIELDCAT_VBRP.
CLEAR X_FIELDCAT_VBRP.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'IT_VBRP'
I_INCLNAME = SY-REPID
CHANGING
CT_FIELDCAT = IT_FIELDCAT_VBRP
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CHECK RADIO BUTTON SELECTION AND ACCORDINGLY DISPLAY LIST OR GRID ALV
IF LIST = 'X'.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = L_LAYOUT
IT_FIELDCAT = IT_FIELDCAT_VBRP
I_SCREEN_START_COLUMN = 1
I_SCREEN_START_LINE = 1
I_SCREEN_END_COLUMN = 100
I_SCREEN_END_LINE = 10
IT_EVENTS =
TABLES
T_OUTTAB = IT_VBRP
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.
ENDIF.
IF GRID = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = L_LAYOUT
IT_FIELDCAT = IT_FIELDCAT_VBRP
I_SCREEN_START_COLUMN = 1
I_SCREEN_START_LINE = 1
I_SCREEN_END_COLUMN = 100
I_SCREEN_END_LINE = 10
IT_EVENTS =
TABLES
T_OUTTAB = IT_VBRP
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.
ENDIF.
ENDFORM. "GET_SECOND_SCREEN_DISPLAY
Regards
Subramanian
‎2007 Feb 01 5:38 AM
refer this link
http://www.sap-basis-abap.com/abap/check-boxes-in-an-interactive-report.htm
http://sap-img.com/abap/difference-between-drilldown-report-and-interactive-report.htm
http://www.sap-img.com/abap/an-interactive-alv-report.htm
see this program
START-OF-SELECTION.
WRITE 'Basic List'.
AT LINE-SELECTION.
WRITE 'Secondary List'.
TOP-OF-PAGE DURING LINE-SELECTION.
CASE sy-lsind.
WHEN 1.
WRITE 'First Secondary List'.
WHEN 2.
WRITE 'Second Secondary List'.
WHEN OTHERS.
WRITE: 'Secondary List, Level:', sy-lsind.
ENDCASE.
ULINE.
‎2007 Feb 01 5:39 AM
Hi,
I am sending the sample code for the interactive report. Kindly check this code.
REPORT YMS_INTERACTIVETEST LINE-SIZE 50 NO STANDARD PAGE HEADING.
TABLES: VBAP,KNA1,VBAK.
SELECT-OPTIONS: CUST FOR KNA1-KUNNR.
DATA: BEGIN OF ITAB OCCURS 0,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
VBELN LIKE VBAK-VBELN,
AUDAT LIKE VBAK-AUDAT,
AUART LIKE VBAK-AUART,
POSNR LIKE VBAP-POSNR,
POSAR LIKE VBAP-POSAR,
END OF ITAB.
DATA: ITAB1 LIKE ITAB OCCURS 0 WITH HEADER LINE.
INITIALIZATION.
START-OF-SELECTION.
SELECT KNA1KUNNR KNA1NAME1 INTO CORRESPONDING FIELDS OF TABLE ITAB1
FROM KNA1 WHERE KNA1~KUNNR IN CUST.
LOOP AT ITAB1.
WRITE:/10 ITAB1-KUNNR HOTSPOT, 30 ITAB1-NAME1.
HIDE: ITAB1-KUNNR.
ENDLOOP.
AT LINE-SELECTION.
CASE SY-LSIND.
WHEN '1'.
SELECT KNA1KUNNR VBAKVBELN VBAKAUDAT VBAKERDAT INTO CORRESPONDING FIELDS OF TABLE ITAB1
FROM KNA1 INNER JOIN VBAK ON KNA1KUNNR = VBAKKUNNR.
LOOP AT ITAB1.
WRITE:/ ITAB1-VBELN HOTSPOT, ITAB1-AUDAT, ITAB1-AUART.
HIDE: ITAB1-VBELN, ITAB1-AUDAT, ITAB1-AUART.
ENDLOOP.
WHEN '2'.
SELECT VBAKVBELN VBAPPOSNR VBAP~POSAR
INTO CORRESPONDING FIELDS OF TABLE ITAB1 FROM VBAK INNER JOIN VBAP ON VBAKVBELN = VBAPVBELN.
LOOP AT ITAB1.
WRITE:/ ITAB1-POSNR, ITAB1-POSAR.
ENDLOOP.
ENDCASE.
TOP-OF-PAGE.
WRITE:/ SY-VLINE,TEXT-001 COLOR COL_NEGATIVE.
ULINE.
Thanks,
Shankar
‎2007 Feb 01 5:43 AM
Hi rajesh,
http://www.planetsap.com/abap_main_page_reports_interactive_reporting.htm
The above link contains interactive reports code which is explained clearly