sap C223 生产版本批导

该博客详细介绍了如何使用ABAP编写程序,从Excel批量导入SAP系统中的生产版本数据。程序涉及了数据类型定义、上传数据结构、错误检查、数据验证以及BDC(批次数据通信)过程来执行事务代码C223,实现数据的导入。

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

根据业务需求,将EXCEL的生产版本的相关数据通过程序导入到系统。

TABLES:SSCRFIELDS.
TYPE-POOLS : slis,icon,truxs .
TYPES:
  BEGIN OF ty_alv,
    werks     TYPE mkal-werks, "工厂
    matnr     TYPE mkal-matnr, "物料编码
    verid     TYPE mkal-verid, "生产版本
    text1     TYPE mkal-text1, "生产版本描述
    adatu     TYPE string, "有效日期从
    bdatu     TYPE string, "有效日期至   都为99991231


*    ADATU TYPE MKAL-ADATU, "有效日期从
*    BDATU TYPE MKAL-BDATU, "有效日期至   都为99991231
    plnty     TYPE mkal-plnty, "任务清单类型   默认都为N
    plnnr     TYPE mkal-plnnr, "工艺路线组
    alnal     TYPE mkal-alnal, "组计数器    默认都为1
    stlal     TYPE mkal-stlal, "可选BOM
    stlan     TYPE mkal-stlan, "BOM用途  默认都为1
    id        TYPE icon-id,
    mess(200) TYPE c,
    box       TYPE c,
  END OF ty_alv.
DATA : gt_alv TYPE TABLE OF ty_alv,
       gs_alv LIKE LINE OF gt_alv.

DATA : gv_id        TYPE icon-id,
       gv_mess(200) TYPE c.

TYPES:
  BEGIN OF ty_upload,
    werks TYPE mkal-werks, "工厂
    matnr TYPE mkal-matnr, "物料编码
    verid TYPE mkal-verid, "生产版本
    text1 TYPE mkal-text1, "生产版本描述

    adatu TYPE string, "有效日期从
    bdatu TYPE string, "有效日期至   都为99991231


*    ADATU TYPE MKAL-ADATU, "有效日期从
*    BDATU TYPE MKAL-BDATU, "有效日期至   都为99991231

    plnty TYPE mkal-plnty, "任务清单类型   默认都为N
    plnnr TYPE mkal-plnnr, "工艺路线组
    alnal TYPE mkal-alnal, "组计数器    默认都为1
    stlal TYPE mkal-stlal, "可选BOM
    stlan TYPE mkal-stlan, "BOM用途  默认都为1
  END OF ty_upload.
DATA : gt_upload TYPE TABLE OF ty_upload,
       gs_upload LIKE LINE OF gt_upload.

FIELD-SYMBOLS : <fs_alv> TYPE ty_alv.

DATA gt_bdcdata TYPE TABLE OF bdcdata WITH HEADER LINE. "BDC执行内表
DATA gt_msgtab TYPE TABLE OF bdcmsgcoll WITH HEADER LINE . "BDC返回信息表

TYPES: BEGIN OF ty_message,
         message(100) TYPE c,
         ztype        TYPE c,
       END OF ty_message.
DATA:gt_mes TYPE TABLE OF ty_message,
     gs_mes TYPE ty_message.




*&---定义ALV显示的字段列及其描述等属性
DATA: gt_fieldcat TYPE TABLE OF lvc_s_fcat,
      gs_fieldcat TYPE lvc_s_fcat,
      gs_layout   TYPE lvc_s_layo,
      g_repid     LIKE sy-repid VALUE sy-repid.
DATA:FUNCTXT   TYPE SMP_DYNTXT.

*--进度条--------------------------------------------------------------------*
"进度条标志
DATA:GV_FLAG TYPE C.
"进度条变量
DATA:GV_INDEX TYPE SY-TABIX.
"上传模板条目数
DATA:GV_LINES TYPE I.

*----------定义选择屏幕参数 ------------------------------------------------*
SELECTION-SCREEN FUNCTION KEY 1.
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE TEXT-001.
PARAMETERS:
  p_path  LIKE rlgrap-filename,        "文件路径
  p_mode  TYPE c DEFAULT 'N'.
SELECTION-SCREEN END OF BLOCK blk1.

*-------初始化-------------------------------------------------------------*
INITIALIZATION.
  FUNCTXT-ICON_ID   = ICON_EXPORT.
  FUNCTXT-QUICKINFO = '下载模板'.
  FUNCTXT-ICON_TEXT = '下载模板'.
  SSCRFIELDS-FUNCTXT_01 = FUNCTXT.

*----选择屏幕事件----------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path.    "为P_PATH创建搜索帮助
  PERFORM frm_browser_file.         "选择屏幕获取本地EXCEL

AT SELECTION-SCREEN.
  CASE SSCRFIELDS-UCOMM.
    WHEN 'FC01'."系统预留的功能码
      PERFORM frm_down_excel."下载模板文件
    WHEN OTHERS.
  ENDCASE.

*----选择事件开始----------------------------------------------------------*
START-OF-SELECTION.
  IF p_path IS INITIAL.
    MESSAGE '请输入文件路径!' TYPE 'S' DISPLAY LIKE 'E'.
    LEAVE LIST-PROCESSING.
  ENDIF.
    PERFORM frm_up_excel.       "上传Excel数据
    PERFORM frm_chk_data.       "检查数据
    PERFORM frm_layout.
    PERFORM frm_fieldcat.
    PERFORM frm_display.
*----选择事件结束----------------------------------------------------------*
END-OF-SELECTION.



*&---------------------------------------------------------------------*
*& Form FRM_BROWSER_FILE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_browser_file .

  CALL FUNCTION 'TB_LIMIT_WS_FILENAME_GET'
    EXPORTING
*     DEF_FILENAME     = ' '
*     DEF_PATH         = ' '
      mask             = 'Excel Files,*.xls,All Files,*.*. '
      mode             = 'O'
*     TITLE            = ' '
    IMPORTING
      filename         = p_path
*     PATH             =
*     FILE             =
    EXCEPTIONS
      selection_cancel = 1
      selection_error  = 2
      OTHERS           = 3.
  CASE sy-subrc.
    WHEN 0.
    WHEN 2.
      MESSAGE 'Cancel.' TYPE 'S'.
    WHEN OTHERS.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDCASE.








ENDFORM.
*&---------------------------------------------------------------------*

<think>好的,我现在需要回答用户关于C223生产版本修改是否会记录日志或历史的问题。首先,我需要明确用户提到的C223是指什么。根据常见的SAP系统术语,C223可能是指生产订单或生产版本相关的配置或事务代码。生产版本(Production Version)在SAP中用于定义物料的制造方式,包括工艺路线、物料清单(BOM)等。 用户想知道修改生产版本时,系统是否会记录日志或历史。根据我的知识,SAP通常会在修改主数据或配置时记录变更。例如,引用[3]提到STXFADM表存储了smartform的主数据,包括创建人和修改时间等信息。这可能意味着SAP中某些对象的修改会被记录在特定的表中。 不过,生产版本可能属于不同的模块,我需要确认是否有类似STXFADM的表用于记录生产版本的修改。SAP中的生产版本主数据表可能包括MAPL(分配任务清单到物料)和PLKO(工艺路线头)等,但变更记录可能存储在CDHDR和CDPOS变更文档表中。通常,当对象的修改启用了变更记录功能,系统会将更改记录到这些表中。 此外,用户提供的引用[1]提到Git的提交修改记录,引用[2]涉及MySQL的日志功能。虽然这些是不同系统的例子,但可以推测用户关心的是类似的操作日志或审计功能。因此,需要确认C223生产版本的修改是否像这些系统一样记录日志。 可能还需要考虑后台配置,例如是否启用了生产版本的历史记录或审计功能。如果未启用相关配置,系统可能不会自动记录变更。建议用户检查SAP的相关配置或咨询系统管理员,确认变更记录是否激活,并查看CDHDR和CDPOS表是否存在相关条目。 总结来说,SAP通常通过变更文档记录主数据修改,但具体到生产版本(C223)是否记录,需确认相关配置和表数据。建议用户检查这些方面或提供更多上下文以便进一步分析。</think>在SAP系统中,**C223生产版本的修改是否记录日志或历史**取决于具体配置和系统实现,以下为关键分析点: 1. **SAP标准变更记录机制** SAP通过变更文档表$CDHDR$(头表)和$CDPOS$(明细表)自动记录主数据修改历史[^3]。若生产版本(事务代码$C223$)关联的主数据(如工艺路线、BOM)启用了变更记录功能,修改行为会被记录到这两个表中。例如: ```sql SELECT * FROM CDHDR WHERE OBJECTCLAS = 'MAPL' AND OBJECTID = '[生产版本ID]' ``` 2. **生产版本相关表与日志** 生产版本的核心配置存储在表$MAPL$(物料-任务清单分配表)中。若系统配置了**“记录修改历史”**(通过事务代码$SPRO$路径或后台表参数),每次修改会触发: - 修改时间戳字段(如$AEDAT$) - 修改用户字段(如$AENAM$) - 变更文档写入操作(需激活审计策略) 3. **审计日志依赖配置** 需要检查以下配置是否激活: - 事务代码$SCU3$:检查表$MAPL$的日志记录设置 - 事务代码$SM30$:维护表$TCDOB$(对象类分配) - 事务代码$SCU0$:全局审计配置
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值