SAP 生产成本明细报表
文章目录
- 1.背景
- 2.实现
- 2.1 通过增强获取标准报表数据
- 2.2 程序处理
1.背景
前台事务代码CO03时,进行订单的成本分析,需要开发报表实现批量操作
2.实现
2.1 通过增强获取标准报表数据
此处无隐式增强,同时通过标准方法无法获取内表数据。故通过memory id 实现。插入代码如下:
2.2 程序处理
核心代码如下:
利用函数K_KKB_KKBCS_ORDER_REPORT读取数据
标准报表的输出字段为结构KKBCS_OUT+结构KKBCS_OUT_KEY中字段的文本(比如HKTYP_TEXT)
全部代码如下:
&---------------------------------------------------------------------
*& Report ZFIR028
&---------------------------------------------------------------------
&---------------------------------------------------------------------
*& DEVELOPER < 开 发>:
*& CREATE ON <创建日期>:
*& FS NUMBER <FS 编号>:
*& FUNCTIONAL CONSULTANT<功能顾问>:
*& DESCRIPTION <FS 中业务需求概述>:
*&
&---------------------------------------------------------------------
MODIFICATION LOG<程序修改日志,创建时不要填写>
*<版本> <日期> <开发者> <功能顾问> 任务编号 <请求号>
*VERSION DATE PROGRAMMER CORR. # IL# TRANSPORT
- 1 YYYY/MM/DD
*DESCRIPTION<程序逻辑修改 版本1> :
*DESCRIPTION<程序逻辑修改 版本2> :
*
&---------------------------------------------------------------------
REPORT zfir028
MESSAGE-ID zfico01
LINE-COUNT 50 "行 MIN=35
LINE-SIZE 132 "列 MIN=124
NO STANDARD PAGE HEADING.
----------------------------------------------------------------------
- <1.1-声明 包含程序> INCLUDE PROGRAMS *
----------------------------------------------------------------------
《所有全局变量、类都写在 DEFINE INCLUDE 程序中》***
INCLUDE zfir028_define.
《所有查询条件都写在 SEL INCLUDE 程序中》******
INCLUDE zfir028_sel.
《所有逻辑代码都写在 F0 INCLUDE 程序中》*******
INCLUDE zfir028_f01.
<第二部分---声明 过程:即事件> PROCESSING *
----------------------------------------------------------------------
- <2.1-用于程序的初始化,在显示选择屏前触发,> *
- INITIAL PROCESS BEFORE THE STANDARD SELECTION SCREEN IS CALLED *
----------------------------------------------------------------------
INITIALIZATION.
"初始化处理
PERFORM frm_intial.
---------------------------------------------------------------------- - <2.2-选择屏幕事件> *
- EVENTS THAT OCCUR WHILE THE SELECTION SCREEN IS BING PROCESSED *
---------------------------------------------------------------------- - 所有选择屏幕数据传送到程序中之后触发的事件
AT SELECTION-SCREEN.
*选择屏幕PBO事件,在显示选择屏幕前触发
AT SELECTION-SCREEN OUTPUT.
当对SELECT-OPTIONS变量有多值输入时
*AT SELECTION-SCREEN ON END OF S_MATKL.当选择屏幕的BLOCK向程序传递值时触发{如点击执行,点击多选弹出其它窗口)
*AT SELECTION-SCREEN ON BLOCK BL01.按指定字段按F4触发
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_MATNR.按指定字段按F1触发
*AT SELECTION-SCREEN ON HELP-REQUEST FOR S_MATKL.当选择屏幕的RADIOBUTTON GROUP向程序传递值时触发
*AT SELECTION-SCREEN ON RADIOBUTTON GROUP RG1.触发了 FUNCTIONS BACK, EXIT, OR CANCEL
AT SELECTION-SCREEN ON EXIT-COMMAND.
----------------------------------------------------------------------
- <2.3-在选择屏幕被处理后触发的事件,程序默认的开始事件> *
- EVENT OCCURS AFTER THE SELECTION SCREEN HAS BEEN PROCESSED *
----------------------------------------------------------------------
START-OF-SELECTION.
"权限检查
PERFORM frm_authority_check.
"输入数据合法性检查
PERFORM frm_validate_check.
"获取数据
PERFORM frm_get_data.
"处理数据
PERFORM frm_process_data.
"调用屏幕
PERFORM frm_call_screen.
----------------------------------------------------------------------
- <2.4-最后被触发的事件> *
- THE LAST OF THE EVENTS CALLED BY THE RUNTIME ENVIRONMENT TO OCCUR *
----------------------------------------------------------------------
END-OF-SELECTION.
"展示数据
PERFORM frm_show_data.
"保存数据
PERFORM frm_save_data.
"清空所有全局变量
PERFORM frm_clear_global_data.
&---------------------------------------------------------------------
*& 包含 ZFIR028_F01
&---------------------------------------------------------------------
&---------------------------------------------------------------------
MODIFICATION LOG<程序修改日志,创建时不要填写>
*<版本> <日期> <开发者> <功能顾问> 任务编号 <请求号>
*VERSION DATE PROGRAMMER CORR. # IL# TRANSPORT
- 1 YYYY/MM/DD
*DESCRIPTION<程序逻辑修改 版本1> :
*DESCRIPTION<程序逻辑修改 版本2> :
*
&---------------------------------------------------------------------
&---------------------------------------------------------------------
*& Form FRM_GET_DATA
&---------------------------------------------------------------------
*& 获取数据
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM frm_get_data .
RANGES:r_status FOR bsvx-sttxt.
DATA:lt_status TYPE TABLE OF ty_status.
DATA:lv_line TYPE bsvx-sttxt.
DATA:lt_cat_lvc TYPE lvc_t_fcat.
DATA:lr_data TYPE REF TO data.
DATA:ls_varia TYPE disvariant.
DATA:lv_matnr TYPE mara-matnr.
DATA:lv_index TYPE i.
FIELD-SYMBOLS:<lfs_table> TYPE table.
CLEAR:gt_out[].
SELECT aaufnr,aobjnr,auart,gamng,gstri,gltri,
CAST( ’ ’ AS CHAR( 50 ) ) AS status
FROM aufk AS a
INNER JOIN afko AS b ON a~aufnr = b~aufnr
WHERE werks IN @s_werks
AND a~aufnr IN @s_aufnr
AND plnbez IN @s_matnr
AND auart IN @s_auart
AND gstrp IN @s_gstrp
AND gltrp IN @s_gltrp
INTO TABLE @DATA(lt_aufk).
"取符合屏幕输入条件的工单状态
"将系统状态输入条件拆分到内表中
SPLIT s_stat-low AT ‘/’ INTO TABLE lt_status.
LOOP AT lt_status INTO DATA(ls_status).
r_status[] = VALUE #( BASE r_status[] ( sign = ‘I’ option = ‘EQ’ low = ls_status-status ) ).
ENDLOOP.
LOOP AT lt_aufk INTO DATA(ls_aufk).
"取系统状态和用户状态
CLEAR:lv_line,lt_status[].
CALL FUNCTION 'STATUS_TEXT_EDIT'EXPORTINGobjnr = ls_aufk-objnr
ONLY_ACTIVE = 'X'spras = sy-langu
BYPASS_BUFFER = ' ' IMPORTING
ANW_STAT_EXISTING =
E_STSMA =line = lv_line
user_line =
STONR = EXCEPTIONSobject_not_found = 1OTHERS = 2.
"筛选符合条件的系统状态
SPLIT lv_line AT space INTO TABLE lt_status.
LOOP AT lt_status INTO ls_status.
IF ls_status-status IN r_status[].
DATA(lv_ok) = ‘X’.
EXIT.
ENDIF.
ENDLOOP.
IF sy-subrc = 0.
IF lv_ok IS INITIAL.
DELETE lt_aufk.
CONTINUE.
ENDIF.
ENDIF.
CLEAR:lv_ok.ls_aufk-status = lv_line.
MODIFY lt_aufk FROM ls_aufk.ENDLOOP.
IF lt_aufk[] IS INITIAL.
MESSAGE s001 WITH ‘找不到符合条件的数据’ DISPLAY LIKE ‘E’.
LEAVE LIST-PROCESSING.
ENDIF.SORT lt_aufk BY aufnr.
SELECT a~aufnr,SUM( wemng ) AS wemng
FROM afpo AS a
INNER JOIN @lt_aufk AS b ON a~aufnr = b~aufnr
GROUP BY a~aufnr
INTO TABLE @DATA(lt_afpo).
SORT lt_afpo BY aufnr."调用标准函数取报表内表数据
LOOP AT lt_aufk INTO ls_aufk.ls_varia-variant = ‘1SAP02’. "成本趋势 布局
CALL FUNCTION ‘K_KKB_KKBCS_ORDER_REPORT’
EXPORTING
i_aufnr = ls_aufk-aufnrI_CONTAINER =
I_TIME_RANGE =
I_PIVOT =
I_ROLLD =
I_POSNR =
I_NINCL =i_varia = ls_varia
I_WIP =
I_HEADER = EXCEPTIONSobject_not_found = 1no_data = 2no_authority = 3OTHERS = 4.
AT FIRST.
"仅仅在第一次调用取fieldcat,原因为取用标准报表字段样式固定,不需要取多次,同时生成动态内表的方法多次调用会ABAP DUMP
IMPORT fieldcat = lt_cat_lvc[] FROM MEMORY ID ‘ZFI028_FIELDCAT’.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = lt_cat_lvc
IMPORTING
ep_table = lr_data.
ASSIGN lr_data->* TO <lfs_table>.
ENDAT.IMPORT outtab = <lfs_table> FROM MEMORY ID ‘ZFI028_TABLE’.
"根据标准报表数据,转换成当前报表字段
LOOP AT <lfs_table> ASSIGNING FIELD-SYMBOL(<lfs_line>).
APPEND INITIAL LINE TO gt_out ASSIGNING FIELD-SYMBOL(<lfs_out>).
<lfs_out>-aufnr = ls_aufk-aufnr.
<lfs_out>-auart = ls_aufk-auart.
ASSIGN COMPONENT ‘BEWEG_TEXT’ OF STRUCTURE <lfs_line> TO FIELD-SYMBOL(<lfs_value>).
IF <lfs_value> IS ASSIGNED.
<lfs_out>-zfylx = <lfs_value>. "业务类型
UNASSIGN:<lfs_value>.
ENDIF.ASSIGN COMPONENT 'WERKS' OF STRUCTURE <lfs_line> TO <lfs_value>. IF <lfs_value> IS ASSIGNED.<lfs_out>-werks = <lfs_value>.UNASSIGN:<lfs_value>. ENDIF.ASSIGN COMPONENT 'HERKU' OF STRUCTURE <lfs_line> TO <lfs_value>. IF <lfs_value> IS ASSIGNED.SPLIT <lfs_value> AT '/' INTO DATA(lv_value1) DATA(lv_value2).<lfs_out>-matnr = lv_value2.UNASSIGN:<lfs_value>. ENDIF.ASSIGN COMPONENT 'HERKU_TEXT' OF STRUCTURE <lfs_line> TO <lfs_value>. IF <lfs_value> IS ASSIGNED.<lfs_out>-maktx = <lfs_value>.UNASSIGN:<lfs_value>. ENDIF."物料组和物料组描述 lv_matnr = <lfs_out>-matnr. CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'EXPORTINGinput = lv_matnrIMPORTINGoutput = lv_matnrEXCEPTIONSlength_error = 1OTHERS = 2.SELECT SINGLE a~matkl,zspec,b~wgbez FROM mara AS aINNER JOIN t023t AS b ON a~matkl = b~matkl AND b~spras = @sy-languINTO @DATA(ls_mara)WHERE matnr = @lv_matnr. IF sy-subrc = 0.<lfs_out>-zspec = ls_mara-zspec.<lfs_out>-wgbez = ls_mara-wgbez. ENDIF. CLEAR:ls_mara.<lfs_out>-status = ls_aufk-status. "工单状态<lfs_out>-menge = ls_aufk-gamng. "总数量IF line_exists( lt_afpo[ aufnr = ls_aufk-aufnr ] ).<lfs_out>-menge_sh = lt_afpo[ aufnr = ls_aufk-aufnr ]-wemng."收货数量 ENDIF.ASSIGN COMPONENT 'MEINH' OF STRUCTURE <lfs_line> TO <lfs_value>. IF <lfs_value> IS ASSIGNED.<lfs_out>-meins = <lfs_value>. "单位UNASSIGN:<lfs_value>. ENDIF.<lfs_out>-gstri = ls_aufk-gstri. <lfs_out>-gltri = ls_aufk-gltri.ASSIGN COMPONENT 'MATNR' OF STRUCTURE <lfs_line> TO <lfs_value>. IF <lfs_value> IS ASSIGNED.<lfs_out>-matnr1 = <lfs_value>. "费用编码SELECT SINGLE a~matkl,zspec,b~wgbez,c~maktx FROM mara AS aINNER JOIN t023t AS b ON a~matkl = b~matkl AND b~spras = @sy-languINNER JOIN makt AS c ON a~matnr = c~matnr AND c~spras = @sy-languINTO @DATA(ls_mara1)WHERE a~matnr = @<lfs_out>-matnr1.IF sy-subrc = 0.<lfs_out>-maktx1 = ls_mara1-maktx.<lfs_out>-wgbez1 = ls_mara1-wgbez.<lfs_out>-zspec1 = ls_mara1-zspec.ENDIF.UNASSIGN:<lfs_value>. ENDIF.ASSIGN COMPONENT 'KSTAR' OF STRUCTURE <lfs_line> TO <lfs_value>. IF <lfs_value> IS ASSIGNED.<lfs_out>-kstar = <lfs_value>. "成本要素UNASSIGN:<lfs_value>. ENDIF.ASSIGN COMPONENT 'KSTAR_TEXT' OF STRUCTURE <lfs_line> TO <lfs_value>. IF <lfs_value> IS ASSIGNED.<lfs_out>-kstar_txt = <lfs_value>. "成本要素描述UNASSIGN:<lfs_value>. ENDIF.ASSIGN COMPONENT 'LSTAR' OF STRUCTURE <lfs_line> TO <lfs_value>. IF <lfs_value> IS ASSIGNED.<lfs_out>-zylx = <lfs_value>. "作业类型UNASSIGN:<lfs_value>. ENDIF.ASSIGN COMPONENT 'PLANMENG_G' OF STRUCTURE <lfs_line> TO <lfs_value>. IF <lfs_value> IS ASSIGNED.<lfs_out>-menge_jh = <lfs_value>. "计划数量UNASSIGN:<lfs_value>. ENDIF.ASSIGN COMPONENT 'PLANKOST_G' OF STRUCTURE <lfs_line> TO <lfs_value>. IF <lfs_value> IS ASSIGNED.<lfs_out>-dmbtr_jh = <lfs_value>. "计划金额UNASSIGN:<lfs_value>. ENDIF.ASSIGN COMPONENT 'ISTMENG_G' OF STRUCTURE <lfs_line> TO <lfs_value>. IF <lfs_value> IS ASSIGNED.<lfs_out>-menge_sj = <lfs_value>. "实际数量UNASSIGN:<lfs_value>. ENDIF.ASSIGN COMPONENT 'ISTKOST_G' OF STRUCTURE <lfs_line> TO <lfs_value>. IF <lfs_value> IS ASSIGNED.<lfs_out>-dmbtr_sj = <lfs_value>. "实际金额UNASSIGN:<lfs_value>. ENDIF.ASSIGN COMPONENT 'SOLLMENG_G' OF STRUCTURE <lfs_line> TO <lfs_value>. IF <lfs_value> IS ASSIGNED.<lfs_out>-menge_mb = <lfs_value>. "目标数量(标准成本)UNASSIGN:<lfs_value>. ENDIF.ASSIGN COMPONENT 'SOLLKOST_G' OF STRUCTURE <lfs_line> TO <lfs_value>. IF <lfs_value> IS ASSIGNED.<lfs_out>-dmbtr_mb = <lfs_value>. "目标金额(标准成本)UNASSIGN:<lfs_value>. ENDIF.
*PRICE_JHCB 计划成本单价 =计划金额/计划数量
IF <lfs_out>-menge_jh <> 0.
<lfs_out>-price_jhcb = <lfs_out>-dmbtr_jh / <lfs_out>-menge_jh.
ENDIF.
*PRICE_SJCB 实际成本单价
IF <lfs_out>-menge_sj <> 0.
<lfs_out>-price_sjcb = <lfs_out>-dmbtr_sj / <lfs_out>-menge_sj.
ENDIF.
*PRICE_MBCB 目标成本单价
IF <lfs_out>-menge_mb <> 0.
<lfs_out>-price_sjcb = <lfs_out>-dmbtr_mb / <lfs_out>-menge_mb.
ENDIF.
*MENGE_CY 计划与实际数量差异
<lfs_out>-menge_cy = <lfs_out>-menge_jh - <lfs_out>-menge_sj.
*RATE_CY 计划与实际数量差异%
IF <lfs_out>-menge_sj <> 0.
<lfs_out>-rate_cy = <lfs_out>-menge_cy / <lfs_out>-menge_sj * 100.
ENDIF.
*DMBTR_CY 计划与实际金额差异
<lfs_out>-dmbtr_cy = <lfs_out>-dmbtr_jh - <lfs_out>-dmbtr_sj.
*DMBTR_RATE_CY 计划与实际金额差异%
IF <lfs_out>-dmbtr_sj <> 0.
<lfs_out>-dmbtr_rate_cy = <lfs_out>-dmbtr_cy / <lfs_out>-dmbtr_sj * 100…
ENDIF.
*MENGE1_CY 目标与实际数量差异
<lfs_out>-menge1_cy = <lfs_out>-menge_mb - <lfs_out>-menge_sj.
*RATE1_CY 目标与实际数量差异%
IF <lfs_out>-menge_sj <> 0.
<lfs_out>-rate1_cy = <lfs_out>-menge1_cy / <lfs_out>-menge_sj * 100…
ENDIF.
*DMBTR1_CY 目标与实际金额差异
<lfs_out>-dmbtr1_cy = <lfs_out>-dmbtr_mb - <lfs_out>-dmbtr_sj.
*DMBTR1_RATE_CY 目标与实际金额差异%
IF <lfs_out>-dmbtr_sj <> 0.
<lfs_out>-dmbtr1_rate_cy = <lfs_out>-dmbtr1_cy / <lfs_out>-dmbtr_sj * 100…
ENDIF.
ENDLOOP.FREE MEMORY ID 'ZFI028_FIELDCAT'.
FREE MEMORY ID 'ZFI028_TABLE'.
IF <lfs_table> IS ASSIGNED.CLEAR:<lfs_table>.
ENDIF.
ENDLOOP.
ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_PROCESS_DATA
&---------------------------------------------------------------------
*& 处理数据
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM frm_process_data .
ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_AUTHORITY_CHECK
&---------------------------------------------------------------------
*& 权限检查
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM frm_authority_check .
ENDFORM.
&---------------------------------------------------------------------
*& FORM FRM_VALIDATE_CHECK
&---------------------------------------------------------------------
*& 数据合法性检查
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM frm_validate_check .
ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_SHOW_DATA
&---------------------------------------------------------------------
*& 展示数据
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM frm_show_data .
gs_layout-zebra = ‘X’ .
gs_layout-cwidth_opt = ‘X’.
CLEAR gt_fieldcat[].
PERFORM frm_generate_field_catalogu.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY_LVC’
EXPORTING
i_callback_program = sy-repid
i_bypassing_buffer = ‘X’
i_save = ‘A’
is_layout_lvc = gs_layout
i_callback_pf_status_set = 'FRM_SET_PF'
i_callback_user_command = 'FRM_USER_COM' it_fieldcat_lvc = gt_fieldcat[] i_default = 'X'
TABLES
t_outtab = gt_out[]
EXCEPTIONS
program_error = 1.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_SAVE_DATA
&---------------------------------------------------------------------
*& 保存数据
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM frm_save_data .
ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_CLEAR_GLOBAL_DATA
&---------------------------------------------------------------------
*& 清空所有全局变量
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM frm_clear_global_data .
ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_CALL_SCREEN
&---------------------------------------------------------------------
*& 调用屏幕
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM frm_call_screen .
ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_INTIAL
&---------------------------------------------------------------------
*& 初始化处理
&---------------------------------------------------------------------
*& --> p1 text
*& <-- p2 text
&---------------------------------------------------------------------
FORM frm_intial .
ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_GENERATE_FIELD_CATALOGU
&---------------------------------------------------------------------
text
----------------------------------------------------------------------
- –> p1 text
- <-- p2 text
----------------------------------------------------------------------
FORM frm_generate_field_catalogu.
PERFORM frm_get_fieldcat TABLES gt_fieldcat USING ‘ZSFI028’.
LOOP AT gt_fieldcat ASSIGNING FIELD-SYMBOL(<lfs_fieldcat>).
IF <lfs_fieldcat>-fieldname = 'MAKTX'.<lfs_fieldcat>-coltext = '产品描述'.
ENDIF.IF <lfs_fieldcat>-fieldname = 'MENGE'.<lfs_fieldcat>-coltext = '总数量'.
ENDIF.IF <lfs_fieldcat>-fieldname = 'MENGE_SH'.<lfs_fieldcat>-coltext = '已交货数量'.
ENDIF.IF <lfs_fieldcat>-fieldname = 'MATNR1'.<lfs_fieldcat>-coltext = '费用编码'.
ENDIF.IF <lfs_fieldcat>-fieldname = 'MAKTX1'.<lfs_fieldcat>-coltext = '费用描述'.
ENDIF.
ENDLOOP.
ENDFORM.
&---------------------------------------------------------------------
*& Form FRM_GET_FIELDCAT
&---------------------------------------------------------------------
text
----------------------------------------------------------------------
- –> p1 text
- <-- p2 text
----------------------------------------------------------------------
FORM frm_get_fieldcat TABLES ft_fieldcat_out USING fu_name.
DATA:lt_fieldcat TYPE slis_t_fieldcat_alv.
DATA:ls_fieldcat_out TYPE lvc_s_fcat.
CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE’
EXPORTING
I_PROGRAM_NAME =
I_INTERNAL_TABNAME = i_structure_name = fu_name
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME =
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = lt_fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.Implement suitable error handling here
ENDIF.LOOP AT lt_fieldcat[] INTO DATA(ls_fieldcat).
MOVE-CORRESPONDING ls_fieldcat TO ls_fieldcat_out.
ls_fieldcat_out-coltext = ls_fieldcat-seltext_l.
ls_fieldcat_out-ref_field = ls_fieldcat-fieldname.
ls_fieldcat_out-ref_table = ls_fieldcat-ref_tabname.
APPEND ls_fieldcat_out TO ft_fieldcat_out.
ENDLOOP.
ENDFORM.
&---------------------------------------------------------------------
*& Form frm_alv_field
&---------------------------------------------------------------------
text
----------------------------------------------------------------------
- –> p1 text
- <-- p2 text
----------------------------------------------------------------------
FORM frm_alv_field USING my_fieldcat TYPE lvc_t_fcat
VALUE(p_reftable)
VALUE(p_tabname)
VALUE(p_reffield)
VALUE(p_fieldname)
VALUE(p_stext)
VALUE(p_ltext)
VALUE(p_zero)
VALUE(p_outlenid)
VALUE(p_outlen)
VALUE(p_pos)
VALUE(p_chk)
VALUE(p_edit)
VALUE(p_fixed).
gs_fieldcat-col_pos = p_pos.
gs_fieldcat-ref_table = p_reftable.
gs_fieldcat-tabname = p_tabname.
gs_fieldcat-ref_field = p_reffield.
gs_fieldcat-fieldname = p_fieldname.
gs_fieldcat-seltext = p_stext.
gs_fieldcat-seltext = p_ltext.
gs_fieldcat-seltext = p_ltext.
gs_fieldcat-reptext = p_stext.
gs_fieldcat-no_zero = p_zero .
gs_fieldcat-checkbox = p_chk.
gs_fieldcat-edit = p_edit.
gs_fieldcat-fix_column = p_fixed.
IF p_outlenid = ‘X’ .
gs_fieldcat-outputlen = p_outlen.
ENDIF.
APPEND gs_fieldcat TO my_fieldcat.
CLEAR gs_fieldcat.
ENDFORM. " frm_alv_field_COLUMN
&---------------------------------------------------------------------
*& 包含 ZFIR028_DEFINE
&---------------------------------------------------------------------
&---------------------------------------------------------------------
MODIFICATION LOG<程序修改日志,创建时不要填写>
*<版本> <日期> <开发者> <功能顾问> 任务编号 <请求号>
*VERSION DATE PROGRAMMER CORR. # IL# TRANSPORT
- 1 YYYY/MM/DD
*DESCRIPTION<程序逻辑修改 版本1> :
*DESCRIPTION<程序逻辑修改 版本2> :
*
&---------------------------------------------------------------------
<第一部分---声明程序变量和类> DECLARATION *
----------------------------------------------------------------------
- <1.1-声明常数> CONSTANTS DECLARATION *
----------------------------------------------------------------------
TYPE-POOLS:slis,icon.
---------------------------------------------------------------------- - <1.2-声明用户自定义数据类型> LOCAL DATA TYPES IN PROGRAM *
----------------------------------------------------------------------
TYPES:BEGIN OF ty_status,
status TYPE char20,
END OF ty_status.
---------------------------------------------------------------------- - <1.3-声明内表、工作区> GLOBAL INTERNAL TABLES 、WORK AREA DECLARATION *
----------------------------------------------------------------------
DATA:gt_fieldcat TYPE lvc_t_fcat,
gs_fieldcat LIKE LINE OF gt_fieldcat,
gs_layout TYPE lvc_s_layo.
DATA:gt_out TYPE TABLE OF zsfi028.
----------------------------------------------------------------------
- <1.4-声明全局变量> GLOBAL VARIANTS DECLARATION *
----------------------------------------------------------------------
----------------------------------------------------------------------
- <1.5-声明字段符号> FIELD-SYMBOLS DECLARATION *
----------------------------------------------------------------------
----------------------------------------------------------------------
- <1.6-声明控件 OO对象> ALV TABLECONTRL *
----------------------------------------------------------------------
DATA:
gcl_alvgrid TYPE REF TO cl_gui_alv_grid,
gcl_container TYPE REF TO cl_gui_container,
gcl_splitter TYPE REF TO cl_gui_splitter_container.
----------------------------------------------------------------------
- <1.7-类定义> *
----------------------------------------------------------------------
&---------------------------------------------------------------------
*& LCL_CLASS1 *
&---------------------------------------------------------------------
*& 类功能说明
&---------------------------------------------------------------------
----------------------------------------------------------------------
- <1.8-类实现> *
----------------------------------------------------------------------
&---------------------------------------------------------------------
*& 包含 ZFIR028_SEL
&---------------------------------------------------------------------
&---------------------------------------------------------------------
MODIFICATION LOG<程序修改日志,创建时不要填写>
*<版本> <日期> <开发者> <功能顾问> 任务编号 <请求号>
*VERSION DATE PROGRAMMER CORR. # IL# TRANSPORT
- 1 YYYY/MM/DD
*DESCRIPTION<程序逻辑修改 版本1> :
*DESCRIPTION<程序逻辑修改 版本2> :
*
&---------------------------------------------------------------------
----------------------------------------------------------------------
- <1-声明表工作区> TABLE_WORK_AREAS DECLARATION*
----------------------------------------------------------------------
TABLES:aufk,caufvd,afko.
*----------------------------------------------------------------------
** <2-声明选择屏幕> SELECTION SCREEN *
----------------------------------------------------------------------
"<定义选择屏幕的编号和标题文字>
SELECTION-SCREEN BEGIN OF BLOCK bl01 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:s_werks FOR aufk-werks OBLIGATORY,
s_aufnr FOR aufk-aufnr OBLIGATORY,
s_matnr FOR afko-plnbez,
s_auart FOR aufk-auart,
s_gstrp FOR afko-gstrp,
s_gltrp FOR afko-gltrp,
s_stat FOR caufvd-ktext NO INTERVALS NO-EXTENSION.
SELECTION-SCREEN END OF BLOCK bl01.
ALV结构如下:
Table: ZSFI028
Description: 生产成本明细表-ALV结构
Row Field name Position Key Data element Domain Datatype Length Lowercase Domain text
1 AUART 1 AUFART AUFART CHAR 4 订单类型
2 AUFNR 2 AUFNR AUFNR CHAR 12 订单编号
3 ZFYLX 3 ZE_ZFYLX TEXT30 CHAR 30 X 费用类型
4 WERKS 4 WERKS_D WERKS CHAR 4 工厂
5 MATNR 5 ZE_MATNR TEXT60 CHAR 60 X 产品编码
6 MAKTX 6 MAKTX TEXT40 CHAR 40 X 物料描述
7 WGBEZ 7 WGBEZ TEXT20 CHAR 20 X 物料组描述
8 ZSPEC 8 ZE_ZSPEC ZD_ZSPEC CHAR 120 规格型号
9 STATUS 9 ZE_SYSTEM_STATUS TEXT100 CHAR 100 X 工单的系统状态
10 MENGE 10 MENGE_D MENG13 QUAN 13 数量
11 MENGE_SH 11 MENGE_D MENG13 QUAN 13 数量
12 MEINS 12 MEINS MEINS UNIT 3 X 基本计量单位
13 GSTRI 13 CO_GSTRI DATUM DATS 8 实际开始日期
14 GLTRI 14 CO_GLTRI DATUM DATS 8 实际结束日期
15 MATNR1 15 MATNR MATNR CHAR 40 物料编号
16 MAKTX1 16 MAKTX TEXT40 CHAR 40 X 物料描述
17 WGBEZ1 17 WGBEZ TEXT20 CHAR 20 X 物料组描述
18 ZSPEC1 18 ZE_ZSPEC ZD_ZSPEC CHAR 120 规格型号
19 KSTAR 19 KSTAR KSTAR CHAR 10 成本要素
20 KSTAR_TXT 20 ZE_KSTAR_TXT TEXT80 CHAR 80 X 成本要素描述
21 ZYLX 21 ZE_ZYLX TXT20 CHAR 20 X 作业类型
22 MENGE_JH 22 ZE_MENGE_JH MENGE QUAN 13 计划数量
23 DMBTR_JH 23 ZE_DMBTR_JH AFLE13D2O16N_TO_23D2O30N CURR 23 计划金额
24 MENGE_SJ 24 ZE_MENGE_SJ MENGE QUAN 13 实际数量
25 DMBTR_SJ 25 ZE_DMBTR_SJ AFLE13D2O16N_TO_23D2O30N CURR 23 实际金额
26 MENGE_MB 26 ZE_MENGE_MB MENGE QUAN 13 目标数量(标准成本)
27 DMBTR_MB 27 ZE_DMBTR_MB AFLE13D2O16N_TO_23D2O30N CURR 23 目标金额(标准成本)
28 PRICE_JHCB 28 ZE_PRICE_JHCB AFLE13D2O16N_TO_23D2O30N CURR 23 计划成本单价
29 PRICE_SJCB 29 ZE_PRICE_SJCB AFLE13D2O16N_TO_23D2O30N CURR 23 实际成本单价
30 PRICE_MBCB 30 ZE_PRICE_MBCB AFLE13D2O16N_TO_23D2O30N CURR 23 目标成本单价
31 MENGE_CY 31 ZE_MENGE_CY MENGE QUAN 13 计划与实际数量差异
32 RATE_CY 32 ZE_RATE_CY KKB_PROZABW DEC 15 计划与实际数量差异%
33 DMBTR_CY 33 ZE_DMBTR_CY AFLE13D2O16N_TO_23D2O30N CURR 23 计划与实际金额差异
34 DMBTR_RATE_CY 34 ZE_RATE1_CY1 KKB_PROZABW DEC 15 计划与实际金额差异%
35 MENGE1_CY 35 ZE_MENGE1_CY MENGE QUAN 13 目标与实际数量差异
36 RATE1_CY 36 ZE_RATE2_CY KKB_PROZABW DEC 15 目标与实际数量差异%
37 DMBTR1_CY 37 ZE_DMBTR1_CY AFLE13D2O16N_TO_23D2O30N CURR 23 目标与实际金额差异
38 DMBTR1_RATE_CY 38 ZE_DMBTR1_RATE_CY KKB_PROZABW DEC 15 目标与实际金额差异%
.
SAP 生产成本明细报表相关推荐
- SAP Report painter报表绘制器
这里所指的Report Painter是SAP ECC产品中的一个报表开发工具,中文名为报表绘制器.经常与Report Painter一同提出的Report Writer是其前身,原应用于SAP R/ ...
- SAP QM MB56 报表没有结果之分析与对策
SAP QM MB56 报表没有结果之分析与对策 我们知道SAP的标注报表可以用于查询Batch Genealogy(即Batch Where-used List),通过它可以查询某个原料的批次被用于 ...
- 「SAP技术」SAP MM MB5M报表不显示特殊库存数据
SAP MM MB5M报表不显示特殊库存数据 比如如下物料号F000005451有特殊库存O库存, 该物料批次的有效期, MB5M,输入该物料号执行查询, 查询结果里,不显示O库存,只显示Normal ...
- 「SAP技术」SAP MM ME2N报表能按‘order acknowledgement‘查询采购订单
「SAP技术」SAP MM ME2N报表能按'order acknowledgement'查询采购订单 执行事务代码ME2N, 点击'Dynamic Selections'按钮 ,进入如下界面, 找到 ...
- SAP MM MB5L 报表里的差异金额如何调整?
SAP MM MB5L 报表里的差异金额如何调整? 5月3号,收到财务顾问提出的一个问题,说是MB5L报表里有差异. 如下查询条件, 报表结果里显示有差异, 经查,导致这个差异的原因之一是,一些物料批 ...
- SAP MM ME1M报表结果真的不科学?
SAP MM ME1M报表结果真的不科学? 深入研究后发现,不是SAP ME1M报表不科学,而是笔者对于SAP系统的认识有盲点. 经查,ME1M报表是可以显示PIR里维护的最新价格的.如下方式: 勾选 ...
- SAP MM ME1M报表结果不科学?
SAP MM ME1M报表结果不科学? 做过SAP MM顾问的都知道,报表ME1M可以查询物料的info record列表,即是说可以以列表的形式批量显示多个物料的采购价格主数据. 但是这个报表有个不 ...
- SAP MM ME1M 报表的Layout之调整
SAP MM ME1M 报表的Layout之调整 之所周知,SAP的很多报表都可以是ALV的格式输出,这个格式对于业务而言,界面友好,方便业务人员按照自己的需求去调整报表输出结果,也方便业务人员将输出 ...
- SAP MM 采购报表中Delivery Date的显示
SAP MM 采购报表中Delivery Date的显示 经反复研究与测试,得知ME2L/ME2N/ME2M等报表是无法很友好的显示Delivery Date. 以ME2L为例, Scope of l ...
- 8 SAP QUERY定制报表操作手册 SQVI-推荐
8 SAP QUERY定制报表操作手册 SQVI-推荐 SAP Query报表定制个功能方便用户按照自己的个人化要求来生成ALV报表.系统通过数据来源,设置表结构和执行三个层面来完成报表输出. SQV ...
最新文章
- shiro配置参考(一)
- 安卓开发30:AsyncTask的用法
- 2021-01-26 粒子群优化算法(PSO)以及Matlab实现
- cf600 E. Lomsat gelral
- python安装lxml,在windows环境下
- 太阳光是平行光吗_“彩虹的形成是因为光的色散和光沿直线传播是一回事吗?”...
- win2008无法用计算机名共享,Windows Server 2008 R2中文件共享
- 在python中可以使用for作为变量名对吗_python能用一个变量的值作为另一个变量的变量名吗?...
- java vert.x_使用Vert.x将JavaScript引入Java企业
- set get java_JAVA中关于set()和get()方法的理解及使用
- server取出多个最小值 sql_SQL汇总查询及分组查询
- 微软 exFAT 技术将进入 Linux 内核
- 配置服务器文件,服务器配置文件
- JAVA-SWING:生成透明JTable的改进1
- Vijos 1303
- 201421410019 杨光裕 实验一
- js脚本实现自由复制百度文库文字
- Qualomm openwrt SDK编译
- 概率论与数理统计学习笔记(3)——Pearson相关系数与Spearman相关系数
- c语言求成绩标准差,C语言中求和、计算平均值、方差和标准差的实例
热门文章
- 基于SpringBoot+Vue的宠物商场管理系统
- 5G中大规模MIMO系统通信的若干分析
- 生物信息学分析 | 物种间的同源基因的批量注释
- 初级的数据分析师,主要需要做哪些工作?
- 如何免费注册申请到【苹果开发者账号】
- ue4 计算向量夹角
- 拉钩网爬取所有python职位信息
- 嵌入式linux机械臂,一款基于ARM嵌入式的机械臂的设计与实现
- 西安交大计算机专业考研复试,2018西安交通大学计算机考研复试分数线_计算机考研分数线...
- 计算机培训学校可行性报告,在线考试系统可行性分析报告