‎2012 Oct 10 11:36 AM
Actually
Trying to Design and ALV grid list using OOPS Programming, and list sales Orders for a particular Sales ORG and sales order(Will be inputted in the selection Screen, multiple inputs can be possible).
When user double clicks on any particular row it should take me to VA03 screen directly. But when i am executing the below code, after entering values for vbeln am not able to get the output. please help me on this.
REPORT YASH_TEST_01 NO STANDARD PAGE HEADING .
*-----------------------------------------------------------------------*
* DECLARATION OF CLASS
*-----------------------------------------------------------------------*
CLASS LCL_EVENT_RECEIVER DEFINITION DEFERRED.
TYPE-POOLS : SLIS.
TABLES: VBAK.
TYPES: BEGIN OF TY_VBAK,
VBELN TYPE VBAK-VBELN,
VKORG TYPE VBAK-VBELN,
GUEBG TYPE VBAK-GUEBG,
GUEEN TYPE VBAK-GUEEN,
END OF TY_VBAK.
DATA: ITAB TYPE TABLE OF TY_VBAK,
WA TYPE TY_VBAK,
GC_CUSTOM_CONTROL_NAME TYPE VBELN VALUE 'CC_ALV',
EVENTRECEIVER TYPE REF TO LCL_EVENT_RECEIVER.
DATA: LT_FCAT TYPE LVC_T_FCAT,
WA_FCAT TYPE LVC_S_FCAT,
TY_FIELDCAT TYPE LVC_S_FCAT ,
CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
REF_GRID TYPE REF TO CL_GUI_ALV_GRID.
*---------------------------------------------------------------------*
* CLASS EVENT RECEIVER DEFINITION
*---------------------------------------------------------------------*
CLASS LCL_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
METHODS:
HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW E_COLUMN ES_ROW_NO.
ENDCLASS.
*---------------------------------------------------------------------*
* CLASS EVENT RECEIVER IMPLEMENTATION
*---------------------------------------------------------------------*
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
METHOD HANDLE_DOUBLE_CLICK.
READ TABLE ITAB INTO WA INDEX E_ROW-INDEX.
IF SY-SUBRC <> 0.
MESSAGE ' * DATA IS NOT AVAILABLE * ' TYPE 'I'.
ENDIF.
SET PARAMETER ID 'VBELN' FIELD WA-VBELN.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDMETHOD.
ENDCLASS.
*-----------------------------------------------------------------------*
* SELECTION SCREEN DECLARATION.
*-----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE T1.
SELECTION-SCREEN SKIP 2.
SELECT-OPTIONS : S_VBELN FOR VBAK-VBELN NO INTERVALS.
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN END OF BLOCK B1.
INITIALIZATION.
T1 = 'SELECT SALES ORDER NUMBER'.
START-OF-SELECTION.
SELECT VBELN
VKORG
GUEBG
GUEEN
FROM VBAK
INTO TABLE ITAB
WHERE VBELN IN S_VBELN.
END-OF-SELECTION.
IF NOT ITAB IS INITIAL.
CALL SCREEN 9001.
ENDIF.
MODULE STATUS_9001 OUTPUT.
*-----------------------------------------------------------------------*
* CREATING AN OBJECT.
*-----------------------------------------------------------------------*
CREATE OBJECT container
EXPORTING
* parent =
container_name = 'CONTAINER'
* style =
* lifetime = lifetime_default
* repid =
* dynnr =
* no_autodef_progid_dynnr =
* EXCEPTIONS
* cntl_error = 1
* cntl_system_error = 2
* create_error = 3
* lifetime_error = 4
* lifetime_dynpro_dynpro_link = 5
* others = 6
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT ref_grid
EXPORTING
* i_shellstyle = 0
* i_lifetime =
i_parent = CONTAINER
* i_appl_events = space
* i_parentdbg =
* i_applogparent =
* i_graphicsparent =
* i_name =
* i_fcat_complete = space
* EXCEPTIONS
* error_cntl_create = 1
* error_cntl_init = 2
* error_cntl_link = 3
* error_dp_create = 4
* others = 5
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
SET HANDLER EVENTRECEIVER->HANDLE_DOUBLE_CLICK FOR REF_GRID.
WA_FCAT-COL_POS = 1.
WA_FCAT-FIELDNAME = 'VBELN'.
WA_FCAT-TABNAME = 'ITAB'.
WA_FCAT-REPTEXT = 'SALES DOC NO'.
WA_FCAT-EMPHASIZE = 'C711'.
APPEND WA_FCAT TO LT_FCAT.
WA_FCAT-COL_POS = 2.
WA_FCAT-FIELDNAME = 'VKORG'.
WA_FCAT-TABNAME = 'ITAB'.
WA_FCAT-REPTEXT = 'SALES-ORG.'.
APPEND WA_FCAT TO LT_FCAT.
WA_FCAT-COL_POS = 3.
WA_FCAT-FIELDNAME = 'GUEBG'.
WA_FCAT-TABNAME = 'ITAB'.
WA_FCAT-REPTEXT = 'FROM DATE'.
APPEND WA_FCAT TO LT_FCAT.
WA_FCAT-COL_POS = 4.
WA_FCAT-FIELDNAME = 'GUEEN'.
WA_FCAT-TABNAME = 'ITAB'.
WA_FCAT-REPTEXT = 'TILL DATE'.
APPEND WA_FCAT TO LT_FCAT.
ENDMODULE. " STATUS_9001 OUTPUT
MODULE USER_COMMAND_9001 INPUT.
*-----------------------------------------------------------------------*
* MERGING BEFORE THE ALV-GRID
*----------------------------------------------------------------
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
* I_BUFFER_ACTIVE =
I_STRUCTURE_NAME = 'TY-VBAK'
* I_CLIENT_NEVER_DISPLAY = 'X'
* I_BYPASSING_BUFFER =
I_INTERNAL_TABNAME = ITAB
CHANGING
ct_fieldcat = LT_FCAT
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.
*-----------------------------------------------------------------------*
* DISPLAYING THE ALV-GRID
*-----------------------------------------------------------------------*
CALL METHOD ref_grid->set_table_for_first_display
EXPORTING
* i_buffer_active =
* i_bypassing_buffer =
* i_consistency_check =
i_structure_name = 'TY_VBAK'
* is_variant =
* i_save =
* i_default = 'X'
* is_layout =
* is_print =
* it_special_groups =
* it_toolbar_excluding =
* it_hyperlink =
* it_alv_graphics =
* it_except_qinfo =
* ir_salv_adapter =
CHANGING
it_outtab = ITAB
it_fieldcatalog = LT_FCAT
* it_sort =
* it_filter =
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
others = 4
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDMODULE. " USER_COMMAND_9001 INPUT
TOP-OF-PAGE.
WRITE 'SALES ORDER AND ITS SALES ORG DETAILS'.
‎2012 Oct 10 1:23 PM
Hi MADALAM,
code u have written in USER_COMMAND_9001 is not getting triggered since no user command at load of acreen. I think u can put that code in STATUS_9001 only.
u go for PAI event when u want some user action but first u have to display the ALV upon load of screen.
‎2012 Oct 10 1:23 PM
Hi MADALAM,
code u have written in USER_COMMAND_9001 is not getting triggered since no user command at load of acreen. I think u can put that code in STATUS_9001 only.
u go for PAI event when u want some user action but first u have to display the ALV upon load of screen.
‎2012 Oct 11 7:11 AM
Hi Jitendra,
Thanks for your reply. I have tried it like how you said. But still am not able to display alv grid. the same problem is coming like before with no change.
‎2012 Oct 11 7:54 AM
Hi ,
for me that is working. it might be possible that in screen flow logic u haven't uncomment statements
MODULE STATUS_9001 and MODULE USER_COMMAND_9001.
‎2012 Oct 11 11:09 AM
Thanks for the reply JITENDRA
I am getting runtime error saying that 'RAISE_EXCEPTION"
Program : CL_GUI_ALV_GRID========CP
Include: CL_GUI_ALV_GRID=========CM01J
Module Name: SET_SORT_CRITERIA.
please go through the code that am executing.
REPORT YASH_TEST_01 NO STANDARD PAGE HEADING .
*-----------------------------------------------------------------------*
* DECLARATION OF CLASS
*-----------------------------------------------------------------------*
CLASS LCL_EVENT_RECEIVER DEFINITION DEFERRED.
TYPE-POOLS : SLIS.
TABLES: VBAK.
TYPES: BEGIN OF TY_VBAK,
VBELN TYPE VBAK-VBELN,
VKORG TYPE VBAK-VBELN,
GUEBG TYPE VBAK-GUEBG,
GUEEN TYPE VBAK-GUEEN,
END OF TY_VBAK.
DATA: ITAB TYPE TABLE OF TY_VBAK,
WA TYPE TY_VBAK,
GC_CUSTOM_CONTROL_NAME TYPE VBELN VALUE 'CC_ALV',
EVENTRECEIVER TYPE REF TO LCL_EVENT_RECEIVER,
OK_CODE.
DATA: LT_FCAT TYPE LVC_T_FCAT,
WA_FCAT TYPE LVC_S_FCAT,
TY_FIELDCAT TYPE LVC_S_FCAT ,
CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
REF_GRID TYPE REF TO CL_GUI_ALV_GRID.
*---------------------------------------------------------------------*
* CLASS EVENT RECEIVER DEFINITION
*---------------------------------------------------------------------*
CLASS LCL_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
METHODS:
HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW E_COLUMN ES_ROW_NO.
ENDCLASS.
*---------------------------------------------------------------------*
* CLASS EVENT RECEIVER IMPLEMENTATION
*---------------------------------------------------------------------*
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
METHOD HANDLE_DOUBLE_CLICK.
READ TABLE ITAB INTO WA INDEX E_ROW-INDEX.
IF SY-SUBRC <> 0.
MESSAGE ' * DATA IS NOT AVAILABLE * ' TYPE 'I'.
ENDIF.
SET PARAMETER ID 'VBELN' FIELD WA-VBELN.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDMETHOD.
ENDCLASS.
*-----------------------------------------------------------------------*
* SELECTION SCREEN DECLARATION.
*-----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE T1.
SELECTION-SCREEN SKIP 2.
SELECT-OPTIONS : S_VBELN FOR VBAK-VBELN NO INTERVALS OBLIGATORY.
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN END OF BLOCK B1.
INITIALIZATION.
T1 = 'SELECT SALES ORDER NUMBER'.
START-OF-SELECTION.
SELECT VBELN
VKORG
GUEBG
GUEEN
FROM VBAK
INTO TABLE ITAB
WHERE VBELN IN S_VBELN.
END-OF-SELECTION.
IF NOT ITAB IS INITIAL.
CALL SCREEN 9001.
ENDIF.
TOP-OF-PAGE.
WRITE 'SALES ORDER AND ITS SALES ORG DETAILS'.
*&---------------------------------------------------------------------*
*& MODULE STATUS_9001 OUTPUT
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
MODULE STATUS_9001 OUTPUT.
SET PF-STATUS '1111'.
* SET TITLEBAR 'XXX'.
*-----------------------------------------------------------------------*
* CREATING AN OBJECT.
*-----------------------------------------------------------------------*
CREATE OBJECT CONTAINER
EXPORTING
* PARENT =
CONTAINER_NAME = 'CONTAINER'
* STYLE =
* LIFETIME = LIFETIME_DEFAULT
* REPID =
* DYNNR =
* NO_AUTODEF_PROGID_DYNNR =
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
OTHERS = 6
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT REF_GRID
EXPORTING
* I_SHELLSTYLE = 0
* I_LIFETIME =
I_PARENT = CONTAINER
* I_APPL_EVENTS = SPACE
* I_PARENTDBG =
* I_APPLOGPARENT =
* I_GRAPHICSPARENT =
* I_NAME =
* I_FCAT_COMPLETE = SPACE
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
OTHERS = 5
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*-----------------------------------------------------------------------*
* DISPLAYING THE ALV-GRID
*-----------------------------------------------------------------------*
CALL METHOD REF_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
* I_BUFFER_ACTIVE =
* I_BYPASSING_BUFFER =
* I_CONSISTENCY_CHECK =
I_STRUCTURE_NAME = 'TY_VBAK'
* IS_VARIANT =
* I_SAVE =
* I_DEFAULT = 'X'
* IS_LAYOUT =
* IS_PRINT =
* IT_SPECIAL_GROUPS =
* IT_TOOLBAR_EXCLUDING =
* IT_HYPERLINK =
* IT_ALV_GRAPHICS =
* IT_EXCEPT_QINFO =
* IR_SALV_ADAPTER =
CHANGING
IT_OUTTAB = ITAB
IT_FIELDCATALOG = LT_FCAT
* IT_SORT =
* IT_FILTER =
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
SET HANDLER EVENTRECEIVER->HANDLE_DOUBLE_CLICK FOR REF_GRID.
WA_FCAT-COL_POS = 1.
WA_FCAT-FIELDNAME = 'VBELN'.
WA_FCAT-TABNAME = 'ITAB'.
WA_FCAT-REPTEXT = 'SALES DOC NO'.
WA_FCAT-EMPHASIZE = 'C711'.
APPEND WA_FCAT TO LT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-COL_POS = 2.
WA_FCAT-FIELDNAME = 'VKORG'.
WA_FCAT-TABNAME = 'ITAB'.
WA_FCAT-REPTEXT = 'SALES-ORG.'.
APPEND WA_FCAT TO LT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-COL_POS = 3.
WA_FCAT-FIELDNAME = 'GUEBG'.
WA_FCAT-TABNAME = 'ITAB'.
WA_FCAT-REPTEXT = 'FROM DATE'.
APPEND WA_FCAT TO LT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-COL_POS = 4.
WA_FCAT-FIELDNAME = 'GUEEN'.
WA_FCAT-TABNAME = 'ITAB'.
WA_FCAT-REPTEXT = 'TILL DATE'.
APPEND WA_FCAT TO LT_FCAT.
CLEAR WA_FCAT.
ENDMODULE. " STATUS_9001 OUTPUT
*&---------------------------------------------------------------------*
*& MODULE USER_COMMAND_9001 INPUT
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9001 INPUT.
OK_CODE = SY-UCOMM.
CASE OK_CODE.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'ENTER'.
LEAVE TO TRANSACTION 'VA03'.
ENDCASE.
ENDMODULE. " USER_COMMAND_9001 INPUT
‎2012 Oct 11 11:19 AM
i have uncommented the modules in screen painter. Is there any thing that i should do in screen painter other than this.