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

Multiple container data print on a single page

Former Member
0 Likes
1,509

Dear Experts,

I am using  cl_gui_custom_container class and created two cotainer and printed using the method SET_TABLE_FOR_FIRST_DISPLAY. now report is working fine.

My requirement when i am cliking on print opiton data contain in both container should print in a single page.

I searched in forum and find REUSE_ALV_BLOCK_LIST_APPEND and its works fine. but client needed in Grid display.

Expecting your answers. .

Regards,

Thanesh

Dear Experts,

I am using  cl_gui_custom_container class and created two cotainer and printed using the method SET_TABLE_FOR_FIRST_DISPLAY. now report is working fine.

My requirement when i am cliking on print opiton data contain in both container should print in a single page.

I searched in forum and find REUSE_ALV_BLOCK_LIST_APPEND and its works fine. but client needed in Grid display.

Expecting your answers. .

Regards,

Thanesh

8 REPLIES 8
Read only

Former Member
0 Likes
1,459

check standard Program: RSDEMO_SPLITTER_CONTROL . But u need to add Print button yourself.

Read only

0 Likes
1,459

Thanks for your reply. .

I check the code and added print button, but print option is not working.

Read only

former_member392866
Active Participant
0 Likes
1,459

Thanesh,

Place 2 ALV GRIDS ON A SINGLE SCREEN. Hope it'll fix your issue.

Please refer below program.

TYPES : BEGIN OF TY_MARA,

        MATNR TYPE MARA-MATNR,

        MTART TYPE MARA-MTART,

        MBRSH TYPE MARA-MBRSH,

        MEINS TYPE MARA-MEINS,

        END OF TY_MARA.

TYPES : BEGIN OF TY_MAKT,

        MATNR TYPE MAKT-MATNR,

        SPRAS TYPE MAKT-SPRAS,

        MAKTX TYPE MAKT-MAKTX,

        END OF TY_MAKT.

CLASS LCL_EVENT_HDLER DEFINITION DEFERRED.

DATA : OBJ TYPE REF TO LCL_EVENT_HDLER.

DATA : I_MARA TYPE TABLE OF TY_MARA.

DATA : WA_MARA LIKE LINE OF I_MARA.

DATA : I_MAKT TYPE TABLE OF TY_MAKT.

DATA : WA_MAKT LIKE LINE OF I_MAKT.

DATA : ALV_CONT TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

DATA : ALV_GRID TYPE REF TO CL_GUI_ALV_GRID.

DATA : I_FCAT TYPE LVC_T_FCAT.

DATA : WA_FCAT LIKE LINE OF I_FCAT.

DATA : ALV_CONT2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

DATA : ALV_GRID2 TYPE REF TO CL_GUI_ALV_GRID.

DATA : I_FCAT2 TYPE LVC_T_FCAT.

DATA : WA_FCAT2 LIKE LINE OF I_FCAT2.

CLASS LCL_EVENT_HDLER DEFINITION.

  PUBLIC SECTION.

    METHODS : HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID

                                         IMPORTING E_ROW.

ENDCLASS.                    "LCL_EVENT_HDLER DEFINITION

CLASS LCL_EVENT_HDLER IMPLEMENTATION.

  METHOD : HANDLE_DOUBLE_CLICK.

    READ TABLE I_MARA INTO WA_MARA INDEX E_ROW-INDEX.

    SELECT * FROM MAKT INTO CORRESPONDING FIELDS OF TABLE I_MAKT

                  WHERE MATNR = WA_MARA-MATNR.

    CALL SCREEN 100.

  ENDMETHOD.                    ":

ENDCLASS.                    "LCL_EVENT_HDLER IMPLEMENTATION

START-OF-SELECTION.

  CALL SCREEN 100.

MODULE STATUS_0100 OUTPUT.

  SET PF-STATUS 'MENU_100'.

*  SET TITLEBAR 'xxx'.

  IF ALV_CONT IS INITIAL.

    PERFORM CREATE_OBJECTS.

    PERFORM GET_DATA.

    PERFORM CREATE_FCAT.

    PERFORM DISPLAY_ALV.

    CREATE OBJECT OBJ.

    SET HANDLER OBJ->HANDLE_DOUBLE_CLICK FOR ALV_GRID.

  ELSE.

    PERFORM CREATE_OBJECTS2.

    PERFORM CREATE_FCAT2.

    PERFORM DISPLAY_ALV2.

  ENDIF.

ENDMODULE.                 " STATUS_0100  OUTPUT

MODULE USER_COMMAND_0100 INPUT.

  IF SY-UCOMM = 'BACK'.

    LEAVE PROGRAM.

  ENDIF.

ENDMODULE.                 " USER_COMMAND_0100  INPUT

FORM CREATE_OBJECTS .

  CREATE OBJECT ALV_CONT

    EXPORTING

      CONTAINER_NAME              = 'ALV_CONT'.

  CREATE OBJECT ALV_GRID

    EXPORTING

      I_PARENT          = ALV_CONT.

ENDFORM.                    " CREATE_OBJECTS

FORM GET_DATA .

  SELECT * FROM MARA INTO CORRESPONDING FIELDS OF TABLE I_MARA UP TO 100 ROWS.

ENDFORM.                    " GET_DATA

FORM CREATE_FCAT .

  IF I_FCAT IS INITIAL.

    WA_FCAT-COL_POS = '1'.

    WA_FCAT-FIELDNAME = 'MATNR'.

    WA_FCAT-TABNAME = 'I_MARA'.

    WA_FCAT-SCRTEXT_M = 'MATERIAL NO'.

    APPEND WA_FCAT TO I_FCAT.

    CLEAR WA_FCAT.

    WA_FCAT-COL_POS = '2'.

    WA_FCAT-FIELDNAME = 'MTART'.

    WA_FCAT-TABNAME = 'I_MARA'.

    WA_FCAT-SCRTEXT_M = 'MATERIAL TYPE'.

    APPEND WA_FCAT TO I_FCAT.

    CLEAR WA_FCAT.

    WA_FCAT-COL_POS = '3'.

    WA_FCAT-FIELDNAME = 'MBRSH'.

    WA_FCAT-TABNAME = 'I_MARA'.

    WA_FCAT-SCRTEXT_M = 'INDUS. SECTOR'.

    APPEND WA_FCAT TO I_FCAT.

    CLEAR WA_FCAT.

    WA_FCAT-COL_POS = '4'.

    WA_FCAT-FIELDNAME = 'MEINS'.

    WA_FCAT-TABNAME = 'I_MARA'.

    WA_FCAT-SCRTEXT_M = 'MATERIAL UNITS'.

    APPEND WA_FCAT TO I_FCAT.

    CLEAR WA_FCAT.

  ENDIF.

ENDFORM.                    " CREATE_FCAT

FORM DISPLAY_ALV .

  CALL METHOD ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY

    CHANGING

      IT_OUTTAB       = I_MARA

      IT_FIELDCATALOG = I_FCAT.

ENDFORM.                    " DISPLAY_ALV

FORM CREATE_OBJECTS2 .

  IF ALV_CONT2 IS INITIAL.

    CREATE OBJECT ALV_CONT2

      EXPORTING

        CONTAINER_NAME    = 'ALV_CONT2'.

    CREATE OBJECT ALV_GRID2

      EXPORTING

        I_PARENT          = ALV_CONT2.

  ENDIF.

ENDFORM.                    " CREATE_OBJECTS2

FORM CREATE_FCAT2 .

  IF I_FCAT2 IS INITIAL.

    CLEAR WA_FCAT2.

    WA_FCAT2-COL_POS = '1'.

    WA_FCAT2-FIELDNAME = 'MATNR'.

    WA_FCAT2-TABNAME = 'I_MAKT'.

    WA_FCAT2-SCRTEXT_M = 'MATERIAL NO'.

    APPEND WA_FCAT2 TO I_FCAT2.

    CLEAR WA_FCAT2.

    WA_FCAT2-COL_POS = '2'.

    WA_FCAT2-FIELDNAME = 'SPRAS'.

    WA_FCAT2-TABNAME = 'I_MAKT'.

    WA_FCAT2-SCRTEXT_M = 'LANGUAGE'.

    APPEND WA_FCAT2 TO I_FCAT2.

    CLEAR WA_FCAT2.

    WA_FCAT2-COL_POS = '3'.

    WA_FCAT2-FIELDNAME = 'MAKTX'.

    WA_FCAT2-TABNAME = 'I_MAKT'.

    WA_FCAT2-SCRTEXT_M = 'DISCRIPTION'.

    APPEND WA_FCAT2 TO I_FCAT2.

    CLEAR WA_FCAT2.

  ENDIF.

ENDFORM.                    " CREATE_FCAT2

FORM DISPLAY_ALV2 .

  CALL METHOD ALV_GRID2->SET_TABLE_FOR_FIRST_DISPLAY

    CHANGING

      IT_OUTTAB       = I_MAKT

      IT_FIELDCATALOG = I_FCAT2.

ENDFORM.                    " DISPLAY_ALV2

Read only

0 Likes
1,459

My problem not displaying in a single screen. its already displaying in the singe screen.

print both container date in a single page, by cliking the print button or user defiend button.

Regards,

Thanesh

Read only

RaymondGiuseppi
Active Contributor
0 Likes
1,459

You could try to handle the "print" function event in both alv grid, and then execute the print in both grids.

- Look at events like before_user_command to intercept the event "Print" on any grid

- Look at methods like set_user_command to trigger print of the other grid (then insure you will not enter an infinite loop between tyhe two grids..)

- Manage the is_print of set_table_for_first_display (sub-fields like PRINT_CTRL-PRI_PARAMS-PRNEW) to insure only one spool generated.

Regards,

Raymond

Read only

0 Likes
1,459

I agree with Raymond Giuseppi .

this was an easy way to solve your issue...

Regards,

Vasantha

Read only

Former Member
0 Likes
1,459

Hi,

I did same kind of requirement, let me search the code..

but i remember i have used two separate print buttons for printing data for two different containers.

Thanks

Karthi

Read only

Former Member
0 Likes
1,459

created two buttons and printed separately.