Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 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