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
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