CO02工单组件,新增/删除/修改

&---------------------------------------------------------------------
*& Form FRM_CHANGE_AUFRN
&---------------------------------------------------------------------

  •   调整工单
    

----------------------------------------------------------------------
FORM frm_change_aufrn .

DATA:lt_return TYPE STANDARD TABLE OF bapiret2.
DATA:ls_return TYPE bapiret2.
DATA lv_error TYPE c.
DATA lv_msg TYPE char100.
DATA:ls_resb_d TYPE resb.
DATA:ls_resb_i TYPE resb.
DATA:ls_resb_m TYPE resb.

"删除组件
DATA:lt_resb_d TYPE TABLE OF resb.
DATA:lt_resb_i TYPE TABLE OF resb.
DATA:lt_resb_m TYPE TABLE OF resb.
DATA it_resb_d TYPE coxt_t_resbdel.

"新增组件
DATA: ls_storage_location TYPE coxt_s_storage_location,
ls_storage_locationx TYPE coxt_s_storage_locationx,
ls_requ_quan TYPE coxt_s_quantity,
lv_operation TYPE co_aplzl,
lv_positionno TYPE positionno,
lv_numc TYPE numc4.
"新增组件-重新刷新订单行号使用
TYPES: BEGIN OF ty_resb_bt.
INCLUDE TYPE resbb.
TYPES: indold TYPE syst_tabix.
TYPES: no_req_upd TYPE syst_datar.
TYPES: END OF ty_resb_bt.
TYPES tt_resb_bt TYPE TABLE OF ty_resb_bt.
FIELD-SYMBOLS: <ft_resb_bt> TYPE tt_resb_bt,
<fs_resb_bt> TYPE ty_resb_bt.

*—修改生产订单组件定义
DATA:ls_order_key TYPE coxt_ord_key,
ls_order_component_key TYPE coxt_s_ord_comp_key,
ls_requirement_quantity TYPE coxt_s_quantity,
ls_requirement_quantityx TYPE coxt_s_quantityx,
ls_confirmed_quantity TYPE coxt_s_quantity,
ls_confirmed_quantityx TYPE coxt_s_quantityx,
lv_material TYPE coxt_material,
lv_materialx TYPE coxt_materialx,

  •   ls_storage_location         TYPE coxt_s_storage_location,
    
  •   ls_storage_locationx        TYPE coxt_s_storage_locationx,
     lv_batch                    TYPE coxt_batch,
     lv_batchx                   TYPE coxt_batchx,
     lv_mi_configuration_object  TYPE coxt_config_object,
     lv_mi_configuration_objectx TYPE coxt_config_objectx,
     lv_error_occurred           TYPE c.
    

    DATA:lt_resb_get LIKE TABLE OF resbdget,
    ls_resb_get LIKE resbdget.

    DATA lt_ztpplsbgb_d TYPE STANDARD TABLE OF ztpplsbgb.
    DATA lt_ztpplsbgb_i TYPE STANDARD TABLE OF ztpplsbgb.
    DATA lt_ztpplsbgb_m TYPE STANDARD TABLE OF ztpplsbgb.
    DATA lt_ztpplsbgb_t TYPE STANDARD TABLE OF ztpplsbgb.
    DATA lt_ztpplsbgb_s TYPE STANDARD TABLE OF ztpplsbgb.

    DATA:lv_menge TYPE ztpplsbgb-menge.
    DATA:lv_text TYPE string.

    MOVE-CORRESPONDING gt_ztpplsbgb[] TO lt_ztpplsbgb_d[].
    MOVE-CORRESPONDING gt_ztpplsbgb[] TO lt_ztpplsbgb_i[].
    MOVE-CORRESPONDING gt_ztpplsbgb[] TO lt_ztpplsbgb_m[].
    MOVE-CORRESPONDING gt_ztpplsbgb[] TO lt_ztpplsbgb_t[].

    SORT lt_ztpplsbgb_d BY werks z_matnr1 z_matnr2 zsczj.
    DELETE lt_ztpplsbgb_d WHERE zsczj IS INITIAL.

    SORT lt_ztpplsbgb_i BY werks z_matnr1 z_matnr3 zxzbs.
    DELETE lt_ztpplsbgb_i WHERE zxzbs IS INITIAL.

    SORT lt_ztpplsbgb_m BY werks z_matnr1 z_matnr2 zylxg.
    DELETE lt_ztpplsbgb_m WHERE zylxg IS INITIAL .

    SORT lt_ztpplsbgb_t BY werks z_matnr1 z_matnr2 zylxg.
    DELETE lt_ztpplsbgb_t WHERE zthbs IS INITIAL .

    "取占用数量使用
    MOVE-CORRESPONDING lt_ztpplsbgb_t[] TO lt_ztpplsbgb_s[].
    SORT lt_ztpplsbgb_s BY z_matnr1 z_matnr2.
    DELETE ADJACENT DUPLICATES FROM lt_ztpplsbgb_s COMPARING z_matnr1 z_matnr2.

    LOOP AT gt_alv INTO gs_alv WHERE zbox = ‘X’
    AND icon <> icon_led_green.

    CLEAR gs_alv-icon.

    "拣配单冻结状态 =X ,则报错“选择工单清单中有冻结工单”
    IF gs_alv-zdjzt = ‘X’.
    gs_alv-msg = ‘选择工单清单中有冻结工单’.
    gs_alv-icon = icon_led_red.
    MODIFY gt_alv FROM gs_alv.
    CLEAR g

SAP CO02 TECO工单增强可以通过以下步骤实现。 1. 首先,在CMOD中创建一个项目ZCO02并增加增强PPCO0001。这将允许我们修改PPCO0001的功能。 2. 查看和调试SAP源代码,了解数据流向。特别是要了解在变更工单组件和表头未保存之前,这些数据存储在哪里。根据研究结果,我们发现这些数据存储在调用出口函数参数表中的component_table和header_table中。 3. 接下来,设计数据表结构ZPCO02,用于记录更改的信息。表结构包括字段如下:MANDT(客户端)、AUFNR(工单号)、MATNR(物料号)、FILED(字段名)、AENAM(更改人员)、LAEDA(更改日期)、TCODE(事务码)、CHNID(更改指标)、HOSTIP(主机IP)、HOST(主机)、VALUE_OLD(旧值)、VALUE_NEW(新值)、TIMES(更改时间)。 4. 在EXIT_SAPLCOBT_001的ZXCO1U01中编写代码,用于比较component_table中的数据与RESB(组件需求表)中相应保护字段的值,以确定组件的更改记录。对于表头的更改记录,则通过将header_table与视图CAUFV进行比较来确定。如果工单总数更改导致组件数量更改,则可以编写一个程序从ZPCO02中分离出这些记录,并为用户提供使用。其他更改情况需要进一步研究。 5. 最后,根据SAP的要求,启用FLG_DOC标记来控制是否将更改记录写入CDHDR和CDPOS。请注意,批量处理过多的组件可能会导致程序运行出错,因此要谨慎使用这个标记。 通过以上步骤,就可以实现SAP CO02 TECO工单的增强功能,使得可以记录和追踪更改记录。如果你有更好的方法和想法,欢迎分享和讨论。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放弃幻想_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值