Skip to Content
author's profile photo Former Member
Former Member

URGENT: ALV List with variable header

Hi everyone!

I need to output an ALV report that will have a header and item lines per MATNR encountered. All the data will come from a single internal table. Example:

<<HEADER>>

-


MATERIAL: 10071199

DATE: 20.10.2006

-


<<LINE ITEM>>

CHARG | ERFMG | ERFMR | BUDAT |

001 | ABC | XXR | 10.06 |

<<HEADER>>

-


MATERIAL: 10071200

DATE: 27.10.2006

-


<<LINE ITEM>>

CHARG | ERFMG | ERFMR | BUDAT |

001 | DEF | XXM | 10.06 |

What are the best options in doing this? ALV LIST or GRID, if possible, are ok.

Thanks in advance.

Cris

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

2 Answers

  • Best Answer
    author's profile photo Former Member
    Former Member
    Posted on Oct 26, 2006 at 04:36 AM

    hi

    good

    i would suggest you to go for ALV Grid , go through this below link, which ll give you more idea about the ALV Grid

    http://www.erpgenie.com/abap/controls/alvgrid.htm

    reward point if helpful.

    thanks

    mrutyun^

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Oct 26, 2006 at 05:13 AM

    U can use FM REUSE_ALV_HIERSEQ_LIST_DISPLAY for this. Have a look at below example.

    REPORT z_alv_hierseq_list.

    ----


    • Program with FM REUSE_ALV_HIERSEQ_LIST_DISPLAY *

    ----


    SELECTION-SCREEN :

    SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max. "#EC NEEDED

    PARAMETERS p_max(02) TYPE n DEFAULT '10' OBLIGATORY.

    SELECTION-SCREEN END OF LINE.

    ----


    CONSTANTS :

    c_x VALUE 'X'.

    ----


    TYPES :

    • 1st Table

    BEGIN OF ty_vbak,

    vbeln TYPE vbak-vbeln, " Sales document

    kunnr TYPE vbak-kunnr, " Sold-to party

    netwr TYPE vbak-netwr, " Net Value of the Sales Order

    waerk TYPE vbak-waerk, " SD document currency

    END OF ty_vbak,

    • 2nd Table

    BEGIN OF ty_vbap,

    vbeln TYPE vbap-vbeln, " Sales document

    posnr TYPE vbap-posnr, " Sales document

    matnr TYPE vbap-matnr, " Material number

    netwr TYPE vbap-netwr, " Net Value of the Sales Order

    waerk TYPE vbap-waerk, " SD document currency

    END OF ty_vbap.

    ----


    DATA :

    • 1st Table

    gt_vbak TYPE TABLE OF ty_vbak,

    • 2nd Table

    gt_vbap TYPE TABLE OF ty_vbap.

    ----


    INITIALIZATION.

    v_1 = 'Maximum of records to read'.

    ----


    START-OF-SELECTION.

    • Read Sales Document: Header Data

    SELECT vbeln kunnr netwr waerk

    FROM vbak

    UP TO p_max ROWS

    INTO CORRESPONDING FIELDS OF TABLE gt_vbak.

    IF NOT gt_vbak[] IS INITIAL.

    • Read Sales Document: Item Data

    SELECT vbeln posnr matnr netwr waerk

    FROM vbap

    INTO CORRESPONDING FIELDS OF TABLE gt_vbap

    FOR ALL ENTRIES IN gt_vbak

    WHERE vbeln = gt_vbak-vbeln.

    ENDIF.

    PERFORM f_display.

    ----


    • Form F_DISPLAY

    ----


    FORM f_display.

    TYPE-POOLS: slis. " ALV Global types

    • Macro definition

    DEFINE m_fieldcat.

    ls_fieldcat-tabname = &1.

    ls_fieldcat-fieldname = &2.

    ls_fieldcat-ref_tabname = &3.

    append ls_fieldcat to lt_fieldcat.

    END-OF-DEFINITION.

    DEFINE m_sort.

    ls_sort-tabname = &1.

    ls_sort-fieldname = &2.

    ls_sort-up = c_x.

    append ls_sort to lt_sort.

    END-OF-DEFINITION.

    DATA:

    ls_layout TYPE slis_layout_alv,

    ls_keyinfo TYPE slis_keyinfo_alv,

    ls_sort TYPE slis_sortinfo_alv,

    lt_sort TYPE slis_t_sortinfo_alv," Sort table

    ls_fieldcat TYPE slis_fieldcat_alv,

    lt_fieldcat TYPE slis_t_fieldcat_alv." Field catalog

    ls_layout-group_change_edit = c_x.

    ls_layout-colwidth_optimize = c_x.

    ls_layout-zebra = c_x.

    ls_layout-detail_popup = c_x.

    ls_layout-get_selinfos = c_x.

    • Build field catalog and sort table

    m_fieldcat 'GT_VBAK' 'VBELN' 'VBAK'.

    m_fieldcat 'GT_VBAK' 'KUNNR' 'VBAK'.

    m_fieldcat 'GT_VBAK' 'NETWR' 'VBAK'.

    m_fieldcat 'GT_VBAK' 'ERDAT' 'VBAK'.

    m_fieldcat 'GT_VBAK' 'WAERK' 'VBAK'.

    m_fieldcat 'GT_VBAP' 'POSNR' 'VBAP'.

    m_fieldcat 'GT_VBAP' 'MATNR' 'VBAP'.

    m_fieldcat 'GT_VBAP' 'NETWR' 'VBAP'.

    m_fieldcat 'GT_VBAP' 'WAERK' 'VBAP'.

    m_sort 'GT_VBAK' 'KUNNR'.

    m_sort 'GT_VBAP' 'NETWR'.

    ls_keyinfo-header01 = 'VBELN'.

    ls_keyinfo-item01 = 'VBELN'.

    CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

    EXPORTING

    i_callback_program = sy-cprog

    i_callback_user_command = 'USER_COMMAND'

    is_layout = ls_layout

    it_fieldcat = lt_fieldcat

    it_sort = lt_sort

    i_tabname_header = 'GT_VBAK'

    i_tabname_item = 'GT_VBAP'

    is_keyinfo = ls_keyinfo

    TABLES

    t_outtab_header = gt_vbak

    t_outtab_item = gt_vbap

    EXCEPTIONS

    program_error = 1

    OTHERS = 2.

    IF sy-subrc <> 0.

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    ENDIF.

    ENDFORM. " F_LIST_DISPLAY

    ----


    • FORM USER_COMMAND *

    ----


    FORM user_command USING i_ucomm TYPE sy-ucomm

    is_selfield TYPE slis_selfield. "#EC CALLED

    DATA ls_vbak TYPE ty_vbak.

    CASE i_ucomm.

    WHEN '&IC1'. " Pick

    CASE is_selfield-tabname.

    WHEN 'GT_VBAP'.

    WHEN 'GT_VBAK'.

    READ TABLE gt_vbak INDEX is_selfield-tabindex INTO ls_vbak.

    IF sy-subrc EQ 0.

    • Sales order number

    SET PARAMETER ID 'AUN' FIELD ls_vbak-vbeln.

    • Display Sales Order

    CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.

    ENDIF.

    ENDCASE.

    ENDCASE.

    ENDFORM. " USER_COMMAND

                              • END OF PROGRAM Z_ALV_HIERSEQ_LIST ***********************

                              Best Regards,

                              Vibha

                              *Please mark all the helpful answers

                              Add a comment
                              10|10000 characters needed characters exceeded

                            Before answering

                            You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
                            You must be Logged in to submit an answer.

                            Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.