2008 Aug 14 7:14 AM
Hi Friendz.
I need your help.
I have written this code. But I am getting dump. Please help me.
&----
*& Report ZTEST_DYNAMIC_LIST_DISPLAY
*&
&----
*&
*&
&----
REPORT ZTEST_DYNAMIC_LIST_DISPLAY.
&----
*& Report YPUSH_PP_DEMAND_PLANS
*&
&----
*&
*&
&----
type-pools: SLIS.
TYPES : BEGIN OF t_pbim,
matnr TYPE matnr,
versb1 TYPE versb,
bdzei TYPE bdzei,
werks TYPE werks_d,
END OF t_pbim,
BEGIN OF t_pbed,
pdatu TYPE pdatu,
meins TYPE meins,
plnmg TYPE plnmg,
bdzei TYPE bdzei,
END OF t_pbed,
BEGIN OF t_marc,
matnr TYPE matnr,
dispo TYPE dispo,
werks TYPE werks_d,
END OF t_marc.
TYPES : BEGIN OF t_final,
matnr TYPE matnr,
versb1 TYPE versb,
meins TYPE meins,
pdatu TYPE pdatu,
plnmg TYPE plnmg,
total TYPE plnmg,
END OF t_final.
DATA : lt_pbim TYPE TABLE OF t_pbim,
lt_pbed TYPE TABLE OF t_pbed,
lt_marc TYPE TABLE OF t_marc,
lt_final TYPE TABLE OF t_final.
DATA : wa_pbim TYPE t_pbim,
wa_pbed TYPE t_pbed,
wa_marc TYPE t_marc,
wa_final TYPE t_final.
*Variable declaration.
DATA : v_matnr type pbim-matnr,
v_dispo type marc-dispo,
v_date(6) TYPE C,
v_date2(8) TYPE C,
v_date3(8) TYPE C,
v_date1 LIKE P0001-BEGDA,
v_months LIKE T5A4A-DLYMO,
v_days LIKE T5A4A-DLYDY,
v_years LIKE T5A4A-DLYYR,
V_CALC_DATE LIKE P0001-BEGDA,
v_no_months TYPE P,
v_date_m(6) TYPE c,
v_ind(2) TYPE c.
*Data declaration for dynamic table alv display
DATA: gt_fieldcat TYPE SLIS_T_FIELDCAT_ALV,
ls_fieldcat TYPE slis_fieldcat_alv,
st_layout TYPE SLIS_LAYOUT_ALV,
MESSAGE_HANDLER TYPE REF TO IF_HRPA_MESSAGE_HANDLER,
lds_fieldcat TYPE lvc_s_fcat,
gdt_fieldcat TYPE lvc_t_fcat.
DATA: it_fieldcatalog TYPE lvc_t_fcat,
wa_fieldcat TYPE lvc_s_fcat.
DATA: i_dyntab TYPE REF TO data. " To create dyn.Itab
DATA: w_dref TYPE REF TO data,
w_data TYPE REF TO data,
w_grid TYPE REF TO cl_gui_alv_grid.
DATA: grid TYPE REF TO cl_gui_alv_grid,
cont TYPE REF TO cl_gui_custom_container.
FIELD-SYMBOLS: <lt_final> TYPE STANDARD TABLE,
<fs_wa> TYPE ANY,<fs> TYPE ANY.
*SELECTION SCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-120.
PARAMETERS: p_werks TYPE t001w-werks OBLIGATORY.
SELECT-OPTIONS : s_matnr FOR v_matnr.
SELECT-OPTIONS : s_dispo FOR v_dispo.
SELECT-OPTIONS : s_date FOR v_date.
PARAMETERS: p_ver1 TYPE pbim-versb,
p_ver2 TYPE pbim-versb.
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN.
IF s_matnr = 'X' AND s_matnr IS INITIAL.
MESSAGE E000(yt) WITH 'Please Enter the material.'.
ENDIF.
CONCATENATE s_date-low '01' INTO v_date3.
CONCATENATE s_date-high '31' INTO v_date2.
MOVE v_date3 TO v_date1.
v_years = '0000'.
v_days = '00'.
v_months = '11'.
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
DATE = v_date1
DAYS = v_days
MONTHS = v_months
SIGNUM = '+'
YEARS = v_years
IMPORTING
CALC_DATE = V_CALC_DATE.
CONCATENATE V_CALC_DATE0(4) V_CALC_DATE4(2) INTO v_date_m.
MOVE v_date_m TO s_date-high.
MODIFY s_date INDEX sy-tabix.
START-OF-SELECTION.
IF s_matnr IS NOT INITIAL.
IF s_date-high <> v_date_m.
CALL FUNCTION 'HR_ECM_GET_NUMBER_OF_MONTHS'
EXPORTING
BEGDA = v_date1
ENDDA = v_date2
DAYS_MIN = 0
MESSAGE_HANDLER = MESSAGE_HANDLER
IMPORTING
MONTHS = v_no_months
IS_OK = 'X'
.
ENDIF.
IF s_dispo IS NOT INITIAL.
SELECT matnr
FROM marc
INTO TABLE lt_marc
WHERE matnr IN s_matnr
AND werks = p_werks
AND dispo IN s_dispo
AND lvorm = ''.
IF SY-SUBRC <> 0.
MESSAGE E000(YT) with 'No data.'.
ENDIF.
IF NOT lt_marc IS INITIAL.
SELECT matnr
versb
bdzei
FROM pbim
INTO TABLE lt_pbim
FOR ALL ENTRIES IN lt_marc
where matnr = lt_marc-matnr
AND versb = p_ver1
OR versb = p_ver2
AND loevr = ''.
IF SY-SUBRC <> 0.
MESSAGE E000(YT) with 'No data.'.
ENDIF.
ENDIF.
ENDIF.
SELECT matnr
versb
bdzei
FROM pbim
INTO TABLE lt_pbim
WHERE matnr IN s_matnr
AND werks = p_werks
AND versb = p_ver1
OR versb = p_ver2
AND loevr = ''.
IF SY-SUBRC <> 0.
MESSAGE E000(YT) with 'No data.'.
ENDIF.
IF NOT lt_pbim IS INITIAL.
SELECT pdatu
meins
plnmg
bdzei
FROM pbed
INTO TABLE lt_pbed
FOR ALL ENTRIES IN lt_pbim
WHERE bdzei = lt_pbim-bdzei
AND pdatu BETWEEN v_date1 AND V_CALC_DATE
AND loevr = ''.
IF SY-SUBRC <> 0.
MESSAGE E000(YT) with 'No data.'.
ENDIF.
ENDIF.
ENDIF.
END-OF-SELECTION.
LOOP at lt_pbim INTO wa_pbim.
wa_final-matnr = wa_pbim-matnr.
wa_final-versb1 = wa_pbim-versb1.
READ TABLE lt_pbed INTO wa_pbed WITH KEY bdzei = wa_pbim-bdzei.
if sy-subrc = 0.
wa_final-pdatu = wa_pbed-pdatu.
wa_final-meins = wa_pbed-meins.
wa_final-plnmg = wa_pbed-plnmg.
endif.
READ TABLE lt_marc INTO wa_marc WITH KEY werks = wa_pbim-werks.
APPEND wa_final to lt_final.
CLEAR : wa_final , wa_pbim, wa_pbed, wa_marc.
ENDLOOP.
*Field cat population.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-coltext = 'Material'.
APPEND wa_fieldcat TO it_fieldcatalog.
wa_fieldcat-fieldname = 'VERSB1'.
wa_fieldcat-outputlen = 2.
wa_fieldcat-coltext = 'VER'.
APPEND wa_fieldcat TO it_fieldcatalog.
wa_fieldcat-fieldname = 'MEINS'.
wa_fieldcat-outputlen = 3.
wa_fieldcat-coltext = 'UOM'.
APPEND wa_fieldcat TO it_fieldcatalog.
v_ind = 1.
DO v_months TIMES.
CONCATENATE 'PDATU' v_ind INTO wa_fieldcat-fieldname.
wa_fieldcat-outputlen = 6.
wa_fieldcat-coltext = 'DATE'.
APPEND wa_fieldcat TO it_fieldcatalog.
v_ind = v_ind + 1.
ENDDO.
wa_fieldcat-fieldname = 'PLNMG'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-coltext = 'QUAN'.
APPEND wa_fieldcat TO it_fieldcatalog.
wa_fieldcat-fieldname = 'TOTAL'.
wa_fieldcat-outputlen = 5.
wa_fieldcat-coltext = 'TOTAL'.
APPEND wa_fieldcat TO it_fieldcatalog.
*-Dynamic Table creation
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = it_fieldcatalog
IMPORTING
ep_table = i_dyntab.
ASSIGN i_dyntab->* TO <lt_final>.
CREATE DATA w_data LIKE LINE OF <lt_final>.
ASSIGN w_data->* TO <fs_wa>.
LOOP at lt_final into wa_final.
ASSIGN COMPONENT 1 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-matnr.
ASSIGN COMPONENT 2 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-versb1.
UNASSIGN <fs>.
ASSIGN COMPONENT 3 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-meins.
UNASSIGN <fs>.
ASSIGN COMPONENT v_ind OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-pdatu.
UNASSIGN <fs>.
ASSIGN COMPONENT 5 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-plnmg.
UNASSIGN <fs>.
ASSIGN COMPONENT 6 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-total.
UNASSIGN <fs>.
APPEND <fs_wa> TO <lt_final>.
CLEAR <fs_wa>.
ENDLOOP.
CALL SCREEN 900.
&----
*& Module STATUS_0900 OUTPUT
&----
text
----
MODULE STATUS_0900 OUTPUT.
SET PF-STATUS 'PF'.
SET TITLEBAR 'TITLE'.
DATA: layout TYPE lvc_s_layo.
CREATE OBJECT cont
EXPORTING
container_name = 'CONT'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6
.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CREATE OBJECT grid
EXPORTING
i_parent = cont
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
OTHERS = 5
.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
layout-INFO_FNAME = 'COLOR'.
grid->set_table_for_first_display(
EXPORTING
is_layout = layout
CHANGING
it_outtab = <lt_final>
it_fieldcatalog = it_fieldcatalog
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
).
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDMODULE. " STATUS_0900 OUTPUT
Error analysis
You attempted to access an unassigned field symbol
(data segment 12).
This error may occur if
- You address a typed field symbol before it has been set wi
ASSIGN
- You address a field symbol that pointed to the line of an
internal table that was deleted
- You address a field symbol that was previously reset using
UNASSIGN or that pointed to a local field that no
longer exists
- You address a global function interface, although the
respective function module is not active - that is, is
not in the list of active calls. The list of active calls
can be taken from this short dump.
Hi Friendz.
I need your help.
I have written this code. But I am getting dump. Please help me.
&----
*& Report ZTEST_DYNAMIC_LIST_DISPLAY
*&
&----
*&
*&
&----
REPORT ZTEST_DYNAMIC_LIST_DISPLAY.
&----
*& Report YPUSH_PP_DEMAND_PLANS
*&
&----
*&
*&
&----
type-pools: SLIS.
TYPES : BEGIN OF t_pbim,
matnr TYPE matnr,
versb1 TYPE versb,
bdzei TYPE bdzei,
werks TYPE werks_d,
END OF t_pbim,
BEGIN OF t_pbed,
pdatu TYPE pdatu,
meins TYPE meins,
plnmg TYPE plnmg,
bdzei TYPE bdzei,
END OF t_pbed,
BEGIN OF t_marc,
matnr TYPE matnr,
dispo TYPE dispo,
werks TYPE werks_d,
END OF t_marc.
TYPES : BEGIN OF t_final,
matnr TYPE matnr,
versb1 TYPE versb,
meins TYPE meins,
pdatu TYPE pdatu,
plnmg TYPE plnmg,
total TYPE plnmg,
END OF t_final.
DATA : lt_pbim TYPE TABLE OF t_pbim,
lt_pbed TYPE TABLE OF t_pbed,
lt_marc TYPE TABLE OF t_marc,
lt_final TYPE TABLE OF t_final.
DATA : wa_pbim TYPE t_pbim,
wa_pbed TYPE t_pbed,
wa_marc TYPE t_marc,
wa_final TYPE t_final.
*Variable declaration.
DATA : v_matnr type pbim-matnr,
v_dispo type marc-dispo,
v_date(6) TYPE C,
v_date2(8) TYPE C,
v_date3(8) TYPE C,
v_date1 LIKE P0001-BEGDA,
v_months LIKE T5A4A-DLYMO,
v_days LIKE T5A4A-DLYDY,
v_years LIKE T5A4A-DLYYR,
V_CALC_DATE LIKE P0001-BEGDA,
v_no_months TYPE P,
v_date_m(6) TYPE c,
v_ind(2) TYPE c.
*Data declaration for dynamic table alv display
DATA: gt_fieldcat TYPE SLIS_T_FIELDCAT_ALV,
ls_fieldcat TYPE slis_fieldcat_alv,
st_layout TYPE SLIS_LAYOUT_ALV,
MESSAGE_HANDLER TYPE REF TO IF_HRPA_MESSAGE_HANDLER,
lds_fieldcat TYPE lvc_s_fcat,
gdt_fieldcat TYPE lvc_t_fcat.
DATA: it_fieldcatalog TYPE lvc_t_fcat,
wa_fieldcat TYPE lvc_s_fcat.
DATA: i_dyntab TYPE REF TO data. " To create dyn.Itab
DATA: w_dref TYPE REF TO data,
w_data TYPE REF TO data,
w_grid TYPE REF TO cl_gui_alv_grid.
DATA: grid TYPE REF TO cl_gui_alv_grid,
cont TYPE REF TO cl_gui_custom_container.
FIELD-SYMBOLS: <lt_final> TYPE STANDARD TABLE,
<fs_wa> TYPE ANY,<fs> TYPE ANY.
*SELECTION SCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-120.
PARAMETERS: p_werks TYPE t001w-werks OBLIGATORY.
SELECT-OPTIONS : s_matnr FOR v_matnr.
SELECT-OPTIONS : s_dispo FOR v_dispo.
SELECT-OPTIONS : s_date FOR v_date.
PARAMETERS: p_ver1 TYPE pbim-versb,
p_ver2 TYPE pbim-versb.
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN.
IF s_matnr = 'X' AND s_matnr IS INITIAL.
MESSAGE E000(yt) WITH 'Please Enter the material.'.
ENDIF.
CONCATENATE s_date-low '01' INTO v_date3.
CONCATENATE s_date-high '31' INTO v_date2.
MOVE v_date3 TO v_date1.
v_years = '0000'.
v_days = '00'.
v_months = '11'.
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
DATE = v_date1
DAYS = v_days
MONTHS = v_months
SIGNUM = '+'
YEARS = v_years
IMPORTING
CALC_DATE = V_CALC_DATE.
CONCATENATE V_CALC_DATE0(4) V_CALC_DATE4(2) INTO v_date_m.
MOVE v_date_m TO s_date-high.
MODIFY s_date INDEX sy-tabix.
START-OF-SELECTION.
IF s_matnr IS NOT INITIAL.
IF s_date-high <> v_date_m.
CALL FUNCTION 'HR_ECM_GET_NUMBER_OF_MONTHS'
EXPORTING
BEGDA = v_date1
ENDDA = v_date2
DAYS_MIN = 0
MESSAGE_HANDLER = MESSAGE_HANDLER
IMPORTING
MONTHS = v_no_months
IS_OK = 'X'
.
ENDIF.
IF s_dispo IS NOT INITIAL.
SELECT matnr
FROM marc
INTO TABLE lt_marc
WHERE matnr IN s_matnr
AND werks = p_werks
AND dispo IN s_dispo
AND lvorm = ''.
IF SY-SUBRC <> 0.
MESSAGE E000(YT) with 'No data.'.
ENDIF.
IF NOT lt_marc IS INITIAL.
SELECT matnr
versb
bdzei
FROM pbim
INTO TABLE lt_pbim
FOR ALL ENTRIES IN lt_marc
where matnr = lt_marc-matnr
AND versb = p_ver1
OR versb = p_ver2
AND loevr = ''.
IF SY-SUBRC <> 0.
MESSAGE E000(YT) with 'No data.'.
ENDIF.
ENDIF.
ENDIF.
SELECT matnr
versb
bdzei
FROM pbim
INTO TABLE lt_pbim
WHERE matnr IN s_matnr
AND werks = p_werks
AND versb = p_ver1
OR versb = p_ver2
AND loevr = ''.
IF SY-SUBRC <> 0.
MESSAGE E000(YT) with 'No data.'.
ENDIF.
IF NOT lt_pbim IS INITIAL.
SELECT pdatu
meins
plnmg
bdzei
FROM pbed
INTO TABLE lt_pbed
FOR ALL ENTRIES IN lt_pbim
WHERE bdzei = lt_pbim-bdzei
AND pdatu BETWEEN v_date1 AND V_CALC_DATE
AND loevr = ''.
IF SY-SUBRC <> 0.
MESSAGE E000(YT) with 'No data.'.
ENDIF.
ENDIF.
ENDIF.
END-OF-SELECTION.
LOOP at lt_pbim INTO wa_pbim.
wa_final-matnr = wa_pbim-matnr.
wa_final-versb1 = wa_pbim-versb1.
READ TABLE lt_pbed INTO wa_pbed WITH KEY bdzei = wa_pbim-bdzei.
if sy-subrc = 0.
wa_final-pdatu = wa_pbed-pdatu.
wa_final-meins = wa_pbed-meins.
wa_final-plnmg = wa_pbed-plnmg.
endif.
READ TABLE lt_marc INTO wa_marc WITH KEY werks = wa_pbim-werks.
APPEND wa_final to lt_final.
CLEAR : wa_final , wa_pbim, wa_pbed, wa_marc.
ENDLOOP.
*Field cat population.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-coltext = 'Material'.
APPEND wa_fieldcat TO it_fieldcatalog.
wa_fieldcat-fieldname = 'VERSB1'.
wa_fieldcat-outputlen = 2.
wa_fieldcat-coltext = 'VER'.
APPEND wa_fieldcat TO it_fieldcatalog.
wa_fieldcat-fieldname = 'MEINS'.
wa_fieldcat-outputlen = 3.
wa_fieldcat-coltext = 'UOM'.
APPEND wa_fieldcat TO it_fieldcatalog.
v_ind = 1.
DO v_months TIMES.
CONCATENATE 'PDATU' v_ind INTO wa_fieldcat-fieldname.
wa_fieldcat-outputlen = 6.
wa_fieldcat-coltext = 'DATE'.
APPEND wa_fieldcat TO it_fieldcatalog.
v_ind = v_ind + 1.
ENDDO.
wa_fieldcat-fieldname = 'PLNMG'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-coltext = 'QUAN'.
APPEND wa_fieldcat TO it_fieldcatalog.
wa_fieldcat-fieldname = 'TOTAL'.
wa_fieldcat-outputlen = 5.
wa_fieldcat-coltext = 'TOTAL'.
APPEND wa_fieldcat TO it_fieldcatalog.
*-Dynamic Table creation
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = it_fieldcatalog
IMPORTING
ep_table = i_dyntab.
ASSIGN i_dyntab->* TO <lt_final>.
CREATE DATA w_data LIKE LINE OF <lt_final>.
ASSIGN w_data->* TO <fs_wa>.
LOOP at lt_final into wa_final.
ASSIGN COMPONENT 1 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-matnr.
ASSIGN COMPONENT 2 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-versb1.
UNASSIGN <fs>.
ASSIGN COMPONENT 3 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-meins.
UNASSIGN <fs>.
ASSIGN COMPONENT v_ind OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-pdatu.
UNASSIGN <fs>.
ASSIGN COMPONENT 5 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-plnmg.
UNASSIGN <fs>.
ASSIGN COMPONENT 6 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-total.
UNASSIGN <fs>.
APPEND <fs_wa> TO <lt_final>.
CLEAR <fs_wa>.
ENDLOOP.
CALL SCREEN 900.
&----
*& Module STATUS_0900 OUTPUT
&----
text
----
MODULE STATUS_0900 OUTPUT.
SET PF-STATUS 'PF'.
SET TITLEBAR 'TITLE'.
DATA: layout TYPE lvc_s_layo.
CREATE OBJECT cont
EXPORTING
container_name = 'CONT'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6
.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CREATE OBJECT grid
EXPORTING
i_parent = cont
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
OTHERS = 5
.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
layout-INFO_FNAME = 'COLOR'.
grid->set_table_for_first_display(
EXPORTING
is_layout = layout
CHANGING
it_outtab = <lt_final>
it_fieldcatalog = it_fieldcatalog
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
).
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDMODULE. " STATUS_0900 OUTPUT
Error analysis
You attempted to access an unassigned field symbol
(data segment 12).
This error may occur if
- You address a typed field symbol before it has been set wi
ASSIGN
- You address a field symbol that pointed to the line of an
internal table that was deleted
- You address a field symbol that was previously reset using
UNASSIGN or that pointed to a local field that no
longer exists
- You address a global function interface, although the
respective function module is not active - that is, is
not in the list of active calls. The list of active calls
can be taken from this short dump.
2008 Aug 14 8:04 AM
I modified your code a bit, to get the data output.since i am not getting any output. finally i got the output.
the problem lies in the code..
data: lv_ind(2) type c.
v_ind = 1.
DO v_months TIMES.
lv_ind = v_ind.
CONCATENATE 'PDATU' lv_ind INTO wa_fieldcat-fieldname.
wa_fieldcat-outputlen = 6.
wa_fieldcat-coltext = 'DATE'.
APPEND wa_fieldcat TO it_fieldcatalog.
v_ind = v_ind + 1.
ENDDO.v_ind should be type i, otherwise you get the dump.
so i changed it to type i.
ASSIGN COMPONENT v_ind OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-pdatu.
UNASSIGN <fs>.REPORT ztest_alv_.
TYPE-POOLS: slis.
tables: t001w.
TYPES : BEGIN OF t_pbim,
matnr TYPE matnr,
versb1 TYPE versb,
bdzei TYPE bdzei,
werks TYPE werks_d,
END OF t_pbim,
BEGIN OF t_pbed,
pdatu TYPE pdatu,
meins TYPE meins,
plnmg TYPE plnmg,
bdzei TYPE bdzei,
END OF t_pbed,
BEGIN OF t_marc,
matnr TYPE matnr,
dispo TYPE dispo,
werks TYPE werks_d,
END OF t_marc.
TYPES : BEGIN OF t_final,
matnr TYPE matnr,
versb1 TYPE versb,
meins TYPE meins,
pdatu TYPE pdatu,
plnmg TYPE plnmg,
total TYPE plnmg,
END OF t_final.
DATA : lt_pbim TYPE TABLE OF t_pbim,
lt_pbed TYPE TABLE OF t_pbed,
lt_marc TYPE TABLE OF t_marc,
lt_final TYPE TABLE OF t_final.
DATA : wa_pbim TYPE t_pbim,
wa_pbed TYPE t_pbed,
wa_marc TYPE t_marc,
wa_final TYPE t_final.
*Variable declaration.
DATA : v_matnr TYPE pbim-matnr,
v_dispo TYPE marc-dispo,
v_date(6) TYPE c,
v_date2 TYPE sy-datum,
v_date3(8) TYPE c,
v_date1 LIKE p0001-begda,
v_months LIKE t5a4a-dlymo,
v_days LIKE t5a4a-dlydy,
v_years LIKE t5a4a-dlyyr,
v_calc_date LIKE p0001-begda,
v_no_months TYPE p,
v_date_m(6) TYPE c,
v_ind TYPE i.
*Data declaration for dynamic table alv display
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv,
ls_fieldcat TYPE slis_fieldcat_alv,
st_layout TYPE slis_layout_alv,
message_handler TYPE REF TO if_hrpa_message_handler,
lds_fieldcat TYPE lvc_s_fcat,
gdt_fieldcat TYPE lvc_t_fcat.
DATA: it_fieldcatalog TYPE lvc_t_fcat,
wa_fieldcat TYPE lvc_s_fcat.
DATA: i_dyntab TYPE REF TO data. " To create dyn.Itab
DATA: w_dref TYPE REF TO data,
w_data TYPE REF TO data,
w_grid TYPE REF TO cl_gui_alv_grid.
DATA: grid TYPE REF TO cl_gui_alv_grid,
cont TYPE REF TO cl_gui_custom_container.
FIELD-SYMBOLS: <lt_final> TYPE STANDARD TABLE,
<fs_wa> TYPE ANY,<fs> TYPE ANY.
*SELECTION SCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-120.
select-options: s_werks for t001w-werks OBLIGATORY.
SELECT-OPTIONS : s_matnr FOR v_matnr.
SELECT-OPTIONS : s_dispo FOR v_dispo.
SELECT-OPTIONS : s_date FOR v_date.
PARAMETERS: p_ver1 TYPE pbim-versb,
p_ver2 TYPE pbim-versb.
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN.
IF s_matnr = 'X' AND s_matnr IS INITIAL.
MESSAGE e000(yt) WITH 'Please Enter the material.'.
ENDIF.
CONCATENATE s_date-low '01' INTO v_date3.
CONCATENATE s_date-high '31' INTO v_date2.
MOVE v_date3 TO v_date1.
v_years = '0000'.
v_days = '00'.
v_months = '11'.
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
date = v_date1
days = v_days
months = v_months
signum = '+'
years = v_years
IMPORTING
calc_date = v_calc_date.
CONCATENATE v_calc_date+0(4) v_calc_date+4(2) INTO v_date_m.
MOVE v_date_m TO s_date-high.
MODIFY s_date INDEX sy-tabix.
START-OF-SELECTION.
IF s_matnr IS NOT INITIAL.
* IF s_date-high NE v_date_m.
DATA: c_x TYPE boole_d.
CALL FUNCTION 'HR_ECM_GET_NUMBER_OF_MONTHS'
EXPORTING
begda = v_date1
endda = v_date2
days_min = 0
message_handler = message_handler
IMPORTING
months = v_no_months
is_ok = c_x.
* ENDIF.
IF s_dispo IS NOT INITIAL.
SELECT matnr
FROM marc
INTO TABLE lt_marc
WHERE matnr IN s_matnr
AND werks in s_werks
AND dispo IN s_dispo
AND lvorm = ''.
IF sy-subrc NE 0.
MESSAGE e000(yt) WITH 'No data.'.
ENDIF.
IF NOT lt_marc IS INITIAL.
SELECT matnr
versb
bdzei
FROM pbim
INTO TABLE lt_pbim
FOR ALL ENTRIES IN lt_marc
WHERE matnr = lt_marc-matnr
AND versb = p_ver1
OR versb = p_ver2
AND loevr = ''.
IF sy-subrc NE 0.
MESSAGE e000(yt) WITH 'No data.'.
ENDIF.
ENDIF.
ENDIF.
SELECT matnr
versb
bdzei
FROM pbim
INTO TABLE lt_pbim
WHERE matnr IN s_matnr
AND werks in s_werks
AND versb = p_ver1
OR versb = p_ver2
AND loevr = ''.
IF sy-subrc NE 0.
MESSAGE e000(yt) WITH 'No data.'.
ENDIF.
IF NOT lt_pbim IS INITIAL.
SELECT pdatu
meins
plnmg
bdzei
FROM pbed
INTO TABLE lt_pbed
FOR ALL ENTRIES IN lt_pbim
WHERE bdzei = lt_pbim-bdzei
* AND pdatu BETWEEN v_date1 AND v_calc_date
AND loevr = ''.
IF sy-subrc NE 0.
MESSAGE e000(yt) WITH 'No data.'.
ENDIF.
ENDIF.
ENDIF.
END-OF-SELECTION.
LOOP AT lt_pbim INTO wa_pbim.
wa_final-matnr = wa_pbim-matnr.
wa_final-versb1 = wa_pbim-versb1.
READ TABLE lt_pbed INTO wa_pbed WITH KEY bdzei = wa_pbim-bdzei.
IF sy-subrc = 0.
wa_final-pdatu = wa_pbed-pdatu.
wa_final-meins = wa_pbed-meins.
wa_final-plnmg = wa_pbed-plnmg.
ENDIF.
READ TABLE lt_marc INTO wa_marc WITH KEY werks = wa_pbim-werks.
APPEND wa_final TO lt_final.
CLEAR : wa_final , wa_pbim, wa_pbed, wa_marc.
ENDLOOP.
*Field cat population.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-coltext = 'Material'.
APPEND wa_fieldcat TO it_fieldcatalog.
wa_fieldcat-fieldname = 'VERSB1'.
wa_fieldcat-outputlen = 2.
wa_fieldcat-coltext = 'VER'.
APPEND wa_fieldcat TO it_fieldcatalog.
wa_fieldcat-fieldname = 'MEINS'.
wa_fieldcat-outputlen = 3.
wa_fieldcat-coltext = 'UOM'.
APPEND wa_fieldcat TO it_fieldcatalog.
data: lv_ind(2) type c.
v_ind = 1.
DO v_months TIMES.
lv_ind = v_ind.
CONCATENATE 'PDATU' lv_ind INTO wa_fieldcat-fieldname.
wa_fieldcat-outputlen = 6.
wa_fieldcat-coltext = 'DATE'.
APPEND wa_fieldcat TO it_fieldcatalog.
v_ind = v_ind + 1.
ENDDO.
wa_fieldcat-fieldname = 'PLNMG'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-coltext = 'QUAN'.
APPEND wa_fieldcat TO it_fieldcatalog.
wa_fieldcat-fieldname = 'TOTAL'.
wa_fieldcat-outputlen = 5.
wa_fieldcat-coltext = 'TOTAL'.
APPEND wa_fieldcat TO it_fieldcatalog.
*-Dynamic Table creation
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = it_fieldcatalog
IMPORTING
ep_table = i_dyntab.
ASSIGN i_dyntab->* TO <lt_final>.
CREATE DATA w_data LIKE LINE OF <lt_final>.
ASSIGN w_data->* TO <fs_wa>.
LOOP AT lt_final INTO wa_final.
ASSIGN COMPONENT 1 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-matnr.
ASSIGN COMPONENT 2 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-versb1.
UNASSIGN <fs>.
ASSIGN COMPONENT 3 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-meins.
UNASSIGN <fs>.
ASSIGN COMPONENT v_ind OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-pdatu.
UNASSIGN <fs>.
ASSIGN COMPONENT 5 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-plnmg.
UNASSIGN <fs>.
ASSIGN COMPONENT 6 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-total.
UNASSIGN <fs>.
APPEND <fs_wa> TO <lt_final>.
CLEAR <fs_wa>.
ENDLOOP.
CALL SCREEN 900.
*----------------------------------------------------------------------*
* MODULE STATUS_0900 OUTPUT
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
MODULE status_0900 OUTPUT.
SET PF-STATUS 'PF'.
SET TITLEBAR 'TITLE'.
DATA: layout TYPE lvc_s_layo.
CREATE OBJECT cont
EXPORTING
container_name = 'CONT'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6
.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CREATE OBJECT grid
EXPORTING
i_parent = cont
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
OTHERS = 5
.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
layout-info_fname = 'COLOR'.
grid->set_table_for_first_display(
EXPORTING
is_layout = layout
CHANGING
it_outtab = <lt_final>
it_fieldcatalog = it_fieldcatalog
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
).
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDMODULE. " STATUS_0900 OUTPUT
2008 Aug 14 8:42 AM
Hi Vijay
Thank you so much.
But my problem is not yet solved.
I need to have the dates horizontally and also the field plnmg ie quantity underneath it. still m getting date and plnmg in columns. Please guide me how can i get those two fields horizontally.
Regards
Manisha.
2008 Aug 14 9:59 AM
Every thing is controlled by this..
you already reached final stage.
LOOP AT lt_final INTO wa_final.
ASSIGN COMPONENT 1 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-matnr.
ASSIGN COMPONENT 2 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-versb1.
UNASSIGN <fs>.
ASSIGN COMPONENT 3 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-meins.
"This logic will change a bit you have introduce a do loop here..
"like you did for fieldcata log population.
UNASSIGN <fs>.
ASSIGN COMPONENT v_ind OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-pdatu.
UNASSIGN <fs>.
ASSIGN COMPONENT 5 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-plnmg.
UNASSIGN <fs>.
ASSIGN COMPONENT 6 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-total.
UNASSIGN <fs>.
APPEND <fs_wa> TO <lt_final>.
CLEAR <fs_wa>.
ENDLOOP.to get the 12 dates value in horizontal row , introduce this in the above loop;
data: inc type i,
fieldname(17),
inc2(2) type c.
inc = 1
do v_ind times.
inc2 = inc.
concatenate 'WA_FINAL-PDATU' inc into fieldname.
assing (fieldname) to <fs>.
inc = inc + 1.
enddo.may be some errors in my code, just correct it and avoid dump in fieldsymbol assignment.
i thought in your nternal table fields are like this...
WA_FINAL-PDATU1, WA_FINAL-PDATU2, WA_FINAL-PDATU3.. etc.
concatenate 'WA_FINAL-PDATU' inc into fieldname.
2008 Aug 14 10:58 AM
Hi
Still it is not working. I am getting blank fields
I have written this code. Please tell me where m going wrong.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-coltext = 'Material'.
APPEND wa_fieldcat TO it_fieldcatalog.
wa_fieldcat-fieldname = 'VERSB1'.
wa_fieldcat-outputlen = 2.
wa_fieldcat-coltext = 'VER'.
APPEND wa_fieldcat TO it_fieldcatalog.
wa_fieldcat-fieldname = 'MEINS'.
wa_fieldcat-outputlen = 3.
wa_fieldcat-coltext = 'UOM'.
APPEND wa_fieldcat TO it_fieldcatalog.
wa_fieldcat-fieldname = 'PLNMG'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-coltext = 'QUAN'.
APPEND wa_fieldcat TO it_fieldcatalog.
wa_fieldcat-fieldname = 'TOTAL'.
wa_fieldcat-outputlen = 5.
wa_fieldcat-coltext = 'TOTAL'.
APPEND wa_fieldcat TO it_fieldcatalog.
data: lv_ind(2) type c.
v_ind = 1.
DO v_months TIMES.
lv_ind = v_ind.
CONCATENATE 'PDATU' lv_ind INTO wa_fieldcat-fieldname.
wa_fieldcat-outputlen = 8.
wa_fieldcat-coltext = 'DATE'.
APPEND wa_fieldcat TO it_fieldcatalog.
v_ind = v_ind + 1.
ENDDO.
*-Dynamic Table creation
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = it_fieldcatalog
IMPORTING
ep_table = i_dyntab.
ASSIGN i_dyntab->* TO <lt_final>.
CREATE DATA w_data LIKE LINE OF <lt_final>.
ASSIGN w_data->* TO <fs_wa>.
LOOP AT lt_final INTO wa_final.
ASSIGN COMPONENT 1 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-matnr.
ASSIGN COMPONENT 2 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-versb1.
UNASSIGN <fs>.
ASSIGN COMPONENT 3 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-meins.
UNASSIGN <fs>.
ASSIGN COMPONENT 4 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-plnmg.
UNASSIGN <fs>.
ASSIGN COMPONENT 5 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-total.
UNASSIGN <fs>.
data: inc type i,
fieldname(17),
inc2(2) type c.
inc = 1.
do v_months times.
inc2 = inc.
concatenate WA_FINAL-PDATU inc2 into fieldname.
assign (fieldname) to <fs>.
UNASSIGN <fs>.
inc = inc + 1.
enddo.
ASSIGN COMPONENT v_ind OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-pdatu.
UNASSIGN <fs>.
APPEND <fs_wa> TO <lt_final>.
CLEAR <fs_wa>.
ENDLOOP.
CALL SCREEN 900.
&----
*& Module STATUS_0900 OUTPUT
&----
text
----
MODULE STATUS_0900 OUTPUT.
SET PF-STATUS 'PF'.
SET TITLEBAR 'TITLE'.
DATA: layout TYPE lvc_s_layo.
CREATE OBJECT cont
EXPORTING
container_name = 'CONT'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6
.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CREATE OBJECT grid
EXPORTING
i_parent = cont
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
OTHERS = 5
.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
layout-INFO_FNAME = 'COLOR'.
grid->set_table_for_first_display(
EXPORTING
is_layout = layout
CHANGING
it_outtab = <lt_final>
it_fieldcatalog = it_fieldcatalog
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
).
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDMODULE. " STATUS_0900 OUTPUT
2008 Aug 14 11:27 AM
see the prolem is only here, if you can give me the Data how u get exactly in it_final and how you want final table then i will be able to tell you more clear.
Here you need to use control break statement based on date value. But just show a sample data and how you want it in the output.
LOOP AT lt_final INTO wa_final.
ASSIGN COMPONENT 1 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-matnr.
ASSIGN COMPONENT 2 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-versb1.
UNASSIGN <fs>.
ASSIGN COMPONENT 3 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-meins.
UNASSIGN <fs>.
DATA: inc TYPE i,
fieldname(17),
inc2(2) TYPE c.
inc = 1.
DO v_months TIMES.
inc2 = inc.
CONCATENATE '<FS_WA>-PDATU' inc2 INTO fieldname.
ASSIGN (fieldname) TO <fs>.
<fs> = wa_final-pdatu.
inc = inc + 1.
ENDDO.
UNASSIGN <fs>.
ASSIGN COMPONENT 5 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-plnmg.
UNASSIGN <fs>.
ASSIGN COMPONENT 6 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-total.
UNASSIGN <fs>.
APPEND <fs_wa> TO <lt_final>.
CLEAR <fs_wa>.
ENDLOOP.
2008 Aug 14 11:47 AM
Hi Vijay
I am getting output in format
Material Ver UOM DATE DATE DATE ..... DATE TOTAL
m09001 00 M2 20080909 0,000
m09001 01 M2 20081009 0,000
m09001 02 M2 20081009 0,000
I want the output as
Material Ver UOM DATE DATE DATE ..... DATE TOTAL
m09001 00 M2 20080909 20080910 20081009 0 ,000
01 M2 20080909 20080910 20081009 0 ,000
02 M2 20080909 20080910 20081009 0 ,000
2008 Aug 14 11:58 AM
using the control break statement along with fieldsymbols you can get the required output.
sort it_final by matnr VERSB1.
DATA: inc TYPE i,
fieldname(17),
inc2(2) TYPE c,
wa_final_tmp like line of lt_final.
inc = 1.
LOOP AT lt_final INTO wa_final.
wa_final_tmp = wa_final.
at new VERSB1.
inc = 1.
sum.
ASSIGN COMPONENT 1 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-matnr.
ASSIGN COMPONENT 2 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-versb1.
UNASSIGN <fs>.
ASSIGN COMPONENT 3 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final_tmp-meins.
UNASSIGN <fs>.
ASSIGN COMPONENT 5 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = wa_final-plnmg.
UNASSIGN <fs>.
ASSIGN COMPONENT 6 OF STRUCTURE <fs_wa> TO <fs>.
<fs> = <fs> + wa_final-total.
UNASSIGN <fs>.
endat.
inc2 = inc.
CONCATENATE '<FS_WA>-PDATU' inc2 INTO fieldname.
ASSIGN (fieldname) TO <fs>.
<fs> = wa_final-pdatu.
inc = inc + 1.
UNASSIGN <fs>.
at end of VERSB1.
APPEND <fs_wa> TO <lt_final>.
CLEAR <fs_wa>.
endat.
ENDLOOP.
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |