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

Interactive ALV using OOPS

0 Likes
1,305

Hi Experts,

I am trying to create an Interactive ALV report using OOPS concept. I have written the logic for the same. While checked in debugging, I am getting the values in respective internal table, but not on screen. Can you suggest, what is wrong in my program.

*&---------------------------------------------------------------------*
*& Report ZMA_INTERACTIVE_ALV
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zma_interactive_alv.
*TABLES:SNWD_BPA, SNWD_BPA_CONTACT, SNWD_AD.

CLASS CL_EVENT DEFINITION DEFERRED.
TYPES: BEGIN OF ty_bpa,
node_key TYPE snwd_node_key,
bp_role TYPE snwd_business_partner_role,
EMAIL_ADDRESS TYPE snwd_email_address,
END OF ty_bpa,
BEGIN OF ty_bpa_contact,
node_key TYPE snwd_NODE_KEY,
first_name TYPE snwd_first_name,
middle_name TYPE snwd_middle_name,
last_name TYPE snwd_last_name,
END OF ty_bpa_contact,
BEGIN OF ty_ad,
node_key TYPE snwd_email_address,
city TYPE snwd_city,
potsal_code TYPE snwd_postal_code,
END OF ty_ad.

DATA: gt_bpa TYPE STANDARD TABLE OF ty_bpa,
gs_bpa TYPE ty_bpa,
gt_bpa_contact TYPE STANDARD TABLE OF ty_bpa_contact,
gs_bpa_contact TYPE ty_bpa_contact,
gt_ad TYPE STANDARD TABLE OF ty_ad,
gs_ad TYPE ty_ad.

DATA: lo_container1 TYPE REF TO cl_gui_custom_container,
lo_grid1 TYPE REF TO cl_gui_alv_grid,
lo_container2 TYPE REF TO cl_gui_custom_container,
lo_grid2 TYPE REF TO cl_gui_alv_grid,
lo_container3 TYPE REF TO cl_gui_custom_container,
lo_grid3 TYPE REF TO cl_gui_alv_grid,
OB_EVENT TYPE REF TO CL_EVENT.

DATA: gt_fcat1 TYPE lvc_t_fcat,
gs_fcat1 TYPE lvc_s_fcat,
gt_fcat2 TYPE lvc_t_fcat,
gs_fcat2 TYPE lvc_s_fcat,
gt_fcat3 TYPE lvc_t_fcat,
gs_fcat3 TYPE lvc_s_fcat.

SELECT-OPTIONS: s_key FOR gs_bpa-node_key.

gs_fcat1-col_pos = '1'.
gs_fcat1-fieldname = 'NODE_KEY'.
gs_fcat1-scrtext_l = 'Generic Node Key'.
APPEND gs_fcat1 TO gt_fcat1.
clear gs_fcat1.

gs_fcat1-col_pos = '2'.
gs_fcat1-fieldname = 'BP_ROLE'.
gs_fcat1-scrtext_l = 'Business purpose Role'.
APPEND gs_fcat1 TO gt_fcat1.
clear gs_fcat1.

gs_fcat1-col_pos = '3'.
gs_fcat1-fieldname = 'EMAIL_ADDRESS'.
gs_fcat1-scrtext_l = 'Email id'.
APPEND gs_fcat1 TO gt_fcat1.
clear gs_fcat1.

gs_fcat2-col_pos = '1'.
gs_fcat2-fieldname = 'NODE_KEY'.
gs_fcat2-scrtext_l = 'Node Key'.
APPEND GS_FCAt2 TO gt_fcat2.
clear gs_fcat2.

gs_fcat2-col_pos = '2'.
gs_fcat2-fieldname = 'FIRST_NAME'.
gs_fcat2-scrtext_l = 'First name'.
APPEND GS_FCAt2 TO gt_fcat2.
clear gs_fcat2.

gs_fcat2-col_pos = '3'.
gs_fcat2-fieldname = 'MIDDLE_NAME'.
gs_fcat2-scrtext_l = 'Middle Name'.
APPEND GS_FCAt2 TO gt_fcat2.
clear gs_fcat2.

gs_fcat2-col_pos = '4'.
gs_fcat2-fieldname = 'LAST_NAME'.
gs_fcat2-scrtext_l = 'Last Name'.
APPEND GS_FCAt2 TO gt_fcat2.
clear gs_fcat2.

gs_fcat3-col_pos = '1'.
gs_fcat3-fieldname = 'NODE_KEY'.
gs_fcat3-scrtext_l = 'Node Key'.
APPEND GS_FCAt3 TO gt_fcat3.
clear gs_fcat3.

gs_fcat3-col_pos = '2'.
gs_fcat3-fieldname = 'CITY'.
gs_fcat3-scrtext_l = 'City'.
APPEND GS_FCAt3 TO gt_fcat3.
clear gs_fcat3.

gs_fcat3-col_pos = '3'.
gs_fcat3-fieldname = 'POSTAL_CODE'.
gs_fcat3-scrtext_l = 'Postal Code'.
APPEND GS_FCAt3 TO gt_fcat3.
clear gs_fcat3.

*START-OF-SELECTION.
* CALL SCREEN 100.
CLASS cl_event DEFINITION.
PUBLIC SECTION.
METHODS: l_abc FOR EVENT double_click OF cl_gui_alv_grid IMPORTING e_row e_column.
ENDCLASS.

CLASS cl_event IMPLEMENTATION.
METHOD l_abc.
READ TABLE gt_bpa INTO gs_bpa INDEX e_row-index.
PERFORM MAIN USING GS_BPA CHANGING GS_BPA_CONTACT.
CALL SCREEN '200'.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
CALL SCREEN '100'.


* CALL SCREEN '100' STARTING AT 2 2.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.
SELECT NODE_KEY BP_ROLE EMAIL_ADDRESS FROM SNWD_BPA INTO TABLE GT_BPA WHERE NODE_KEY IN S_KEY.
* CL_DEMO_OUTPUT=>DISPLAY( GT_bpa ).
CREATE OBJECT lo_container1
EXPORTING
* parent =
container_name = 'container1'.
* ENDIF.

CREATE OBJECT lo_grid1
EXPORTING
i_parent = lo_container1.

CALL METHOD lo_grid1->set_table_for_first_display

CHANGING
it_outtab = GT_BPA
it_fieldcatalog = GT_FCAT1
.



ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.

CASE SY-UCOMM.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module STATUS_0200 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_0200 OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.
CREATE OBJECT lo_container2
EXPORTING
* parent =
container_name = 'CONTAINER2'.

CREATE OBJECT lo_grid2
EXPORTING
* i_shellstyle = 0
* i_lifetime =
i_parent = LO_CONTAINER2.

CALL METHOD lo_grid2->set_table_for_first_display

CHANGING
it_outtab = gt_bpa_contact
it_fieldcatalog = GT_FCAT2
.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0200 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0200 INPUT.
CASE SY-UCOMM.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.

*&---------------------------------------------------------------------*
*& Form MAIN
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> GS_BPA
*& <-- GS_BPA_CONTACT
*&---------------------------------------------------------------------*
FORM main USING p_gs_bpa
CHANGING p_gs_bpa_contact.

SELECT NODE_KEY FIRST_NAME MIDDLE_NAME LAST_NAME FROM SNWD_BPA_CONTACT INTO TABLE GT_BPA_CONTACT
WHERE NODE_KEY = GS_BPA-NODE_KEY.

ENDFORM.

Thanks and Regards,

Aditya Mane

4 REPLIES 4
Read only

Sandra_Rossi
Active Contributor
1,163

As a rule-of-thumb when you write ABAP code and refer to ABAP technical names, always use upper case.

Read only

former_member598787
Participant
1,163

when submitting some code along with question, please press the code button it becomes easier to read for others

Read only

matt
Active Contributor
0 Likes
1,163

You're using PERFORMs, so your program isn't OOPs. (Even though you're using classes). PERFORMs have been obsolete for years. Use a class with methods.

Furthermore, when posting code, use the little button in the editor marked "code", to make it easier to read.

If you edit your question and use the code button, and remove the commented out lines that just make it hard to read, I might be inclined to help further.

Read only

Sandra_Rossi
Active Contributor
0 Likes
1,163

No answer from OP → vote -1 and I won't answer OP future questions.