‎2007 Oct 12 8:27 AM
Hi SAP Guru's,
In my Below code upto Final Internal table i am getting data. But where in Fun Mod. Its going to Dump and showing an error as Field symbo is Missing. So, can u plz help me on this.
If helpfull points will be rewarded.
REPORT ZREPORT_SORDER_ENQUIRY NO STANDARD PAGE HEADING LINE-COUNT 30(2) LINE-SIZE 136.
TYPE-POOLS : SLIS.
TABLES : VAPMA, VBAK, VBAP, VBFA, LIPS.
TYPES : BEGIN OF T_OUTPUT,
FKDAT LIKE VBAK-fmbdat,
AGE(4),
VBELN LIKE VBAK-VBELN,
NAME1 LIKE KNA1-NAME1,
MATNR LIKE VBAP-MATNR,
KWMENG LIKE VBAP-KWMENG,
ERDAT LIKE LIPS-ERDAT,
pgage(4),
crvbe LIKE vbrk-vbeln,
crdat LIKE vbrk-erdat,
crage(4),
END OF t_output.
TYPES : BEGIN OF t_vbak,
vbeln LIKE vbak-vbeln,
fkdat LIKE vbak-fmbdat,
kunnr LIKE vbak-kunnr,
END OF t_vbak.
TYPES : BEGIN OF t_kna1,
kunnr LIKE kna1-kunnr,
name1 LIKE kna1-name1,
END OF t_kna1.
TYPES : BEGIN OF t_vbap,
vbeln LIKE vbap-vbeln,
posnr LIKE vbap-posnr,
matnr LIKE vbap-matnr,
kwmeng LIKE vbap-kwmeng,
END OF t_vbap.
TYPES : BEGIN OF t_vbfa,
vbelv LIKE vbfa-vbelv,
posnv LIKE vbfa-posnv,
vbeln LIKE vbfa-vbeln,
posnn LIKE vbfa-posnn,
END OF t_vbfa.
TYPES : BEGIN OF t_lips,
vbeln LIKE lips-vbeln,
posnr LIKE lips-posnr,
erdat LIKE lips-erdat,
END OF t_lips.
TYPES : BEGIN OF t_vbrk,
vbeln LIKE vbrk-vbeln,
erdat LIKE vbrk-erdat,
END OF t_vbrk.
DATA : i_output TYPE STANDARD TABLE OF t_output with header line,
wa_output TYPE t_output.
DATA : i_vbak TYPE STANDARD TABLE OF t_vbak,
wa_vbak TYPE t_vbak.
DATA : i_kna1 TYPE STANDARD TABLE OF t_kna1,
wa_kna1 TYPE t_kna1.
DATA : i_vbap TYPE STANDARD TABLE OF t_vbap,
wa_vbap TYPE t_vbap.
DATA : i_lvbfa TYPE STANDARD TABLE OF t_vbfa,
wa_lvbfa TYPE t_vbfa.
DATA : i_rvbfa TYPE STANDARD TABLE OF t_vbfa,
wa_rvbfa TYPE t_vbfa.
DATA : i_lips TYPE STANDARD TABLE OF t_lips,
wa_lips TYPE t_lips.
DATA : i_vbrk TYPE STANDARD TABLE OF t_vbrk,
wa_vbrk TYPE t_vbrk.
DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WK_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
DATA : GV_REPID TYPE SY-REPID.
************************************************************
SELECTION-SCREEN *
************************************************************
SELECT-OPTIONS : s_vkorg FOR vbak-vkorg,
s_kunnr FOR vbak-kunnr,
s_matnr FOR vbap-matnr,
s_fkdat FOR vbak-fmbdat.
*************************************************************
INITIALIZATION *
*************************************************************
INITIALIZATION.
GV_REPID = SY-REPID.
PERFORM BUILD_FIELDCAT_T_OUTPUT.
*************************************************************
START-OF-SELECTION *
*************************************************************
START-OF-SELECTION.
PERFORM GETDATA.
PERFORM DISPLAYDATA_IN_ALV.
&----
*& Form GETDATA
&----
FORM FOR GETTING DATA
----
--> p1 text
<-- p2 text
----
FORM GETDATA .
SELECT vbeln fmbdat kunnr FROM vbak INTO TABLE i_vbak
WHERE fmbdat IN s_fkdat
AND kunnr IN s_kunnr
AND vkorg IN s_vkorg.
IF NOT i_vbak IS INITIAL.
SELECT kunnr name1 FROM kna1 INTO TABLE i_kna1
FOR ALL ENTRIES IN i_vbak
WHERE kunnr = i_vbak-kunnr.
IF sy-subrc = 0.
SORT i_kna1 BY kunnr.
ENDIF.
SELECT vbeln posnr matnr kwmeng FROM vbap INTO TABLE i_vbap
FOR ALL ENTRIES IN i_vbak
WHERE vbeln = i_vbak-vbeln
AND matnr IN s_matnr.
IF sy-subrc = 0.
SORT i_vbap BY vbeln posnr.
ENDIF.
SELECT vbelv posnv vbeln posnn FROM vbfa INTO TABLE i_lvbfa
FOR ALL ENTRIES IN i_vbap
WHERE vbelv = i_vbap-vbeln
AND posnv = i_vbap-posnr
AND vbtyp_n = 'J'.
IF sy-subrc = 0.
SORT i_lvbfa BY vbelv posnv.
SELECT vbeln posnr erdat FROM lips INTO TABLE i_lips
FOR ALL ENTRIES IN i_lvbfa
WHERE vbeln = i_lvbfa-vbeln
AND posnr = i_lvbfa-posnn.
ENDIF.
SELECT vbelv posnv vbeln posnn FROM vbfa INTO TABLE i_rvbfa
FOR ALL ENTRIES IN i_vbak
WHERE vbelv = i_vbak-vbeln
AND vbtyp_n = 'O'.
IF sy-subrc = 0.
SELECT vbeln erdat FROM vbrk INTO TABLE i_vbrk
FOR ALL ENTRIES IN i_rvbfa
WHERE vbeln = i_rvbfa-vbeln.
SORT i_rvbfa BY vbelv.
ENDIF.
ENDIF.
LOOP AT i_vbap INTO wa_vbap.
READ TABLE i_vbak INTO wa_vbak WITH KEY vbeln = wa_vbap-vbeln
BINARY SEARCH.
IF sy-subrc = 0.
wa_output-fkdat = wa_vbak-fkdat.
wa_output-age = sy-datum - wa_vbak-fkdat.
READ TABLE i_kna1 INTO wa_kna1 WITH KEY kunnr = wa_vbak-kunnr
BINARY SEARCH.
IF sy-subrc = 0.
wa_output-name1 = wa_kna1-name1.
ENDIF.
ENDIF.
wa_output-vbeln = wa_vbap-vbeln.
wa_output-matnr = wa_vbap-matnr.
wa_output-kwmeng = wa_vbap-kwmeng.
READ TABLE i_lvbfa INTO wa_lvbfa WITH KEY vbelv = wa_vbap-vbeln
posnn = wa_vbap-posnr.
if sy-subrc = 0.
READ TABLE i_lips INTO wa_lips WITH KEY vbeln = wa_lvbfa-vbeln
posnr = wa_vbap-posnr
BINARY SEARCH.
IF sy-subrc = 0.
wa_output-erdat = wa_lips-erdat.
wa_output-pgage = sy-datum - wa_lips-erdat.
ENDIF.
endif.
READ TABLE i_rvbfa INTO wa_rvbfa WITH KEY vbelv = wa_vbap-vbeln.
if sy-subrc = 0.
READ TABLE i_vbrk INTO wa_vbrk WITH KEY vbeln = wa_rvbfa-vbeln
BINARY SEARCH.
IF sy-subrc = 0.
wa_output-crvbe = wa_vbrk-vbeln.
wa_output-crdat = wa_vbrk-erdat.
wa_output-crage = sy-datum - wa_vbrk-erdat.
ENDIF.
endif.
move-corresponding wa_output to i_output.
append i_output.
ENDLOOP.
ENDFORM. " GETDATA
&----
*& Form BUILD_FIELDCAT_T_OUTPUT
&----
FORM FOR DISPLAY DATA IN FIELD CATALOG
----
--> p1 text
<-- p2 text
----
FORM BUILD_FIELDCAT_T_OUTPUT .
WK_FIELDCAT-TABNAME = 'i_output'.
WK_FIELDCAT-FIELDNAME = 'FMBDAT'.
WK_FIELDCAT-SELTEXT_L = 'Application Date'.
APPEND WK_FIELDCAT TO IT_FIELDCAT.
CLEAR WK_FIELDCAT.
WK_FIELDCAT-TABNAME = 'i_output'.
WK_FIELDCAT-FIELDNAME = 'AGE'.
WK_FIELDCAT-SELTEXT_L = 'Application Date '.
APPEND WK_FIELDCAT TO IT_FIELDCAT.
CLEAR WK_FIELDCAT.
WK_FIELDCAT-TABNAME = 'i_output'.
WK_FIELDCAT-FIELDNAME = 'VBELN'.
WK_FIELDCAT-SELTEXT_L = 'RM Number'.
APPEND WK_FIELDCAT TO IT_FIELDCAT.
CLEAR WK_FIELDCAT.
WK_FIELDCAT-TABNAME = 'i_output'.
WK_FIELDCAT-FIELDNAME = 'NAME1'.
WK_FIELDCAT-SELTEXT_L = 'CUST NAME'.
APPEND WK_FIELDCAT TO IT_FIELDCAT.
CLEAR WK_FIELDCAT.
WK_FIELDCAT-TABNAME = 'i_output'.
WK_FIELDCAT-FIELDNAME = 'KUNNR'.
WK_FIELDCAT-SELTEXT_L = 'CUST NO'.
APPEND WK_FIELDCAT TO IT_FIELDCAT.
CLEAR WK_FIELDCAT.
WK_FIELDCAT-TABNAME = 'i_output'.
WK_FIELDCAT-FIELDNAME = 'MATNR'.
WK_FIELDCAT-SELTEXT_L = 'MATERIL NO.'.
APPEND WK_FIELDCAT TO IT_FIELDCAT.
CLEAR WK_FIELDCAT.
WK_FIELDCAT-TABNAME = 'i_output'.
WK_FIELDCAT-FIELDNAME = 'KWMENG'.
WK_FIELDCAT-SELTEXT_L = 'Quantity'.
APPEND WK_FIELDCAT TO IT_FIELDCAT.
CLEAR WK_FIELDCAT.
WK_FIELDCAT-TABNAME = 'i_output'.
WK_FIELDCAT-FIELDNAME = 'ERDAT '.
WK_FIELDCAT-SELTEXT_L = 'PGI Date'.
APPEND WK_FIELDCAT TO IT_FIELDCAT.
CLEAR WK_FIELDCAT.
WK_FIELDCAT-TABNAME = 'i_output'.
WK_FIELDCAT-FIELDNAME = 'ERDAT '.
WK_FIELDCAT-SELTEXT_L = 'PGI Date'.
APPEND WK_FIELDCAT TO IT_FIELDCAT.
CLEAR WK_FIELDCAT.
WK_FIELDCAT-TABNAME = 'i_output'.
WK_FIELDCAT-FIELDNAME = 'VBELN'.
WK_FIELDCAT-SELTEXT_L = 'Credit Memo No'.
APPEND WK_FIELDCAT TO IT_FIELDCAT.
CLEAR WK_FIELDCAT.
WK_FIELDCAT-TABNAME = 'i_output'.
WK_FIELDCAT-FIELDNAME = 'ERDAT '.
WK_FIELDCAT-SELTEXT_L = 'Credit Memo Date'.
APPEND WK_FIELDCAT TO IT_FIELDCAT.
CLEAR WK_FIELDCAT.
WK_FIELDCAT-TABNAME = 'i_output'.
WK_FIELDCAT-FIELDNAME = 'CRAGE '.
WK_FIELDCAT-SELTEXT_L = 'Cr Memo Date'.
APPEND WK_FIELDCAT TO IT_FIELDCAT.
CLEAR WK_FIELDCAT.
ENDFORM. " BUILD_FIELDCAT_T_OUTPUT
&----
*& Form DISPLAYDATA_IN_ALV
&----
FORM FOR DISPLAY DATA IN ALV GRID.
----
--> p1 text
<-- p2 text
----
FORM DISPLAYDATA_IN_ALV .
IF i_output[] IS NOT INITIAL.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = 'GV_REPID'
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT = IT_FIELDCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = i_output
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.
ENDIF.
ENDFORM. " DISPLAYDATA_IN_ALV
‎2007 Oct 12 8:31 AM
Hi Siddu,
When you get a dump in ALV as Field Symbol is missing, it usually a problm in the structure which you are passing. You might have not populated all teh fields which are required. Goto debug mode wherein the Fm takes you the standard code of ALV. Here you will come to know, which field of your structure is giving the problem.
Thanks
Vijay
<b>PLZ reward points if helpful</b>
‎2007 Oct 12 8:30 AM
Hi,
check the below link for sample code and try..
http://www.sapdev.co.uk/reporting/alv/alvgrid_basic.htm
reward if helpful.
Regards,
nagaraj
‎2007 Oct 12 8:31 AM
Hi Siddu,
When you get a dump in ALV as Field Symbol is missing, it usually a problm in the structure which you are passing. You might have not populated all teh fields which are required. Goto debug mode wherein the Fm takes you the standard code of ALV. Here you will come to know, which field of your structure is giving the problem.
Thanks
Vijay
<b>PLZ reward points if helpful</b>
‎2007 Oct 12 8:39 AM
Hi refer this Program simple one you canunderstand easily
&----
*& Report ZTEST_ALV_LOGO
*&
&----
*&
*&
&----
REPORT ztest_alv_logo.
TYPE-POOLS : slis.
*ALV Formatting tables /structures
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: gt_events TYPE slis_t_event.
DATA: gs_layout TYPE slis_layout_alv.
DATA: gt_page TYPE slis_t_listheader.
DATA: gs_page TYPE slis_listheader.
DATA: v_repid LIKE sy-repid.
*ALV Formatting work area
DATA: w_fieldcat TYPE slis_fieldcat_alv.
DATA: w_events TYPE slis_alv_event.
DATA: gt_bsid TYPE TABLE OF bsid WITH HEADER LINE.
INITIALIZATION.
PERFORM build_events.
PERFORM build_page_header.
START-OF-SELECTION.
*perform build_comment. "top_of_page - in initialization at present
SELECT * FROM bsid INTO TABLE gt_bsid UP TO 10 ROWS.
*perform populate_for_fm using '1' '3' 'BUKRS' '8' 'GT_BSID' 'Whee'.
*USING = Row, Column, Field name, display length, table name, heading
*OR
PERFORM build_fieldcat.
gs_layout-zebra = 'X'.
*top of page event does not work without I_callback_program
v_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = v_repid
i_structure_name = 'BSID'
i_background_id = 'ALV_BACKGROUND'
i_grid_title = 'This is the grid title'
I_GRID_SETTINGS =
is_layout = gs_layout
it_fieldcat = gt_fieldcat[]
it_events = gt_events[]
TABLES
t_outtab = gt_bsid.
************************************************************************
Form..............: populate_for_fm
Description.......: Populates fields for function module used in ALV
************************************************************************
FORM populate_for_fm USING p_row
p_col
p_fieldname
p_len
p_table
p_desc.
w_fieldcat-row_pos = p_row. "Row Position
w_fieldcat-col_pos = p_col. "Column Position
w_fieldcat-fieldname = p_fieldname. "Field name
w_fieldcat-outputlen = p_len. "Column Lenth
w_fieldcat-tabname = p_table. "Table name
w_fieldcat-reptext_ddic = p_desc. "Field Description
w_fieldcat-input = '1'.
APPEND w_fieldcat TO gt_fieldcat.
CLEAR w_fieldcat.
ENDFORM. " populate_for_fm
&----
*& Form build_events
&----
FORM build_events.
DATA: ls_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = gt_events.
READ TABLE gt_events
WITH KEY name = slis_ev_user_command
INTO ls_event.
IF sy-subrc = 0.
MOVE slis_ev_user_command TO ls_event-form.
APPEND ls_event TO gt_events.
ENDIF.
READ TABLE gt_events
WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE slis_ev_top_of_page TO ls_event-form.
APPEND ls_event TO gt_events.
ENDIF.
ENDFORM. " build_events
&----
*& Form USER_COMMAND
&----
When user command is called it uses 2 parameters. The itab
passed to the ALV is in whatever order it currently is on screen.
Therefore, you can read table itab index rs_selfield-tabindex to get
all data from the table. You can also check r_ucomm and code
accordingly.
&----
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
READ TABLE gt_bsid INDEX rs_selfield-tabindex.
error checking etc.
SET PARAMETER ID 'KUN' FIELD gt_bsid-kunnr.
CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN.
ENDFORM. "user_command
&----
*& Form top_of_page
&----
Your own company logo can go here if it has been saved (OAOR)
If the logo is larger than the size of the headings in gt_page,
the window will not show full logo and will have a scroll bar. Thus,
it is a good idea to have a standard ALV header if you are going to
use logos in your top of page.
&----
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gt_page
i_logo = 'ENJOYSAP_LOGO'.
ENDFORM. "top_of_page
&----
*& Form build_fieldcat
&----
*Many and varied fields are available here. Have a look at documentation
*for FM REUSE_ALV_LIST_DISPLAY and REUSE_ALV_FIELDCATALOG_MERGE
----
FORM build_fieldcat.
w_fieldcat-fieldname = 'BUDAT'.
w_fieldcat-seltext_m = 'Dte pst'.
w_fieldcat-ddictxt(1) = 'M'.
w_fieldcat-edit = 'x'.
Can change the position of fields if you do not want them in order
of the DDIC or itab
w_fieldcat-row_pos = '1'.
w_fieldcat-col_pos = '10'.
APPEND w_fieldcat TO gt_fieldcat.
CLEAR w_fieldcat.
ENDFORM. " build_fieldcat
&----
*& Form build_page_header
&----
gt_page is used in top of page (ALV subroutine - NOT event)
*H = Header, S = Selection, A = Action
----
FORM build_page_header.
For Headers, Key is not printed and is irrelevant. Will not cause
a syntax error, but is not used.
gs_page-typ = 'H'.
gs_page-info = 'Header 1'.
APPEND gs_page TO gt_page.
gs_page-typ = 'H'.
gs_page-info = 'Header 2'.
APPEND gs_page TO gt_page.
For Selections, the Key is printed (bold). It can be anything up to 20
bytes. It gets printed in order of code here, not by key value.
gs_page-typ = 'S'.
gs_page-key = 'And the winner is:'.
gs_page-info = 'Selection 1'.
APPEND gs_page TO gt_page.
gs_page-typ = 'S'.
gs_page-key = 'Runner up:'.
gs_page-info = 'Selection 2'.
APPEND gs_page TO gt_page.
For Action, Key is also irrelevant.
gs_page-typ = 'A'.
gs_page-info = 'Action goes here'.
APPEND gs_page TO gt_page.
ENDFORM. " build_page_header
‎2007 Oct 12 8:40 AM
While specifying the program name in ReUSE_ALV_GRID_DISPLAY do not pass the Program Name in quotes i.e. 'GV_REPID'. Directly use GV_REPID as you have already moved SY_REPID intto variable GV_REPID.
I believe that the problem could be solved. Otherwise check the structure of field catalog & output table.
‎2007 Oct 12 8:44 AM
hi siddu
in ur fieldcatlog use the same filld namea as the internal table and maintain the order then u will not get dump..
if u not clear then revert back
‎2007 Oct 12 8:47 AM
Hi,
instead of this PERFORM BUILD_FIELDCAT_T_OUTPUT. u can use
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'I_OUTPUT'
I_INCLNAME = SY-REPID
CHANGING
CT_FIELDCAT = FIELDCAT.
this will make ur code portable.
rgds,
bharat.
‎2007 Oct 12 8:49 AM
Hi,
Code is ok, but in fieldcatlog change the code as below :
FORM BUILD_FIELDCAT_T_OUTPUT .
WK_FIELDCAT-TABNAME = 'i_output'.
WK_FIELDCAT-FIELDNAME = 'FKDAT'.
WK_FIELDCAT-SELTEXT_L = 'Application Date'.Fieldname should be FKDAT not FMBDAT.
Thanks,
Sriram Ponna.
‎2007 Oct 12 8:51 AM
The values for tabname and fieldnames need to be in upper case (field catalog)