有一天,天爱上了海,可是空气阻隔了他们,他们无法相爱,天哭了,泪水落在海里,即使不能相爱,天也要把灵魂托给海,从此海比天蓝……当所有人在关心你飞的高不高时,只有少数人在关心你飞的累不累,这就是朋友。
查看文章 |
ALV TREE + 动态显示列(1)
2008-10-25 19:39
由于BAIDU限制发贴字数,所有必需把1,2,3,4合起来才是完整的代码。 以下程序不代表企业PRD中的真实程序. 程序中带有 select * 的代码请见谅,由于并不十分影响此程序性能,因此没有修改.
Description: YCOR1005_N
单船收入成本表 *---------------------------------------------------------------------* * PROGRAM ID : YCOR1005 * * APPLICATION NAME : CO * * TRANSACTION : ZCOR05 * * PROGRAM TYPE : REPORT * * OUTPUT : ALV_GRID DYNAMIC OUTPUT * * SAP RELEASE : 4.6C * * DESCRIPTION : 单船收入成本表 * * CREATED TIME : 2006-11-11 * *---------------------------------------------------------------------* * LOG DATE REL CHANGE DESCRIPTION WHO * *=====================================================================* * 001 2006-12-01 LAST-CHANGED COMMENTARY Victor.Pan * *---------------------------------------------------------------------* REPORT YCOR1005 . include YCOR1005_TOP_N. *INCLUDE YCOR1005_TOP. include YCOR1005_CONTROL_N. *INCLUDE YCOR1005_CONTROL. * screen elements SELECTION-SCREEN BEGIN OF BLOCK RAD1 WITH FRAME TITLE TEXT-003. PARAMETERS: BUKRS LIKE BSIS-BUKRS OBLIGATORY. SELECT-OPTIONS: ABPER FOR BSEG-ABPER OBLIGATORY."期间 PARAMETERS: VR TYPE ZCO04_A-ZVARIANT DEFAULT '1' MATCHCODE OBJECT ZCOVARIANT. SELECTION-SCREEN END OF BLOCK RAD1. SELECTION-SCREEN BEGIN OF BLOCK RAD2 WITH FRAME TITLE TEXT-002. PARAMETERS: H1 RADIOBUTTON GROUP A1 USER-COMMAND SELE DEFAULT 'X'. "半成品 PARAMETERS: H2 RADIOBUTTON GROUP A1 ."产成品 PARAMETERS: ORDER_10(10) . SELECTION-SCREEN END OF BLOCK RAD2. AT SELECTION-SCREEN ON ORDER_10. *IF H1 = 'X'. * TH1 = '1121020100'. * ELSEIF H2 = 'X'. * TH1 = '1121040100'. * ENDIF. IF ORDER_10 IS INITIAL. MESSAGE W000(ZFI01) WITH '订单组不能为空'. STOP. ENDIF. AT SELECTION-SCREEN ON ABPER. IF ABPER-LOW = '' OR ABPER-HIGH = ''. MESSAGE E000(ZFI01) WITH '期间不能为空'. ENDIF. AT SELECTION-SCREEN ON VALUE-REQUEST FOR ORDER_10. IF H1 = 'X'. TH1 = '1121020100'. ELSEIF H2 = 'X'. TH1 = '1121040100'. ENDIF. DATA : f4help LIKE TABLE OF ddshretval WITH HEADER LINE. DATA: dynpprog LIKE SY-REPID. DATA: F4_LIST1 LIKE F4_LIST OCCURS 0. dynpprog = SY-REPID. perFORM GET_ORDER_F4_10 TABLES F4_LIST1.."获得订单与f4列表 CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING retfield = 'ORDER_10' dynpprog = dynpprog dynpnr = sy-dynnr stepl = '1' window_title = '选择值' value_org = 'S' TABLES value_tab = F4_LIST1 return_tab = f4help. ORDER_10 = f4help-fieldval. *AT SELECTION-SCREEN ON ORDER_10. * IF ORDER_10 IS INITIAL. * MESSAGE W000(ZFI01) WITH '订单组不能为空'. * STOP. * ENDIF. AT SELECTION-SCREEN. AUTHORITY-CHECK OBJECT 'ZBUKRS' ID 'BUKRS' FIELD BUKRS. IF SY-SUBRC <> 0. MESSAGE E000(ZFI01) WITH '没有此公司代码权限'. ENDIF. *AT SELECTION-SCREEN OUTPUT. *BREAK ZHENPAN. START-OF-SELECTION. DATA: LAST_UCOMM TYPE SY-UCOMM. DATA: SALE_NODE TYPE LVC_NKEY. CLEAR SALE_COST_ELEMENT[]. "获得输出列表组 PERFORM GET_DISPLAY_LIST_GROUP TABLES OUT_CG USING VR . PERFORM GET_SALE_COST_ELEMENT TABLES SALE_COST_ELEMENT USING VR. "获得销售成本要素 CLEAR: ORDER_LIST ,ORDER_LIST[]. PERFORM GET_ORDER TABLES ORDER_LIST."获得订单 END-OF-SELECTION. CALL SCREEN 100. include YCOR1005_PROCESS_DATA_N. include YCOR1005_100_N. include YCOR1005_TEST_N. *Text elements *---------------------------------------------------------- * 001 成本要素组 * 002 半成品/产成品 * 003 选择条件 *Selection texts *---------------------------------------------------------- * ABPER 期间 * BUKRS 公司代码 * H1 半成品 * H2 产成品 * ORDER_10 订单组(前10位) * VR 变式 *Messages *---------------------------------------------------------- * * Message class: 00 * 208 & * * Message class: ZFI01 * 000 &1&2&3&4&5 Extracted by Direct Download 46cd version 1.3.1 - E.G.Mellodew. 1998-2005 UK. Sap Release 46C
Description: YCOR1005_TOP_N
Include YCOR1005_TOP *----------------------------------------------------------------------*
* INCLUDE YCOR1005_TOP *
*----------------------------------------------------------------------*
TABLES: BSIS,AUFK,COSP,BSEG,COSS,ZCO04_A,BKPF,COAS,CSKA.
DATA: BEGIN OF BELNR_LIST OCCURS 0, "凭证列表
BUKRS LIKE BSIS-BUKRS,
GJAHR LIKE BSIS-GJAHR,
BELNR LIKE BSIS-BELNR,
END OF BELNR_LIST.
DATA: BEGIN OF ORDER_LIST OCCURS 0, "订单列表
ORDER LIKE AUFK-AUFNR,
END OF ORDER_LIST.
DATA: BEGIN OF F4_LIST OCCURS 0,
ORDER_10 LIKE AUFK-AUFNR,
TEXT LIKE COAS-KTEXT,
END OF F4_LIST.
DATA: BEGIN OF COST_ELEMENT OCCURS 0,"成本要素列表
ELEMENT LIKE COSP-KSTAR,
Z1 LIKE ZCO04_A-Z1,"取数属性
ATTR LIKE ZCO04_A-ATTR,"+/-属性
END OF COST_ELEMENT.
DATA: BEGIN OF COST_ELEMENT_GROUP OCCURS 0,"成本要素组列表
ZINDEX LIKE ZCO04_A-ZINDEX,"list_index
ELEMENT_GROUP LIKE GRPDYNP-NAME_COALL,
Z1 LIKE ZCO04_A-Z1,"取数属性
ATTR LIKE ZCO04_A-ATTR,"+/-属性
END OF COST_ELEMENT_GROUP.
DATA: BEGIN OF LIST_STRUCTURE OCCURS 0,
ELEMENT_GROUP LIKE GRPDYNP-NAME_COALL,
ELEMENT LIKE COSP-KSTAR,
TP(1), "G: GROUP ; E: ELEMENT
END OF LIST_STRUCTURE.
DATA: SALE_COST_ELEMENT LIKE COST_ELEMENT OCCURS 0 WITH HEADER LINE.
DATA: new_table TYPE REF TO data."out_data table space
DATA: new_line TYPE REF TO data."out_data line space
DATA: SALE_line TYPE REF TO data. "销售收入数据行 space
DATA: COST_LINE TYPE REF TO DATA. "成本行 space
DATA: JUDGE_LINE TYPE REF TO DATA. "判断行
DATA: JUDGE_TABLE TYPE REF TO DATA. "判断表
FIELD-SYMBOLS: <J_TABLE> TYPE ANY TABLE,
<J_LINE> TYPE ANY.
FIELD-SYMBOLS: <l_table> TYPE ANY TABLE,
<l_line> TYPE ANY,
<l_field> TYPE ANY,
<SALE_LINE> TYPE ANY,"销售收入
<COST_LINE> TYPE ANY,"成本
<GP_LINE> TYPE ANY,"毛利
<TCOST_LINE> TYPE ANY."暂估成本
DATA: OUT_table TYPE REF TO data.
DATA: OUT_line TYPE REF TO data.
DATA: GP_LINE TYPE REF TO DATA.
DATA: TCOST_LINE TYPE REF TO DATA."暂估成本
FIELD-SYMBOLS: <OUT_TABLE> TYPE ANY TABLE,
<OUT_line> TYPE ANY,
<OUT_field> TYPE ANY.
"INORDER TO GET HIGH PERFORMANCE,GET DATA INTO DB_TABLE
"FIRST
FIELD-SYMBOLS: <DB_TABLE> TYPE ANY TABLE,
<DB_LINE> TYPE ANY,
<DB_FIELD> TYPE ANY.
DATA: DB_TABLE TYPE REF TO DATA.
DATA: DB_LINE TYPE REF TO DATA.
DATA: top_key TYPE lvc_nkey.
DATA: SHIPNAME(100).
DATA: BEGIN OF EXPAND_key1 OCCURS 0,
GROUP LIKE GRPDYNP-NAME_COALL,
CKEY TYPE lvc_nkey,
END OF EXPAND_KEY1.
DATA: OUT_CG LIKE COST_ELEMENT_GROUP OCCURS 0 WITH HEADER LINE."输出结构
DATA: TH1 TYPE BSIS-HKONT."判断产成品还是半成品
Extracted by Direct Download 46cd version 1.3.1 - E.G.Mellodew. 1998-2005 UK. Sap Release 46C
Description: YCOR1005_CONTROL_N
Include YCOR1005_CONTROL *----------------------------------------------------------------------*
* INCLUDE YCOR1005_CONTROL *
*----------------------------------------------------------------------*
DATA: g_alv_tree TYPE REF TO cl_gui_alv_tree,
g_custom_container TYPE REF TO cl_gui_custom_container.
DATA: gt_fieldcatalog TYPE lvc_t_fcat.
DATA: it_fieldcat TYPE lvc_t_fcat.
CLASS lcl_tree_event_receiver DEFINITION.
PUBLIC SECTION.
* §2. Define an event handler method to build up a context menu
* (postfix of event name: _CONTEXT_MENU_REQUEST).
* This event is fired each time the user klick with the right
* mouse button on a node.
METHODS: handle_node_cm_req
FOR EVENT node_context_menu_request OF cl_gui_alv_tree
IMPORTING node_key menu.
* §3. Define an event handler method to respond to a function code
* triggered by your menu (postfix: _CONTEXT_MENU_SELECTED).
* This event is fired when the user selects an entry of the
* build up context menu.
METHODS: handle_node_cm_sel
FOR EVENT node_context_menu_selected OF cl_gui_alv_tree
IMPORTING node_key fcode sender.
* 'sender' is an implicit event parameter that is provided by
* ABAP Objects runtime system. It contains a reference to the
* object that fired the event. You may directly use it to
* call methods of this instance.
ENDCLASS.
******************************************************************
CLASS lcl_tree_event_receiver IMPLEMENTATION.
* §4. Implement your event handler methods.
METHOD handle_node_cm_req.
* Event parameter 'menu' holds a reference to the standard context
* menu of ALV Tree (functions 'Expand'/'Collapse' on nodes).
* You may either append your own functions (separated by a line)
* or clear the menu if you do not want to allow standard functions.
* In this case the standard menu is cleared.
CALL METHOD menu->clear.
* The next line defines one line of the context menu.
CALL METHOD menu->add_function
EXPORTING
fcode = 'DEL_SUBTREE'
text = text-901. "Delete Subtree
ENDMETHOD.
*--------------------------------------------
METHOD handle_node_cm_sel.
* At this point of execution, the user selected a menu entry of the
* menu build up in event handler method handle_node_cm_req.
* Query your own function codes and react accordingly.
DATA l_rc TYPE c.
case fcode.
when 'DEL_SUBTREE'.
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
textline1 = 'Do you really want to delete'(902)
textline2 = 'this node and all its subnodes?'(903)
titel = 'Confirmation'(904)
cancel_display = ' '
IMPORTING
answer = l_rc.
IF l_rc EQ 'J'.
CALL METHOD sender->delete_subtree
EXPORTING i_node_key = node_key.
* Do not forget to refresh the display when you change the contents
* of your list.
CALL METHOD sender->frontend_update.
ENDIF.
endcase.
ENDMETHOD.
*---------------------------------------------
ENDCLASS.
Extracted by Direct Download 46cd version 1.3.1 - E.G.Mellodew. 1998-2005 UK. Sap Release 46C
Description: YCOR1005_PROCESS_DATA_N
Include YCOR1005_PROCESS_DATA *----------------------------------------------------------------------*
* INCLUDE YCOR1005_PROCESS_DATA *
*----------------------------------------------------------------------*
* 获得销售成本要素
FORM GET_SALE_COST_ELEMENT TABLES SE STRUCTURE COST_ELEMENT
USING VR TYPE ZCO04_A-ZVARIANT.
CLEAR SE[].
DATA: CE LIKE COST_ELEMENT OCCURS 0 WITH HEADER LINE.
SELECT * FROM ZCO04_A WHERE ZVARIANT = VR
AND Z1 = 'A'."get data from custom
PERFORM GET_COST_ELEMENT_LIST TABLES CE
USING ZCO04_A-COST_GROUP
ZCO04_A-Z1
ZCO04_A-ATTR
0.
APPEND LINES OF CE TO SALE_COST_ELEMENT.
ENDSELECT.
ENDFORM.
*"2. 提取BSIS表半成品科目(1121020100)
* 或产成品(1121040100)过帐日期为在选定日期范围内,
* 凭证类型为SB的所有凭证。
FORM GET_BELNR_01 TABLES BELNR STRUCTURE BELNR_LIST .
CLEAR: BELNR,BELNR[].
DATA: T1 TYPE BSEG-ABPER.
SELECT * FROM BSIS WHERE BLART = 'SB'
AND BUKRS = BUKRS
AND HKONT = TH1..
T1 = BSIS-BUDAT(6).
IF T1 IN ABPER.
BELNR-GJAHR = BSIS-GJAHR.
BELNR-BUKRS = BSIS-BUKRS.
BELNR-BELNR = BSIS-BELNR.
APPEND BELNR.
CLEAR BELNR.
ENDIF.
ENDSELECT.
ENDFORM.
*3. 根据凭证查询BSEG的ZUONR字段, 得出订单号。
FORM GET_ORDER_LIST TABLES ORDER STRUCTURE ORDER_LIST.
CLEAR: ORDER,ORDER[].
DATA: BELNR LIKE BELNR_LIST OCCURS 0 WITH HEADER LINE.
PERFORM GET_BELNR_01 TABLES BELNR.
DATA: T1 TYPE BSEG-ABPER.
LOOP AT BELNR.
CLEAR: BSEG,ORDER_LIST.
SELECT SINGLE ZUONR FROM BSEG INTO ORDER-ORDER
WHERE BELNR = BELNR-BELNR
AND GJAHR = BELNR-GJAHR
AND BUKRS = BELNR-BUKRS.
IF ORDER-ORDER <> ''.
APPEND ORDER.
CLEAR ORDER.
ENDIF.
ENDLOOP.
SORT ORDER BY ORDER.
DELETE ADJACENT DUPLICATES FROM ORDER.
ENDFORM.
"获得订单组F4订单列表
*---------------------------------------------------------------------*
* FORM GET_ORDER_F4_10 *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> F4_LIST *
*---------------------------------------------------------------------*
FORM GET_ORDER_F4_10 TABLES F4_LIST STRUCTURE F4_LIST.
CLEAR: F4_LIST,F4_LIST[].
DATA: ORDER LIKE ORDER_LIST OCCURS 0 WITH HEADER LINE.
PERFORM GET_ORDER_LIST TABLES ORDER.
CLEAR ORDER_10.
CLEAR ORDER_LIST[].
CLEAR F4_LIST[].
LOOP AT ORDER.
PERFORM GET_ORDER_TEXT USING ORDER-ORDER
CHANGING F4_LIST-TEXT.
DATA: S1(100).
SPLIT F4_LIST-TEXT AT '-' INTO SHIPNAME S1.
F4_LIST-TEXT = SHIPNAME.
F4_LIST-ORDER_10 = ORDER-ORDER(10).
APPEND F4_LIST.
CLEAR F4_LIST.
ENDLOOP.
SORT F4_LIST BY ORDER_10.
DELETE ADJACENT DUPLICATES FROM F4_LIST.
ENDFORM.
"根据选择屏幕,获得订单列表
*---------------------------------------------------------------------*
* FORM GET_ORDER *
*---------------------------------------------------------------------*
* 获取订单 *
*---------------------------------------------------------------------*
FORM GET_ORDER TABLES OLIST STRUCTURE ORDER_LIST.
DATA: S1(100).
CLEAR: OLIST,OLIST[].
CONCATENATE ORDER_10 '%' INTO S1.
CONDENSE S1 NO-GAPS.
SELECT * FROM COAS WHERE AUFNR LIKE S1.
OLIST-ORDER = COAS-AUFNR.
APPEND OLIST.
CLEAR OLIST.
ENDSELECT.
ENDFORM.
"根据成本要素组获得子成本要素组
*---------------------------------------------------------------------*
* FORM GET_COST_ELEMENT_LIST *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> T1 *
* --> COST_GROUP *
* --> LEVEL = 0 : 返回所有子组
* --> LEVEL = 1 : 返回一级子组
*---------------------------------------------------------------------*
FORM GET_COST_ELEMENT_GROUP_LIST TABLES T1 STRUCTURE COST_ELEMENT_GROUP
USING COST_GROUP
LEVEL.
CLEAR T1[].
DATA: T_NODES LIKE GRPOBJECTS OCCURS 0 WITH HEADER LINE.
DATA: T_VALUES LIKE GRPVALUES OCCURS 0 WITH HEADER LINE.
DATA: C_INFO LIKE GRPHINFO.
DATA: C_OVERWRITE LIKE SY-DATAR.
DATA: E_SETID LIKE SETHIER-SETID.
CONCATENATE '01022300' COST_GROUP INTO E_SETID.
CALL FUNCTION 'K_HIERARCHY_TABLES_READ'
EXPORTING
E_CLASS = '0102'
E_SETID = E_SETID
E_KOKRS = '2300'
E_OLD_LINE_LEVEL = 1
TABLES
T_NODES = T_NODES
T_VALUES = T_VALUES
CHANGING
C_INFO = C_INFO
C_OVERWRITE = C_OVERWRITE.
IF LEVEL = 1.
LOOP AT T_NODES WHERE HLEVEL = LEVEL.
CLEAR T1.
T1-ELEMENT_GROUP = T_NODES-SHORTNAME.
APPEND T1.
ENDLOOP.
ELSEIF LEVEL = 0.
LOOP AT T_NODES WHERE HLEVEL > 0.
CLEAR T1.
T1-ELEMENT_GROUP = T_NODES-SHORTNAME.
APPEND T1.
ENDLOOP.
ENDIF.
ENDFORM.
"根据成本要素组获得子成本要素
*---------------------------------------------------------------------*
* FORM GET_COST_ELEMENT_LIST *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> T1 *
* --> COST_GROUP *
* --> LEVEL = 0 : 返回所有子要素
* --> LEVEL = 1 : 返回一级子素
*---------------------------------------------------------------------*
FORM GET_COST_ELEMENT_LIST TABLES T1 STRUCTURE COST_ELEMENT
USING COST_GROUP
Z1
ATTR
LEVEL.
CLEAR T1[].
DATA: CG LIKE COST_ELEMENT_GROUP OCCURS 0 WITH HEADER LINE.
DATA: T_NODES LIKE GRPOBJECTS OCCURS 0 WITH HEADER LINE.
DATA: T_VALUES LIKE GRPVALUES OCCURS 0 WITH HEADER LINE.
DATA: C_INFO LIKE GRPHINFO.
DATA: C_OVERWRITE LIKE SY-DATAR.
DATA: E_SETID LIKE SETHIER-SETID.
CONCATENATE '01022300' COST_GROUP INTO E_SETID.
CALL FUNCTION 'K_HIERARCHY_TABLES_READ'
EXPORTING
E_CLASS = '0102'
E_SETID = E_SETID
E_KOKRS = '2300'
E_OLD_LINE_LEVEL = 1
TABLES
T_NODES = T_NODES
T_VALUES = T_VALUES
CHANGING
C_INFO = C_INFO
C_OVERWRITE = C_OVERWRITE.
IF LEVEL = 1.
LOOP AT T_VALUES WHERE SETID = E_SETID.
CLEAR T1.
T1-Z1 = Z1.
T1-ATTR = ATTR.
IF T_VALUES-VTO = ''.
T1-ELEMENT = T_VALUES-VFROM.
APPEND T1.
ELSE.
SELECT * FROM CSKA WHERE KTOPL = '2300'
AND ( KSTAR BETWEEN T_VALUES-VFROM
AND T_VALUES-VTO ).
T1-ELEMENT = CSKA-KSTAR.
APPEND T1.
ENDSELECT.
ENDIF.
ENDLOOP.
ELSEIF LEVEL = 0.
PERFORM GET_COST_ELEMENT_GROUP_LIST TABLES CG
USING COST_GROUP 0.
CG-ELEMENT_GROUP = COST_GROUP.
APPEND CG.
LOOP AT CG.
CLEAR E_SETID.
CONCATENATE '01022300' CG-ELEMENT_GROUP INTO E_SETID.
LOOP AT T_VALUES WHERE SETID = E_SETID.
CLEAR T1.
T1-Z1 = Z1.
T1-ATTR = ATTR.
IF T_VALUES-VTO = ''.
T1-ELEMENT = T_VALUES-VFROM.
APPEND T1.
ELSE.
SELECT * FROM CSKA WHERE KTOPL = '2300'
AND ( KSTAR BETWEEN T_VALUES-VFROM
AND T_VALUES-VTO ).
T1-ELEMENT = CSKA-KSTAR.
APPEND T1.
ENDSELECT.
ENDIF.
ENDLOOP.
ENDLOOP.
ENDIF.
ENDFORM.
*---------------------------------------------------------------------*
* FORM GET_COSP_WTG_VIA_GROUP *
*---------------------------------------------------------------------*
* 根据成本要素组/订单获得业务货币值
*---------------------------------------------------------------------*
* --> ORDER *
* --> COST_GROUP *
* --> P1 *
* --> P2 *
* --> WTG *
*---------------------------------------------------------------------*
FORM GET_COSP_WTG_VIA_GROUP USING ORDER
COST_GROUP
Z1
ATTR
P1 "期间开始
P2 "期间结束
CHANGING WTG.
CLEAR WTG.
DATA: WTG_TAB LIKE COSP-WTG001.
DATA: COST_ELEM LIKE COST_ELEMENT OCCURS 0 WITH HEADER LINE.
PERFORM GET_COST_ELEMENT_LIST TABLES COST_ELEM
USING COST_GROUP
Z1
ATTR
0 .
LOOP AT COST_ELEM.
PERFORM GET_COSP_WTG_VIA_ORDER USING ORDER
COST_ELEM-ELEMENT
P1 "期间开始
P2 "期间结束
CHANGING WTG_TAB.
WTG = WTG + WTG_TAB.
ENDLOOP.
ENDFORM.
"根据订单号/成本要素/期间 获得业务货币值
*---------------------------------------------------------------------*
* FORM GET_COSP_WTG *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> ORDER *
* --> COST_ELEMENT *
* --> P1 期间开始 TYPE I
* --> P2 期间结束 TYPE I
* --> WTG *
*---------------------------------------------------------------------*
FORM GET_COSP_WTG_VIA_ORDER USING ORDER
COST_ELEMENT
P1 "期间开始
P2 "期间结束
CHANGING WTG.
CLEAR WTG.
DATA: FN(30).
DATA: FN_P(3) TYPE N VALUE '000'.
DATA: TMP(10).
DATA: PERIOD TYPE I.
FIELD-SYMBOLS: <F1> TYPE ANY.
DATA: OBJNR TYPE COSP-OBJNR.
CONCATENATE 'OR' ORDER INTO OBJNR.
DATA: P1_IN TYPE I.
IF P1(4) = P2(4).
PERIOD = P2 - P1 + 1.
SELECT * FROM COSP WHERE GJAHR = P1(4)
AND OBJNR = OBJNR
AND WRTTP = '04'
AND KSTAR = COST_ELEMENT.
DO PERIOD TIMES.
IF SY-INDEX = 1.
FN_P = P1+4(2)..
ELSE.
FN_P = P1+4(2) + SY-INDEX - 1.
ENDIF.
CLEAR FN.
CONCATENATE 'WKG' FN_P INTO FN.
ASSIGN COMPONENT FN OF STRUCTURE COSP TO <F1> .
WTG = WTG + <F1>.
ENDDO.
ENDSELECT.
SELECT * FROM COSS WHERE GJAHR = P1(4)
AND OBJNR = OBJNR
AND WRTTP = '04'
AND KSTAR = COST_ELEMENT.
DO PERIOD TIMES.
IF SY-INDEX = 1.
FN_P = P1+4(2).
ELSE.
FN_P = P1+4(2) + SY-INDEX - 1.
ENDIF.
CLEAR FN.
CONCATENATE 'WKG' FN_P INTO FN.
ASSIGN COMPONENT FN OF STRUCTURE COSS TO <F1> .
WTG = WTG + <F1>.
ENDDO.
ENDSELECT.
ELSE.
PERIOD = 12 - P1+4(2) + 1.
SELECT * FROM COSP WHERE GJAHR = P1(4)
AND OBJNR = OBJNR
AND WRTTP = '04'
AND KSTAR = COST_ELEMENT.
DO PERIOD TIMES.
IF SY-INDEX = 1.
FN_P = P1+4(2).
ELSE.
FN_P = P1+4(2) + SY-INDEX - 1.
ENDIF.
CLEAR FN.
CONCATENATE 'WKG' FN_P INTO FN.
ASSIGN COMPONENT FN OF STRUCTURE COSP TO <F1> .
WTG = WTG + <F1>.
ENDDO.
ENDSELECT.
SELECT * FROM COSS WHERE GJAHR = P1(4)
AND OBJNR = OBJNR
AND WRTTP = '04'
AND KSTAR = COST_ELEMENT.
DO PERIOD TIMES.
IF SY-INDEX = 1.
FN_P = P1+4(2).
ELSE.
FN_P = P1+4(2) + SY-INDEX - 1.
ENDIF.
CLEAR FN.
CONCATENATE 'WKG' FN_P INTO FN.
ASSIGN COMPONENT FN OF STRUCTURE COSS TO <F1> .
WTG = WTG + <F1>.
ENDDO.
ENDSELECT.
PERIOD = P2+4(2).
SELECT * FROM COSP WHERE GJAHR = P2(4)
AND OBJNR = OBJNR
AND WRTTP = '04'
AND KSTAR = COST_ELEMENT.
DO PERIOD TIMES.
IF SY-INDEX = 1.
FN_P = 1.
ELSE.
FN_P = SY-INDEX.
ENDIF.
CLEAR FN.
CONCATENATE 'WKG' FN_P INTO FN.
ASSIGN COMPONENT FN OF STRUCTURE COSP TO <F1> .
WTG = WTG + <F1>.
ENDDO.
ENDSELECT.
SELECT * FROM COSS WHERE GJAHR = P2(4)
AND OBJNR = OBJNR
AND WRTTP = '04'
AND KSTAR = COST_ELEMENT.
DO PERIOD TIMES.
IF SY-INDEX = 1.
FN_P = 1.
ELSE.
FN_P = SY-INDEX.
ENDIF.
CLEAR FN.
CONCATENATE 'WKG' FN_P INTO FN.
ASSIGN COMPONENT FN OF STRUCTURE COSS TO <F1> .
WTG = WTG + <F1>.
ENDDO.
ENDSELECT.
ENDIF.
ENDFORM. |
最近读者:

