‎2006 Dec 30 4:23 PM
Hello All,
I am getting a dump error when I am executing the below program. Kindly help as I am not getting the output. However all the subroutines are getting properly populated with data. Getting a dump error while calling the function : REUSE_ALV_HIERSEQ_LIST_DISPLAY
Pasted below are both the question and solution. Copy the solution in SE38 and execute it to check out the dump error.
Kindly help.
Thanks,
Vinod.
QUESTION :-
Objective
Hierarchical ALV for displaying Sales documents per customer
Design
Create a program that will allow the user to display all customers that have placed Sales Orders in the given date range. The user will have an ability to drill-down to see the sales order items per customer.
Selection screen fields
Sales order creation date (range)
Customer number (range)
Output
Header
Customer Number
Customer Name
Total Order value (sum of order values from items below)
Details
Sales order number
Material number
Order quantity
Order value
Reference
Tables: KNA1, VBAK, VBAP
Transaction VA03 (Sales order)
SOLUTION :-
&----
*& Report Z_HALV_32722 *
*& *
&----
*& *
*& *
&----
REPORT Z_HALV_32722 .
TYPE-POOLS: slis.
TABLES : kna1,
vbak.
SELECT-OPTIONS: s_cst_no FOR kna1-kunnr.
SELECT-OPTIONS: s_cr_dt FOR vbak-erdat.
DATA : BEGIN of ty_hdr,
kunnr TYPE vbak-kunnr,
name1 TYPE kna1-name1,
netwr TYPE vbak-netwr,
END of ty_hdr,
gt_hdr LIKE TABLE OF ty_hdr,
gs_hdr LIKE LINE OF gt_hdr.
DATA : BEGIN of ty_ln,
kunnr TYPE vbak-kunnr,
vbeln TYPE vbap-vbeln,
matnr TYPE vbap-matnr,
kwmeng TYPE vbap-kwmeng,
netwr TYPE vbap-netwr,
END of ty_ln,
gt_ln LIKE TABLE OF ty_ln,
gs_ln LIKE LINE OF gt_ln.
DATA : BEGIN of ty_hdr1,
kunnr TYPE vbak-kunnr,
END of ty_hdr1,
gt_hdr1 LIKE TABLE OF ty_hdr1,
gs_hdr1 LIKE LINE OF gt_hdr1.
DATA : gt_fc TYPE slis_t_fieldcat_alv,
gs_fc LIKE LINE OF gt_fc,
gs_k_fld TYPE slis_keyinfo_alv,
gt_layout TYPE slis_layout_alv,
gv_repid TYPE sy-repid.
START-OF-SELECTION.
gv_repid = sy-repid.
perform fetch_data.
perform prepare_fc.
perform prepare_layout.
perform show_output.
&----
*& Form fetch_data
&----
text
----
--> p1 text
<-- p2 text
----
form fetch_data .
SELECT kunnr
INTO CORRESPONDING FIELDS OF TABLE gt_hdr1
FROM vbak
WHERE vbak~kunnr IN s_cst_no
AND vbak~erdat IN s_cr_dt.
DELETE ADJACENT DUPLICATES FROM gt_hdr1 COMPARING kunnr.
LOOP AT gt_hdr1 INTO gs_hdr1.
SELECT SINGLE vbakkunnr kna1name1 SUM( vbak~netwr )
INTO (gs_hdr-kunnr, gs_hdr-name1, gs_hdr-netwr)
FROM vbak INNER JOIN kna1
ON vbakkunnr = kna1kunnr
WHERE vbak~kunnr = gs_hdr1-kunnr
GROUP BY vbakkunnr kna1name1.
APPEND gs_hdr TO gt_hdr.
SELECT vbakkunnr vbapvbeln vbapmatnr vbapkwmeng vbap~netwr
INTO CORRESPONDING FIELDS OF TABLE gt_ln
FROM vbap INNER JOIN vbak
ON vbapvbeln = vbakvbeln
WHERE vbak~kunnr = gs_hdr1-kunnr.
ENDLOOP.
endform. " fetch_data
&----
*& Form prepare_fc
&----
text
----
--> p1 text
<-- p2 text
----
form prepare_fc .
CLEAR gs_k_fld.
gs_k_fld-header01 = 'KUNNR'.
gs_k_fld-item01 = 'KUNNR'.
CLEAR gs_fc.
gs_fc-fieldname = 'KUNNR'.
gs_fc-tabname = 'GT_HDR'.
gs_fc-seltext_l = text-001.
APPEND gs_fc TO gt_fc.
CLEAR gs_fc.
gs_fc-fieldname = 'NAME1'.
gs_fc-tabname = 'GT_HDR'.
gs_fc-seltext_l = text-002.
APPEND gs_fc TO gt_fc.
CLEAR gs_fc.
gs_fc-fieldname = 'NETWR'.
gs_fc-tabname = 'GT_HDR'.
gs_fc-seltext_l = text-003.
APPEND gs_fc TO gt_fc.
CLEAR gs_fc.
gs_fc-fieldname = 'VBELN'.
gs_fc-tabname = 'GT_LN'.
gs_fc-seltext_l = text-004.
APPEND gs_fc TO gt_fc.
CLEAR gs_fc.
gs_fc-fieldname = 'MATNR'.
gs_fc-tabname = 'GT_LN'.
gs_fc-seltext_l = text-005.
APPEND gs_fc TO gt_fc.
CLEAR gs_fc.
gs_fc-fieldname = 'KWMENG'.
gs_fc-tabname = 'GT_LN'.
gs_fc-seltext_l = text-006.
APPEND gs_fc TO gt_fc.
CLEAR gs_fc.
gs_fc-fieldname = 'NETWR'.
gs_fc-tabname = 'GT_LN'.
gs_fc-seltext_l = text-007.
APPEND gs_fc TO gt_fc.
endform. " prepare_fc
&----
*& Form prepare_layout
&----
text
----
--> p1 text
<-- p2 text
----
form prepare_layout .
gt_layout-colwidth_optimize = 'X'.
gt_layout-expand_fieldname = 'TST'.
endform. " prepare_layout
&----
*& Form show_output
&----
text
----
--> p1 text
<-- p2 text
----
form show_output .
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_CALLBACK_PROGRAM = gv_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
IS_LAYOUT = gt_layout
IT_FIELDCAT = gt_fc
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS =
IT_EVENT_EXIT =
i_tabname_header = 'GT_HDR'
i_tabname_item = 'GT_LN'
I_STRUCTURE_NAME_HEADER =
I_STRUCTURE_NAME_ITEM =
is_keyinfo = gs_k_fld
IS_PRINT =
IS_REPREP_ID =
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
tables
t_outtab_header = GT_HDR[]
t_outtab_item = GT_LN[]
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. " show_output
‎2006 Dec 30 8:18 PM
Hi Vinod,
The error is in the value of "gt_layout". It is not getting populated properly. Just comment it in function module 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'. your program is working properly.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = gv_repid
is_layout = gt_layout
it_fieldcat = gt_fc
i_tabname_header = 'GT_HDR'
i_tabname_item = 'GT_LN'
is_keyinfo = gs_k_fld
TABLES
t_outtab_header = gt_hdr[]
t_outtab_item = gt_ln[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
‎2006 Dec 30 6:57 PM
‎2006 Dec 30 7:06 PM
Hi
You have just populated the header of the layout but not appended it. May be this is the reason for getting a dump as rest seems Ok.
form prepare_layout .
gt_layout-colwidth_optimize = 'X'.
gt_layout-expand_fieldname = 'TST'.
append gt_layout.
FYI, In the Perform fetch_data, you are writing a Select in a loop. Each time the Select is executed, the item table i.e gt_ln will be refreshed. You can use appending into corresponding.
Regards,
Navneet
‎2006 Dec 30 8:18 PM
Hi Vinod,
The error is in the value of "gt_layout". It is not getting populated properly. Just comment it in function module 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'. your program is working properly.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = gv_repid
is_layout = gt_layout
it_fieldcat = gt_fc
i_tabname_header = 'GT_HDR'
i_tabname_item = 'GT_LN'
is_keyinfo = gs_k_fld
TABLES
t_outtab_header = gt_hdr[]
t_outtab_item = gt_ln[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
‎2006 Dec 30 8:23 PM
Everything looks fine with the gt_layout, it is not an internal table, so no need to append to it, it is simply a structure, but you do tell it that TST is the expand field, but there is no field of this name in your internal for the header, so add it like this.
DATA : BEGIN of ty_hdr,
kunnr TYPE vbak-kunnr,
name1 TYPE kna1-name1,
netwr TYPE vbak-netwr,
<b>TST type c,</b>
END of ty_hdr,
Doing so should make you program work correctly.
Regards,
Rich Heilman
Message was edited by:
Rich Heilman