You are on page 1of 10

*&---------------------------------------------------------------------* *& Report ZS_CUSTOMERBLOCK_REPT * *& * *&---------------------------------------------------------------------* *& Object id : ES1003 *& Developers : Sunitha and uma * *&

Description : Sales history and customer blocking/unblocking * *& Date : 27-09-2006 * *& Development class: zsuma *&---------------------------------------------------------------------** REPORT 7000.

zs_customerblock_rept NO STANDARD PAGE HEADING LINE-SIZE 255 LINE-COUNT

******************************************************************************** ******** *Table Declarations ******************************************************************************** ******** TABLES : s001, vbak, vbap, konv, kna1. "Customer statistics "Sales document header data "Sales document item data "Conditions "General data in customer master

******************************************************************************** ******** *Data Declarations ******************************************************************************** ******** DATA : cnt TYPE i VALUE 1, amt TYPE p, flag VALUE 0, v_index LIKE sy-tabix, cashdisc(15) TYPE p. ******************************************************************************** ******** *Internal table Declarations ******************************************************************************** ******** TYPES : BEGIN OF ty_itab1, vbeln TYPE vbuk-vbeln, lfstk TYPE vbuk-lfstk, END OF ty_itab1. TYPES : BEGIN OF ty_itab2, vbeln TYPE vbak-vbeln, kunnr TYPE vbak-kunnr, vkorg TYPE vbak-vkorg, vtweg TYPE vbak-vtweg, spart TYPE vbak-spart, "Sales Document "Customer Number "Sales Organization "Distribution Channel "Division "Sales Document "Delivery status

knumv TYPE vbak-knumv, END OF ty_itab2. TYPES : BEGIN OF ty_itab3, kunnr TYPE kna1-kunnr, name1 TYPE kna1-name1, regio TYPE kna1-regio, ort01 TYPE kna1-ort01, END OF ty_itab3. TYPES : BEGIN OF ty_itab4, kunnr TYPE s001-kunnr, oauwe TYPE s001-oauwe, umnetwr TYPE s001-umnetwr, * cnt4 TYPE i, * amt4 TYPE p, END OF ty_itab4. TYPES : BEGIN OF ty_itab5, vbeln TYPE vbap-vbeln, matnr TYPE vbap-matnr, arktx TYPE vbap-arktx, END OF ty_itab5. TYPES : BEGIN OF ty_itab6, knumv TYPE konv-knumv, kschl TYPE konv-kschl, kawrt TYPE konv-kawrt, kbetr TYPE konv-kbetr, * disc(15) type p, END OF ty_itab6. TYPES : BEGIN OF ty_itab7, kunag TYPE vbrk-kunag, vbeln TYPE vbrk-vbeln, fkdat TYPE vbrk-fkdat, netwr TYPE vbrk-netwr, END OF ty_itab7. TYPES : BEGIN OF ty_itab8, vbeln TYPE vbrp-vbeln, aubel TYPE vbrp-aubel, erdat TYPE vbak-erdat, gueen TYPE vbak-gueen, vdatu TYPE vbak-vdatu, END OF ty_itab8. TYPES: BEGIN OF ty_final1, "Billing document "Sales document "Date "Valid date "Requested delivery date "Number of document condition "Condition type "Condition base value "Rate "Sales and Distribution Document Number "Material Number "Material Description "sold-to party "open order value "Net value of sales "Customer Number "Customer Name "Region "City

"Billing document "Billing date "Net value

kunnr TYPE kunnr, name1 TYPE name1, vkorg TYPE vkorg, vtweg TYPE vtweg, spart TYPE spart, ort01 TYPE ort01_gp, regio TYPE regio, oauwe TYPE mc_oauwe, cnt TYPE i, amt TYPE p , umnetwr TYPE s001-umnetwr, * totsales type p , END OF ty_final1. TYPES: BEGIN OF ty_final2, matnr TYPE matnr, arktx TYPE arktx, disc(15) TYPE p, * spmon type spmon, * ummenge type mc_ummenge, * q1_sold_qty type mc_ummenge, * q2_sold_qty type mc_ummenge, * q3_sold_qty type mc_ummenge, * q4_sold_qty type mc_ummenge, * skfbp type skfbp, * year(4), * month(2), END OF ty_final2. *types: * begin of t_final2_01, * kunnr type kunnr, * name1 type name1, * vkorg type vkorg, * vtweg type vtweg, * spart type spart, * ort01 type ort01_gp, * regio type regio, * bukrs type bukrs, * sperr type sperb_x, * end of t_final2_01. * TYPES: BEGIN OF ty_final3, vbeln TYPE vbeln_vf, fkdat TYPE fkdat, netwr TYPE netwr, aubel TYPE vbrp-aubel, erdat TYPE vbak-erdat, gueen TYPE vbak-gueen, END OF ty_final3.

"Customer Number "Customer Name "Sales organisation "Distribution channel "Division "City "Region "Open orders "Count "Amount "Net value of invoiced sales "Total

"Material no "Sales order item

"Customer Number "Customer Name "Sales organisation "Distribution channel "Division "City "Region "Company code

"Sales document "Date "Valid date

******************************************************************************** ******** *Work area Declarations ******************************************************************************** ******** DATA :

wa_itab1 TYPE ty_itab1, wa_itab2 TYPE ty_itab2, wa_itab3 TYPE ty_itab3, wa_itab4 TYPE ty_itab4, wa_itab5 TYPE ty_itab5, wa_itab6 TYPE ty_itab6, wa_itab7 TYPE ty_itab7, wa_itab8 TYPE ty_itab8, wa_final1 TYPE ty_final1, wa_final2 TYPE ty_final2, wa_final3 TYPE ty_final3.

DATA : i_itab1 TYPE STANDARD TABLE OF ty_itab1, i_itab2 TYPE STANDARD TABLE OF ty_itab2, i_itab3 TYPE STANDARD TABLE OF ty_itab3, i_itab4 TYPE STANDARD TABLE OF ty_itab4, i_itab5 TYPE STANDARD TABLE OF ty_itab5, i_itab6 TYPE STANDARD TABLE OF ty_itab6, i_itab7 TYPE STANDARD TABLE OF ty_itab7, i_itab8 TYPE STANDARD TABLE OF ty_itab8, i_final1 TYPE STANDARD TABLE OF ty_final1, i_final2 TYPE STANDARD TABLE OF ty_final2, i_final3 TYPE STANDARD TABLE OF ty_final3 initial size 20. ******************************************************************************** ********* *Selection-screen ******************************************************************************** ********* SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME. PARAMETERS : p_r1 RADIOBUTTON GROUP r1 DEFAULT 'X' USER-COMMAND radio. PARAMETERS : p_r2 RADIOBUTTON GROUP r1 . SELECTION-SCREEN END OF BLOCK b1. SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-001. SELECT-OPTIONS: s_vkorg FOR vbak-vkorg, s_vtweg FOR vbak-vtweg, s_spart FOR vbak-spart. SELECTION-SCREEN END OF BLOCK b2. "Sales organization "Distribution channel "Division

SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME . SELECT-OPTIONS : s_kunnr FOR kna1-kunnr, s_audat FOR vbak-audat , "Sold to party "Document date

s_auart FOR vbak-auart, "Document type s_matnr FOR vbap-matnr MODIF ID k1. "Material no SELECTION-SCREEN END OF BLOCK b3. AT SELECTION-SCREEN OUTPUT. LOOP AT SCREEN. IF p_r1 <> 'X' AND screen-group1 = 'K1'. screen-active = '0'. MODIFY SCREEN. ENDIF. ENDLOOP. ******************************************************************************** ********* *Populating the data ******************************************************************************** ********* START-OF-SELECTION. PERFORM first_get. IF p_r1 = 'X'. FORMAT COLOR COL_TOTAL. WRITE : 10 ' cust #', 25 'custname', 70 'salesarea', 90 'city', 105 'region', 115 'openord(cnt)', 130 'openord(amt)', 160 'totsales'. FORMAT COLOR COL_KEY. WRITE : /10 'material #', 25 'matname', 70 'q1(jan-mar)', 90 'q2(apr-jun)', 105 'q3(jul-sep)', 115 'q4(oct-dec)', 130 'cashdisC'. PERFORM first_print. ELSE. FORMAT COLOR COL_TOTAL. WRITE : 10 ' cust #', 25 'custname', 70 'salesarea', 90 'city', 105 'region', 115 'totdueamt'. FORMAT COLOR COL_KEY. WRITE : /10 'bill#', 25 'billdat', 70 'billamt', 90 'order#', 105 'orderdat', 115 'duedat'.

PERFORM second_print. ENDIF.

**&---------------------------------------------------------------------* *& Form first_get *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM first_get . SELECT vbeln lfstk FROM vbuk INTO TABLE i_itab1 WHERE lfstk EQ 'A'. IF i_itab1[] IS NOT INITIAL. SELECT vbeln kunnr vkorg vtweg spart knumv FROM vbak INTO TABLE i_itab2 FOR ALL ENTRIES IN i_itab1 WHERE vbeln EQ i_itab1-vbeln and vkorg in s_vkorg and vtweg in s_vtweg and spart in s_spart and kunnr in s_kunnr. IF i_itab2[] IS NOT INITIAL. SELECT kunnr name1 regio ort01 FROM kna1 INTO TABLE i_itab3 FOR ALL ENTRIES IN i_itab2 WHERE kunnr EQ i_itab2-kunnr and kunnr in s_kunnr.

SELECT kunnr oauwe umnetwr FROM s001 INTO CORRESPONDING FIELDS OF TABLE i_itab4 FOR ALL ENTRIES IN i_itab2

WHERE kunnr EQ i_itab2-kunnr and kunnr in s_kunnr. SELECT vbeln matnr arktx FROM vbap INTO TABLE i_itab5 FOR ALL ENTRIES IN i_itab2 WHERE vbeln EQ i_itab2-vbeln. SELECT knumv kschl kawrt kbetr FROM konv INTO TABLE i_itab6 FOR ALL ENTRIES IN i_itab2 WHERE knumv EQ i_itab2-knumv AND kschl EQ 'SKTO'.

SELECT kunag vbeln fkdat netwr FROM vbrk INTO TABLE i_itab7 FOR ALL ENTRIES IN i_itab2 WHERE kunag EQ i_itab2-kunnr. IF i_itab7[] IS NOT INITIAL. SELECT a~vbeln a~aubel b~erdat b~gueen b~vdatu FROM vbrp AS a JOIN vbak AS b ON a~aubel EQ b~vbeln INTO TABLE i_itab8 FOR ALL ENTRIES IN i_itab7 WHERE a~vbeln EQ i_itab7-vbeln.

ENDIF. ENDIF. ENDIF. ENDFORM. " first_get *&---------------------------------------------------------------------* *& Form first_print *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text

* <-- p2 text *----------------------------------------------------------------------* FORM first_print . LOOP AT i_itab2 INTO wa_itab2. READ TABLE i_itab3 INTO wa_itab3 WITH KEY kunnr = wa_itab2-kunnr. READ TABLE i_itab4 INTO wa_itab4 WITH KEY kunnr = wa_itab2-kunnr. READ TABLE i_itab5 INTO wa_itab5 WITH KEY vbeln = wa_itab2-vbeln. READ TABLE i_itab6 INTO wa_itab6 WITH KEY knumv = wa_itab2-knumv. cashdisc = ( ( wa_itab6-kbetr ) / 100 ) * ( wa_itab6-kawrt ). MOVE : wa_itab2-vkorg TO wa_final1-vkorg, wa_itab2-vtweg TO wa_final1-vtweg, wa_itab2-spart TO wa_final1-spart. MOVE : wa_itab3-kunnr TO wa_final1-kunnr, wa_itab3-name1 TO wa_final1-name1, wa_itab3-ort01 TO wa_final1-ort01, wa_itab3-regio TO wa_final1-regio. MOVE :wa_itab4-oauwe TO wa_final1-oauwe, wa_itab4-umnetwr TO wa_final1-umnetwr. APPEND wa_final1 TO i_final1. MOVE : wa_itab5-matnr TO wa_final2-matnr, wa_itab5-arktx TO wa_final2-arktx, cashdisc TO wa_final2-disc. APPEND wa_final2 TO i_final2.

ENDLOOP.

SORT i_final1 BY kunnr. LOOP AT i_final1 INTO wa_final1. FORMAT COLOR COL_TOTAL. v_index = sy-tabix. AT END OF kunnr. flag = 1. ENDAT. IF flag = 1. MOVE: cnt TO wa_final1-cnt, amt TO wa_final1-amt. MODIFY i_final1 INDEX v_index FROM wa_final1. CLEAR: cnt,amt. WRITE:/10 wa_final1-kunnr, 25 wa_final1-name1, 70 wa_final1-vkorg,'/',wa_final1-vtweg,'/',wa_final1-spart, 90 wa_final1-ort01, 105 wa_final1-regio, 115 wa_final1-cnt, 130 wa_final1-amt, 160 wa_final1-umnetwr. LOOP AT i_final2 INTO wa_final2. FORMAT COLOR COL_KEY.

WRITE :/10 wa_final2-matnr, 25 wa_final2-arktx, 130 wa_final2-disc. ENDLOOP. ENDIF. flag = 0. IF flag NE 1. cnt = cnt + 1. amt = amt + wa_final1-oauwe. ENDIF. ENDLOOP. ENDFORM. " first_print *&---------------------------------------------------------------------* *& Form second_print *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM second_print . LOOP AT i_itab2 INTO wa_itab2. READ TABLE i_itab3 INTO wa_itab3 WITH KEY kunnr = wa_itab2-kunnr. READ TABLE i_itab4 INTO wa_itab4 WITH KEY kunnr = wa_itab2-kunnr. READ TABLE i_itab5 INTO wa_itab5 WITH KEY vbeln = wa_itab2-vbeln. READ TABLE i_itab6 INTO wa_itab6 WITH KEY knumv = wa_itab2-knumv. MOVE : wa_itab2-vkorg TO wa_final1-vkorg, wa_itab2-vtweg TO wa_final1-vtweg, wa_itab2-spart TO wa_final1-spart. MOVE : wa_itab3-kunnr TO wa_final1-kunnr, wa_itab3-name1 TO wa_final1-name1, wa_itab3-ort01 TO wa_final1-ort01, wa_itab3-regio TO wa_final1-regio. MOVE :wa_itab4-oauwe TO wa_final1-oauwe. APPEND wa_final1 TO i_final1. LOOP AT i_itab7 INTO wa_itab7. READ TABLE i_itab8 INTO wa_itab8 WITH KEY vbeln = wa_itab7-vbeln. MOVE : wa_itab7-vbeln TO wa_final3-vbeln, wa_itab7-fkdat TO wa_final3-fkdat, wa_itab7-netwr TO wa_final3-netwr, wa_itab8-aubel TO wa_final3-aubel, wa_itab8-erdat TO wa_final3-erdat, wa_itab8-gueen TO wa_final3-gueen. APPEND wa_final3 TO i_final3. ENDLOOP. ENDLOOP.

SORT i_final1 BY kunnr.

LOOP AT i_final1 INTO wa_final1. FORMAT COLOR COL_TOTAL. v_index = sy-tabix. AT END OF kunnr. flag = 1. ENDAT. IF flag = 1. MOVE: amt TO wa_final1-amt. MODIFY i_final1 INDEX v_index FROM wa_final1. CLEAR: cnt,amt. WRITE:/10 wa_final1-kunnr, 25 wa_final1-name1, 70 wa_final1-vkorg,'/',wa_final1-vtweg,'/',wa_final1-spart, 90 wa_final1-ort01, 105 wa_final1-regio, 115 wa_final1-amt. LOOP AT i_final3 INTO wa_final3. FORMAT COLOR COL_KEY. WRITE :/10 wa_final3-vbeln, 25 wa_final3-fkdat, 70 wa_final3-netwr, 90 wa_final3-aubel, 105 wa_final3-erdat, 115 wa_final3-gueen.

ENDLOOP. ENDIF. flag = 0. IF flag NE 1. amt = amt + wa_final1-oauwe. ENDIF. ENDLOOP.

ENDFORM.

" second_print

You might also like