2006 Dec 20 5:13 AM
Hi Experts,
This is the diagnosis of the message.
The field catalog cannot be determined because the output table structure name was not specified.
*i am trying to display the internal table of my program in the ALV grid..pls rectify the error and also tell me how to optimize this code..
<u>code:</u>
&----
*& Report ZBHPPURORDER *
*& *
&----
*& *
*& *
&----
REPORT ZBHPPURORDER.
TYPE-POOLS : slis.
TYPES:BEGIN OF HEADER,
V_ebeln like ekko-ebeln,
V_AEDAT like ekko-aedat,
V_reswk like ekko-reswk,
V_knumv like ekko-knumv,
V_bsart like ekko-bsart,
V_lifnr like ekko-lifnr,
END OF HEADER.
TYPES:BEGIN OF ITEMS,
V_ebeln like ekpo-ebeln,
V_ebelp like ekpo-ebelp,
V_werks like ekpo-werks,
V_matnr like ekpo-matnr,
V_menge like ekpo-menge,
V_netpr like ekpo-netpr,
V_peinh like ekpo-peinh,
V_netwr like ekpo-netwr,
END OF ITEMS.
TYPES:BEGIN OF MASTER,
V_Knumv like konv-knumv,
V_Kposn like konv-kposn,
V_Kschl like konv-kschl,
V_Kwert like konv-kwert,
END OF MASTER.
TYPES:BEGIN OF VENMASTER,
V_lifnr like lfa1-lifnr,
V_name1 like lfa1-lifnr,
END OF VENMASTER.
DATA:BEGIN OF ITAB,
V_EBELN like EKKO-EBELN,
V_AEdat like ekko-AEdat,
V_knumv like ekko-knumv,
V_EBELP like EKPO-EBELP,
V_RESWK like EKKO-RESWK,
V_BSART like EKKO-BSART,
V_WERKS like EKPO-WERKS,
V_LIFNR like EKKO-LIFNR,
V_NAME1 like LFA1-NAME1,
V_MATNR like EKPO-MATNR,
V_MEINS like EKPO-MEINS,
V_MENGE like EKPO-MENGE,
V_NETPR like EKPO-NETPR,
V_PEINH like EKPO-PEINH,
V_NETWR like EKPO-NETWR,
(Condition SKTO )
V_KWERT like KONV-KWERT,
Tot like EKPO-NETWR,
END OF ITAB.
DATA: LV_AEDAT TYPE ekko-aedat,
LV_LIFNR TYPE ekKo-lifnr,
PO_HEADER TYPE STANDARD TABLE OF HEADER,
PO_HEAD_WA TYPE HEADER,
PO_ITEMS TYPE STANDARD TABLE OF ITEMS,
PO_ITEMS_WA TYPE ITEMS,
CON_MASTER TYPE STANDARD TABLE OF MASTER,
CON_MASTER_WA TYPE MASTER,
VEN_MASTER TYPE STANDARD TABLE OF VENMASTER,
VEN_MASTER_WA TYPE VENMASTER,
ALV_ITAB LIKE STANDARD TABLE OF ITAB,
ALV_WA LIKE ITAB.
data: gt_outtab type standard table of itab.
DATA: gt_fldcat TYPE slis_t_fieldcat_alv.
data:g_repid type sy-repid.
SELECT-OPTIONS: s_aedat FOR LV_AEDAT,
s_lifnr FOR LV_LIFNR OBLIGATORY.
AT SELECTION-SCREEN ON S_LIFNR.
SELECT SINGLE LIFNR FROM LFA1 INTO LV_LIFNR WHERE LIFNR IN S_LIFNR.
IF SY-SUBRC NE 0.
MESSAGE E000(ZBHPMSG) WITH S_LIFNR.
ENDIF.
START-OF-SELECTION.
SELECT ebeln
AEDAT
reswk
knumv
bsart
lifnr FROM EKKO INTO TABLE PO_HEADER
WHERE aedat IN s_aedat and lifnr IN s_lifnr.
SELECT ebeln
ebelp
werks
matnr
menge
netpr
peinh
netwr FROM EKPO INTO TABLE PO_ITEMS
FOR ALL ENTRIES IN PO_HEADER WHERE EBELN EQ PO_HEADER-V_EBELN.
SELECT Knumv
Kposn
Kschl
Kwert FROM KONV INTO TABLE CON_MASTER FOR ALL ENTRIES IN
PO_HEADER WHERE KNUMV EQ PO_HEADER-V_KNUMV AND
Kschl = 'SKTO'.
SELECT LIFNR NAME1 FROM LFA1 INTO TABLE VEN_MASTER FOR ALL ENTRIES IN
PO_HEADER WHERE LIFNR EQ PO_HEADER-V_LIFNR.
LOOP AT PO_HEADER INTO PO_HEAD_WA.
MOVE PO_HEAD_WA-V_EBELN TO ALV_WA-V_EBELN.
ALV_WA-V_RESWK = PO_HEAD_WA-V_RESWK.
ALV_WA-V_BSART = PO_HEAD_WA-V_BSART.
ALV_WA-V_LIFNR = PO_HEAD_WA-V_LIFNR.
APPEND ALV_WA TO ALV_ITAB.
ENDLOOP.
LOOP AT PO_ITEMS INTO PO_ITEMS_WA.
loop at con_master into con_master_wa.
PO_ITEMS_WA-V_NETWR = ( PO_ITEMS_WA-V_NETPR / PO_ITEMS_WA-V_PEINH ) *
PO_ITEMS_WA-V_MENGE.
ALV_WA-TOT = PO_ITEMS_WA-V_NETWR + CON_MASTER_WA-V_KWERT.
ALV_WA-V_EBELP = PO_ITEMS_WA-V_EBELP.
ALV_WA-V_WERKS = PO_ITEMS_WA-V_WERKS.
ALV_WA-V_MATNR = PO_ITEMS_WA-V_MATNR.
*ALV_WA-V_MEINS = PO_ITEMS_WA-V_MEINS.
ALV_WA-V_MENGE = PO_ITEMS_WA-V_MENGE.
ALV_WA-V_NETPR = PO_ITEMS_WA-V_NETPR.
ALV_WA-V_PEINH = PO_ITEMS_WA-V_PEINH.
ALV_WA-V_NETWR = PO_ITEMS_WA-V_NETWR.
APPEND ALV_WA TO ALV_ITAB.
ENDLOOP.
ENDLOOP.
end-of-selection.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = g_repid
I_INTERNAL_TABNAME = 'ITAB'
if i use I_STRUCTURE_NAME, I DONT GET THE ERROR BUT I SIMPLY GET A GRID WITH COLUMNS KEY AND FUNCTIONAL PART..
I_STRUCTURE_NAME = 'ITAB'
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = g_repid
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = gt_fldcat
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = g_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 = 'alv_itab'
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT = gt_fldcat
TABLES
t_outtab = ALV_ITAB
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.
Thanks in Advance..
2006 Dec 20 5:35 AM
Hi,
The field <b>g_repid</b> doesnot caontain the program name. Check in Debug mode .
Declare like this
Data : g_repid type sy-repid value 'Program name'.
Then ur code will work.
Regards,
Balavardhan.K
Hi Experts,
This is the diagnosis of the message.
The field catalog cannot be determined because the output table structure name was not specified.
*i am trying to display the internal table of my program in the ALV grid..pls rectify the error and also tell me how to optimize this code..
<u>code:</u>
&----
*& Report ZBHPPURORDER *
*& *
&----
*& *
*& *
&----
REPORT ZBHPPURORDER.
TYPE-POOLS : slis.
TYPES:BEGIN OF HEADER,
V_ebeln like ekko-ebeln,
V_AEDAT like ekko-aedat,
V_reswk like ekko-reswk,
V_knumv like ekko-knumv,
V_bsart like ekko-bsart,
V_lifnr like ekko-lifnr,
END OF HEADER.
TYPES:BEGIN OF ITEMS,
V_ebeln like ekpo-ebeln,
V_ebelp like ekpo-ebelp,
V_werks like ekpo-werks,
V_matnr like ekpo-matnr,
V_menge like ekpo-menge,
V_netpr like ekpo-netpr,
V_peinh like ekpo-peinh,
V_netwr like ekpo-netwr,
END OF ITEMS.
TYPES:BEGIN OF MASTER,
V_Knumv like konv-knumv,
V_Kposn like konv-kposn,
V_Kschl like konv-kschl,
V_Kwert like konv-kwert,
END OF MASTER.
TYPES:BEGIN OF VENMASTER,
V_lifnr like lfa1-lifnr,
V_name1 like lfa1-lifnr,
END OF VENMASTER.
DATA:BEGIN OF ITAB,
V_EBELN like EKKO-EBELN,
V_AEdat like ekko-AEdat,
V_knumv like ekko-knumv,
V_EBELP like EKPO-EBELP,
V_RESWK like EKKO-RESWK,
V_BSART like EKKO-BSART,
V_WERKS like EKPO-WERKS,
V_LIFNR like EKKO-LIFNR,
V_NAME1 like LFA1-NAME1,
V_MATNR like EKPO-MATNR,
V_MEINS like EKPO-MEINS,
V_MENGE like EKPO-MENGE,
V_NETPR like EKPO-NETPR,
V_PEINH like EKPO-PEINH,
V_NETWR like EKPO-NETWR,
(Condition SKTO )
V_KWERT like KONV-KWERT,
Tot like EKPO-NETWR,
END OF ITAB.
DATA: LV_AEDAT TYPE ekko-aedat,
LV_LIFNR TYPE ekKo-lifnr,
PO_HEADER TYPE STANDARD TABLE OF HEADER,
PO_HEAD_WA TYPE HEADER,
PO_ITEMS TYPE STANDARD TABLE OF ITEMS,
PO_ITEMS_WA TYPE ITEMS,
CON_MASTER TYPE STANDARD TABLE OF MASTER,
CON_MASTER_WA TYPE MASTER,
VEN_MASTER TYPE STANDARD TABLE OF VENMASTER,
VEN_MASTER_WA TYPE VENMASTER,
ALV_ITAB LIKE STANDARD TABLE OF ITAB,
ALV_WA LIKE ITAB.
data: gt_outtab type standard table of itab.
DATA: gt_fldcat TYPE slis_t_fieldcat_alv.
data:g_repid type sy-repid.
SELECT-OPTIONS: s_aedat FOR LV_AEDAT,
s_lifnr FOR LV_LIFNR OBLIGATORY.
AT SELECTION-SCREEN ON S_LIFNR.
SELECT SINGLE LIFNR FROM LFA1 INTO LV_LIFNR WHERE LIFNR IN S_LIFNR.
IF SY-SUBRC NE 0.
MESSAGE E000(ZBHPMSG) WITH S_LIFNR.
ENDIF.
START-OF-SELECTION.
SELECT ebeln
AEDAT
reswk
knumv
bsart
lifnr FROM EKKO INTO TABLE PO_HEADER
WHERE aedat IN s_aedat and lifnr IN s_lifnr.
SELECT ebeln
ebelp
werks
matnr
menge
netpr
peinh
netwr FROM EKPO INTO TABLE PO_ITEMS
FOR ALL ENTRIES IN PO_HEADER WHERE EBELN EQ PO_HEADER-V_EBELN.
SELECT Knumv
Kposn
Kschl
Kwert FROM KONV INTO TABLE CON_MASTER FOR ALL ENTRIES IN
PO_HEADER WHERE KNUMV EQ PO_HEADER-V_KNUMV AND
Kschl = 'SKTO'.
SELECT LIFNR NAME1 FROM LFA1 INTO TABLE VEN_MASTER FOR ALL ENTRIES IN
PO_HEADER WHERE LIFNR EQ PO_HEADER-V_LIFNR.
LOOP AT PO_HEADER INTO PO_HEAD_WA.
MOVE PO_HEAD_WA-V_EBELN TO ALV_WA-V_EBELN.
ALV_WA-V_RESWK = PO_HEAD_WA-V_RESWK.
ALV_WA-V_BSART = PO_HEAD_WA-V_BSART.
ALV_WA-V_LIFNR = PO_HEAD_WA-V_LIFNR.
APPEND ALV_WA TO ALV_ITAB.
ENDLOOP.
LOOP AT PO_ITEMS INTO PO_ITEMS_WA.
loop at con_master into con_master_wa.
PO_ITEMS_WA-V_NETWR = ( PO_ITEMS_WA-V_NETPR / PO_ITEMS_WA-V_PEINH ) *
PO_ITEMS_WA-V_MENGE.
ALV_WA-TOT = PO_ITEMS_WA-V_NETWR + CON_MASTER_WA-V_KWERT.
ALV_WA-V_EBELP = PO_ITEMS_WA-V_EBELP.
ALV_WA-V_WERKS = PO_ITEMS_WA-V_WERKS.
ALV_WA-V_MATNR = PO_ITEMS_WA-V_MATNR.
*ALV_WA-V_MEINS = PO_ITEMS_WA-V_MEINS.
ALV_WA-V_MENGE = PO_ITEMS_WA-V_MENGE.
ALV_WA-V_NETPR = PO_ITEMS_WA-V_NETPR.
ALV_WA-V_PEINH = PO_ITEMS_WA-V_PEINH.
ALV_WA-V_NETWR = PO_ITEMS_WA-V_NETWR.
APPEND ALV_WA TO ALV_ITAB.
ENDLOOP.
ENDLOOP.
end-of-selection.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = g_repid
I_INTERNAL_TABNAME = 'ITAB'
if i use I_STRUCTURE_NAME, I DONT GET THE ERROR BUT I SIMPLY GET A GRID WITH COLUMNS KEY AND FUNCTIONAL PART..
I_STRUCTURE_NAME = 'ITAB'
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = g_repid
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = gt_fldcat
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = g_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 = 'alv_itab'
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT = gt_fldcat
TABLES
t_outtab = ALV_ITAB
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.
Thanks in Advance..
2006 Dec 20 5:21 AM
put like this
IT_FIELDCAT = gt_fldcat[]., where is urFLDCAT?
u have maintain like this .
<b>fcat1-fieldname = 'WERKS'.
fcat1-key = 'X'.
fcat1-outputlen = '4'.
fcat1-just = 'C'.
fcat1-seltext_m = 'PLANT'.
fcat1-ddictxt = 'M'.
fcat1-inttype = 'C'.
fcat1-datatype = 'CHAR'.
append fcat1.
clear fcat1.</b>
Regards
Prabhu
2006 Dec 20 5:28 AM
Assign a value to g_repid before calling REUSE_ALV_FIELDCATALOG_MERGE.
Use
g_repid = sy-repid.
Hope this helps.
Regards,
Manoj
2006 Dec 20 5:35 AM
Hi,
The field <b>g_repid</b> doesnot caontain the program name. Check in Debug mode .
Declare like this
Data : g_repid type sy-repid value 'Program name'.
Then ur code will work.
Regards,
Balavardhan.K
2006 Dec 20 5:41 AM
here is your Field catalog.
Build fieldcat something like this.
i_repid = sy-repid.
PERFORM fr_build_catalog.
PERFORM fr_grid_dispaly.
&----
*& Form to build field catalog
&----
--
FORM fr_build_catalog .
lw_fieldcat-col_pos = 1.
lw_fieldcat-fieldname = 'BELNR'.
lw_fieldcat-tabname = 'LT_FINAL'.
lw_fieldcat-seltext_l = text-001.
APPEND lw_fieldcat TO lt_fieldcat.
lw_fieldcat-col_pos = 2.
lw_fieldcat-fieldname = 'BUKRS'.
lw_fieldcat-tabname = 'LT_FINAL'.
lw_fieldcat-seltext_l = text-002.
APPEND lw_fieldcat TO lt_fieldcat.
;
.
.
ENDFORM. " fr_build_catalog
&----
*& Form fr_list_dispaly
&----
Report display according to user request.
----
FORM fr_list_dispaly.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = i_repid
i_callback_top_of_page = 'TOP_OF_PAGE'
it_sort = gt_sort
is_layout = gs_layout
it_fieldcat = lt_fieldcat[]
i_default = 'X'
i_save = 'X'
IS_VARIANT = gs_variant
TABLES
t_outtab = lt_final
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. " fr_list_dispaly
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |