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 OOPS report - Need help

Former Member
0 Likes
500

Hi Friends,

I just want to convert a normal alv grid report to ALV OOPS report using classes,methods and objects, can you please help me on it.

*I have sent a sample ALV grid report program.

REPORT YSDB_ALV_ECC NO STANDARD PAGE HEADING LINE-SIZE 260 LINE-COUNT 58.

TABLES:

VBRK,

VBRP.

TYPE-POOLS: SLIS.

TYPES:

BEGIN OF Y_VBRK_STRUCT ,

VBELN TYPE VBRK-VBELN,

FKART TYPE VBRK-FKART,

FKDAT TYPE VBRK-FKDAT,

BUKRS TYPE VBRK-BUKRS,

NETWR TYPE VBRK-NETWR,

END OF Y_VBRK_STRUCT.

TYPES:

BEGIN OF Y_VBRP_STRUCT,

VBELN TYPE VBRP-VBELN,

POSNR TYPE VBRP-POSNR,

MATNR TYPE VBRP-MATNR,

FKIMG TYPE VBRP-FKIMG,

AUBEL TYPE VBRP-AUBEL,

KOSTL TYPE VBRP-KOSTL,

PS_PSP_PNR TYPE VBRP-PS_PSP_PNR,

ARKTX TYPE VBRP-ARKTX,

END OF Y_VBRP_STRUCT.

TYPES:

BEGIN OF Y_DISPLAY_STRUCT,

VBELN TYPE VBRK-VBELN,

FKART TYPE VBRK-FKART,

FKDAT TYPE VBRK-FKDAT,

BUKRS TYPE VBRK-BUKRS,

NETWR TYPE VBRK-NETWR,

POSNR TYPE VBRP-POSNR,

MATNR TYPE VBRP-MATNR,

FKIMG TYPE VBRP-FKIMG,

AUBEL TYPE VBRP-AUBEL,

KOSTL TYPE VBRP-KOSTL,

PS_PSP_PNR TYPE VBRP-PS_PSP_PNR,

ARKTX TYPE VBRP-ARKTX,

END OF Y_DISPLAY_STRUCT .

DATA: W_INDEX LIKE SY-TABIX.

DATA: W_FIELDCATALOG TYPE SLIS_FIELDCAT_ALV.

DATA: T_FIELDCATALOG1 TYPE SLIS_T_FIELDCAT_ALV.

DATA: W_REPID TYPE SY-REPID.

DATA: T_VBRK_ITAB TYPE STANDARD TABLE OF Y_VBRK_STRUCT .

DATA: T_VBRP_ITAB TYPE STANDARD TABLE OF Y_VBRP_STRUCT .

DATA: T_DISPLAY_ITAB TYPE STANDARD TABLE OF Y_DISPLAY_STRUCT.

DATA: E_DISPLAY TYPE Y_DISPLAY_STRUCT.

SELECT-OPTIONS S_VBELN FOR VBRK-VBELN.

SELECT-OPTIONS S_BUKRS FOR VBRK-BUKRS.

SELECT-OPTIONS S_FKDAT FOR VBRK-FKDAT.

START-OF-SELECTION.

PERFORM F_GET_DATA1.

PERFORM F_PROCESS_DATA.

PERFORM F_FIELDCATLOG.

PERFORM F_DISPLAY_DATA.

PERFORM F_CLEAR_FIELDS.

&----


*& Form get_data1

&----


  • text

----


FORM F_GET_DATA1 .

SELECT VBELN FKART FKDAT BUKRS NETWR

FROM VBRK

INTO TABLE T_VBRK_ITAB

WHERE BUKRS IN S_BUKRS

AND FKDAT IN S_FKDAT

AND VBELN IN S_VBELN.

IF SY-SUBRC NE 0.

FREE: T_VBRK_ITAB.

ENDIF.

IF NOT T_VBRK_ITAB IS INITIAL.

SELECT VBELN POSNR MATNR FKIMG AUBEL

KOSTL PS_PSP_PNR ARKTX

FROM VBRP

INTO TABLE T_VBRP_ITAB

FOR ALL ENTRIES IN T_VBRK_ITAB

WHERE VBELN EQ T_VBRK_ITAB-VBELN.

IF SY-SUBRC NE 0.

FREE: T_VBRK_ITAB.

ENDIF.

ENDIF.

ENDFORM. " GET_DATA1

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM F_PROCESS_DATA .

SORT T_VBRK_ITAB BY VBELN.

SORT T_VBRP_ITAB BY VBELN.

CLEAR: W_INDEX.

UNASSIGN <FS_STRUCT1>.

UNASSIGN <FS_STRUCT2>.

LOOP AT T_VBRK_ITAB ASSIGNING <FS_STRUCT1>.

READ TABLE T_VBRP_ITAB ASSIGNING <FS_STRUCT2> WITH KEY VBELN = <FS_STRUCT1>-VBELN BINARY SEARCH.

IF SY-SUBRC EQ 0.

MOVE SY-TABIX TO W_INDEX.

WHILE SY-SUBRC IS INITIAL AND <FS_STRUCT1>-VBELN = <FS_STRUCT2>-VBELN.

*Header Items Moving

MOVE:

<FS_STRUCT1>-FKART TO E_DISPLAY-FKART,

<FS_STRUCT1>-FKDAT TO E_DISPLAY-FKDAT,

<FS_STRUCT1>-BUKRS TO E_DISPLAY-BUKRS,

<FS_STRUCT1>-NETWR TO E_DISPLAY-NETWR.

*Line items Moving

MOVE: <FS_STRUCT2>-VBELN TO E_DISPLAY-VBELN,

<FS_STRUCT2>-POSNR TO E_DISPLAY-POSNR,

<FS_STRUCT2>-MATNR TO E_DISPLAY-MATNR,

<FS_STRUCT2>-FKIMG TO E_DISPLAY-FKIMG,

<FS_STRUCT2>-AUBEL TO E_DISPLAY-AUBEL,

<FS_STRUCT2>-KOSTL TO E_DISPLAY-KOSTL,

<FS_STRUCT2>-PS_PSP_PNR TO E_DISPLAY-PS_PSP_PNR,

<FS_STRUCT2>-ARKTX TO E_DISPLAY-ARKTX.

APPEND E_DISPLAY TO T_DISPLAY_ITAB.

CLEAR E_DISPLAY.

ADD 1 TO W_INDEX.

READ TABLE T_VBRP_ITAB ASSIGNING <FS_STRUCT2> INDEX W_INDEX.

IF SY-SUBRC NE 0.

EXIT.

ENDIF.

ENDWHILE.

ENDIF.

ENDLOOP.

ENDFORM. " GET_DATA3

&----


*& Form Fieldcatlog

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM F_FIELDCATLOG .

W_FIELDCATALOG-FIELDNAME = TEXT-001.

W_FIELDCATALOG-SELTEXT_L = TEXT-002.

MOVE : 1 TO W_FIELDCATALOG-COL_POS,

20 TO W_FIELDCATALOG-OUTPUTLEN.

APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.

CLEAR W_FIELDCATALOG.

W_FIELDCATALOG-FIELDNAME = TEXT-003.

W_FIELDCATALOG-SELTEXT_L = TEXT-004.

MOVE : 2 TO W_FIELDCATALOG-COL_POS,

20 TO W_FIELDCATALOG-OUTPUTLEN.

APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.

CLEAR W_FIELDCATALOG.

W_FIELDCATALOG-FIELDNAME = TEXT-005.

W_FIELDCATALOG-SELTEXT_L = TEXT-006.

MOVE : 3 TO W_FIELDCATALOG-COL_POS,

20 TO W_FIELDCATALOG-OUTPUTLEN.

APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.

CLEAR W_FIELDCATALOG.

W_FIELDCATALOG-FIELDNAME = TEXT-007.

W_FIELDCATALOG-SELTEXT_L = TEXT-008.

MOVE : 4 TO W_FIELDCATALOG-COL_POS,

20 TO W_FIELDCATALOG-OUTPUTLEN.

APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.

CLEAR W_FIELDCATALOG.

W_FIELDCATALOG-FIELDNAME = TEXT-009.

W_FIELDCATALOG-SELTEXT_L = TEXT-010.

MOVE : 5 TO W_FIELDCATALOG-COL_POS,

20 TO W_FIELDCATALOG-OUTPUTLEN.

APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.

CLEAR W_FIELDCATALOG.

W_FIELDCATALOG-FIELDNAME = TEXT-011.

W_FIELDCATALOG-SELTEXT_L = TEXT-012.

MOVE : 6 TO W_FIELDCATALOG-COL_POS,

20 TO W_FIELDCATALOG-OUTPUTLEN.

APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.

CLEAR W_FIELDCATALOG.

W_FIELDCATALOG-FIELDNAME = TEXT-013.

W_FIELDCATALOG-SELTEXT_L = TEXT-014.

MOVE : 7 TO W_FIELDCATALOG-COL_POS,

20 TO W_FIELDCATALOG-OUTPUTLEN.

APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.

CLEAR W_FIELDCATALOG.

W_FIELDCATALOG-FIELDNAME = TEXT-015.

W_FIELDCATALOG-SELTEXT_L = TEXT-016.

MOVE : 8 TO W_FIELDCATALOG-COL_POS,

20 TO W_FIELDCATALOG-OUTPUTLEN.

APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.

CLEAR W_FIELDCATALOG.

W_FIELDCATALOG-FIELDNAME = TEXT-017.

W_FIELDCATALOG-SELTEXT_L = TEXT-018.

MOVE : 9 TO W_FIELDCATALOG-COL_POS,

20 TO W_FIELDCATALOG-OUTPUTLEN.

APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.

CLEAR W_FIELDCATALOG.

ENDFORM. " Fieldcatlog

*&----


*

*& Form DISPLAY_DATA

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM F_DISPLAY_DATA .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = W_REPID

I_CALLBACK_TOP_OF_PAGE = 'AAAAAAAAADDAADA' "TEXT-021

I_GRID_TITLE = TEXT-020

IT_FIELDCAT = T_FIELDCATALOG1

TABLES

T_OUTTAB = T_DISPLAY_ITAB.

IF SY-SUBRC NE 0.

EXIT.

ENDIF.

CLEAR: W_REPID.

CLEAR: T_FIELDCATALOG1.

ENDFORM. " DISPLAY_DATA

&----


*& Form F_Clear_fields

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM F_CLEAR_FIELDS .

FREE: T_VBRK_ITAB.

FREE: T_VBRP_ITAB.

FREE: T_DISPLAY_ITAB.

CLEAR: W_FIELDCATALOG.

ENDFORM. " F_Clear_fields

Regards

Dinesh

Hi Friends,

I just want to convert a normal alv grid report to ALV OOPS report using classes,methods and objects, can you please help me on it.

*I have sent a sample ALV grid report program.

REPORT YSDB_ALV_ECC NO STANDARD PAGE HEADING LINE-SIZE 260 LINE-COUNT 58.

TABLES:

VBRK,

VBRP.

TYPE-POOLS: SLIS.

TYPES:

BEGIN OF Y_VBRK_STRUCT ,

VBELN TYPE VBRK-VBELN,

FKART TYPE VBRK-FKART,

FKDAT TYPE VBRK-FKDAT,

BUKRS TYPE VBRK-BUKRS,

NETWR TYPE VBRK-NETWR,

END OF Y_VBRK_STRUCT.

TYPES:

BEGIN OF Y_VBRP_STRUCT,

VBELN TYPE VBRP-VBELN,

POSNR TYPE VBRP-POSNR,

MATNR TYPE VBRP-MATNR,

FKIMG TYPE VBRP-FKIMG,

AUBEL TYPE VBRP-AUBEL,

KOSTL TYPE VBRP-KOSTL,

PS_PSP_PNR TYPE VBRP-PS_PSP_PNR,

ARKTX TYPE VBRP-ARKTX,

END OF Y_VBRP_STRUCT.

TYPES:

BEGIN OF Y_DISPLAY_STRUCT,

VBELN TYPE VBRK-VBELN,

FKART TYPE VBRK-FKART,

FKDAT TYPE VBRK-FKDAT,

BUKRS TYPE VBRK-BUKRS,

NETWR TYPE VBRK-NETWR,

POSNR TYPE VBRP-POSNR,

MATNR TYPE VBRP-MATNR,

FKIMG TYPE VBRP-FKIMG,

AUBEL TYPE VBRP-AUBEL,

KOSTL TYPE VBRP-KOSTL,

PS_PSP_PNR TYPE VBRP-PS_PSP_PNR,

ARKTX TYPE VBRP-ARKTX,

END OF Y_DISPLAY_STRUCT .

DATA: W_INDEX LIKE SY-TABIX.

DATA: W_FIELDCATALOG TYPE SLIS_FIELDCAT_ALV.

DATA: T_FIELDCATALOG1 TYPE SLIS_T_FIELDCAT_ALV.

DATA: W_REPID TYPE SY-REPID.

DATA: T_VBRK_ITAB TYPE STANDARD TABLE OF Y_VBRK_STRUCT .

DATA: T_VBRP_ITAB TYPE STANDARD TABLE OF Y_VBRP_STRUCT .

DATA: T_DISPLAY_ITAB TYPE STANDARD TABLE OF Y_DISPLAY_STRUCT.

DATA: E_DISPLAY TYPE Y_DISPLAY_STRUCT.

SELECT-OPTIONS S_VBELN FOR VBRK-VBELN.

SELECT-OPTIONS S_BUKRS FOR VBRK-BUKRS.

SELECT-OPTIONS S_FKDAT FOR VBRK-FKDAT.

START-OF-SELECTION.

PERFORM F_GET_DATA1.

PERFORM F_PROCESS_DATA.

PERFORM F_FIELDCATLOG.

PERFORM F_DISPLAY_DATA.

PERFORM F_CLEAR_FIELDS.

&----


*& Form get_data1

&----


  • text

----


FORM F_GET_DATA1 .

SELECT VBELN FKART FKDAT BUKRS NETWR

FROM VBRK

INTO TABLE T_VBRK_ITAB

WHERE BUKRS IN S_BUKRS

AND FKDAT IN S_FKDAT

AND VBELN IN S_VBELN.

IF SY-SUBRC NE 0.

FREE: T_VBRK_ITAB.

ENDIF.

IF NOT T_VBRK_ITAB IS INITIAL.

SELECT VBELN POSNR MATNR FKIMG AUBEL

KOSTL PS_PSP_PNR ARKTX

FROM VBRP

INTO TABLE T_VBRP_ITAB

FOR ALL ENTRIES IN T_VBRK_ITAB

WHERE VBELN EQ T_VBRK_ITAB-VBELN.

IF SY-SUBRC NE 0.

FREE: T_VBRK_ITAB.

ENDIF.

ENDIF.

ENDFORM. " GET_DATA1

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM F_PROCESS_DATA .

SORT T_VBRK_ITAB BY VBELN.

SORT T_VBRP_ITAB BY VBELN.

CLEAR: W_INDEX.

UNASSIGN <FS_STRUCT1>.

UNASSIGN <FS_STRUCT2>.

LOOP AT T_VBRK_ITAB ASSIGNING <FS_STRUCT1>.

READ TABLE T_VBRP_ITAB ASSIGNING <FS_STRUCT2> WITH KEY VBELN = <FS_STRUCT1>-VBELN BINARY SEARCH.

IF SY-SUBRC EQ 0.

MOVE SY-TABIX TO W_INDEX.

WHILE SY-SUBRC IS INITIAL AND <FS_STRUCT1>-VBELN = <FS_STRUCT2>-VBELN.

*Header Items Moving

MOVE:

<FS_STRUCT1>-FKART TO E_DISPLAY-FKART,

<FS_STRUCT1>-FKDAT TO E_DISPLAY-FKDAT,

<FS_STRUCT1>-BUKRS TO E_DISPLAY-BUKRS,

<FS_STRUCT1>-NETWR TO E_DISPLAY-NETWR.

*Line items Moving

MOVE: <FS_STRUCT2>-VBELN TO E_DISPLAY-VBELN,

<FS_STRUCT2>-POSNR TO E_DISPLAY-POSNR,

<FS_STRUCT2>-MATNR TO E_DISPLAY-MATNR,

<FS_STRUCT2>-FKIMG TO E_DISPLAY-FKIMG,

<FS_STRUCT2>-AUBEL TO E_DISPLAY-AUBEL,

<FS_STRUCT2>-KOSTL TO E_DISPLAY-KOSTL,

<FS_STRUCT2>-PS_PSP_PNR TO E_DISPLAY-PS_PSP_PNR,

<FS_STRUCT2>-ARKTX TO E_DISPLAY-ARKTX.

APPEND E_DISPLAY TO T_DISPLAY_ITAB.

CLEAR E_DISPLAY.

ADD 1 TO W_INDEX.

READ TABLE T_VBRP_ITAB ASSIGNING <FS_STRUCT2> INDEX W_INDEX.

IF SY-SUBRC NE 0.

EXIT.

ENDIF.

ENDWHILE.

ENDIF.

ENDLOOP.

ENDFORM. " GET_DATA3

&----


*& Form Fieldcatlog

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM F_FIELDCATLOG .

W_FIELDCATALOG-FIELDNAME = TEXT-001.

W_FIELDCATALOG-SELTEXT_L = TEXT-002.

MOVE : 1 TO W_FIELDCATALOG-COL_POS,

20 TO W_FIELDCATALOG-OUTPUTLEN.

APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.

CLEAR W_FIELDCATALOG.

W_FIELDCATALOG-FIELDNAME = TEXT-003.

W_FIELDCATALOG-SELTEXT_L = TEXT-004.

MOVE : 2 TO W_FIELDCATALOG-COL_POS,

20 TO W_FIELDCATALOG-OUTPUTLEN.

APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.

CLEAR W_FIELDCATALOG.

W_FIELDCATALOG-FIELDNAME = TEXT-005.

W_FIELDCATALOG-SELTEXT_L = TEXT-006.

MOVE : 3 TO W_FIELDCATALOG-COL_POS,

20 TO W_FIELDCATALOG-OUTPUTLEN.

APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.

CLEAR W_FIELDCATALOG.

W_FIELDCATALOG-FIELDNAME = TEXT-007.

W_FIELDCATALOG-SELTEXT_L = TEXT-008.

MOVE : 4 TO W_FIELDCATALOG-COL_POS,

20 TO W_FIELDCATALOG-OUTPUTLEN.

APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.

CLEAR W_FIELDCATALOG.

W_FIELDCATALOG-FIELDNAME = TEXT-009.

W_FIELDCATALOG-SELTEXT_L = TEXT-010.

MOVE : 5 TO W_FIELDCATALOG-COL_POS,

20 TO W_FIELDCATALOG-OUTPUTLEN.

APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.

CLEAR W_FIELDCATALOG.

W_FIELDCATALOG-FIELDNAME = TEXT-011.

W_FIELDCATALOG-SELTEXT_L = TEXT-012.

MOVE : 6 TO W_FIELDCATALOG-COL_POS,

20 TO W_FIELDCATALOG-OUTPUTLEN.

APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.

CLEAR W_FIELDCATALOG.

W_FIELDCATALOG-FIELDNAME = TEXT-013.

W_FIELDCATALOG-SELTEXT_L = TEXT-014.

MOVE : 7 TO W_FIELDCATALOG-COL_POS,

20 TO W_FIELDCATALOG-OUTPUTLEN.

APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.

CLEAR W_FIELDCATALOG.

W_FIELDCATALOG-FIELDNAME = TEXT-015.

W_FIELDCATALOG-SELTEXT_L = TEXT-016.

MOVE : 8 TO W_FIELDCATALOG-COL_POS,

20 TO W_FIELDCATALOG-OUTPUTLEN.

APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.

CLEAR W_FIELDCATALOG.

W_FIELDCATALOG-FIELDNAME = TEXT-017.

W_FIELDCATALOG-SELTEXT_L = TEXT-018.

MOVE : 9 TO W_FIELDCATALOG-COL_POS,

20 TO W_FIELDCATALOG-OUTPUTLEN.

APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.

CLEAR W_FIELDCATALOG.

ENDFORM. " Fieldcatlog

*&----


*

*& Form DISPLAY_DATA

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM F_DISPLAY_DATA .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = W_REPID

I_CALLBACK_TOP_OF_PAGE = 'AAAAAAAAADDAADA' "TEXT-021

I_GRID_TITLE = TEXT-020

IT_FIELDCAT = T_FIELDCATALOG1

TABLES

T_OUTTAB = T_DISPLAY_ITAB.

IF SY-SUBRC NE 0.

EXIT.

ENDIF.

CLEAR: W_REPID.

CLEAR: T_FIELDCATALOG1.

ENDFORM. " DISPLAY_DATA

&----


*& Form F_Clear_fields

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM F_CLEAR_FIELDS .

FREE: T_VBRK_ITAB.

FREE: T_VBRP_ITAB.

FREE: T_DISPLAY_ITAB.

CLEAR: W_FIELDCATALOG.

ENDFORM. " F_Clear_fields

Regards

Dinesh

2 REPLIES 2
Read only

Former Member
0 Likes
443

In ALV oops,

1. You need screen on which you must create a custom container. - screen 100

2. In PBO of 100, create module for displaying ALV

MODULE DISPLAY_ALV OUTPUT

PERFORM CREATE_CONTAINER "IN WHICH YOU USE THE CREATE OBJECT METHOD OF CL_GUI_CUSTOM_CONTAINER

PERFORM CREATE_ALV "IN WHICH YOU USE CREATE_OBJECT METHOD OF CL_GUI_ALV_GRID.

PERFORM PREPARE_FIELDCAT "creating fcat using LVC_S_FCAT structure

PERFORM DISPLAY "here you use the SET_TABLE_FOR_FIRST_DISPLAY method of CL_GUI_ALV_GRID class,

where you provide the internal table name and fieldcat internal table

ENDMODULE

Read only

Former Member
0 Likes
443

Hi,

check

[A new approach to ALV Programming|http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/1628] [original link is broken] [original link is broken] [original link is broken];

[Common macros for the ALV Object Model(SALV) Applications|http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/6062] [original link is broken] [original link is broken] [original link is broken];

also search for SALV in SDN.

Regards,

Adrian