*&---------------------------------------------------------------------*
*& Report ZSDR909
*&业绩查询报表081127(不含联营客户)
*&---------------------------------------------------------------------*
*&create date 2008.11.27
*&create by yzp
*&---------------------------------------------------------------------*
REPORT ZSDR909
NO STANDARD PAGE HEADING MESSAGE-ID 00.
TABLES:LIKP,LIPS,MARM,MARA,VBAK,MVKE.
TYPE-POOLS: SLIS.
INCLUDE .
DATA: G_REPID TYPE SY-REPID.
DATA: L_ALV_FILED TYPE SLIS_FIELDCAT_ALV.
DATA: L_ALV_FILEDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA: GS_PRINT TYPE SLIS_PRINT_ALV.
DATA: L_GRID TYPE REF TO CL_GUI_ALV_GRID.
DEFINE ADDFIELD.
L_ALV_FILED-FIELDNAME = &1.
L_ALV_FILED-REPTEXT_DDIC = &2.
L_ALV_FILED-OUTPUTLEN = &3.
L_ALV_FILED-NO_ZERO = &4.
L_ALV_FILED-EDIT = &5.
L_ALV_FILED-KEY = &6.
L_ALV_FILED-DECIMALS_OUT = &7.
L_ALV_FILED-NO_OUT = &8.
L_ALV_FILED-CHECKBOX = &9.
APPEND L_ALV_FILED TO L_ALV_FILEDCAT.
CLEAR L_ALV_FILED.
END-OF-DEFINITION.
DATA: BEGIN OF ITAB_OK OCCURS 0,
* SET(1),
WERKS LIKE LIPS-WERKS,
VKORG LIKE VBAK-VKORG,
AUGRU LIKE VBAK-AUGRU,
VTWEG LIKE VBAK-VTWEG,
KUNNR1 LIKE VBAK-KUNNR, "售达
AUART LIKE VBAK-AUART,
VBELN LIKE VBAP-VBELN, "订单
POSNR LIKE VBAP-POSNR,
VBELN2 LIKE VBAP-VBELN, "发货单
POSNR2 LIKE VBAP-POSNR,
MATNR LIKE VBAP-MATNR,
ARKTX LIKE VBAP-ARKTX,
LGORT LIKE LIPS-LGORT,
LFIMG LIKE LIPS-LFIMG,
VRKME LIKE LIPS-VRKME,
KZWI1 LIKE LIPS-KZWI1, "发货金额
WADAT_IST LIKE LIKP-WADAT_IST,
* WBSTK LIKE VBUK-WBSTK, "发货过帐状态
LFART LIKE LIKP-LFART,
KVGR2 LIKE VBAK-KVGR2,
KVGR3 LIKE VBAK-KVGR3,
KVGR4 LIKE VBAK-KVGR4,
KVGR5 LIKE VBAK-KVGR5,
UMVKN LIKE LIPS-UMVKN, "分母
UMVKZ LIKE LIPS-UMVKZ, "分子
BSTNK LIKE VBAK-BSTNK,
BSTDK LIKE VBAK-BSTDK,
* BZIRK LIKE VBAK-BZIRK,
ERNAM1 lIKE VBAK-ERNAM,
ERNAM2 lIKE VBAK-ERNAM,
LFIMGX LIKE LIPS-LFIMG, "箱数
VRKMEX(4), "箱单位
NAME1 LIKE KNA1-NAME1,
TAUGRU(40),
TKVGR2(40),
TKVGR3(40),
TKVGR4(40),
TKVGR5(40),
MVGR1 LIKE MVKE-MVGR1,
MVGR2 LIKE MVKE-MVGR2,
MVGR3 LIKE MVKE-MVGR3,
MVGR4 LIKE MVKE-MVGR4,
MVGR5 LIKE MVKE-MVGR5,
TMVGR1(40),
TMVGR2(40),
TMVGR3(40),
TMVGR4(40),
TMVGR5(40),
VKBUR(4),
VKGRP(3),
* LFIMGK LIKE LIPS-LFIMG, "公斤数
* VRKMEK LIKE LIPS-VRKME, "公斤单位
END OF ITAB_OK.
DATA:ITAB_OK11 LIKE TABLE OF ITAB_OK WITH HEADER LINE.
DATA: ZVKORG LIKE TABLE OF BAPI_RANGESVKORG WITH HEADER LINE.
DATA: P_VKORG LIKE VBAK-VKORG.
*&------------------------------------------------------------------*
*& SELECT-OPTIONS
*&------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK BLOCK1 WITH FRAME TITLE TEXT-001.
*PARAMETERS: P_VKORG LIKE VBAK-VKORG OBLIGATORY.
SELECT-OPTIONS:
S_VKORG FOR VBAK-VKORG OBLIGATORY,
S_AUGRU FOR VBAK-AUGRU,
S_WADAT FOR LIKP-WADAT_ISt OBLIGATORY,
S_KUNNR1 FOR VBAK-KUNNR, "售达方
S_VTWEG FOR VBAK-VTWEG,
S_AUART FOR VBAK-AUART,
S_VBELN FOR VBAK-VBELN,
S_VBELN2 FOR VBAK-VBELN,
S_MATNR FOR lips-MATNR,
* S_WBSTK FOR VBUK-WBSTK,
S_LGORT FOR LIPS-LGORT,
S_KVGR2 FOR VBAK-KVGR2,
S_KVGR3 FOR VBAK-KVGR3.
* S_KVGR4 FOR VBAK-KVGR4,
* S_KVGR5 FOR VBAK-KVGR5.
SELECTION-SCREEN END OF BLOCK BLOCK1.
*&---------------------------------------------------------------------*
* MAIN PROGRAM
*&---------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM CHECK_VKORG.
LOOP AT ZVKORG.
P_VKORG = ZVKORG-LOW.
PERFORM GET_DATA.
LOOP AT ITAB_OK.
* MOVE ITAB_OK TO ITAB_OK11.
APPEND ITAB_OK TO ITAB_OK11.
ENDLOOP.
CLEAR ITAB_OK[].
ENDLOOP.
IF ITAB_OK11[] IS INITIAL.
MESSAGE i398
WITH '所做选择没有数据,请重新输入选择条件!'.
SUBMIT ZSDR909 VIA SELECTION-SCREEN
WITH S_VKORG IN S_VKORG
WITH S_AUGRU IN S_AUGRU
WITH S_WADAT IN S_WADAT
WITH S_KUNNR1 IN S_KUNNR1
WITH S_VTWEG IN S_VTWEG
WITH S_AUART IN S_AUART
WITH S_VBELN IN S_VBELN
WITH S_VBELN2 IN S_VBELN2
WITH S_MATNR IN S_MATNR
* WITH S_WBSTK IN S_WBSTK
WITH S_LGORT IN S_LGORT
WITH S_KVGR2 IN S_KVGR2
WITH S_KVGR3 IN S_KVGR3
* WITH S_KVGR4 IN S_KVGR4
* WITH S_KVGR5 IN S_KVGR5
.
ENDIF.
PERFORM SET_LAYOUT.
PERFORM SET_FIELD.
PERFORM OUTPUT_ALV.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form CHECK_VKORG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
*
*----------------------------------------------------------------------*
FORM CHECK_VKORG .
DATA: ZTAG(30).
DATA: VKORG LIKE VBAK-VKORG.
CONCATENATE SY-UNAME SY-DATUM SY-UZEIT INTO ZTAG.
SELECT VKORG
INTO VKORG
FROM TVKO
WHERE VKORG IN S_VKORG.
* AUTHORITY-CHECK OBJECT 'ZFI_ZK_BUK'
* ID 'ZBUKRS' FIELD COMP.
AUTHORITY-CHECK OBJECT 'ZSDORDER'
ID 'AUART' DUMMY
ID 'ZFAKSK' DUMMY
ID 'ZLIFSK' DUMMY
ID 'ZBZIRK' FIELD VKORG
ID 'ACTVT' DUMMY.
IF SY-SUBRC EQ 0.
ZVKORG-SIGN = 'I'.
ZVKORG-OPTION = 'EQ'.
ZVKORG-LOW = VKORG.
APPEND ZVKORG.
ENDIF.
ENDSELECT.
IF ZVKORG[] IS INITIAL.
MESSAGE '无权限查询所选择销售组织的数据' TYPE 'S'.
STOP.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_DATA.
SELECT
LIPS~WERKS
LIPS~VGBEL AS VBELN
LIPS~VGPOS AS POSNR
LIPS~VBELN AS VBELN2
LIPS~POSNR AS POSNR2
LIPS~MATNR
LIPS~ARKTX
LIPS~LGORT
LIPS~LFIMG
LIPS~VRKME
LIPS~KZWI1
LIKP~WADAT_IST
LIKP~LFART
LIPS~UMVKN "分母
LIPS~UMVKZ "分子
LIKP~ERNAM AS ERNAM2
INTO CORRESPONDING FIELDS OF TABLE ITAB_OK
FROM
LIKP INNER JOIN LIPS ON LIKP~VBELN = LIPS~VBELN
WHERE
( LIKP~VSTEL = P_VKORG OR ( LIKP~VKORG = P_VKORG AND LIKP~VSTEL = 2000 ) )
AND LIKP~WADAT_IST IN S_WADAT
AND LIPS~MATNR IN S_MATNR
AND LIKP~VBELN IN S_VBELN2
AND LIPS~VGBEL IN S_VBELN
AND LIPS~LGORT IN S_LGORT
.
SORT ITAB_OK BY VBELN.
LOOP AT ITAB_OK.
AT NEW VBELN.
CLEAR VBAK.
SELECT SINGLE * FROM VBAK
WHERE VBELN = ITAB_OK-VBELN
AND AUGRU IN S_AUGRU
AND VTWEG IN S_VTWEG
AND KUNNR IN S_KUNNR1
AND AUART IN S_AUART
AND KVGR2 IN S_KVGR2
AND KVGR3 IN S_KVGR3.
ENDAT.
IF VBAK IS INITIAL.
DELETE ITAB_OK INDEX sy-tabix.
ELSE.
ITAB_OK-VKORG = VBAK-VKORG.
ITAB_OK-AUGRU = VBAK-AUGRU.
ITAB_OK-VTWEG = VBAK-VTWEG.
ITAB_OK-KUNNR1 = VBAK-KUNNR.
ITAB_OK-AUART = VBAK-AUART.
ITAB_OK-KVGR2 = VBAK-KVGR2.
ITAB_OK-KVGR3 = VBAK-KVGR3.
ITAB_OK-KVGR4 = VBAK-KVGR4.
ITAB_OK-KVGR5 = VBAK-KVGR5.
ITAB_OK-BSTNK = VBAK-BSTNK.
ITAB_OK-BSTDK = VBAK-BSTDK.
ITAB_OK-ERNAM1 = VBAK-ERNAM.
ITAB_OK-VKBUR = VBAK-VKBUR.
ITAB_OK-VKGRP = VBAK-VKGRP.
MODIFY ITAB_OK.
ENDIF.
ENDLOOP.
DELETE ITAB_OK WHERE AUART EQ 'ZCR2' OR AUART EQ 'ZDR2' OR VKORG EQ 2000.
DELETE ITAB_OK WHERE ( AUART EQ 'ZOR2' OR AUART EQ 'ZRE2' ) AND VKORG EQ P_VKORG.
SORT ITAB_OK BY MATNR.
DATA:ZTMVGR1(40),ZTMVGR2(40),ZTMVGR3(40),ZTMVGR4(40),ZTMVGR5(40).
LOOP AT ITAB_OK.
AT NEW MATNR.
CLEAR:MARM,MVKE,ZTMVGR1,ZTMVGR2,ZTMVGR3,ZTMVGR4,ZTMVGR5.
SELECT SINGLE * FROM MARM WHERE MATNR = ITAB_OK-MATNR
AND MEINH = 'KAR'.
SELECT SINGLE * FROM MVKE
WHERE MATNR = ITAB_OK-MATNR
AND VKORG = 6000
AND VTWEG = 90.
SELECT SINGLE BEZEI INTO ZTMVGR1 FROM TVM1T WHERE MVGR1 = MVKE-MVGR1.
SELECT SINGLE BEZEI INTO ZTMVGR2 FROM TVM2T WHERE MVGR2 = MVKE-MVGR2.
SELECT SINGLE BEZEI INTO ZTMVGR3 FROM TVM3T WHERE MVGR3 = MVKE-MVGR3.
SELECT SINGLE BEZEI INTO ZTMVGR4 FROM TVM4T WHERE MVGR4 = MVKE-MVGR4.
SELECT SINGLE BEZEI INTO ZTMVGR5 FROM TVM5T WHERE MVGR5 = MVKE-MVGR5.
ENDAT.
IF ITAB_OK-UMVKN NE 0 AND MARM-UMREZ NE 0 .
ITAB_OK-LFIMGX = ITAB_OK-LFIMG * ITAB_OK-UMVKZ / ITAB_OK-UMVKN
/ MARM-UMREZ * MARM-UMREN.
ELSE.
ITAB_OK-LFIMGX = 0.
ENDIF.
IF ITAB_OK-LFART GE 'ZLR1' AND ITAB_OK-LFART LE 'ZLR9'.
ITAB_OK-LFIMG = ABS( ITAB_OK-LFIMG ) * -1.
ITAB_OK-KZWI1 = ABS( ITAB_OK-KZWI1 ) * -1.
ITAB_OK-LFIMGX = ABS( ITAB_OK-LFIMGX ) * -1.
ENDIF.
ITAB_OK-VRKMEX = 'XIA'.
"物料类
ITAB_OK-MVGR1 = MVKE-MVGR1.
ITAB_OK-MVGR2 = MVKE-MVGR2.
ITAB_OK-MVGR3 = MVKE-MVGR3.
ITAB_OK-MVGR4 = MVKE-MVGR4.
ITAB_OK-MVGR5 = MVKE-MVGR5.
ITAB_OK-TMVGR1 = ZTMVGR1.
ITAB_OK-TMVGR2 = ZTMVGR2.
ITAB_OK-TMVGR3 = ZTMVGR3.
ITAB_OK-TMVGR4 = ZTMVGR4.
ITAB_OK-TMVGR5 = ZTMVGR5.
MODIFY ITAB_OK.
ENDLOOP.
*添加订单原因、系统、区域系统、分销售渠道
DATA:ZTVAUT LIKE TABLE OF TVAUT WITH HEADER LINE.
DATA:ZTVV2T LIKE TABLE OF TVV2T WITH HEADER LINE.
DATA:ZTVV3T LIKE TABLE OF TVV3T WITH HEADER LINE.
DATA:ZTVV4T LIKE TABLE OF TVV4T WITH HEADER LINE.
DATA:ZTVV5T LIKE TABLE OF TVV5T WITH HEADER LINE.
SELECT * INTO TABLE ZTVAUT FROM TVAUT.
SELECT * INTO TABLE ZTVV2T FROM TVV2T.
SELECT * INTO TABLE ZTVV3T FROM TVV3T.
SELECT * INTO TABLE ZTVV4T FROM TVV4T.
SELECT * INTO TABLE ZTVV5T FROM TVV5T.
SORT ITAB_OK BY KUNNR1.
DATA:ZNAME1 LIKE ITAB_OK-NAME1.
* DATA:ZVKBUR(4).
LOOP AT ITAB_OK.
AT NEW KUNNR1.
CLEAR ZNAME1.
* CLEAR ZVKBUR.
SELECT SINGLE NAME1 INTO ZNAME1 FROM KNA1
WHERE KUNNR = ITAB_OK-KUNNR1.
* SELECT SINGLE VKBUR INTO ZVKBUR FROM KNVV
* WHERE KUNNR = ITAB_OK-KUNNR1.
ENDAT.
ITAB_OK-NAME1 = ZNAME1.
* ITAB_OK-VKBUR = ZVKBUR.
READ TABLE ZTVAUT WITH KEY AUGRU = ITAB_OK-AUGRU.
READ TABLE ZTVV2T WITH KEY KVGR2 = ITAB_OK-KVGR2.
READ TABLE ZTVV3T WITH KEY KVGR3 = ITAB_OK-KVGR3.
READ TABLE ZTVV4T WITH KEY KVGR4 = ITAB_OK-KVGR4.
READ TABLE ZTVV5T WITH KEY KVGR5 = ITAB_OK-KVGR5.
ITAB_OK-TAUGRU = ZTVAUT-BEZEI.
ITAB_OK-TKVGR2 = ZTVV2T-BEZEI.
ITAB_OK-TKVGR3 = ZTVV3T-BEZEI.
ITAB_OK-TKVGR4 = ZTVV4T-BEZEI.
ITAB_OK-TKVGR5 = ZTVV5T-BEZEI.
MODIFY ITAB_OK.
CLEAR:ZTVAUT,ZTVV2T,ZTVV3T,ZTVV4T,ZTVV5T.
ENDLOOP.
SORT ITAB_OK BY KUNNR1 VBELN2 POSNR2.
ENDFORM. "GET_DATA
*&---------------------------------------------------------------------*
*& Form SET_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
*
*----------------------------------------------------------------------*
FORM SET_LAYOUT .
G_REPID = SY-REPID.
* LAYOUT-BOX_FIELDNAME = 'SET'.
LAYOUT-ZEBRA = 'X'.
ENDFORM. " SET_LAYOUT
*&---------------------------------------------------------------------*
*& Form SET_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
*
*----------------------------------------------------------------------*
FORM SET_FIELD .
ADDFIELD 'VKORG' '销售组织' '8' '' '' 'X' '' '' ''.
ADDFIELD 'WERKS' '工厂' '4' '' '' 'X' '' '' ''.
ADDFIELD 'AUGRU' '订单原因' '8' '' '' 'X' '' '' ''.
ADDFIELD 'TAUGRU' '订单原因描述' '12' '' '' '' '' '' ''.
ADDFIELD 'VTWEG' '渠道' '4' '' '' '' '' '' ''.
ADDFIELD 'KUNNR1' '售达方' '8' 'X' '' '' '' '' ''.
ADDFIELD 'NAME1' '售达方名称' '10' '' '' '' '' '' ''.
ADDFIELD 'VBELN2' '交货单号' '10' 'X' '' '' '' '' ''.
ADDFIELD 'POSNR2' '交货项目' '8' 'X' '' '' '' '' ''.
ADDFIELD 'MATNR' '物料编号' '8' 'X' '' '' '' '' ''.
ADDFIELD 'ARKTX' '物料名称' '10' '' '' '' '' '' ''.
ADDFIELD 'LFIMGX' '发货箱数' '10' '' '' '' '' '' ''.
ADDFIELD 'VRKMEX' '箱单位' '4' '' '' '' '' '' ''.
ADDFIELD 'KZWI1' '业绩' '10' '' '' '' '' '' ''.
ADDFIELD 'AUART' '订单类型' '8' '' '' '' '' '' ''.
ADDFIELD 'VBELN' '销售订单' '10' 'X' '' '' '' '' ''.
ADDFIELD 'POSNR' '订单项目' '8' 'X' '' '' '' '' ''.
ADDFIELD 'WADAT_IST' '交货日期' '10' '' '' '' '' '' ''.
* ADDFIELD 'WBSTK' '发货过帐状态' '10' '' '' '' '' '' ''.
ADDFIELD 'LFIMG' '单据发货数量' '10' '' '' '' '' '' ''.
ADDFIELD 'VRKME' '单据单位' '4' '' '' '' '' '' ''.
ADDFIELD 'KVGR2' '系统' '4' '' '' '' '' '' ''.
ADDFIELD 'TKVGR2' '系统描述' '10' '' '' '' '' '' ''.
ADDFIELD 'KVGR3' '区域系统' '8' '' '' '' '' '' ''.
ADDFIELD 'TKVGR3' '区域系统描述' '10' '' '' '' '' '' ''.
ADDFIELD 'KVGR4' '小商品区块 ' '10' '' '' '' '' '' ''.
ADDFIELD 'TKVGR4' '小商品区块描述' '10' '' '' '' '' '' ''.
ADDFIELD 'KVGR5' '区块级数' '8' '' '' '' '' '' ''.
ADDFIELD 'TKVGR5' '区块级数描述' '10' '' '' '' '' '' ''.
ADDFIELD 'LGORT' '仓库' '4' '' '' '' '' '' ''.
ADDFIELD 'BSTNK' '采购订单编号' '10' '' '' '' '' '' ''.
ADDFIELD 'BSTDK' '采购订单日期' '10' '' '' '' '' '' ''.
* ADDFIELD 'BZIRK' '业绩所属分公司' '10' '' '' '' '' '' ''.
ADDFIELD 'ERNAM1' '销售订单创建人' '10' '' '' '' '' '' ''.
ADDFIELD 'ERNAM2' '交货单创建人' '10' '' '' '' '' '' ''.
ADDFIELD 'MVGR1' '发展项目码' '10' '' '' '' '' '' ''.
ADDFIELD 'TMVGR1' '发展项目码描述' '14' '' '' '' '' '' ''.
ADDFIELD 'MVGR2' '合同分析码' '10' '' '' '' '' '' ''.
ADDFIELD 'TMVGR2' '合同分析码描述' '14' '' '' '' '' '' ''.
ADDFIELD 'MVGR3' '联营品类码' '10' '' '' '' '' '' ''.
ADDFIELD 'TMVGR3' '合同分析码描述' '14' '' '' '' '' '' ''.
ADDFIELD 'MVGR4' '管理类码' '8' '' '' '' '' '' ''.
ADDFIELD 'TMVGR4' '管理类码描述' '14' '' '' '' '' '' ''.
ADDFIELD 'MVGR5' '行销码' '6' '' '' '' '' '' ''.
ADDFIELD 'TMVGR5' '行销码描述' '14' '' '' '' '' '' ''.
ADDFIELD 'VKBUR' '责任区' '6' '' '' '' '' '' ''.
ADDFIELD 'VKGRP' '服务区' '6' '' '' '' '' '' ''.
ENDFORM. " SET_FIELD
*&---------------------------------------------------------------------*
*& Form OUTPUT_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
*
*----------------------------------------------------------------------*
FORM OUTPUT_ALV .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = G_REPID
IT_FIELDCAT = L_ALV_FILEDCAT
IS_LAYOUT = LAYOUT
I_SAVE = 'A'
I_DEFAULT = 'X'
IS_PRINT = GS_PRINT
* I_CALLBACK_USER_COMMAND = ''
* I_CALLBACK_PF_STATUS_SET = ''
* I_CALLBACK_HTML_TOP_OF_PAGE = 'ALV_TOP_OF_PAGE'
TABLES
T_OUTTAB = ITAB_OK11.
ENDFORM. " OUTPUT_ALV
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7810493/viewspace-621693/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7810493/viewspace-621693/