‎2007 Nov 01 3:42 AM
currently developing Vendor Ordered Report.plz help me regarding this.this is for the number of orders placed during a given period.plz tell me that how to do this.
‎2007 Nov 01 3:50 AM
Hi,
Try this ..
PARAMETERS: P_AEDAT TYPE EKKO-aedat OBLIGATORY.
DATA: ITAB TYPE STANDARD TABLE OF EKKO.
DATA: WA TYPE EKKO.
START-OF-SELECTION.
SELECT * FROM EKKO INTO TABLE ITAB WHERE AEDAT = P_AEDAT.
IF SY-SUBRC <> 0.
MESSAGE E208(00) WITH 'NO data found'.
LEAVE LIST-PROCESSING.
ENDIF.
* Display the data.
LOOP AT ITAB INTO WA.
WRITE: / EKKO-EBELN, EKKO-AEDAT, EKKO-LIFNR.
ENDLOOP.
Thanks
Naren
‎2007 Nov 01 4:03 AM
Hi,
SAP standard report RFKOPR10 is the program for vendor ageing report.
Following program is the VENDOR performance report.
REPORT ZFI.
TABLES : bsik, BAPIFVDEXP_VZZBEPP.
DATA : t_bsik LIKE bsik OCCURS 0 WITH HEADER LINE,
t_bsak LIKE bsak OCCURS 0 WITH HEADER LINE,
days like BAPIFVDEXP_VZZBEPP-NUM4.
DATA : BEGIN OF t_lfa1 OCCURS 0,
lifnr LIKE lfa1-lifnr,
name1 LIKE lfa1-name1,
adrnr LIKE lfa1-adrnr,
END OF t_lfa1.
DATA : BEGIN OF t_adrc OCCURS 0,
adrnr LIKE lfa1-adrnr,
street LIKE adrc-street,
city1 LIKE adrc-city1,
END OF t_adrc.
DATA : BEGIN OF t_BSEG OCCURS 0,
zfbdt LIKE BSEG-zfbdt,
KOART LIKE BSEG-KOART,
KOSTL LIKE BSEG-KOSTL,
PROJK LIKE BSEG-PROJK,
END OF t_BSEG.
DATA : BEGIN OF t_prps OCCURS 0,
POSID like prps-posid,
OBJNR like prps-objnr,
END OF t_prps.
DATA : T_KOSTL LIKE BSEG-KOSTL,
T_PROJK LIKE BSEG-PROJK,
TEXT(15).
DATA : BEGIN OF t_output OCCURS 0,
lifnr LIKE lfa1-lifnr,
name1 LIKE lfa1-name1,
street LIKE adrc-street,
city1 LIKE adrc-city1,
OBJNR LIKE prps-OBJNR,
posid LIKE prps-posid,
KOSTL LIKE BSIK-KOSTL, " COST CENTER
UMSKZ like bsik-UMSKZ,
belnr like bsik-belnr,
bukrs like bsik-bukrs,
gjahr like bsik-gjahr,
wrbtr like bsik-wrbtr,
dmbtr like bsik-wrbtr,
hkont like bsik-hkont,
dif1 like bsik-wrbtr,
dif2 like bsik-wrbtr,
dif3 like bsik-wrbtr,
dif4 like bsik-wrbtr,
dif5 like bsik-wrbtr,
days like BAPIFVDEXP_VZZBEPP-NUM4,
END OF t_output.
Alv data declaration
TYPE-POOLS : slis.
DATA :alv_fieldcat TYPE slis_t_fieldcat_alv,
alv_fieldcat_line LIKE LINE OF alv_fieldcat,
alv_sort TYPE slis_t_sortinfo_alv,
alv_sort_line LIKE LINE OF alv_sort,
alv_layout TYPE slis_layout_alv,
g_repid LIKE sy-repid VALUE sy-repid,
alv_status_set TYPE slis_formname VALUE 'ALV_STATUS_SET',
alv_user_comm TYPE slis_formname VALUE 'ALV_USER_COMM',
grid_title TYPE lvc_title,
alv_fieldcat_acty TYPE slis_t_fieldcat_alv,
g_save,
gs_variant LIKE disvariant,
g_exit_caused_by_caller TYPE c,
gs_exit_caused_by_user TYPE slis_exit_by_user.
DATA: alv_fieldcat_line_acty LIKE LINE OF alv_fieldcat_acty,
alv_layout_acty TYPE slis_layout_alv,
gt_list_top_of_page TYPE slis_t_listheader,
gt_events TYPE slis_t_event,
message TYPE string,
r_ucomm LIKE sy-ucomm,
rs_selfield TYPE slis_selfield.
CONSTANTS:
gc_formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_bukrs FOR bsik-bukrs,
s_gjahr FOR bsik-gjahr,
s_lifnr FOR bsik-lifnr,
s_umskz FOR bsik-umskz.
parameters : p_augdt like bsik-augdt OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
SELECT-OPTIONS : s_date1 FOR BAPIFVDEXP_VZZBEPP-NUM4 NO-EXTENSION OBLIGATORY
DEFAULT 1 TO 30,
s_date2 FOR BAPIFVDEXP_VZZBEPP-NUM4 NO-EXTENSION OBLIGATORY
DEFAULT 30 TO 60,
s_date3 FOR BAPIFVDEXP_VZZBEPP-NUM4 NO-EXTENSION OBLIGATORY
DEFAULT 60 TO 90,
s_date4 FOR BAPIFVDEXP_VZZBEPP-NUM4 NO-EXTENSION OBLIGATORY
DEFAULT 90 TO 120,
s_date5 FOR BAPIFVDEXP_VZZBEPP-NUM4 NO-EXTENSION OBLIGATORY
DEFAULT 120 TO 150.
SELECTION-SCREEN END OF BLOCK b2.
INITIALIZATION.
START-OF-SELECTION.
PERFORM fetch_data.
PERFORM display.
&----
*& Form fetch_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM fetch_data .
SELECT *
INTO TABLE t_bsik
FROM bsik
WHERE bukrs IN s_bukrs
AND gjahr IN s_gjahr
AND lifnr IN s_lifnr
AND umskz IN s_umskz
AND umskz NOT IN ('F','P','L','G').
AND zfbdt <= P_augdt.
if sy-subrc = 0.
SELECT *
INTO TABLE t_bsak
FROM bsak
WHERE bukrs IN s_bukrs
AND gjahr IN s_gjahr
AND lifnr IN s_lifnr
AND umskz IN s_umskz
AND umskz NOT IN ('F','P','L','G')
AND AUGDT > P_augdt.
loop at t_bsak.
move-corresponding t_bsak to t_bsik.
append t_bsik.
endloop.
loop at t_bsik.
if t_bsik-zfbdt is initial.
t_bsik-zfbdt = t_bsik-bldat.
modify t_bsik transporting zfbdt.
endif.
if t_bsik-budat > P_augdt.
delete t_bsik.
endif.
if t_bsik-umskz > P_augdt.
endloop.
select lifnr
name1
adrnr
into table t_lfa1
from lfa1
for all entries in t_bsik
where lifnr = t_bsik-lifnr.
if sy-subrc = 0.
select ADDRNUMBER as adrnr
street
city1
into table t_adrc
from adrc
for all entries in t_lfa1
where ADDRNUMBER = t_lfa1-adrnr.
endif.
endif.
LOOP AT t_bsik.
if t_bsik-shkzg = 'S'.
t_bsik-WRBTR = t_bsik-WRBTR * -1.
t_bsik-DMBTR = t_bsik-DMBTR * -1.
endif.
REFRESH T_BSEG.
CLEAR : T_KOSTL, T_PROJK, t_output.
IF t_bsik-rebzg IS NOT INITIAL.
SELECT zfbdt
KOART
KOSTL
PROJK
INTO TABLE T_BSEG "t_bsik-ZFBDT
FROM bseg
WHERE bukrs = t_bsik-bukrs
AND belnr = t_bsik-rebzg
AND gjahr = t_bsik-rebzj
and KOART IN ('K','S').
LOOP AT T_BSEG.
IF T_BSEG-KOART = 'K' AND T_BSEG-zfbdt IS NOT INITIAL.
t_bsik-BUDAT = T_BSEG-ZFBDT.
MODIFY t_bsik TRANSPORTING BUDAT.
ELSEIF T_BSEG-KOART = 'S'.
T_KOSTL = T_BSEG-KOSTL.
T_PROJK = T_BSEG-PROJK.
ENDIF.
ENDLOOP.
ELSE.
SELECT SINGLE KOSTL PROJK
INTO (T_KOSTL, T_PROJK)
FROM bseg
WHERE bukrs = t_bsik-bukrs
AND belnr = t_bsik-BELNR
AND gjahr = t_bsik-GJAHR
and KOART = 'S'.
ENDIF.
MOVE-CORRESPONDING t_bsik TO t_output.
t_output-KOSTL = T_KOSTL.
CONCATENATE 'PR' T_PROJK INTO T_OUTPUT-OBJNR.
days = P_augdt - t_bsik-ZFBDT.
days = P_augdt - t_bsik-BUDAT.
READ TABLE t_lfa1 WITH KEY lifnr = t_output-LIFNR.
IF SY-SUBRC = 0.
t_output-NAME1 = t_lfa1-NAME1.
READ TABLE t_adrc WITH KEY ADRNR = t_lfa1-ADRNR.
IF SY-SUBRC = 0.
t_output-street = t_adrc-STREET.
t_output-city1 = t_adrc-CITY1.
ENDIF.
ENDIF.
t_output-days = days.
if days >= s_date1-low and days < s_date1-high.
t_output-dif1 = t_bsik-wrbtr. " days.
t_output-dif1 = t_bsik-dmbtr. " days.
elseif days >= s_date2-low and days < s_date2-high.
t_output-dif2 = t_bsik-wrbtr. "days.
t_output-dif2 = t_bsik-dmbtr. " days.
elseif days >= s_date3-low and days < s_date3-high.
t_output-dif3 = t_bsik-wrbtr. "days.
t_output-dif3 = t_bsik-dmbtr. " days.
elseif days >= s_date4-low and days < s_date4-high.
t_output-dif4 = t_bsik-wrbtr. "days.
t_output-dif4 = t_bsik-dmbtr. " days.
elseif days >= s_date5-low and days < s_date5-high.
t_output-dif5 = t_bsik-wrbtr. "days.
t_output-dif5 = t_bsik-dmbtr. " days.
endif.
append t_output.
ENDLOOP.
if T_OUTPUT[] is not initial.
SELECT POSID
OBJNR
INTO TABLE T_PRPS
FROM PRPS
FOR ALL ENTRIES IN T_OUTPUT
WHERE OBJNR = T_OUTPUT-OBJNR.
endif.
LOOP AT T_OUTPUT.
read table T_PRPS with key objnr = T_OUTPUT-objnr.
if sy-subrc = 0.
T_OUTPUT-POSID = T_PRPS-POSID.
MODIFY t_output TRANSPORTING POSID.
endif.
ENDLOOP.
ENDFORM. " fetch_data
&----
*& Form display
&----
text
----
--> p1 text
<-- p2 text
----
FORM display .
PERFORM build_alv_layout.
PERFORM s_sort_build USING alv_sort[].
PERFORM build_field_catalogs.
PERFORM eventtab_build CHANGING gt_events.
SORT t_output BY .
g_save = 'A'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid
i_callback_pf_status_set = alv_status_set
i_callback_user_command = alv_user_comm
i_grid_title = grid_title
i_save = g_save
is_variant = gs_variant
is_layout = alv_layout
it_fieldcat = alv_fieldcat[]
it_events = gt_events[]
it_sort = alv_sort[]
IMPORTING
e_exit_caused_by_caller = g_exit_caused_by_caller
es_exit_caused_by_user = gs_exit_caused_by_user
TABLES
t_outtab = t_output.
PERFORM alv_user_comm USING r_ucomm
rs_selfield.
IF sy-subrc = 0.
IF g_exit_caused_by_caller = 'X'.
ELSE.
IF gs_exit_caused_by_user-back = 'X'. " F3
ELSE.
IF gs_exit_caused_by_user-exit = 'X'. " F15
ELSE.
IF gs_exit_caused_by_user-cancel = 'X'. " F12
ELSE.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ELSE.
*" Fatal error calling ALV
ENDIF.
ENDFORM. " display
&----
*& Form build_alv_layout
&----
FORM build_alv_layout.
CLEAR alv_layout.
alv_layout-colwidth_optimize = 'X'. "always display full columns
alv_layout-box_fieldname = 'CHK'.
alv_layout-box_tabname = 'T_OUTPUT'.
alv_layout-info_fieldname = 'COLOR'. "color a line
alv_layout-detail_popup = 'X'.
alv_layout-zebra = 'X'. "Zebra output
ENDFORM. " build_alv_layout
----
FORM s_sort_build *
----
........ *
----
--> LT_SORT *
----
FORM s_sort_build USING lt_sort TYPE slis_t_sortinfo_alv.
DATA: ls_sort TYPE slis_sortinfo_alv.
CLEAR ls_sort.
ls_sort-spos = 1.
ls_sort-fieldname = 'LIFNR'.
ls_sort-up = 'X'.
ls_sort-group = 'UL'.
ls_sort-subtot = 'X'.
APPEND ls_sort TO lt_sort.
CLEAR ls_sort.
ls_sort-spos = 2.
ls_sort-fieldname = 'BELNR'.
ls_sort-up = 'X'.
ls_sort-subtot = 'X'.
ls_sort-group = 'UL'.
APPEND ls_sort TO lt_sort.
CLEAR ls_sort.
ENDFORM. "s_sort_build
&----
*& Form eventtab_build
&----
FORM eventtab_build CHANGING lt_events TYPE slis_t_event.
FIELD-SYMBOLS: <lt_events> LIKE LINE OF lt_events.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = lt_events
EXCEPTIONS
list_type_wrong = 1
OTHERS = 2.
Define TOP_OF_PAGE event
READ TABLE lt_events WITH KEY name = slis_ev_top_of_page
ASSIGNING <lt_events>.
IF sy-subrc EQ 0.
MOVE gc_formname_top_of_page TO <lt_events>-form.
ENDIF.
ENDFORM. " eventtab_build
&----
*& Form TOP_OF_PAGE
&----
FORM top_of_page.
REFRESH gt_list_top_of_page.
CLEAR gt_list_top_of_page.
PERFORM comment_build USING gt_list_top_of_page.
Output GSPC logo on report header
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gt_list_top_of_page
i_logo = 'GSPC_LOGO'.
ENDFORM. "top_of_page
&----
*& Form COMMENT_BUILD
&----
Build comments at top of page
----
FORM comment_build CHANGING gt_top_of_page TYPE slis_t_listheader.
DATA: gs_line TYPE slis_listheader.
CLEAR gs_line.
gs_line-typ = 'H'.
gs_line-info = 'Vendor Ageing'.
APPEND gs_line TO gt_top_of_page.
CLEAR gs_line.
gs_line-typ = 'S'.
gs_line-key = 'Report ID:'.
gs_line-info = sy-repid.
APPEND gs_line TO gt_top_of_page.
CLEAR gs_line.
gs_line-typ = 'S'.
gs_line-key = 'User:'.
gs_line-info = sy-uname.
APPEND gs_line TO gt_top_of_page.
CLEAR gs_line.
gs_line-typ = 'S'.
gs_line-key = 'Date:'.
WRITE sy-datum TO gs_line-info MM/DD/YYYY.
APPEND gs_line TO gt_top_of_page.
CLEAR gs_line.
gs_line-typ = 'S'.
gs_line-key = 'Time:'.
WRITE sy-uzeit TO gs_line-info USING EDIT MASK '__:__:__'.
APPEND gs_line TO gt_top_of_page.
CLEAR gs_line.
gs_line-typ = 'S'.
gs_line-key = ''.
WRITE ' '.
APPEND gs_line TO gt_top_of_page.
Output data from selection screen
ENDFORM. "comment_build
----
*Build ALV Summary field catalog
----
&----
*& Form build_field_catalogs
&----
FORM build_field_catalogs.
CLEAR: alv_fieldcat.
REFRESH: alv_fieldcat.
Vendor Number
alv_fieldcat_line-tabname = 'T_OUTPUT'.
alv_fieldcat_line-seltext_l = 'Vendor Number'.
alv_fieldcat_line-hotspot = 'X'.
alv_fieldcat_line-fieldname = 'LIFNR'.
APPEND alv_fieldcat_line TO alv_fieldcat.
CLEAR alv_fieldcat_line.
Vendor Name
alv_fieldcat_line-tabname = 'T_OUTPUT'.
alv_fieldcat_line-seltext_l = 'Vendor Name'.
alv_fieldcat_line-fieldname = 'NAME1'.
APPEND alv_fieldcat_line TO alv_fieldcat.
CLEAR alv_fieldcat_line.
Vendor Address
alv_fieldcat_line-tabname = 'T_OUTPUT'.
alv_fieldcat_line-seltext_l = 'Vendor Address'.
alv_fieldcat_line-fieldname = 'STREET'.
APPEND alv_fieldcat_line TO alv_fieldcat.
CLEAR alv_fieldcat_line.
City
alv_fieldcat_line-tabname = 'T_OUTPUT'.
alv_fieldcat_line-seltext_l = 'City'.
alv_fieldcat_line-fieldname = 'CITY1'.
APPEND alv_fieldcat_line TO alv_fieldcat.
CLEAR alv_fieldcat_line.
Object number #
alv_fieldcat_line-tabname = 'T_OUTPUT'.
alv_fieldcat_line-seltext_l = 'object #'.
alv_fieldcat_line-fieldname = 'OBJNR'.
alv_fieldcat_line-no_out = 'X'.
APPEND alv_fieldcat_line TO alv_fieldcat.
CLEAR alv_fieldcat_line.
WBS Element
alv_fieldcat_line-tabname = 'T_OUTPUT'.
alv_fieldcat_line-seltext_l = 'WBS Element'.
alv_fieldcat_line-fieldname = 'POSID'.
APPEND alv_fieldcat_line TO alv_fieldcat.
Cost Center
alv_fieldcat_line-tabname = 'T_OUTPUT'.
alv_fieldcat_line-seltext_l = 'Cost Center'.
alv_fieldcat_line-fieldname = 'KOSTL'.
APPEND alv_fieldcat_line TO alv_fieldcat.
GL Indicator
alv_fieldcat_line-tabname = 'T_OUTPUT'.
alv_fieldcat_line-seltext_l = 'GL Indicator'.
alv_fieldcat_line-fieldname = 'UMSKZ'.
APPEND alv_fieldcat_line TO alv_fieldcat.
CLEAR alv_fieldcat_line.
General Ledger Account
alv_fieldcat_line-tabname = 'T_OUTPUT'.
alv_fieldcat_line-seltext_l = 'General Ledger Account'.
alv_fieldcat_line-fieldname = 'HKONT'.
APPEND alv_fieldcat_line TO alv_fieldcat.
Document No.
alv_fieldcat_line-tabname = 'T_OUTPUT'.
alv_fieldcat_line-hotspot = 'X'.
alv_fieldcat_line-seltext_l = 'Document No.'.
alv_fieldcat_line-fieldname = 'BELNR'.
APPEND alv_fieldcat_line TO alv_fieldcat.
CLEAR alv_fieldcat_line.
Amount
alv_fieldcat_line-tabname = 'T_OUTPUT'.
alv_fieldcat_line-seltext_l = 'Amount'.
alv_fieldcat_line-fieldname = 'WRBTR'.
alv_fieldcat_line-fieldname = 'DMBTR'.
alv_fieldcat_line-no_out = 'X'.
APPEND alv_fieldcat_line TO alv_fieldcat.
dif1
CLEAR TEXT.
READ TABLE s_date1 INDEX 1.
CONCATENATE 'DAYS ' s_date1-LOW '-' s_date1-HIGH INTO TEXT.
alv_fieldcat_line-tabname = 'T_OUTPUT'.
alv_fieldcat_line-seltext_l = TEXT.
alv_fieldcat_line-fieldname = 'DIF1'.
alv_fieldcat_line-do_sum = 'X'.
APPEND alv_fieldcat_line TO alv_fieldcat.
CLEAR alv_fieldcat_line.
dif2
CLEAR TEXT.
READ TABLE s_date2 INDEX 1.
CONCATENATE 'DAYS ' s_date2-LOW '-' s_date2-HIGH INTO TEXT.
alv_fieldcat_line-tabname = 'T_OUTPUT'.
alv_fieldcat_line-seltext_l = TEXT.
alv_fieldcat_line-no_out = 'X'.
alv_fieldcat_line-fieldname = 'DIF2'.
APPEND alv_fieldcat_line TO alv_fieldcat.
CLEAR alv_fieldcat_line.
dif3
CLEAR TEXT.
READ TABLE s_date3 INDEX 1.
CONCATENATE 'DAYS ' s_date3-LOW '-' s_date3-HIGH INTO TEXT.
alv_fieldcat_line-tabname = 'T_OUTPUT'.
alv_fieldcat_line-seltext_l = TEXT.
alv_fieldcat_line-fieldname = 'DIF3'.
APPEND alv_fieldcat_line TO alv_fieldcat.
CLEAR alv_fieldcat_line.
dif4
CLEAR TEXT.
READ TABLE s_date4 INDEX 1.
CONCATENATE 'DAYS ' s_date4-LOW '-' s_date4-HIGH INTO TEXT.
alv_fieldcat_line-tabname = 'T_OUTPUT'.
alv_fieldcat_line-seltext_l = TEXT.
alv_fieldcat_line-fieldname = 'DIF4'.
APPEND alv_fieldcat_line TO alv_fieldcat.
dif5
CLEAR TEXT.
READ TABLE s_date5 INDEX 1.
CONCATENATE 'DAYS ' s_date5-LOW '-' s_date5-HIGH INTO TEXT.
alv_fieldcat_line-tabname = 'T_OUTPUT'.
alv_fieldcat_line-seltext_l = TEXT.
alv_fieldcat_line-fieldname = 'DIF5'.
APPEND alv_fieldcat_line TO alv_fieldcat.
Days
alv_fieldcat_line-tabname = 'T_OUTPUT'.
alv_fieldcat_line-seltext_l = 'Days'.
alv_fieldcat_line-fieldname = 'DAYS'.
alv_fieldcat_line-no_out = 'X'.
APPEND alv_fieldcat_line TO alv_fieldcat.
ENDFORM. " build_field_catalogs
&----
*& Form ALV_USER_COMM
&----
Process User Status
----
FORM alv_user_comm USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
*Determine the main component beign viewed
READ TABLE T_OUTPUT INDEX rs_selfield-tabindex.
CASE r_ucomm.
WHEN '&IC1'. " single / double click
CASE rs_selfield-fieldname.
Display FI document
WHEN 'BELNR'.
SET PARAMETER ID 'BLN' FIELD T_OUTPUT-BELNR.
SET PARAMETER ID 'BUK' FIELD T_OUTPUT-BUKRS.
SET PARAMETER ID 'GJR' FIELD T_OUTPUT-GJAHR.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ENDCASE.
WHEN 'FMB58'.
SET PARAMETER ID 'MAT' FIELD prtab-matnr.
CALL TRANSACTION 'MB58' AND SKIP FIRST SCREEN.
WHEN 'CHK'.
MOVE 'X' TO prtab-chk.
MODIFY prtab INDEX rs_selfield-tabindex.
ENDCASE.
ENDFORM.
&----
*& Form ALV_STATUS_SET
&----
Set the status for the ALV screen
----
FORM alv_status_set USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'STANDARD' EXCLUDING rt_extab.
ENDFORM.
Thanks,
Sankar M