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

Text in total

Former Member
0 Likes
934

hi ,

i have an requirenment, i have to display text before total in alv(like payable by you 2890.00) .

am using reuse_alv_grid_display. without appending text in internal table.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
901

check this program...


 *&----------------------------------------------------------------*
*& Report  Z_ALV_DEMO_TOTAL_TEXT
*&
*&----------------------------------------------------------------*
*&
*&
*&----------------------------------------------------------------*

REPORT  z_alv_demo_total_text.

* Type declaration for final table to display the output
TYPES: BEGIN OF ty_mara,
        srno TYPE char40, " Storing the total text
        matnr TYPE matnr, " Material
        ersda TYPE ersda, " Creation date
        ernam TYPE ernam, " Created by
        laeda TYPE laeda, " Last change date
        aenam TYPE aenam, " Last change by
        vpsta TYPE vpsta, " Maintenance status
        brgew TYPE brgew, " Gross weight
        ntgew TYPE ntgew, " Net weight
        gewei TYPE gewei, " Weight Unit
       END OF ty_mara.

* Type declaration for table storing temp. data
TYPES: BEGIN OF ty_mara_tmp,
        matnr TYPE matnr, " Material
        ersda TYPE ersda, " Creation date
        ernam TYPE ernam, " Created by
        laeda TYPE laeda, " Last change date
        aenam TYPE aenam, " Last change by
        vpsta TYPE vpsta, " Maintenance status
        brgew TYPE brgew, " Gross weight
        ntgew TYPE ntgew, " Net weight
        gewei TYPE gewei, " Weight Unit
      END OF ty_mara_tmp.

*  Internal table for storing final data
DATA: i_mara TYPE STANDARD TABLE OF ty_mara INITIAL SIZE 0.

* Work area for final table
DATA: w_mara TYPE ty_mara.
*  Internal table for storing temp. data
DATA: i_mara_tmp TYPE STANDARD TABLE OF ty_mara_tmp INITIAL SIZE 0.

* Work area for temp. table
DATA: w_mara_tmp TYPE ty_mara_tmp.

* Object variable for ALV grid
DATA: oref1 TYPE REF TO cl_gui_alv_grid.

* Field catalog table for ALV grid
DATA: fieldcat TYPE  lvc_t_fcat.

* Workarea for field catalog table
DATA: w_field TYPE lvc_s_fcat.

*  Internal table for storing info. for ALV grid
data: i_sort2 TYPE STANDARD TABLE OF lvc_s_sort INITIAL SIZE 0.

* Workarea for sort table
DATA: wa_sort2      TYPE  lvc_s_sort.

* Workarea for ALV layout
data: wa_layout     TYPE  lvc_s_layo.

START-OF-SELECTION.

* Fetch data
SELECT  matnr   " Material
        ersda   " Creation date
        ernam   " Created by
        laeda   " Last change date
        aenam   " Last change by
        vpsta   " Maintenance status
        brgew   " Gross weight
        ntgew   " Net weight
        gewei   " Weight Unit
  FROM mara
  INTO TABLE i_mara_tmp
  UP TO 100 ROWS.

  CHECK sy-subrc = 0.

* Populate final table
  LOOP AT i_mara_tmp INTO w_mara_tmp.

*   Storing the Total text need to be displayed in
*   ALV
    w_mara-srno = 'Total weight (Gross & Net)'.
    w_mara-matnr = w_mara_tmp-matnr.
    w_mara-ersda = w_mara_tmp-ersda.

    w_mara-ernam  = w_mara_tmp-ernam .

    w_mara-laeda = w_mara_tmp-laeda.

    w_mara-aenam = w_mara_tmp-aenam.
    w_mara-vpsta = w_mara_tmp-vpsta.
    w_mara-brgew = w_mara_tmp-brgew.
    w_mara-ntgew = w_mara_tmp-ntgew.
    w_mara-gewei = w_mara_tmp-gewei.
    APPEND w_mara TO i_mara.

  ENDLOOP.

* Calling the screen to display ALV
  CALL SCREEN 100.

*&----------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&----------------------------------------------------------------*
*       Display ALV report
*-----------------------------------------------------------------*
MODULE status_0100 OUTPUT.

  IF oref1 IS INITIAL.

*   Create ALV grid object
*   In this case we have not created any custom container in the screen,
*   Instead of that dummy container name is passed
*   ADVANTAGE: we can run this report in background without any problem
    CREATE OBJECT oref1
      EXPORTING
        i_parent          = cl_gui_custom_container=>screen0
      EXCEPTIONS
        error_cntl_create = 1
        error_cntl_init   = 2
        error_cntl_link   = 3
        error_dp_create   = 4
        OTHERS            = 5
        .
    CHECK sy-subrc = 0.

*   Preparing the field catalog
*   ZDEMO: Defined in DDIC, it's structure is same as TYPE ty_mara
*   defined in the program
    CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
      EXPORTING
        i_structure_name       = 'ZDEMO'
      CHANGING
        ct_fieldcat            = fieldcat
      EXCEPTIONS
        inconsistent_interface = 1
        program_error          = 2
        OTHERS                 = 3.
    IF sy-subrc = 0.

      LOOP AT fieldcat INTO w_field.

        IF w_field-fieldname = 'BRGEW' OR
          w_field-fieldname = 'NTGEW'.
*         Summation for Gross & Net weight
          w_field-do_sum = 'X'.
          MODIFY fieldcat FROM w_field TRANSPORTING do_sum.

        ENDIF.

        IF w_field-fieldname = 'SRNO'.
*         Hide this field so that it can display it's content i.e.
*         Total text in Subtotal level
          w_field-tech = 'X'.
          w_field-no_out = 'X'.
          MODIFY fieldcat FROM w_field TRANSPORTING tech no_out.

        ENDIF.

        CLEAR w_field.
      ENDLOOP.
    ENDIF.

*   Populate Sort table with SRNO field so that we can display the total
*   text in it's subtotal level
    wa_sort2-spos = 1.
    wa_sort2-fieldname = 'SRNO'.
    wa_sort2-up = 'X'.
    wa_sort2-subtot = 'X'.
    APPEND wa_sort2 TO i_sort2.

*   Hide the total line
    wa_layout-no_totline = 'X'.

*   Display the ALV grid
    CALL METHOD oref1->set_table_for_first_display
      EXPORTING
        is_layout                     = wa_layout
      CHANGING
        it_outtab                     = i_mara[]
        it_fieldcatalog               = fieldcat
        it_sort                       = i_sort2
      EXCEPTIONS
        invalid_parameter_combination = 1
        program_error                 = 2
        too_many_lines                = 3
        OTHERS                        = 4.
    IF sy-subrc <> 0.

    ENDIF.

*   Set the focus on the grid
    CALL METHOD cl_gui_alv_grid=>set_focus
      EXPORTING
        control           = oref1
      EXCEPTIONS
        cntl_error        = 1
        cntl_system_error = 2
        OTHERS            = 3.
    IF sy-subrc <> 0.
    ENDIF.

  ENDIF.

ENDMODULE.                 " STATUS_0100  OUTPUT

Edited by: Arunima Rudra on Mar 16, 2009 2:30 PM

hi ,

i have an requirenment, i have to display text before total in alv(like payable by you 2890.00) .

am using reuse_alv_grid_display. without appending text in internal table.

6 REPLIES 6
Read only

Former Member
0 Likes
902

check this program...


 *&----------------------------------------------------------------*
*& Report  Z_ALV_DEMO_TOTAL_TEXT
*&
*&----------------------------------------------------------------*
*&
*&
*&----------------------------------------------------------------*

REPORT  z_alv_demo_total_text.

* Type declaration for final table to display the output
TYPES: BEGIN OF ty_mara,
        srno TYPE char40, " Storing the total text
        matnr TYPE matnr, " Material
        ersda TYPE ersda, " Creation date
        ernam TYPE ernam, " Created by
        laeda TYPE laeda, " Last change date
        aenam TYPE aenam, " Last change by
        vpsta TYPE vpsta, " Maintenance status
        brgew TYPE brgew, " Gross weight
        ntgew TYPE ntgew, " Net weight
        gewei TYPE gewei, " Weight Unit
       END OF ty_mara.

* Type declaration for table storing temp. data
TYPES: BEGIN OF ty_mara_tmp,
        matnr TYPE matnr, " Material
        ersda TYPE ersda, " Creation date
        ernam TYPE ernam, " Created by
        laeda TYPE laeda, " Last change date
        aenam TYPE aenam, " Last change by
        vpsta TYPE vpsta, " Maintenance status
        brgew TYPE brgew, " Gross weight
        ntgew TYPE ntgew, " Net weight
        gewei TYPE gewei, " Weight Unit
      END OF ty_mara_tmp.

*  Internal table for storing final data
DATA: i_mara TYPE STANDARD TABLE OF ty_mara INITIAL SIZE 0.

* Work area for final table
DATA: w_mara TYPE ty_mara.
*  Internal table for storing temp. data
DATA: i_mara_tmp TYPE STANDARD TABLE OF ty_mara_tmp INITIAL SIZE 0.

* Work area for temp. table
DATA: w_mara_tmp TYPE ty_mara_tmp.

* Object variable for ALV grid
DATA: oref1 TYPE REF TO cl_gui_alv_grid.

* Field catalog table for ALV grid
DATA: fieldcat TYPE  lvc_t_fcat.

* Workarea for field catalog table
DATA: w_field TYPE lvc_s_fcat.

*  Internal table for storing info. for ALV grid
data: i_sort2 TYPE STANDARD TABLE OF lvc_s_sort INITIAL SIZE 0.

* Workarea for sort table
DATA: wa_sort2      TYPE  lvc_s_sort.

* Workarea for ALV layout
data: wa_layout     TYPE  lvc_s_layo.

START-OF-SELECTION.

* Fetch data
SELECT  matnr   " Material
        ersda   " Creation date
        ernam   " Created by
        laeda   " Last change date
        aenam   " Last change by
        vpsta   " Maintenance status
        brgew   " Gross weight
        ntgew   " Net weight
        gewei   " Weight Unit
  FROM mara
  INTO TABLE i_mara_tmp
  UP TO 100 ROWS.

  CHECK sy-subrc = 0.

* Populate final table
  LOOP AT i_mara_tmp INTO w_mara_tmp.

*   Storing the Total text need to be displayed in
*   ALV
    w_mara-srno = 'Total weight (Gross & Net)'.
    w_mara-matnr = w_mara_tmp-matnr.
    w_mara-ersda = w_mara_tmp-ersda.

    w_mara-ernam  = w_mara_tmp-ernam .

    w_mara-laeda = w_mara_tmp-laeda.

    w_mara-aenam = w_mara_tmp-aenam.
    w_mara-vpsta = w_mara_tmp-vpsta.
    w_mara-brgew = w_mara_tmp-brgew.
    w_mara-ntgew = w_mara_tmp-ntgew.
    w_mara-gewei = w_mara_tmp-gewei.
    APPEND w_mara TO i_mara.

  ENDLOOP.

* Calling the screen to display ALV
  CALL SCREEN 100.

*&----------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&----------------------------------------------------------------*
*       Display ALV report
*-----------------------------------------------------------------*
MODULE status_0100 OUTPUT.

  IF oref1 IS INITIAL.

*   Create ALV grid object
*   In this case we have not created any custom container in the screen,
*   Instead of that dummy container name is passed
*   ADVANTAGE: we can run this report in background without any problem
    CREATE OBJECT oref1
      EXPORTING
        i_parent          = cl_gui_custom_container=>screen0
      EXCEPTIONS
        error_cntl_create = 1
        error_cntl_init   = 2
        error_cntl_link   = 3
        error_dp_create   = 4
        OTHERS            = 5
        .
    CHECK sy-subrc = 0.

*   Preparing the field catalog
*   ZDEMO: Defined in DDIC, it's structure is same as TYPE ty_mara
*   defined in the program
    CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
      EXPORTING
        i_structure_name       = 'ZDEMO'
      CHANGING
        ct_fieldcat            = fieldcat
      EXCEPTIONS
        inconsistent_interface = 1
        program_error          = 2
        OTHERS                 = 3.
    IF sy-subrc = 0.

      LOOP AT fieldcat INTO w_field.

        IF w_field-fieldname = 'BRGEW' OR
          w_field-fieldname = 'NTGEW'.
*         Summation for Gross & Net weight
          w_field-do_sum = 'X'.
          MODIFY fieldcat FROM w_field TRANSPORTING do_sum.

        ENDIF.

        IF w_field-fieldname = 'SRNO'.
*         Hide this field so that it can display it's content i.e.
*         Total text in Subtotal level
          w_field-tech = 'X'.
          w_field-no_out = 'X'.
          MODIFY fieldcat FROM w_field TRANSPORTING tech no_out.

        ENDIF.

        CLEAR w_field.
      ENDLOOP.
    ENDIF.

*   Populate Sort table with SRNO field so that we can display the total
*   text in it's subtotal level
    wa_sort2-spos = 1.
    wa_sort2-fieldname = 'SRNO'.
    wa_sort2-up = 'X'.
    wa_sort2-subtot = 'X'.
    APPEND wa_sort2 TO i_sort2.

*   Hide the total line
    wa_layout-no_totline = 'X'.

*   Display the ALV grid
    CALL METHOD oref1->set_table_for_first_display
      EXPORTING
        is_layout                     = wa_layout
      CHANGING
        it_outtab                     = i_mara[]
        it_fieldcatalog               = fieldcat
        it_sort                       = i_sort2
      EXCEPTIONS
        invalid_parameter_combination = 1
        program_error                 = 2
        too_many_lines                = 3
        OTHERS                        = 4.
    IF sy-subrc <> 0.

    ENDIF.

*   Set the focus on the grid
    CALL METHOD cl_gui_alv_grid=>set_focus
      EXPORTING
        control           = oref1
      EXCEPTIONS
        cntl_error        = 1
        cntl_system_error = 2
        OTHERS            = 3.
    IF sy-subrc <> 0.
    ENDIF.

  ENDIF.

ENDMODULE.                 " STATUS_0100  OUTPUT

Edited by: Arunima Rudra on Mar 16, 2009 2:30 PM

Read only

Former Member
0 Likes
901

Can you explain elaborately about your requirement?

Regards,

Joan

Read only

Former Member
0 Likes
901

Hi,

i hope this code will exactli fulfil ur requirement.

type-poolS: slis.

TYPES: BEGIN OF S_TAB,

F1 TYPE CHAR5,

F2 TYPE I,

F3 TYPE I,

END OF S_TAB.

TYPES: BEGIN OF sf_TAB,

f0 type char10,

F1 TYPE CHAR5,

F2 TYPE I,

F3 TYPE I,

END OF Sf_TAB.

DATA: IT_TAB TYPE TABLE OF S_TAB,

WA_TAB TYPE S_TAB,

IT_FIN TYPE TABLE OF Sf_TAB,

WA_FIN TYPE Sf_TAB.

data: fcat type slis_t_fieldcat_alv,

wa_fcat type slis_fieldcat_alv,

layout type slis_layout_alv,

it_sort type SLIS_T_SORTINFO_ALV,

wa_sort type SLIS_SORTINFO_ALV.

FREE IT_TAB. CLEAR WA_TAB.

WA_TAB-F1 = 'A1'.

WA_TAB-F2 = '10'.

WA_TAB-F3 = '20'.

APPEND WA_TAB TO IT_TAB.

CLEAR WA_TAB.

WA_TAB-F1 = 'A1'.

WA_TAB-F2 = '10'.

WA_TAB-F3 = '20'.

APPEND WA_TAB TO IT_TAB.

CLEAR WA_TAB.

WA_TAB-F1 = 'A2'.

WA_TAB-F2 = '15'.

WA_TAB-F3 = '30'.

APPEND WA_TAB TO IT_TAB.

CLEAR WA_TAB.

WA_TAB-F1 = 'A3'.

WA_TAB-F2 = '15'.

WA_TAB-F3 = '40'.

APPEND WA_TAB TO IT_TAB.

CLEAR WA_TAB.

WA_TAB-F1 = 'A3'.

WA_TAB-F2 = '20'.

WA_TAB-F3 = '60'.

APPEND WA_TAB TO IT_TAB.

CLEAR WA_TAB.

*

LOOP AT IT_TAB INTO WA_TAB.

wa_fin-f0 = 'payable by you '.

wa_fin-f1 = wa_tab-f1.

wa_fin-f2 = wa_tab-f2.

wa_fin-f3 = wa_tab-f3.

append wa_fin to it_fin.

clear wa_fin.

ENDLOOP.

Define Imacro.

wa_fcat-fieldname = &1.

wa_fcat-tabname = &2.

wa_fcat-reptext_ddic = &3.

wa_fcat-col_pos = &4.

WA_FCAT-DO_SUM = &5.

WA_FCAT-NO_OUT = &6.

append wa_fcat to fcat .

clear wa_fcat.

end-of-definition.

imacro 'F0' 'it_fin' '' '1' '' 'X'.

imacro 'F1' 'it_fin' 'PO Document' '2' '' ''.

imacro 'F2' 'it_fin' 'TOTAL' '3' 'X' ''.

imacro 'F3' 'it_fin' 'Space' '4' '' ''.

****************DEFINE LAYOUT

layout-zebra = 'X'.

layout-colwidth_optimize = 'X'.

layout-no_totAlLine = 'X'.

WA_SORT-SPOS = 1.

WA_SORT-fieldname = 'F0'.

wa_SORT-UP = 'X'.

WA_SORT-SUBTOT = 'X'.

APPEND WA_SORT TO IT_SORT.

CLEAR WA_SORT.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

I_GRID_TITLE = 'SALES ORDER DETAILS'

IS_LAYOUT = layout

IT_FIELDCAT = fcat

IT_SORT = IT_SORT

TABLES

T_OUTTAB = IT_FIN

.

IF sy-subrc 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

Cheers,

Rudhir

Read only

Former Member
0 Likes
901

Hi,

please find this link https://www.sdn.sap.com/irj/scn/advancedsearch?query=totalintextinalv&cat=sdn_all

regards,

pravin

Read only

Former Member
0 Likes
901

Try this way:

While populating fieldcatalog before grid display call, populate text before doing subtotal.

You may refer this link

http://help.sap.com/saphelp_erp2004/helpdata/EN/ff/4649a6f17411d2b486006094192fe3/content.htm

Field catalog is populated first.

Then grid display is called.

fieldcat-FIELDNAME = 'FIELD1'.

fieldcat-SPOS = 1.

fieldcat-SUBTOT = 'X'.

APPEND fieldcat TO i_final.

before fieldcat-subtot populate for text.

Check the following link for text. Check which one is applicable in your case.

http://help.sap.com/saphelp_erp2004/helpdata/EN/bd/6ebf64f33b11d2b488006094192fe3/content.htm

Please explain your requirement more elaborately.

Way 2:

If yours is classical report, then you can pass the text by creating a text element before showing sum.

Read only

sarbajitm
Contributor
0 Likes
901

I think setting the value of TOTALS_TEXT field of SLIS_LAYOUT_ALV, you can achieve your required output. Though I'm not sure but you can check it out.

Regards.

Sarbajit.