资讯详情

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 * ---------------------------------------------------------------------- *** INCLUDE zfir028_define. ****** INCLUDE zfir028_sel. ******* 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'
  EXPORTING
    objnr            = ls_aufk-objnr
  •   ONLY_ACTIVE      = 'X'
      spras            = sy-langu
    
  •   BYPASS_BUFFER    = ' '
    IMPORTING
    
  •   ANW_STAT_EXISTING       =
    
  •   E_STSMA          =
      line             = lv_line
    
  •   user_line        =
    
  •   STONR            =
    EXCEPTIONS
      object_not_found = 1
      OTHERS           = 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-aufnr

  •   I_CONTAINER      =
    
  •   I_TIME_RANGE     =
    
  •   I_PIVOT          =
    
  •   I_ROLLD          =
    
  •   I_POSNR          =
    
  •   I_NINCL          =
      i_varia          = ls_varia
    
  •   I_WIP            =
    
  •   I_HEADER         =
    EXCEPTIONS
      object_not_found = 1
      no_data          = 2
      no_authority     = 3
      OTHERS           = 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'
      EXPORTING
        input        = lv_matnr
      IMPORTING
        output       = lv_matnr
      EXCEPTIONS
        length_error = 1
        OTHERS       = 2.
    
    SELECT SINGLE a~matkl,zspec,b~wgbez FROM mara AS a
                              INNER JOIN t023t AS b ON a~matkl = b~matkl AND b~spras = @sy-langu
                              INTO @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 a
                      INNER JOIN t023t AS b ON a~matkl = b~matkl AND b~spras = @sy-langu
                      INNER JOIN makt AS c ON a~matnr = c~matnr AND c~spras = @sy-langu
                      INTO @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                 *
    

----------------------------------------------------------------------

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 目标与实际金额差异% .

标签: 继电器rs1a23d25

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台