ALV_GRID + 动态显示列
2007-12-18 10:50
323 查看
Description: YCOR1004_N
单船收入成本明细表
Extracted by Direct Download 46cd version 1.3.1 - E.G.Mellodew. 1998-2005 UK. Sap Release 46C
Description: YCOR1004_TOP_N
Include YCOR1004_TOP
Extracted by Direct Download 46cd version 1.3.1 - E.G.Mellodew. 1998-2005 UK. Sap Release 46C
Description: YCOR1004_PROCESS_DATA_N
Include YCOR1004_PROCESS_DATA
Extracted by Direct Download 46cd version 1.3.1 - E.G.Mellodew. 1998-2005 UK. Sap Release 46C
Description: YCOR1004_FORMS_N
Include YCOR1004_FORMS
单船收入成本明细表
*---------------------------------------------------------------------* * PROGRAM ID : YCOR1004 * * APPLICATION NAME : CO * * AUTHOR : Victor.Pan * * TRANSACTION : ZCOR06 * * PROGRAM TYPE : REPORT * * OUTPUT : ALV_TREE 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 YCOR1004 . include YCOR1004_TOP_N. *Screen elements SELECTION-SCREEN BEGIN OF BLOCK RAD1 WITH FRAME TITLE TEXT-003. PARAMETERS: BUKRS LIKE BSEG-BUKRS OBLIGATORY."公司代码 SELECT-OPTIONS: ABPER FOR BSEG-ABPER OBLIGATORY."期间 *PARAMETERS: CGP LIKE GRPDYNP-NAME_COALL DEFAULT 'GD01'. PARAMETERS: VR LIKE ZCO04_B-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."产成品 SELECT-OPTIONS: PRCTR FOR COAS-PRCTR."利润中心 SELECTION-SCREEN END OF BLOCK RAD2. SELECTION-SCREEN BEGIN OF BLOCK RAD3 WITH FRAME TITLE TEXT-001. PARAMETERS: M1 RADIOBUTTON GROUP A2 USER-COMMAND SELE DEFAULT 'X' . "千元 PARAMETERS: M2 RADIOBUTTON GROUP A2."元 SELECTION-SCREEN END OF BLOCK RAD3. *AT SELECTION-SCREEN ON VALUE-REQUEST FOR PRCTR-LOW. *PERFORM GET_F4 CHANGING PRCTR-LOW. *AT SELECTION-SCREEN ON VALUE-REQUEST FOR PRCTR-HIGH. *PERFORM GET_F4 CHANGING PRCTR-HIGH. AT SELECTION-SCREEN. AUTHORITY-CHECK OBJECT 'ZBUKRS' ID 'BUKRS' FIELD BUKRS. IF SY-SUBRC <> 0. MESSAGE E000(ZFI01) WITH '没有此公司代码权限'. ENDIF. START-OF-SELECTION. PERFORM GET_PRCTR."获得列润中心与订单 PERFORM GET_SALE_COST_ELEMENT TABLES SALE_COST_ELEMENT USING VR. "获得销售成本要素 CALL SCREEN 100. include YCOR1004_PROCESS_DATA_N. include YCOR1004_FORMS_N. *Text elements *---------------------------------------------------------- * 001 单位选择 * 002 半成品/产成品 * 003 选择条件 *Selection texts *---------------------------------------------------------- * ABPER 期间 * BUKRS 公司代码 * CGP 成本要素组 * H1 半成品 * H2 产成品 * M1 千元 * M2 元 * PRCTR 利润中心 * VR 变式 *Messages *---------------------------------------------------------- * * 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: YCOR1004_TOP_N
Include YCOR1004_TOP
*----------------------------------------------------------------------* * INCLUDE YCOR1004_TOP * *----------------------------------------------------------------------* TABLES: BSIS,AUFK,COSP,BSEG,COAS,COSS,ZCO04_A,BKPF,CSKA. 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 pa0002-nachn, ORDER LIKE AUFK-AUFNR, END OF F4_LIST. DATA: BEGIN OF F4_LIST_SHOW OCCURS 0, PRCTR LIKE COAS-PRCTR, TEXT LIKE COAS-KTEXT, END OF F4_LIST_SHOW. 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,"成本要素组列表 ELEMENT_GROUP LIKE GRPDYNP-NAME_COALL, Z1 LIKE ZCO04_A-Z1,"取数属性 ATTR LIKE ZCO04_A-ATTR,"+/-属性 END OF COST_ELEMENT_GROUP. DATA: CG01 LIKE COST_ELEMENT_GROUP OCCURS 0 WITH HEADER LINE. DATA: CE01 LIKE COST_ELEMENT OCCURS 0 WITH HEADER LINE. DATA: SALE_COST_ELEMENT LIKE COST_ELEMENT OCCURS 0 WITH HEADER LINE. DATA: NEW_TABLE TYPE REF TO DATA. DATA: NEW_LINE TYPE REF TO DATA. FIELD-SYMBOLS: <OUT_TABLE> TYPE ANY TABLE, <OUT_LINE> TYPE ANY. DATA: gt_fieldcatalog TYPE lvc_t_fcat. DATA: it_fieldcat TYPE lvc_t_fcat."CREATE TABLE STRUCTURE data: gt_fieldcat type lvc_t_fcat."display structure DATA: is_fieldcat LIKE LINE OF it_fieldcat."WORK AREA DATA: CONTAINER1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER. DATA: GO_GRID TYPE REF TO CL_GUI_ALV_GRID. DATA: LAST_COMMAND TYPE SY-UCOMM. DATA: TH1 TYPE BSIS-HKONT.
Extracted by Direct Download 46cd version 1.3.1 - E.G.Mellodew. 1998-2005 UK. Sap Release 46C
Description: YCOR1004_PROCESS_DATA_N
Include YCOR1004_PROCESS_DATA
*----------------------------------------------------------------------* * INCLUDE YCOR1004_PROCESS_DATA * *----------------------------------------------------------------------* *&---------------------------------------------------------------------* *& Form GET_PRCTR *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM GET_PRCTR. CLEAR ORDER_LIST[]. CLEAR F4_LIST[]. CLEAR F4_LIST_SHOW[]. DATA: T1 TYPE BSEG-ABPER. "成品与半成品 IF H1 = 'X'. TH1 = '1121020100'. ELSEIF H2 = 'X'. TH1 = '1121040100'. ENDIF. SELECT * FROM BSIS WHERE "BLART = 'SB' "AND BUKRS = BUKRS " AND PRCTR IN PRCTR AND HKONT = TH1. T1 = BSIS-BUDAT(6). IF T1 IN ABPER. CLEAR: BSEG,ORDER_LIST-ORDER. * SELECT SINGLE ZUONR FROM BSEG INTO ORDER_LIST-ORDER * WHERE BELNR = BSIS-BELNR * AND GJAHR = BSIS-GJAHR * AND BUKRS = BUKRS * AND WRBTR <> 0. * IF ORDER_LIST-ORDER <> ''. ORDER_LIST-ORDER = BSIS-ZUONR. APPEND ORDER_LIST. "加入订单列表 * ENDIF. ENDIF. ENDSELECT. SORT ORDER_LIST BY ORDER. DELETE ADJACENT DUPLICATES FROM ORDER_LIST."删除冗余 "CREATE F4_LIST LOOP AT ORDER_LIST. SELECT PRCTR FROM COAS INTO F4_LIST_SHOW-PRCTR WHERE AUFNR = ORDER_LIST-ORDER. PERFORM GET_PRCTR_TEXT USING F4_LIST_SHOW-PRCTR CHANGING F4_LIST_SHOW-TEXT. APPEND F4_LIST_SHOW. "加入F4_列表 ENDSELECT. ENDLOOP. SORT F4_LIST_SHOW BY PRCTR. DELETE ADJACENT DUPLICATES FROM F4_LIST_SHOW."删除冗余 ENDFORM. " GET_PRCTR "利润中心 *---------------------------------------------------------------------* * FORM GET_PRCTR_TEXT * *---------------------------------------------------------------------* * 获得利润中心文本 * *---------------------------------------------------------------------* * --> PRCTR * * --> TEXT * *---------------------------------------------------------------------* FORM GET_PRCTR_TEXT USING PRCTR CHANGING TEXT. CLEAR TEXT. SELECT SINGLE KTEXT FROM CEPCT INTO TEXT WHERE SPRAS = '1' AND PRCTR = PRCTR AND KOKRS = '2300'. ENDFORM. *---------------------------------------------------------------------* * FORM BUILD_OUT_TABLE * *---------------------------------------------------------------------* * create output alv structure * *---------------------------------------------------------------------* FORM BUILD_OUT_TABLE. CLEAR it_fieldcat[]. clear is_fieldcat. is_fieldcat-fieldname = 'AUART'. is_fieldcat-ref_field = 'AUART'.. is_fieldcat-ref_table = 'COAS'. is_fieldcat-COLTEXT = '工程类型'. APPEND is_fieldcat TO it_fieldcat. clear is_fieldcat. is_fieldcat-fieldname = 'AUART_TEXT'. is_fieldcat-ref_field = 'KTEXT'.. is_fieldcat-ref_table = 'COAS'. is_fieldcat-COLTEXT = '工程类型'. APPEND is_fieldcat TO it_fieldcat. clear is_fieldcat. is_fieldcat-fieldname = 'AUFNR'. is_fieldcat-ref_field = 'AUFNR'.. is_fieldcat-ref_table = 'AUFK'. is_fieldcat-COLTEXT = '工程编号'. APPEND is_fieldcat TO it_fieldcat. clear is_fieldcat. is_fieldcat-fieldname = 'AUFNR_TEXT'. is_fieldcat-ref_field = 'KTEXT'. is_fieldcat-ref_table = 'COAS'. is_fieldcat-COLTEXT = '订单名称'. APPEND is_fieldcat TO it_fieldcat. clear is_fieldcat. is_fieldcat-fieldname = 'ORDER_STATUS'. is_fieldcat-COLTEXT = '订单状态'. APPEND is_fieldcat TO it_fieldcat. clear is_fieldcat. is_fieldcat-fieldname = 'ORDER10'. is_fieldcat-COLTEXT = '订单组'. APPEND is_fieldcat TO it_fieldcat. clear is_fieldcat. is_fieldcat-fieldname = 'IN_AMOUNT'. is_fieldcat-ref_field = 'WTG001'. is_fieldcat-ref_table = 'COSP'. is_fieldcat-COLTEXT = '收入金额'. is_fieldcat-do_sum = 'X'. APPEND is_fieldcat TO it_fieldcat. PERFORM BUILD_COL01. PERFORM BUILD_COL02. clear is_fieldcat. is_fieldcat-fieldname = 'COST_AMOUNT'. is_fieldcat-ref_field = 'WTG001'. is_fieldcat-ref_table = 'COSP'. is_fieldcat-COLTEXT = '成本'. is_fieldcat-do_sum = 'X'. APPEND is_fieldcat TO it_fieldcat. clear is_fieldcat. is_fieldcat-fieldname = 'PROFIT'. is_fieldcat-ref_field = 'WTG001'. is_fieldcat-ref_table = 'COSP'. is_fieldcat-COLTEXT = '毛利'. is_fieldcat-do_sum = 'X'. APPEND is_fieldcat TO it_fieldcat. clear is_fieldcat. is_fieldcat-fieldname = 'PROFIT_RATE'. is_fieldcat-ref_field = 'WTG001'. is_fieldcat-ref_table = 'COSP'. is_fieldcat-COLTEXT = '毛利率%'. * is_fieldcat-EDIT_MASK = '____%'. is_fieldcat-NO_ZERO = 'X'. is_fieldcat-LZERO = ''. is_fieldcat-do_sum = ''. APPEND is_fieldcat TO it_fieldcat. clear is_fieldcat. is_fieldcat-fieldname = 'TCOST'. is_fieldcat-ref_field = 'WTG001'. is_fieldcat-ref_table = 'COSP'. is_fieldcat-COLTEXT = '暂估成本'. is_fieldcat-do_sum = 'X'. APPEND is_fieldcat TO it_fieldcat. CALL METHOD cl_alv_table_create=>create_dynamic_table EXPORTING it_fieldcatalog = it_fieldcat IMPORTING ep_table = new_table. ASSIGN new_table->* TO <OUT_table>. CREATE DATA new_line LIKE LINE OF <OUT_table>. ASSIGN new_line->* TO <OUT_line>. clear <OUT_table>[]. ENDFORM. *---------------------------------------------------------------------* * FORM BUILD_COL02 * *---------------------------------------------------------------------* * build cost element cols * *---------------------------------------------------------------------* FORM BUILD_COL02. DATA: CE LIKE COST_ELEMENT OCCURS 0 WITH HEADER LINE. "get cost elements list via group id. * PERFORM GET_COST_ELEMENT_LIST TABLES CE * USING 'GD0102' * 0. PERFORM GET_COST_ELEMENT_ME TABLES CE. CE01[] = CE[]. DATA: COST_N(3) TYPE N VALUE '000'. LOOP AT CE. COST_N = SY-TABIX. CLEAR is_fieldcat. CONCATENATE 'ELEMENT' COST_N INTO is_fieldcat-fieldname. is_fieldcat-ref_field = 'WTG001'. is_fieldcat-ref_table = 'COSP'. PERFORM GET_COST_ELEMENT_TEXT USING CE-ELEMENT CHANGING is_fieldcat-COLTEXT. is_fieldcat-do_sum = 'X'. APPEND is_fieldcat TO it_fieldcat. ENDLOOP. ENDFORM. *---------------------------------------------------------------------* * FORM BUILD_COL01 * *---------------------------------------------------------------------* * build sub element group alv output cols * *---------------------------------------------------------------------* FORM BUILD_COL01. DATA: COST_GROUP LIKE COST_ELEMENT_GROUP OCCURS 0 WITH HEADER LINE. "get cost subgroup list via group id. * PERFORM GET_COST_ELEMENT_GROUP_LIST * TABLES COST_GROUP * USING 'GD0102' * 1. PERFORM GET_COST_ELEMENT_GROUP_ME TABLES COST_GROUP. CG01[] = COST_GROUP[]. DATA: COST_N(3) TYPE N VALUE '000'. LOOP AT COST_GROUP. COST_N = SY-TABIX. CLEAR is_fieldcat. CONCATENATE 'GROUP' COST_N INTO is_fieldcat-fieldname. is_fieldcat-ref_field = 'WTG001'. is_fieldcat-ref_table = 'COSP'. PERFORM GET_COST_GROUP_TEXT USING COST_GROUP-ELEMENT_GROUP CHANGING is_fieldcat-COLTEXT. is_fieldcat-do_sum = 'X'. APPEND is_fieldcat TO it_fieldcat. ENDLOOP. ENDFORM. *---------------------------------------------------------------------* * FORM GET_F4 * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* * --> NAME * *---------------------------------------------------------------------* FORM GET_F4 CHANGING NAME. DATA : f4help LIKE TABLE OF ddshretval WITH HEADER LINE. DATA: dynpprog LIKE SY-REPID. dynpprog = SY-REPID. perFORM GET_PRCTR. "获得利润中心 CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING retfield = 'PRCTR' dynpprog = dynpprog dynpnr = sy-dynnr stepl = '1' window_title = '选择值' value_org = 'S' TABLES value_tab = F4_LIST_SHOW return_tab = f4help. NAME = f4help-fieldval. ENDFORM. *&---------------------------------------------------------------------* *& Module STATUS_0100 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE STATUS_0100 OUTPUT. SET PF-STATUS 'MAIN'. IF GO_GRID IS INITIAL. CREATE OBJECT container1 EXPORTING container_name = 'C1'. CREATE OBJECT GO_GRID EXPORTING i_parent = container1. PERFORM BUILD_OUT_TABLE. "build output table structure PERFORM GET_OUT_TABLE_DATA."get output data ENDIF. CLEAR GT_FIELDCAT[]. IF LAST_COMMAND = 'F2'. PERFORM TRANSFER_IT_TO_GT_02. "format output catlog ELSEIF LAST_COMMAND = 'F3'. PERFORM TRANSFER_IT_TO_GT_03. ELSE. PERFORM TRANSFER_IT_TO_GT_01. ENDIF. DATA: SLA TYPE LVC_S_LAYO. SLA-CWIDTH_OPT = 'X'. DATA: IT_SORT TYPE LVC_T_SORT. DATA: IT_TAB TYPE LVC_S_SORT. CLEAR IT_SORT[]. IT_TAB-FIELDNAME = 'ORDER_STATUS'. IT_TAB-SPOS = '1'. IT_TAB-UP = 'X'. IT_TAB-DOWN = SPACE. IT_TAB-SUBTOT = 'X'. APPEND IT_TAB TO IT_SORT. IT_TAB-FIELDNAME = 'ORDER10'. IT_TAB-SPOS = '2'. IT_TAB-UP = 'X'. IT_TAB-DOWN = SPACE. IT_TAB-SUBTOT = 'X'. APPEND IT_TAB TO IT_SORT. CONCATENATE '单船收入成本明细表 ' ABPER-LOW '-' ABPER-HIGH INTO SLA-GRID_TITLE. PERFORM MODIFY_OUTPUT. call method go_grid->set_table_for_first_display exporting * is_variant = LS_VARI i_save = 'X' is_layout = sla changing it_outtab = <OUT_TABLE>[] it_fieldcatalog = gt_fieldcat[] IT_SORT = IT_SORT[] exceptions invalid_parameter_combination = 1 program_error = 2 too_many_lines = 3 others = 4. ENDMODULE. " STATUS_0100 OUTPUT *&---------------------------------------------------------------------* *& Module USER_COMMAND_0100 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE USER_COMMAND_0100 INPUT. LAST_COMMAND = SY-UCOMM. CASE SY-UCOMM. WHEN 'BACK'. SET SCREEN 0.LEAVE SCREEN. WHEN 'F1'. WHEN 'F2'. WHEN 'F3'. ENDCASE. ENDMODULE. " USER_COMMAND_0100 INPUT *&---------------------------------------------------------------------* *& Form BUILD_DETAIL_TABLE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM BUILD_DETAIL_TABLE. ENDFORM. " BUILD_DETAIL_TABLE *&---------------------------------------------------------------------* *& Form TRANSFER_IT_TO_GT_01 *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM TRANSFER_IT_TO_GT_01. LOOP AT IT_FIELDCAT INTO is_fieldcat. IF is_fieldcat-FIELDNAME = 'AUART'. is_fieldcat-no_out = 'X'. ELSEIF is_fieldcat-FIELDNAME = 'AUFNR'. is_fieldcat-no_out = 'X'. ELSEIF is_fieldcat-FIELDNAME(7) = 'ELEMENT'. is_fieldcat-no_out = 'X'. ELSEIF is_fieldcat-FIELDNAME(5) = 'GROUP'. is_fieldcat-no_out = 'X'. ELSEIF is_fieldcat-FIELDNAME = 'ORDER10'. is_fieldcat-no_out = 'X'. ENDIF. APPEND is_fieldcat TO GT_FIELDCAT. ENDLOOP. ENDFORM. " TRANSFER_IT_TO_GT_01 *---------------------------------------------------------------------* * FORM TRANSFER_IT_TO_GT_02 * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* FORM TRANSFER_IT_TO_GT_02. LOOP AT IT_FIELDCAT INTO is_fieldcat. IF is_fieldcat-FIELDNAME = 'AUART'. is_fieldcat-no_out = 'X'. ELSEIF is_fieldcat-FIELDNAME = 'AUFNR'. is_fieldcat-no_out = 'X'. ELSEIF is_fieldcat-FIELDNAME(7) = 'ELEMENT'. is_fieldcat-no_out = 'X'. ELSEIF is_fieldcat-FIELDNAME = 'ORDER10'. is_fieldcat-no_out = 'X'. ENDIF. APPEND is_fieldcat TO GT_FIELDCAT. ENDLOOP. ENDFORM. " TRANSFER_IT_TO_GT_01 *---------------------------------------------------------------------* * FORM TRANSFER_IT_TO_GT_03 * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* FORM TRANSFER_IT_TO_GT_03. LOOP AT IT_FIELDCAT INTO is_fieldcat. IF is_fieldcat-FIELDNAME = 'AUART'. is_fieldcat-no_out = 'X'. ELSEIF is_fieldcat-FIELDNAME = 'AUFNR'. is_fieldcat-no_out = 'X'. ELSEIF is_fieldcat-FIELDNAME(5) = 'GROUP'. is_fieldcat-no_out = 'X'. ELSEIF is_fieldcat-FIELDNAME = 'ORDER10'. is_fieldcat-no_out = 'X'. ENDIF. APPEND is_fieldcat TO GT_FIELDCAT. ENDLOOP. ENDFORM. " TRANSFER_IT_TO_GT_01 *---------------------------------------------------------------------* * FORM GET_OUT_TABLE_DATA * *---------------------------------------------------------------------* * get output data * *---------------------------------------------------------------------* FORM GET_OUT_TABLE_DATA. FIELD-SYMBOLS: <FIELD> TYPE ANY, <FIELD1> TYPE ANY, <AUFNR> TYPE ANY, <ORDER10> TYPE ANY. LOOP AT ORDER_LIST. CLEAR <OUT_LINE>. "get line item from db PERFORM GET_LINE_DB_DATA USING ORDER_LIST-ORDER CHANGING <OUT_LINE>. ASSIGN COMPONENT 'AUFNR' OF STRUCTURE <OUT_LINE> TO <AUFNR>. ASSIGN COMPONENT 'ORDER10' OF STRUCTURE <OUT_LINE> TO <ORDER10>. <ORDER10> = <AUFNR>(10). ASSIGN COMPONENT 'IN_AMOUNT' OF STRUCTURE <OUT_LINE> TO <FIELD>. ASSIGN COMPONENT 'COST_AMOUNT' OF STRUCTURE <OUT_LINE> TO <FIELD1>. IF <FIELD> <> 0 OR <FIELD1> <> 0. INSERT <OUT_LINE> INTO TABLE <OUT_TABLE>. ENDIF. ENDLOOP. DATA: ORDER1 LIKE ORDER_LIST OCCURS 0 WITH HEADER LINE. CLEAR ORDER1[]. SELECT * FROM BSIS WHERE BUKRS = BUKRS AND HKONT = '1121020200' AND ZUONR <> ''. DATA: T1 TYPE D. T1 = BSIS-BUDAT(6). IF T1 IN ABPER. CLEAR: BSEG,ORDER1-ORDER. ORDER1-ORDER = BSIS-ZUONR. DATA: D1(20). CLEAR D1. CONCATENATE BSIS-ZUONR(10) '%' INTO D1. SELECT SINGLE * FROM BSIS WHERE ZUONR LIKE D1 AND HKONT = TH1. IF SY-SUBRC = 0. READ TABLE ORDER_LIST WITH KEY ORDER = ORDER1-ORDER. IF SY-SUBRC <> 0. APPEND ORDER1. "加入订单列表 ENDIF. ENDIF. ENDIF. ENDSELECT. DELETE ADJACENT DUPLICATES FROM ORDER1. LOOP AT ORDER1. CLEAR <OUT_LINE>. ASSIGN COMPONENT 'AUFNR' OF STRUCTURE <OUT_LINE> TO <FIELD1>. <FIELD1> = ORDER1-ORDER. ASSIGN COMPONENT 'AUFNR_TEXT' OF STRUCTURE <OUT_LINE> TO <FIELD1>. PERFORM GET_ORDER_TEXT USING ORDER1-ORDER CHANGING <FIELD1>. ASSIGN COMPONENT 'AUART' OF STRUCTURE <OUT_LINE> TO <FIELD1>. PERFORM GET_AUART USING ORDER1-ORDER "获得订单 CHANGING <FIELD1>. DATA: AUART TYPE AUFK-AUART. AUART = <FIELD1>. ASSIGN COMPONENT 'AUART_TEXT' OF STRUCTURE <OUT_LINE> TO <FIELD1>. PERFORM GET_AUART_TEXT USING AUART CHANGING <FIELD1>. ASSIGN COMPONENT 'ORDER_STATUS' OF STRUCTURE <OUT_LINE> TO <FIELD1>. PERFORM GET_AUFNR_STATUS USING ORDER1-ORDER "获得订单状态 CHANGING <FIELD1>. "暂估成本 ASSIGN COMPONENT 'TCOST' OF STRUCTURE <OUT_LINE> TO <FIELD1>. SELECT * FROM BSIS WHERE BUKRS = BUKRS * AND PRCTR IN PRCTR AND HKONT = '1121020200' AND SGTXT <> '2006年末在制品'. IF BSIS-ZUONR = ORDER1-ORDER. T1 = BSIS-BUDAT(6). IF T1 IN ABPER. IF BSIS-SHKZG = 'H'. BSIS-DMBTR = BSIS-DMBTR * -1. ENDIF. SELECT SINGLE * FROM COAS WHERE AUFNR = ORDER1-ORDER AND PRCTR IN PRCTR. IF SY-SUBRC = 0. <FIELD1> = <FIELD1> + BSIS-DMBTR. ENDIF. ENDIF. ENDIF. ENDSELECT. IF M1 = 'X'. <FIELD1> = <FIELD1> / 1000. ENDIF. "get line item from db * PERFORM GET_LINE_DB_DATA USING ORDER_LIST-ORDER * CHANGING <OUT_LINE>. ASSIGN COMPONENT 'AUFNR' OF STRUCTURE <OUT_LINE> TO <AUFNR>. <AUFNR> = ORDER1-ORDER. ASSIGN COMPONENT 'ORDER10' OF STRUCTURE <OUT_LINE> TO <ORDER10>. <ORDER10> = <AUFNR>(10). ASSIGN COMPONENT 'IN_AMOUNT' OF STRUCTURE <OUT_LINE> TO <FIELD>. ASSIGN COMPONENT 'COST_AMOUNT' OF STRUCTURE <OUT_LINE> TO <FIELD1>. * IF <FIELD> <> 0 OR <FIELD1> <> 0. INSERT <OUT_LINE> INTO TABLE <OUT_TABLE>. * ENDIF. ENDLOOP. ENDFORM. *---------------------------------------------------------------------* * FORM GET_LINE1 * *---------------------------------------------------------------------* * get line data from db * *---------------------------------------------------------------------* * --> ORDER * * --> CLINE * *---------------------------------------------------------------------* FORM GET_LINE_DB_DATA USING ORDER CHANGING CLINE. FIELD-SYMBOLS: <FIELD1> TYPE ANY. ASSIGN COMPONENT 'AUFNR' OF STRUCTURE CLINE TO <FIELD1>. <FIELD1> = ORDER. ASSIGN COMPONENT 'AUFNR_TEXT' OF STRUCTURE CLINE TO <FIELD1>. PERFORM GET_ORDER_TEXT USING ORDER CHANGING <FIELD1>. ASSIGN COMPONENT 'AUART' OF STRUCTURE CLINE TO <FIELD1>. PERFORM GET_AUART USING ORDER "获得订单 CHANGING <FIELD1>. DATA: AUART TYPE AUFK-AUART. AUART = <FIELD1>. ASSIGN COMPONENT 'AUART_TEXT' OF STRUCTURE CLINE TO <FIELD1>. PERFORM GET_AUART_TEXT USING AUART CHANGING <FIELD1>. ASSIGN COMPONENT 'ORDER_STATUS' OF STRUCTURE CLINE TO <FIELD1>. PERFORM GET_AUFNR_STATUS USING ORDER "获得订单状态 CHANGING <FIELD1>. ASSIGN COMPONENT 'IN_AMOUNT' OF STRUCTURE CLINE TO <FIELD1>. DATA: SG LIKE COST_ELEMENT_GROUP OCCURS 0 WITH HEADER LINE. DATA: D1 TYPE BSEG-DMBTR. "获得销售收入成本要素组 CLEAR SG[]. PERFORM GET_SALE_ELEMENT_GROUP_ME TABLES SG . LOOP AT SG. CLEAR D1. PERFORM GET_COSP_WTG_VIA_GROUP USING ORDER SG-ELEMENT_GROUP SG-Z1 SG-ATTR ABPER-LOW "期间开始 ABPER-HIGH "期间结束 CHANGING D1. <FIELD1> = <FIELD1> + D1. ENDLOOP. DATA: COST_N(3) TYPE N VALUE '000'. DATA: FN(30). DATA: COST_AMOUNT TYPE COSP-WTG001. "获得成本要素数据 LOOP AT CE01. COST_N = SY-TABIX. CONCATENATE 'ELEMENT' COST_N INTO FN. ASSIGN COMPONENT FN OF STRUCTURE CLINE TO <FIELD1>. PERFORM GET_COSP_WTG_VIA_ORDER1 USING ORDER CE01-ELEMENT CE01-Z1 CE01-ATTR ABPER-LOW "期间开始 ABPER-HIGH "期间结束 CHANGING <FIELD1>. COST_AMOUNT = COST_AMOUNT + <FIELD1>. ENDLOOP. ASSIGN COMPONENT 'COST_AMOUNT' OF STRUCTURE CLINE TO <FIELD1>. <FIELD1> = COST_AMOUNT. DATA: SALE_AMOUNT TYPE COSP-WTG001. FIELD-SYMBOLS: <F1> TYPE ANY, <F2> TYPE ANY. ASSIGN COMPONENT 'IN_AMOUNT' OF STRUCTURE CLINE TO <F1>. SALE_AMOUNT = <F1>. "毛利 ASSIGN COMPONENT 'PROFIT' OF STRUCTURE CLINE TO <F2>. <F2> = <F1> - COST_AMOUNT. "毛利率 ASSIGN COMPONENT 'PROFIT_RATE' OF STRUCTURE CLINE TO <F1>. IF SALE_AMOUNT <> 0. <F1> = <F2> / SALE_AMOUNT. ENDIF. "获得成本要素组数据 LOOP AT CG01. COST_N = SY-TABIX. CLEAR FN. CONCATENATE 'GROUP' COST_N INTO FN. ASSIGN COMPONENT FN OF STRUCTURE CLINE TO <FIELD1>. PERFORM GET_COSP_WTG_VIA_GROUP USING ORDER CG01-ELEMENT_GROUP CG01-Z1 CG01-ATTR ABPER-LOW "期间开始 ABPER-HIGH "期间结束 CHANGING <FIELD1>. ENDLOOP. * "暂估成本 * "暂估成本 DATA: T1 TYPE D. ASSIGN COMPONENT 'TCOST' OF STRUCTURE CLINE TO <FIELD1>. SELECT * FROM BSIS WHERE BUKRS = BUKRS * AND PRCTR IN PRCTR AND HKONT = '1121020200' AND SGTXT <> '2006年末在制品'. IF BSIS-ZUONR = ORDER_LIST-ORDER. T1 = BSIS-BUDAT(6). IF T1 IN ABPER. IF BSIS-SHKZG = 'H'. BSIS-DMBTR = BSIS-DMBTR * -1. ENDIF. SELECT SINGLE * FROM COAS WHERE AUFNR = ORDER_LIST-ORDER AND PRCTR IN PRCTR. IF SY-SUBRC = 0. <FIELD1> = <FIELD1> + BSIS-DMBTR. ENDIF. ENDIF. ENDIF. ENDSELECT. IF M1 = 'X'. <FIELD1> = <FIELD1> / 1000. ENDIF. ENDFORM. *---------------------------------------------------------------------* * FORM GET_AUART * *---------------------------------------------------------------------* * 获得订单类型 * *---------------------------------------------------------------------* * --> AUFNR * * --> AUART * *---------------------------------------------------------------------* FORM GET_AUART USING AUFNR CHANGING AUART. CLEAR AUART. SELECT SINGLE AUART FROM AUFK INTO AUART WHERE AUFNR = AUFNR. ENDFORM. *---------------------------------------------------------------------* * FORM GET_AUART_TEXT * *---------------------------------------------------------------------* * 获得订单类型文本 *---------------------------------------------------------------------* * --> AUART * * --> TEXT * *---------------------------------------------------------------------* FORM GET_AUART_TEXT USING AUART CHANGING TEXT. CLEAR TEXT. SELECT SINGLE TXT FROM T003P INTO TEXT WHERE SPRAS = '1' AND AUART = AUART. ENDFORM. *---------------------------------------------------------------------* * FORM GET_AUFNR_STATUS * *---------------------------------------------------------------------* * 获取订单状态 * *---------------------------------------------------------------------* * --> AUFNR * * --> STATUS * *---------------------------------------------------------------------* FORM GET_AUFNR_STATUS USING AUFNR CHANGING STATUS. SELECT * FROM COAS WHERE AUFNR = AUFNR. IF COAS-PHAS0 = 'X'. STATUS = '已创建'. ENDIF. IF COAS-PHAS1 = 'X'. STATUS = '已下达'. ENDIF. IF COAS-PHAS2 = 'X'. STATUS = '完成'. ENDIF. ENDSELECT. ENDFORM. *---------------------------------------------------------------------* * FORM MODIFY_OUTPUT * *---------------------------------------------------------------------* * 把整列为0的列隐藏 * *---------------------------------------------------------------------* FORM MODIFY_OUTPUT. DATA: FN(30). DATA: COST_N(3) TYPE N VALUE '000'. FIELD-SYMBOLS: <FIELD1> TYPE ANY. DATA: W1 TYPE COSP-WTG001. CLEAR W1. LOOP AT CE01. COST_N = SY-TABIX. CLEAR FN. CONCATENATE 'ELEMENT' COST_N INTO FN. CLEAR W1. LOOP AT <OUT_TABLE> ASSIGNING <OUT_LINE>. ASSIGN COMPONENT FN OF STRUCTURE <OUT_LINE> TO <FIELD1>. W1 = W1 + <FIELD1>. ENDLOOP. IF W1 = 0. "隐藏FN PERFORM MODIFY_OUTPUT_gt_fieldcat USING FN. ENDIF. ENDLOOP. LOOP AT CG01. COST_N = SY-TABIX. CLEAR FN. CONCATENATE 'GROUP' COST_N INTO FN. CLEAR W1. LOOP AT <OUT_TABLE> ASSIGNING <OUT_LINE>. ASSIGN COMPONENT FN OF STRUCTURE <OUT_LINE> TO <FIELD1>. W1 = W1 + <FIELD1>. ENDLOOP. IF W1 = 0. PERFORM MODIFY_OUTPUT_gt_fieldcat USING FN. ENDIF. ENDLOOP. ENDFORM. *---------------------------------------------------------------------* * FORM MODIFY_OUTPUT_gt_fieldcat * *---------------------------------------------------------------------* * 隐藏某一列 * *---------------------------------------------------------------------* * --> FN * *---------------------------------------------------------------------* FORM MODIFY_OUTPUT_gt_fieldcat USING FN. LOOP AT GT_FIELDCAT INTO IS_FIELDCAT. IF IS_FIELDCAT-FIELDNAME = FN. IS_FIELDCAT-NO_OUT = 'X'. MODIFY GT_FIELDCAT FROM IS_FIELDCAT. ENDIF. ENDLOOP. ENDFORM. *---------------------------------------------------------------------* * FORM GET_SALE_COST_ELEMENT * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* * --> SE * * --> VR * *---------------------------------------------------------------------* FORM GET_SALE_COST_ELEMENT TABLES SE STRUCTURE COST_ELEMENT USING VR TYPE ZCO04_A-ZVARIANT. DATA: CE LIKE COST_ELEMENT OCCURS 0 WITH HEADER LINE. DATA: COST_GROUP LIKE COST_ELEMENT_GROUP OCCURS 0 WITH HEADER LINE. CLEAR COST_GROUP[]. SELECT * FROM ZCO04_A WHERE Z1 = 'A' "get data from custom AND ZVARIANT = VR. CLEAR CE[]. PERFORM GET_COST_ELEMENT_LIST TABLES CE USING ZCO04_A-COST_GROUP ZCO04_A-Z1 ZCO04_A-ATTR 0. APPEND LINES OF CE TO SE. ENDSELECT. ENDFORM. *---------------------------------------------------------------------* * FORM GET_SALE_ELEMENT_GROUP_ME * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* * --> SG * *---------------------------------------------------------------------* FORM GET_SALE_ELEMENT_GROUP_ME TABLES SG STRUCTURE COST_ELEMENT_GROUP. CLEAR SG[]. DATA: COST_GROUP LIKE COST_ELEMENT_GROUP OCCURS 0 WITH HEADER LINE. CLEAR COST_GROUP[]. SELECT * FROM ZCO04_A WHERE ZVARIANT = VR AND Z1 = 'A'. SG-ELEMENT_GROUP = ZCO04_A-COST_GROUP. SG-Z1 = ZCO04_A-Z1. SG-ATTR = ZCO04_A-ATTR. APPEND SG. CLEAR SG. ENDSELECT. ENDFORM. *---------------------------------------------------------------------* * FORM GET_COST_ELEMENT_GROUP_ME * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* * --> CG * *---------------------------------------------------------------------* FORM GET_COST_ELEMENT_GROUP_ME TABLES CG STRUCTURE COST_ELEMENT_GROUP. DATA: COST_GROUP LIKE COST_ELEMENT_GROUP OCCURS 0 WITH HEADER LINE. DATA: C1 LIKE COST_ELEMENT_GROUP OCCURS 0 WITH HEADER LINE. "get cost subgroup list via group id. CLEAR CG[]. SELECT * FROM ZCO04_A WHERE ZVARIANT = VR AND ( Z1 = 'B' OR Z1 = 'C' ). CG-ELEMENT_GROUP = ZCO04_A-COST_GROUP. CG-Z1 = ZCO04_A-Z1. CG-ATTR = ZCO04_A-ATTR. APPEND CG. CLEAR CG. ENDSELECT. ENDFORM. *---------------------------------------------------------------------* * FORM GET_COST_ELEMENT_ME * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* * --> CE * *---------------------------------------------------------------------* FORM GET_COST_ELEMENT_ME TABLES CE STRUCTURE COST_ELEMENT. DATA: COST_GROUP LIKE COST_ELEMENT_GROUP OCCURS 0 WITH HEADER LINE. DATA: C1 LIKE COST_ELEMENT OCCURS 0 WITH HEADER LINE. CLEAR COST_GROUP[]. PERFORM GET_COST_ELEMENT_GROUP_ME TABLES COST_GROUP. LOOP AT COST_GROUP. CLEAR C1[]. PERFORM GET_COST_ELEMENT_LIST TABLES C1 USING COST_GROUP-ELEMENT_GROUP COST_GROUP-Z1 COST_GROUP-ATTR 0. APPEND LINES OF C1 TO CE. ENDLOOP. ENDFORM.
Extracted by Direct Download 46cd version 1.3.1 - E.G.Mellodew. 1998-2005 UK. Sap Release 46C
Description: YCOR1004_FORMS_N
Include YCOR1004_FORMS
"根据成本要素组获得子成本要素组 *---------------------------------------------------------------------* * 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 Z1 ATTR 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-Z1 = Z1. T1-ATTR = ATTR. T1-ELEMENT_GROUP = T_NODES-SHORTNAME. APPEND T1. ENDLOOP. ELSEIF LEVEL = 0. LOOP AT T_NODES WHERE HLEVEL > 0. CLEAR T1. T1-Z1 = Z1. T1-ATTR = ATTR. 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 Z1 ATTR 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_ORDER1 USING ORDER COST_ELEM-ELEMENT COST_ELEM-Z1 COST_ELEM-ATTR 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_ORDER1 USING ORDER COST_ELEMENT Z1 ATTR P1 "期间开始 200601 6位 P2 "期间结束 200611 CHANGING WTG. CLEAR WTG. DATA: FN(30). DATA: FN_P(3) TYPE N VALUE '000'. DATA: TMP(10). DATA: PERIOD TYPE I. DATA: P1_IN TYPE I. FIELD-SYMBOLS: <F1> TYPE ANY. DATA: OBJNR TYPE COSP-OBJNR. CONCATENATE 'OR' ORDER INTO OBJNR. IF P1(4) = P2(4). PERIOD = P2 - P1 + 1. IF ( Z1 = 'A' OR Z1 = 'B' ). 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. ELSEIF Z1 = 'C'. SELECT * FROM BSEG WHERE BUKRS = BUKRS AND ZUONR = ORDER AND HKONT = COST_ELEMENT. SELECT SINGLE * FROM BKPF WHERE BELNR = BSEG-BELNR AND BUKRS = BUKRS. IF SY-SUBRC = 0. DATA: D6 TYPE BSEG-ABPER. CLEAR D6. CONCATENATE BKPF-GJAHR BKPF-MONAT INTO D6. IF D6 BETWEEN P1 AND P2. WTG = WTG + BSEG-WRBTR. ENDIF. ENDIF. ENDSELECT. ENDIF. ELSE. DATA: N1(4) TYPE N, N2(4) TYPE N, N3(4) TYPE N. DATA: TP01 TYPE ABPER_RF. DATA: TP02 TYPE ABPER_RF. DATA: TP03 TYPE ABPER_RF. DATA: TP04 TYPE ABPER_RF. TP01 = P1. TP02 = TP01. TP02+4(2) = 12. DATA: W1 TYPE BSEG-WRBTR. DATA: SUM1 TYPE BSEG-WRBTR. CLEAR: W1,SUM1. PERFORM GET_COSP_WTG_VIA_ORDER1 USING ORDER COST_ELEMENT Z1 ATTR TP01 "期间开始 200601 6位 TP02 "期间结束 200611 CHANGING W1. SUM1 = SUM1 + W1. DATA: IP1 TYPE I. IP1 = P2(4) - P1(4). IF ( IP1 > 1 ). IP1 = IP1 - 1. DO IP1 TIMES. TP01(4) = TP01(4) + 1. TP01+4(2) = '01'. TP02 = TP01. TP02+4(2) = '12'. CLEAR W1. PERFORM GET_COSP_WTG_VIA_ORDER1 USING ORDER COST_ELEMENT Z1 ATTR TP01 "期间开始 200601 6位 TP02 "期间结束 200611 CHANGING W1. SUM1 = SUM1 + W1. ENDDO. TP01(4) = TP01(4) + 1. TP01+4(2) = '01'. CLEAR W1. PERFORM GET_COSP_WTG_VIA_ORDER1 USING ORDER COST_ELEMENT Z1 ATTR TP01 "期间开始 200601 6位 P2 "期间结束 200611 CHANGING W1. SUM1 = SUM1 + W1. ELSE. TP01(4) = TP01(4) + 1. TP01+4(2) = '01'. CLEAR W1. PERFORM GET_COSP_WTG_VIA_ORDER1 USING ORDER COST_ELEMENT Z1 ATTR TP01 "期间开始 200601 6位 P2 "期间结束 200611 CHANGING W1. SUM1 = SUM1 + W1. ENDIF. WTG = SUM1. ENDIF. ENDFORM. FORM GET_COSP_WTG_VIA_ORDER USING ORDER COST_ELEMENT Z1 ATTR P1 "期间开始 200601 6位 P2 "期间结束 200611 CHANGING WTG. CLEAR WTG. DATA: FN(30). DATA: FN_P(3) TYPE N VALUE '000'. DATA: TMP(10). DATA: PERIOD TYPE I. DATA: P1_IN TYPE I. FIELD-SYMBOLS: <F1> TYPE ANY. DATA: OBJNR TYPE COSP-OBJNR. CONCATENATE 'OR' ORDER INTO OBJNR. IF P1(4) = P2(4). PERIOD = P2 - P1 + 1. IF ( Z1 = 'A' OR Z1 = 'B' ). 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. ELSEIF Z1 = 'C'. SELECT * FROM BSEG WHERE BUKRS = BUKRS AND ZUONR = ORDER AND HKONT = COST_ELEMENT. SELECT SINGLE * FROM BKPF WHERE BELNR = BSEG-BELNR AND BUKRS = BUKRS. IF SY-SUBRC = 0. DATA: D6 TYPE BSEG-ABPER. CLEAR D6. CONCATENATE BKPF-GJAHR BKPF-MONAT INTO D6. IF D6 BETWEEN P1 AND P2. WTG = WTG + BSEG-WRBTR. ENDIF. ENDIF. ENDSELECT. ENDIF. ELSE. PERIOD = 12 - P1+4(2) + 1. IF ( Z1 = 'A' OR Z1 = 'B' ). 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. ELSEIF Z1 = 'C'. SELECT * FROM BSEG WHERE BUKRS = BUKRS AND ZUONR = ORDER AND HKONT = COST_ELEMENT. SELECT SINGLE * FROM BKPF WHERE BELNR = BSEG-BELNR AND BUKRS = BUKRS. IF SY-SUBRC = 0. CLEAR D6. CONCATENATE BKPF-GJAHR BKPF-MONAT INTO D6. IF D6 BETWEEN P1 AND P2. WTG = WTG + BSEG-WRBTR. ENDIF. ENDIF. ENDSELECT. ENDIF. ENDIF. IF Z1 = 'A'. IF H1 = 'X'. WTG = 0. ENDIF. ENDIF. IF ATTR = '-'. WTG = WTG * -1. ENDIF. IF M1 = 'X'. WTG = WTG / 1000. ENDIF. ENDFORM. "获得成本要素组文本 *---------------------------------------------------------------------* * FORM GET_COST_GROUP_TEXT * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* * --> COST_GROUP * * --> TEXT * *---------------------------------------------------------------------* FORM GET_COST_GROUP_TEXT USING COST_GROUP CHANGING TEXT. CLEAR TEXT. SELECT SINGLE DESCRIPT FROM SETHEADERT INTO TEXT WHERE SETCLASS = '0102' AND SETNAME = COST_GROUP. ENDFORM. "获得成本要素文本 *---------------------------------------------------------------------* * FORM GET_COST_ELEMENT_TEXT * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* * --> ELEMENT * * --> TEXT * *---------------------------------------------------------------------* FORM GET_COST_ELEMENT_TEXT USING ELEMENT CHANGING TEXT. CLEAR TEXT. SELECT SINGLE KTEXT FROM CSKU INTO TEXT WHERE KSTAR = ELEMENT AND SPRAS = '1' AND KTOPL = '2300'. CONCATENATE ELEMENT TEXT INTO TEXT. ENDFORM. "获得订单描述 *---------------------------------------------------------------------* * FORM GET_ORDER_TEXT * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* * --> ORDER * * --> TEXT * *---------------------------------------------------------------------* FORM GET_ORDER_TEXT USING ORDER CHANGING TEXT. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING INPUT = ORDER IMPORTING OUTPUT = ORDER. CLEAR TEXT. SELECT SINGLE KTEXT FROM COAS INTO TEXT WHERE AUFNR = ORDER. ENDFORM.
相关文章推荐
- ABAP开发如何动态的实现任意表的ALV显示
- ALV 动态显示列Demo
- 动态内表及动态ALV显示
- 动态内表及动态ALV显示
- 动态内表 动态ALV显示
- ABAP 动态的实现任意表的ALV显示
- alv动态显示列
- 动态内表及动态ALV显示
- 动态内表及动态ALV显示
- 转帖 动态内表 动态ALV显示
- 动态内表在ALV中显示
- ALV 动态显示列Demo
- 动态内表 动态ALV显示
- 【转载】alv 动态显示列
- ALV TREE + 动态显示列
- ALV根据显示列动态修改行汇总列数据
- ABAP 动态的实现任意表的ALV显示
- 基于OpenGL的三维曲面数据场动态显示 (转)
- cakephp中使用ajax获得数据,动态折线显示
- 动态显示服务器时间的时钟