0% found this document useful (0 votes)
59 views

Dynamic Fieldcatlog: No Standard Message Id Type

This document describes an ABAP report that generates a dynamic field catalog and displays sales data for customers grouped by division. It selects division data from the KNVV table, builds the dynamic field catalog, selects sales document data from VBRK and VBRP tables, calculates totals, and displays the output in an ALV grid. Field symbols and internal tables are used to build rows of data that are displayed.

Uploaded by

Sreedhar Konduru
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
59 views

Dynamic Fieldcatlog: No Standard Message Id Type

This document describes an ABAP report that generates a dynamic field catalog and displays sales data for customers grouped by division. It selects division data from the KNVV table, builds the dynamic field catalog, selects sales document data from VBRK and VBRP tables, calculates totals, and displays the output in an ALV grid. Field symbols and internal tables are used to build rows of data that are displayed.

Uploaded by

Sreedhar Konduru
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 11

Dynamic Fieldcatlog

*&---------------------------------------------------------------------* *& Report ZCUSTOMER_DIVISIONS *&---------------------------------------------------------------------* *& Report : ZCUSTOMER_DIVISIONS *& Purpose : The Purpose of this report is , user can get the report *& to see the values of overall net sales. The user wants to see *& the values what is received on account of the transaction. *& Date : 17-11-2011 *& RequestID : *& Developed By : ABAPER *&---------------------------------------------------------------------* REPORT ZCUSTOMER_DIVISIONS no standard page heading message-id zsd . TYPE-POOLS : SLIS. *----------------------------------------------------------------------* * Table Declarations *----------------------------------------------------------------------* TABLES:VBRK,KNVV. *----------------------------------------------------------------------* * Types Declarations *----------------------------------------------------------------------* types : begin of ty_knvv, spart type spart, " Division KUNNR TYPE KUNNR, "CUSTOMER VKGRP TYPE VKGRP, VKBUR TYPE VKBUR, erdat type erdat, end of ty_knvv. TYPES : BEGIN OF TY_VBRK, VBELN TYPE VBELN, KUNAG TYPE KUNAG, SPART TYPE SPART, vbtyp type vbtyp, END OF TY_VBRK. types : begin of ty_vbrp, vbeln type vbeln, fkimg type fkimg, netwr type netwr, end of ty_vbrp. *----------------------------------------------------------------------* * Internal table Declarations *----------------------------------------------------------------------* data : lt_knvv type table of ty_knvv,

lt_vbrk type TABLE OF ty_vbrk, lt_vbrk1 type TABLE OF ty_vbrk, lt_vbrp TYPE TABLE OF ty_vbrp, Lt_vbrp1 TYPE TABLE OF ty_vbrp, LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, lt_fieldcat_dyn type lvc_t_fcat. *----------------------------------------------------------------------* * Work area Declarations *----------------------------------------------------------------------* data : wa_knvv type ty_knvv, wa_vbrk type ty_vbrk, wa_vbrk1 type ty_vbrk, wa_vbrp type ty_vbrp, wa_vbrp1 type ty_vbrp, WA_FIELDCAT TYPE slis_fieldcat_alv, wa_fieldcat_dyn type LVC_S_FCAT. *----------------------------------------------------------------------* * Data Declarations *----------------------------------------------------------------------* data : lt_final type ref to data, wa_final type ref to data. DATA : L_FKIMG TYPE VBRP-FKIMG, L_FKIMG1 TYPE VBRP-FKIMG, L_NETWR TYPE VBRP-NETWR, L_NETWR1 TYPE VBRP-NETWR. *---------------------------------------------------------------------* * Field Symbols Declaration *---------------------------------------------------------------------* FIELD-SYMBOLS: <lt_final> TYPE STANDARD TABLE, <wa_final> TYPE ANY , <FIELD> type any. **data : wa1 like line of <lt_final>. *----------------------------------------------------------------------* * Selelction-screen *----------------------------------------------------------------------* SELECT-OPTIONS : KUNAG for VBRK-KUNAG obligatory, FKDAT for VBRK-FKDAT obligatory, VKGRP for KNVV-VKGRP, VKBUR for KNVV-VKBUR. DATA L_TOT TYPE VBRP-FKIMG. DATA L_PER TYPE VBRP-FKIMG. *TYPES : BEGIN OF TY_KNVV * Start of selection start-of-selection. * Fetching Division data from table Customer Master Sales Data(KNVV) into LT_

KNVV select spart kunnr vkgrp VKBUR erdat into table lt_knvv from knvv WHERE kunnr in KUNAG and VKGRP in VKGRP and VKBUR in VKBUR. if lt_knvv is not initial. perform buiild_dynamic_fieldcat. CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE EXPORTING IT_FIELDCATALOG = lt_fieldcat_dyn IMPORTING EP_TABLE = lt_final. ASSIGN lt_final->* TO <lt_final>. CREATE DATA wa_final LIKE LINE OF <lt_final>. ASSIGN Wa_final->* TO <Wa_final>. PERFORM BUILD_FIELDCAT. PERFORM GET_DATA. perform display_output. else. MESSAGE S000(ZSD) WITH text-001. endif. *&---------------------------------------------------------------------* *& Form BUIILD_DYNAMIC_FIELDCAT *&---------------------------------------------------------------------* FORM BUIILD_DYNAMIC_FIELDCAT . refresh : lt_fieldcat_dyn. clear : wa_fieldcat_dyn. data : l_row type i, l_col type i. l_row = l_row + 1. l_col = l_col + 1. wa_fieldcat_dyn-ROW_POS = l_row. wa_fieldcat_dyn-col_POS = l_col. wa_fieldcat_dyn-FIELDNAME = 'VKBUR'. wa_fieldcat_dyn-SELTEXT = 'Sales Office'. append wa_fieldcat_dyn to lt_fieldcat_dyn. clear : wa_fieldcat_dyn. L_COL = L_COL + 1. wa_fieldcat_dyn-ROW_POS = l_row . wa_fieldcat_dyn-col_POS = l_COL. wa_fieldcat_dyn-FIELDNAME = 'VKGRP'. wa_fieldcat_dyn-SELTEXT = 'Sales Group'. append wa_fieldcat_dyn to lt_fieldcat_dyn.

clear : wa_fieldcat_dyn. L_COL = L_COL + 1. wa_fieldcat_dyn-ROW_POS = l_row . wa_fieldcat_dyn-col_POS = l_col. wa_fieldcat_dyn-FIELDNAME = 'KUNAG'. wa_fieldcat_dyn-SELTEXT = 'Customer Code'. append wa_fieldcat_dyn to lt_fieldcat_dyn. clear : wa_fieldcat_dyn. L_COL = L_COL + 1. wa_fieldcat_dyn-ROW_POS = l_row . wa_fieldcat_dyn-col_POS = l_col. wa_fieldcat_dyn-FIELDNAME = 'ERDAT'. wa_fieldcat_dyn-SELTEXT = 'Period'. append wa_fieldcat_dyn to lt_fieldcat_dyn. loop at lt_knvv into wa_knvv. data : l_division type spart, l_text type char50, l_VAL TYPE C. clear : l_text,l_DIVISION. L_DIVISION = WA_KNVV-SPART. l_text = 'GROSSALQTY'. L_VAL = L_VAL + 1. CONCATENATE L_VAL l_division l_text into l_text. clear : wa_fieldcat_dyn. L_COL = L_COL + 1. wa_fieldcat_dyn-ROW_POS = l_ROW . wa_fieldcat_dyn-col_POS = l_col . wa_fieldcat_dyn-FIELDNAME = L_text. wa_fieldcat_dyn-SELTEXT = 'Gross Sales Qty'. append wa_fieldcat_dyn to lt_fieldcat_dyn. clear : wa_fieldcat_dyn. clear : l_text. l_text = 'SALESRETQTY'. CONCATENATE L_VAL l_division l_text into l_text. L_COL = L_COL + 1. wa_fieldcat_dyn-ROW_POS = l_row . wa_fieldcat_dyn-col_POS = l_col . wa_fieldcat_dyn-FIELDNAME = l_text. wa_fieldcat_dyn-SELTEXT = 'Sales Return Qty.'. append wa_fieldcat_dyn to lt_fieldcat_dyn. clear : wa_fieldcat_dyn. clear : l_text. l_text = 'NETSALESQTY'. CONCATENATE L_VAL l_division l_text into l_text. L_COL = L_COL + 1. wa_fieldcat_dyn-ROW_POS = l_row . wa_fieldcat_dyn-col_POS = l_col . wa_fieldcat_dyn-FIELDNAME = l_text. wa_fieldcat_dyn-SELTEXT = 'Net Sale Qty'.

append wa_fieldcat_dyn to lt_fieldcat_dyn. clear : wa_fieldcat_dyn. clear : l_text. l_text = 'GPERSRN'. CONCATENATE L_VAL l_division l_text into l_text. L_COL = L_COL + 1. wa_fieldcat_dyn-ROW_POS = l_row . wa_fieldcat_dyn-col_POS = l_col . wa_fieldcat_dyn-FIELDNAME = L_TEXT. wa_fieldcat_dyn-SELTEXT = '% of SRN'. append wa_fieldcat_dyn to lt_fieldcat_dyn. clear : wa_fieldcat_dyn. clear : l_text. l_text = 'GROSSSALVAL'. CONCATENATE L_VAL l_division l_text into l_text. L_COL = L_COL + 1. wa_fieldcat_dyn-ROW_POS = l_row . wa_fieldcat_dyn-col_POS = l_col. wa_fieldcat_dyn-FIELDNAME = L_TEXT. wa_fieldcat_dyn-SELTEXT = 'Gross Sales Value'. append wa_fieldcat_dyn to lt_fieldcat_dyn. clear : wa_fieldcat_dyn. clear : l_text. l_text = 'SALESRETVAL'. CONCATENATE L_VAL l_division l_text into l_text. L_COL = L_COL + 1. wa_fieldcat_dyn-ROW_POS = l_row . wa_fieldcat_dyn-col_POS = l_col . wa_fieldcat_dyn-FIELDNAME = L_TEXT. wa_fieldcat_dyn-SELTEXT = 'Sales Return Value'. append wa_fieldcat_dyn to lt_fieldcat_dyn. clear : wa_fieldcat_dyn. clear : l_text. l_text = 'NETSALESVAL'. CONCATENATE L_VAL l_division l_text into l_text. L_COL = L_COL + 1. wa_fieldcat_dyn-ROW_POS = l_row . wa_fieldcat_dyn-col_POS = l_col . wa_fieldcat_dyn-FIELDNAME = l_text. wa_fieldcat_dyn-SELTEXT = 'Net Sale Value'. append wa_fieldcat_dyn to lt_fieldcat_dyn. clear : wa_fieldcat_dyn. clear : l_text. l_text = 'NPERSRN'. CONCATENATE L_VAL l_division l_text into l_text. L_COL = L_COL + 1. wa_fieldcat_dyn-ROW_POS = l_row .

wa_fieldcat_dyn-col_POS = l_col . wa_fieldcat_dyn-FIELDNAME = L_TEXT. wa_fieldcat_dyn-SELTEXT = '% of SRN'. append wa_fieldcat_dyn to lt_fieldcat_dyn. CLEAR : WA_KNVV. endloop. ENDFORM. " BUIILD_DYNAMIC_FIELDCAT *&---------------------------------------------------------------------* *& Form GET_DATA *&---------------------------------------------------------------------* FORM GET_DATA . * LOOP AT LT_KNVV INTO WA_KNVV. LOOP AT LT_FIELDCAT INTO WA_FIELDCAT. ASSIGN COMPONENT 'VKBUR' OF STRUCTURE <WA_FINAL> TO <FIELD>. MOVE: wa_knvv-vkbur TO <FIELD>. ASSIGN COMPONENT 'VKGRP' OF STRUCTURE <WA_FINAL> TO <FIELD>. MOVE: wa_knvv-vkGRP TO <FIELD>. select VBELN kunag into table lt_vbrk from vbrk FOR ALL ENTRIES IN lt_knvv where kunag = lt_knvv-kunnr and spart = lt_knvv-spart AND VBTYP = 'M'. SELECT vbeln fkimg netwr INTO TABLE LT_VBRP FROM VBRP FOR ALL ENTRIES IN LT_VBRK WHERE VBELN = LT_VBRK-VBELN. LOOP AT LT_VBRP INTO WA_VBRP. L_FKIMG = L_FKIMG + WA_VBRP-FKIMG. L_NETWR = L_NETWR + WA_VBRP-NETWR. CLEAR wa_vbrp. ENDLOOP. select VBELN kunag into table lt_vbrk1 from vbrk FOR ALL ENTRIES IN lt_knvv where kunag = lt_knvv-kunnr and spart = lt_knvv-spart AND VBTYP = 'O'.

SELECT vbeln fkimg netwr INTO TABLE LT_VBRP1 FROM VBRP FOR ALL ENTRIES IN LT_VBRK1 WHE RE VBELN = LT_VBRK1-VBELN. LOOP AT LT_VBRP1 INTO WA_VBRP1. L_FKIMG1 = L_FKIMG1 + WA_VBRP1-FKIMG. L_NETWR1 = L_NETWR1 + WA_VBRP1-NETWR. CLEAR wa_vbrp1. ENDLOOP. L_TOT = L_FKIMG - L_FKIMG1. L_PER = ( L_FKIMG + L_FKIMG1 ) / 100. select vbeln fkimg netwr from vbrp into table lt_vbrp FOR ALL ENTRIES IN lt_vbrk where vbeln = lt_vbrk-vbeln.

* * * * * *

* SELECT SINGLE FKIMG * INTO L_FKIMG * FROM VBRP * WHERE VBELN = LT_VBRK-VBELN. * ENDSELECT. * select VBELN * VBTYP * into table lt_vbrk1 * from vbrk FOR ALL ENTRIES IN lt_knvv * where kunag = lt_knvv-kunnr * and spart = lt_knvv-spart * and vbtyp = 'O'. * l_col = l_col + 1. ASSIGN COMPONENT 'KUNAG' OF STRUCTURE <WA_FINAL> TO <FIELD>. MOVE: wa_KNVV-KUNNR TO <FIELD>. clear WA_FIELDCAT. ASSIGN COMPONENT 'ERDAT' OF STRUCTURE <WA_FINAL> TO <FIELD>. MOVE: wa_KNVV-ERDAT TO <FIELD>. ASSIGN COMPONENT '130GROSSALQTY' OF STRUCTURE <WA_FINAL> TO <FIELD>. MOVE: L_FKIMG TO <FIELD>. ASSIGN COMPONENT '130SALESRETQTY' OF STRUCTURE <WA_FINAL> TO <FIELD>. MOVE: L_FKIMG1 TO <FIELD>. ASSIGN COMPONENT '130NETSALESQTY' OF STRUCTURE <WA_FINAL> TO <FIELD>. MOVE: L_TOT TO <FIELD>.

ASSIGN COMPONENT '130GPERSRN' OF STRUCTURE <WA_FINAL> TO <FIELD>. MOVE: L_PER TO <FIELD>. append <wa_final> l_col = l_col + <wa_final>-vkbur <WA_FINAL>-VKBUR to <lt_final>. 1. = 'ss'. = WA_KNVV-VKBUR.

* * * * * * * * * * * * * *

select VBELN VBTYP into table lt_vbrk1 from vbrk FOR ALL ENTRIES IN lt_knvv where kunag = lt_knvv-kunnr and spart = lt_knvv-spart and vbtyp = 'O' AND VBTYP = 'M'. LOOP AT LT_VBRK1 INTO wa_vbrk WHERE VBTYP = 'M'. ENDLOOP. ENDLOOP. select VBELN KUNAG SPART vbtyp into table lt_vbrk from vbrk FOR ALL ENTRIES IN lt_knvv where kunag = lt_knvv-kunnr and spart = lt_knvv-spart and vbtyp = 'M'.

* * * * * * * * * * * * select vbeln * fkimg * netwr * from vbrp * into table lt_vbrp FOR ALL ENTRIES IN lt_vbrk * where vbeln = lt_vbrk-vbeln. * * select vbeln * fkimg * netwr * from vbrp * into table lt_vbrp1 FOR ALL ENTRIES IN lt_vbrk1 * where vbeln = lt_vbrk1-vbeln. * * append <WA_FINAL> to <lt_final>. ENDFORM. " GET_DATA *&---------------------------------------------------------------------*

*& Form BUILD_FIELDCAT *&---------------------------------------------------------------------* FORM BUILD_FIELDCAT . data : l_row type i, l_col type i. l_row = l_row + 1. l_col = l_col + 1. LOOP AT lt_fieldcat_dyn WA_FIELDCAT-row_pos = WA_FIELDCAT-col_pos = WA_FIELDCAT-fieldname INTO WA_fieldcat_dyn. l_ROW. L_COL. = WA_fieldcat_dyn-FIELDNAME.

IF WA_FIELDCAT_DYN-FIELDNAME CS 'SALESRETVAL'. WA_FIELDCAT-seltext_l = 'Sales Ret Val'. ELSEIF WA_FIELDCAT_DYN-FIELDNAME CS 'SALESRETQTY'. WA_FIELDCAT-seltext_l = 'Sales Ret Qty'. ELSEIF WA_FIELDCAT_DYN-FIELDNAME CS 'GROSSALQTY'. WA_FIELDCAT-seltext_l = 'Gross Sal Qty'. ELSEIF WA_FIELDCAT_DYN-FIELDNAME CS 'SALESRETQTY'. WA_FIELDCAT-seltext_l = 'Sales Ret Qty'. ELSEIF WA_FIELDCAT_DYN-FIELDNAME CS 'GROSSSALVAL'. WA_FIELDCAT-seltext_l = 'Gross Sales Val'. ELSEIF WA_FIELDCAT_DYN-FIELDNAME CS 'NETSALESVAL'. WA_FIELDCAT-seltext_l = 'Net Sales Val'. ELSEIF WA_FIELDCAT_DYN-FIELDNAME CS 'NETSALESQTY'. WA_FIELDCAT-seltext_l = 'Net Sales Qty'. ELSEIF WA_FIELDCAT_DYN-FIELDNAME CS 'PERSRN'. WA_FIELDCAT-seltext_l = '% of SRN'. ELSEIF WA_FIELDCAT_DYN-FIELDNAME CS 'VKBUR'. WA_FIELDCAT-seltext_l = 'Sales Office'. ELSEIF WA_FIELDCAT_DYN-FIELDNAME CS 'VKGRP'. WA_FIELDCAT-seltext_l = 'Sales Group'. ELSEIF WA_FIELDCAT_DYN-FIELDNAME CS 'KUNAG'. WA_FIELDCAT-seltext_l = 'Customer '. ELSEIF WA_FIELDCAT_DYN-FIELDNAME CS 'ERDAT'. WA_FIELDCAT-seltext_l = 'Period'. ENDIF. APPEND WA_FIELDCAT TO LT_FIELDCAT. CLEAR : WA_FIELDCAT,WA_FIELDCAT_DYN. L_COL = L_COL + 1.

ENDLOOP. ENDFORM. " BUILD_FIELDCAT *&---------------------------------------------------------------------*

*& Form DISPLAY_OUTPUT *&---------------------------------------------------------------------* FORM DISPLAY_OUTPUT . if <lt_final> is not INITIAL. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = sy-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 = lt_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 = <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.

endif. ENDFORM.

" DISPLAY_OUTPUT

You might also like