文档库 最新最全的文档下载
当前位置:文档库 › sap生产订单成本明细清单分析

sap生产订单成本明细清单分析

*&---------------------------------------------------------------------*
*& Report Z_CO_ANA
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT Z_CO_PPORDCOSTDETAIL.
TABLES: AUFK,AFPO,COSS,COSP.

*&---------------------------------------------------------------------*
*&ALV 相关声明
*&
*&---------------------------------------------------------------------*
TYPE-POOLS: slis, icon.

DATA: L_ALV_FILED TYPE SLIS_FIELDCAT_ALV.
DATA: L_ALV_FILEDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: GT_SORT TYPE SLIS_T_SORTINFO_ALV.
DATA: GT_COLOR TYPE slis_t_specialcol_alv WITH HEADER LINE.
DATA: I_LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA: I_GRID_SETTINGS TYPE LVC_S_GLAY.
DATA: PGM LIKE SY-REPID.
DATA: COL_POS TYPE I VALUE 0.

DATA: ZPERIOD TYPE I VALUE 1. "月份,用于按期间分析

*&---------------------------------------------------------------------*
*&ALV输出内表结构
*&
*&---------------------------------------------------------------------*
DATA:BEGIN OF IT_ORDER OCCURS 1,
WERKS LIKE AFPO-DWERK,
AUART LIKE AFPO-DAUAT,
KDAUF LIKE AFPO-KDAUF,
KDPOS LIKE AFPO-KDPOS,
AUFNR LIKE AFPO-AUFNR,
OBJNR LIKE AFPO-OBJNP,
LTRMI LIKE AFPO-LTRMI,
MATNR LIKE AFPO-MATNR,
GJAHR LIKE COSS-GJAHR,
WRTTP LIKE COSS-WRTTP,
KSTAR LIKE COSS-KSTAR,
VRGNG LIKE COSS-VRGNG,
PAROB LIKE COSS-PAROB,
USPOB LIKE COSS-USPOB,
BEKNZ LIKE COSS-BEKNZ,
TWAER LIKE COSS-TWAER,
MEINH LIKE COSS-MEINH,
ZMEG LIKE COSS-MEG001,
ZWOG LIKE COSS-WOG001,
END OF IT_ORDER.

*&---------------------------------------------------------------------*
*&选择屏幕
*&
*&---------------------------------------------------------------------*
SELECT-OPTIONS:WERKS FOR AFPO-DWERK. "工厂
SELECT-OPTIONS:AUART FOR AFPO-DAUAT. "生产订单类型
SELECT-OPTIONS:AUFNR FOR AFPO-AUFNR. "生产订单号
SELECT-OPTIONS:KDAUF FOR AFPO-KDAUF. "销售订单号
SELECT-OPTIONS:KDPOS FOR AFPO-KDPOS. "销售订单项目
SELECT-OPTIONS:WRTTP FOR IT_ORDER-WRTTP. "值类型
SELECT-OPTIONS:GJAHR FOR IT_ORDER-GJAHR. "会计年度

*&---------------------------------------------------------------------*
*&输出字段初始化
*&
*&---------------------------------------------------------------------*
INITIALIZATION.
PERFORM INITIAL_FIELDS USING 4 'WERKS' '工厂' '' '' '' ''.
PERFORM INITIAL_FIELDS USING 4 'AUART' '生产订单类型' '' '' '' ''.
PERFORM INITIAL_FIELDS USING '' 'KDAUF' '销售订单号' '' '' '' ''.
PERFORM INITIAL_FIELDS USING 6 'KDPOS' '销售订单项目' '' '' '' ''.
PERFORM INITIAL_FIELDS USING '' 'AUFNR' '生产订单号' '' '' '' ''.
PERFORM INITIAL_FIELDS USING '' 'OBJNR' '对象号' '' '' '' ''

.
PERFORM INITIAL_FIELDS USING '' 'LTRMI' '实际交货日期' '' '' '' ''.
PERFORM INITIAL_FIELDS USING 18 'MATNR' '物料号' '' '' '' ''.
PERFORM INITIAL_FIELDS USING 4 'GJAHR' '会计年度' '' '' '' ''.
PERFORM INITIAL_FIELDS USING 2 'WRTTP' '值类型' '' '' '' ''.
PERFORM INITIAL_FIELDS USING '' 'KSTAR' '成本要素' '' '' '' ''.
PERFORM INITIAL_FIELDS USING 4 'VRGNG' 'CO 业务事务' '' '' '' ''.
PERFORM INITIAL_FIELDS USING '' 'PAROB' '合作伙伴对象' '' '' '' ''.
PERFORM INITIAL_FIELDS USING '' 'USPOB' '源对象(成本中心/作业类型)' '' '' '' ''.
PERFORM INITIAL_FIELDS USING 1 'BEKNZ' '借/贷标记' '' '' '' ''.
PERFORM INITIAL_FIELDS USING 3 'TWAER' '交易货币' '' '' '' ''.
PERFORM INITIAL_FIELDS USING 2 'MEINH' '计量单位' '' '' '' ''.
PERFORM INITIAL_FIELDS USING '' 'ZMEG' '总计数量' 'X' '' '' ''.
PERFORM INITIAL_FIELDS USING '' 'ZWOG' '对象货币的总值' 'X' '' '' ''.


*&---------------------------------------------------------------------*
*&事件处理
*&
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN.



TYPES: BEGIN OF SELOBJ ,
OBJNR LIKE AUFK-OBJNR,
END OF SELOBJ.
DATA ITAB_SELOBJ TYPE SELOBJ OCCURS 1 WITH HEADER LINE.

SELECT OBJNR INTO TABLE ITAB_SELOBJ FROM AUFK
WHERE AUFK~KDPOS IN KDPOS AND
AUFK~KDAUF IN KDAUF AND
AUFK~AUART IN AUART AND
AUFK~WERKS IN WERKS AND
AUFK~AUFNR IN AUFNR .
SELECT OBJNP APPENDING TABLE ITAB_SELOBJ FROM AFPO
WHERE AFPO~KDPOS IN KDPOS AND
AFPO~KDAUF IN KDAUF AND
AFPO~DAUAT IN AUART AND
AFPO~DWERK IN WERKS AND
AFPO~AUFNR IN AUFNR .

LOOP AT ITAB_SELOBJ.
SELECT * INTO CORRESPONDING FIELDS OF COSS FROM COSS
WHERE OBJNR = ITAB_SELOBJ-OBJNR AND
WRTTP IN WRTTP AND
GJAHR IN GJAHR .

MOVE-CORRESPONDING COSS TO IT_ORDER.
IT_ORDER-AUFNR = IT_ORDER-OBJNR+2(12).
IT_ORDER-ZMEG = COSS-MEG001 + COSS-MEG002 + COSS-MEG003 + COSS-MEG004 +
COSS-MEG005 + COSS-MEG006 + COSS-MEG007 + COSS-MEG008 +
COSS-MEG009 + COSS-MEG010 + COSS-MEG011 + COSS-MEG012 +
COSS-MEG013 + COSS-MEG014 + COSS-MEG015 + COSS-MEG016.

IT_ORDER-ZWOG = COSS-WOG001 + COSS-WOG002 + COSS-WOG003 + COSS-WOG004 +
COSS-WOG005 + COSS-WOG006 + COSS-WOG007 + COSS-WOG008 +
COSS-WOG009 + COSS-WOG010 + COSS-WOG011 + COSS-WOG012 +
COSS-WOG013 + COSS-WOG014 + COSS-WOG015 + COSS-WOG016.
APPEND IT_ORDER.
CLEAR:COSS.
ENDSELECT.
SELECT * INTO CORRESPONDING FIELDS OF COSP FROM COSP
WHERE OBJNR = ITAB_SELOBJ-OBJNR AND
WRTTP IN WRTTP AND
GJAHR IN GJAHR .

MOVE-CORRESPONDING COSP TO IT_ORDER.
IT_ORDER-AUFNR = IT_ORDER-OBJNR+2(1

2).
IT_ORDER-ZMEG = COSP-MEG001 + COSP-MEG002 + COSP-MEG003 + COSP-MEG004 +
COSP-MEG005 + COSP-MEG006 + COSP-MEG007 + COSP-MEG008 +
COSP-MEG009 + COSP-MEG010 + COSP-MEG011 + COSP-MEG012 +
COSP-MEG013 + COSP-MEG014 + COSP-MEG015 + COSP-MEG016.

IT_ORDER-ZWOG = COSP-WOG001 + COSP-WOG002 + COSP-WOG003 + COSP-WOG004 +
COSP-WOG005 + COSP-WOG006 + COSP-WOG007 + COSP-WOG008 +
COSP-WOG009 + COSP-WOG010 + COSP-WOG011 + COSP-WOG012 +
COSP-WOG013 + COSP-WOG014 + COSP-WOG015 + COSP-WOG016.
APPEND IT_ORDER.
CLEAR:COSP.
ENDSELECT.
ENDLOOP.



*&---------------------------------------------------------------------*
*&AFPO相关字段内容传递
*&
*&---------------------------------------------------------------------*
FIELD-SYMBOLS: LIKE LINE OF IT_ORDER.
LOOP AT IT_ORDER ASSIGNING .
IF -OBJNR+0(2) = 'OP'.
SELECT SINGLE
KDPOS
KDAUF
DAUAT
DWERK
MATNR
LTRMI
INTO
(-KDPOS,
-KDAUF,
-AUART,
-WERKS,
-MATNR,
-LTRMI)

FROM AFPO WHERE OBJNP = -OBJNR.
ELSEIF -PAROB+0(2) = 'OP'.
SELECT SINGLE
KDPOS
KDAUF
DAUAT
DWERK
MATNR
LTRMI
INTO
(-KDPOS,
-KDAUF,
-AUART,
-WERKS,
-MATNR,
-LTRMI)

FROM AFPO WHERE OBJNP = -PAROB.
ELSE.
SELECT SINGLE
KDPOS
KDAUF
DAUAT
DWERK
MATNR
LTRMI
INTO
(-KDPOS,
-KDAUF,
-AUART,
-WERKS,
-MATNR,
-LTRMI)

FROM AFPO WHERE AUFNR = -AUFNR.
ENDIF.
ENDLOOP.


*&---------------------------------------------------------------------*
*&ALV功能参数
*&
*&---------------------------------------------------------------------*
PGM = SY-REPID.
i_layout-colwidth_optimize = 'X'.
*i_layout-zebra = 'X'.
*i_layout-no_min_linesize = 'X'.
I_LAYOUT-window_titlebar = '生产订单成本明细清单分析'.
I_LAYOUT-no_uline_hs = ''.
"I_LAYOUT-confirmation_prompt = 'X'.
I_LAYOUT-group_buttons = 'X'.
I_LAYOUT-totals_before_items = ''.
I_LAYOUT-totals_text = 'X'.
I_LAYOUT-subtotals_text = 'X'.

DATA ls_sort TYPE slis_sortinfo_alv.
CLEAR ls_sort.
ls_sort-fieldname = 'AUFNR'.
ls_sort-spos = 1.
ls_sort-up = 'X'.
ls_sort-subtot = 'X'.
LS_SORT-group = 'X'.
APPEND ls_sort TO gt_sort.
CLEAR ls_sort.
ls_sort-fieldname = 'WRTTP'.
ls_sort-spos = 2.
ls_sort-up

= 'X'.
ls_sort-subtot = 'X'.
LS_SORT-group = 'X'.
APPEND ls_sort TO gt_sort.
CLEAR ls_sort.
ls_sort-fieldname = 'KSTAR'.
ls_sort-spos = 3.
ls_sort-up = 'X'.
ls_sort-subtot = 'X'.
LS_SORT-group = 'X'.
APPEND ls_sort TO gt_sort.



*&---------------------------------------------------------------------*
*&ALV输出功能实现
*&
*&---------------------------------------------------------------------*

call function 'REUSE_ALV_GRID_DISPLAY'
exporting
it_fieldcat = l_alv_filedcat
it_sort = gt_sort[]
is_layout = i_layout
i_callback_program = pgm
i_grid_title = ''
i_grid_settings = i_grid_settings
tables
t_outtab = IT_ORDER[].





*&---------------------------------------------------------------------*
*&输出字段初始化
*&
*&---------------------------------------------------------------------*
FORM INITIAL_FIELDS USING LENTH TYPE I
FNAME TYPE C
TEXT TYPE C
DO_SUM TYPE C
COLUMN_COLOR TYPE C
IS_ICON TYPE C
NO_OUT TYPE C.

L_ALV_FILED-COL_POS = COL_POS + 1.
L_ALV_FILED-OUTPUTLEN = LENTH.
L_ALV_FILED-FIELDNAME = FNAME.
L_ALV_FILED-SELTEXT_M = TEXT.
L_ALV_FILED-do_sum = DO_SUM.
L_ALV_FILED-EMPHASIZE = COLUMN_COLOR.
L_ALV_FILED-ICON = IS_ICON.
L_ALV_FILED-NO_OUT = NO_OUT.
L_ALV_FILED-no_zero = 'X'.

APPEND L_ALV_FILED TO L_ALV_FILEDCAT.
ENDFORM. "initial_fields

相关文档