MB52增强

本文介绍如何在MB52报表中新增字段并展示增强实现的过程。通过在RM07MLBS程序中创建隐式增强,加入所需字段,并在ALV列中显示新增字段的内容。此外,还详细说明了如何在不同子例程中添加增强字段,以及如何获取并展示这些字段的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、在MB52报表中新增字段

实现如图效果

二、增强实现

MB52程序为RM07MLBS,在程序中找到定义的内表结构bestand,在最后创建隐式增强,加入增强字段,该内表为将来展示的ALV数据

设置ALV列,在子例程最后创建隐式增强,加入列字段,在子例程fieldcatalog和f0300_fieldcat_flat中都添加

"-----------------------------------------@斌将军--------------------------------------------
"-----------------------------fieldcatalog-------------------------------
ENHANCEMENT 2  ZMB52.    "active version
  CLEAR fieldcat.
  fieldcat-fieldname     = 'ZKHMC'.
  fieldcat-seltext_l = fieldcat-seltext_s     =  fieldcat-seltext_m     = '客户名称'.
  APPEND fieldcat.

    CLEAR fieldcat.
  fieldcat-fieldname     = 'POST1'.
  fieldcat-seltext_l = fieldcat-seltext_s     =  fieldcat-seltext_m     = 'WBS名称'.
  APPEND fieldcat.

    CLEAR fieldcat.
  fieldcat-fieldname     = 'PSPHI'.
  fieldcat-seltext_l = fieldcat-seltext_s     =  fieldcat-seltext_m     = '项目号'.
  APPEND fieldcat.

    CLEAR fieldcat.
  fieldcat-fieldname     = 'ZXMMC'.
  fieldcat-seltext_l = fieldcat-seltext_s     =  fieldcat-seltext_m     = '项目名称'.
  APPEND fieldcat.

ENDENHANCEMENT.

*$*$-End:   (2)---------------------------------------------------------------------------------$*$*
ENDFORM.                               " FELDKATALOG_AUFBAUEN
"-----------------------------------------@斌将军--------------------------------------------
"-----------------------------------------@斌将军--------------------------------------------
"-----------------------------f0300_fieldcat_flat-----------------------
        fieldcat-seltext_l     = '客户名称'.
        macro_fill_fieldcat 'ZKHMC'  ''   c_out.
        fieldcat-seltext_l     = 'WBS名称'.
        macro_fill_fieldcat 'POST1'  ''   c_out.
        fieldcat-seltext_l     = '项目号'.
        macro_fill_fieldcat 'PSPHI'  ''   c_out.
        fieldcat-seltext_l     = '项目名称'.
        macro_fill_fieldcat 'ZXMMC'  ''   c_out.
ENDENHANCEMENT.
*$*$-End:   (4)---------------------------------------------------------------------------------$*$*
ENDFORM.                     "f0300_fieldcat_flat
"-----------------------------------------@斌将军--------------------------------------------

获取数据,在子例程list_output中加入隐式增强,查询字段的数据

"-----------------------------------------@斌将军--------------------------------------------
FORM list_output.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(3) Form LIST_OUTPUT, Anfang                                                                                                                          A
*$*$-Start: (3)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 3  ZMB52.    "active version
  data:l_index type i.
  DATA:LT_CHAR TYPE TABLE OF BAPI1003_ALLOC_VALUES_CHAR WITH HEADER LINE.
  IF bestand[] IS NOT INITIAL.
    SELECT
      KUNNR,
      NAME1
    FROM KNA1
    INTO TABLE @DATA(LT_KNA1)
    FOR ALL ENTRIES IN @bestand
    WHERE KUNNR = @bestand-KUNNR.

    SELECT
      PRPS~PSPNR,
      PRPS~POST1,"WBS名称
      PRPS~PSPHI,"项目号
      PROJ~POST1 AS ZXMMC"项目名称
    FROM PRPS
    INNER JOIN PROJ ON PRPS~PSPHI = PROJ~PSPNR
    INTO TABLE @DATA(LT_PRPS)
    FOR ALL ENTRIES IN @bestand
    WHERE PRPS~PSPNR = @bestand-PSPNR.
  ENDIF.

  LOOP AT bestand  .
    l_index = sy-tabix.
    
    "客户名称
    READ TABLE lt_kna1 INTO DATA(ls_kna1) WITH KEY kunnr = bestand-kunnr.
    IF sy-subrc EQ 0.
      bestand-zkhmc = ls_kna1-name1.
    ENDIF.

    READ TABLE LT_PRPS INTO DATA(LS_PRPS) WITH KEY PSPNR = bestand-PSPNR.
    IF SY-SUBRC EQ 0.
      bestand-POST1 = LS_PRPS-POST1.
      bestand-PSPHI = LS_PRPS-PSPHI.
      bestand-ZXMMC = LS_PRPS-ZXMMC.
    ENDIF.

    MODIFY bestand INDEX l_index.
  ENDLOOP.
ENDENHANCEMENT.
*$*$-End: (3)---------------------------------------------------------------------------------$*$*


* set pf-status 'STANDARD'.


ENHANCEMENT-SECTION rm07mlbs_09 SPOTS es_rm07mlbs.

"-----------------------------------------@斌将军--------------------------------------------

### 51单片机 REGX51 和 REGX52 的区别 #### 头文件定义差异 对于51系列单片机编程而言,`<REGX51.H>`和`<REGX52.H>`这两个头文件主要用于提供特殊功能寄存器(SFR)以及位地址(Bit Addressing)的相关定义。具体来说: - `<REGX52.H>` 文件通常用于支持更广泛的SFR定义,特别是针对增强型51内核(比如STC12/15系列)。该文件不仅包含了标准8051架构中的所有特性和寄存器定义,还额外增加了对某些特定型号特有的外设的支持[^1]。 - 而 `<REGX51.H>` 则主要适用于经典的标准8051架构芯片,其内部只涵盖了基本的硬件资源描述,并不涉及一些高级特性或扩展模块的内容[^3]。 因此,在编写程序时如果遇到像 `P3_1` 这样的引脚操作符无法识别的情况,则可能是由于选择了错误版本的头文件所引起的;而使用了正确的头文件之后就可以正常访问这些特殊的IO口位变量[^2]。 #### 功能特性对比 除了上述提到的不同之处之外,两者之间还有以下几个方面的显著差别: | 特性 | REGX51 (Standard 8051 Core) | REGX52 (Enhanced 8051 Core with Extended Features) | | --| | **定时器数量** | 两个16位定时计数器 | 可能多达五个以上的定时器 | | **中断源数目** | 较少 | 显著增加 | | **串行通信接口** | 单个UART | 支持多路USART | | **外部存储空间寻址能力** | 最高可达64KB | 扩展至高达1MB | 综上所述,当开发者选用不同类型的MCU进行项目开发时,应当依据实际需求来决定采用哪种头文件以确保能够充分利用目标器件所提供的全部性能优势。 ```c // 使用REGX52.H的例子 #include <REGX52.H> void main(void){ P2_0 = 0; while(1); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值