CO41 和 CO01 批次增强

批次要求年(后两位)月日+四位流水,例:1807110001,用自建表写的
CO41 计划订单批量转生产订单,根据订单物料带入批次
增强点:LCOZVF2M
内表:afpod_tmp
添加位置:342(点击显示增强第二个可以增强的点)
CO01 创建生产订单,点击收货带出来批次
增强点:LCOKO1F3I
内表:AFPOD
添加位置:42(点击显示增强第一个可要增强的点)

 if sy-tcode = 'CO41' .
    data: it_ztmm type table of ZTMM001.
    data: is_ztmm type ZTMM001.
    DATA: lv_varkey TYPE VIM_ENQKEY,
          ls_mess(30),
          lv_id(20).
DATA:LV_MATERIAL        LIKE  BAPIBATCHKEY-MATERIAL_LONG,
     LV_BATCH           LIKE  BAPIBATCHKEY-BATCH,
     LV_PLANT           LIKE  BAPIBATCHKEY-PLANT.
   lv_varkey = sy-mandt && sy-datum+0(4) && '10'.


  CALL FUNCTION 'ENQUEUE_E_TABLE'
    EXPORTING
      mode_rstable   = 'E'
      tabname        = 'ZTMM001' "锁表
      varkey         = lv_varkey
      x_tabname      = ' '
      x_varkey       = ' '
      _scope         = '2'
      _wait          = ' '
      _collect       = ' '
    EXCEPTIONS
      foreign_lock   = 1
      system_failure = 2
      OTHERS         = 3.
  IF sy-subrc <> 0.
    CALL FUNCTION 'MESSAGE_TEXT_BUILD'
      EXPORTING
        msgid               = sy-msgid
        msgnr               = sy-msgno
        msgv1               = sy-msgv1
        msgv2               = sy-msgv1
        msgv3               = sy-msgv1
        msgv4               = sy-msgv1
      IMPORTING
        message_text_output = ls_mess.

    MESSAGE  ls_mess type 'E'.
  ENDIF.

  SELECT SINGLE *
    FROM ZTMM001
    into is_ztmm
    WHERE BUDAT = sy-datum.

    if sy-subrc = 0 .
      is_ztmm-GJAHR = is_ztmm-GJAHR + 1.
      UPDATE ZTMM001  set GJAHR = is_ztmm-GJAHR WHERE BUDAT = sy-datum.
      ELSE.
      is_ztmm-BUDAT = sy-datum.
      is_ztmm-GJAHR = '0000'.
      MODIFY ZTMM001 FROM is_ztmm.
      endif .

    CALL FUNCTION 'DEQUEUE_E_TABLE'
        EXPORTING
          mode_rstable = 'E'
          tabname      = 'ZTMM001'
          varkey       = lv_varkey
          x_tabname    = ' '
          x_varkey     = ' '
          _scope       = '3'
          _synchron    = ' '
          _collect     = ' '.
     IF sy-subrc <> 0.
    CALL FUNCTION 'MESSAGE_TEXT_BUILD'
      EXPORTING
        msgid               = sy-msgid
        msgnr               = sy-msgno
        msgv1               = sy-msgv1
        msgv2               = sy-msgv1
        msgv3               = sy-msgv1
        msgv4               = sy-msgv1
      IMPORTING
        message_text_output = ls_mess.

    MESSAGE  ls_mess type  'E'.
  ENDIF.
      CONCATENATE is_ztmm-BUDAT+2(6)  is_ztmm-GJAHR into afpod_tmp-CHARG.

CONCATENATE SY-UNAME '123' INTO LV_ID."为了在磁盘中能找到
EXPORT
LV_MATERIAL from afpod_tmp-MATNR
LV_PLANT FROM afpod_tmp-pwerk
LV_BATCH FROM afpod_tmp-CHARG
TO MEMORY ID LV_ID.
    endif.

在这个地方更改afpod_tmp-CHARG(AFPOD-CHARG )字段就可以直接更新到表
这个时候批次产生了但没有创建,需要调BAPI:BAPI_BATCH_CREATE
增强点:CO_ZV_ORDER_POST(函数)
添加位置:ENDFUNCTION 的前一个增强点
这个增强点适用于CO01和CO41,且CO41在批量创建时每一条都会进,但由于在两个不同的地方需要内存传值

if   sy-tcode = 'CO41'or  sy-tcode = 'CO01'.
 "   BREAK-POINT.
    data lv_id(20).
    DATA:
     LV_MATERIAL        LIKE  BAPIBATCHKEY-MATERIAL_LONG,
     LV_BATCH           LIKE  BAPIBATCHKEY-BATCH,
     LV_PLANT           LIKE  BAPIBATCHKEY-PLANT.
    DATA: LS_BATCHCONTROLFIELDS LIKE  BAPIBATCHCTRL,
          LS_BATCHATTRIBUTES LIKE  BAPIBATCHATT.
    DATA:IT_RETURN TYPE TABLE OF BAPIRET2 WITH HEADER LINE.
      CONCATENATE sy-uname '123' INTO lv_id.
      IMPORT
      LV_MATERIAL
      LV_BATCH
      LV_PLANT
      FROM MEMORY ID lv_id.
      LS_BATCHCONTROLFIELDS-BATCHLEVEL = '0'.
      LS_BATCHCONTROLFIELDS-CLASS_NUM = 'Z_BATCH'.
  CALL FUNCTION 'BAPI_BATCH_CREATE'
    EXPORTING
      MATERIAL_LONG         = LV_MATERIAL
      BATCH                 = LV_BATCH
      PLANT                 = LV_PLANT
   "   BATCHATTRIBUTES       = LS_BATCHATTRIBUTES
    "  BATCHCONTROLFIELDS    = LS_BATCHCONTROLFIELDS
    IMPORTING
      BATCH                 = LV_BATCH
    TABLES
      RETURN                = IT_RETURN.
  IF IT_RETURN-TYPE = 'S'.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          WAIT = 'X'.
    ELSE.
      ROLLBACK WORK.
    ENDIF.
    FREE MEMORY id LV_ID.
    ENDIF. 
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 161,192评论 4 369
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,186评论 1 303
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,844评论 0 252
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,471评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,876评论 3 294
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,891评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,068评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,791评论 0 205
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,539评论 1 249
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,772评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,250评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,577评论 3 260
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,244评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,146评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,949评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,995评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,812评论 2 276

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,106评论 18 139
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    X先生_未知数的X阅读 15,937评论 3 118
  • 最近才知道罗勒不是什么矜贵遥远的物种。 我在家乡时常常吃它,各家的小菜园子里都能看到它,各家餐桌上都弥漫着它的香气...
    魏沈默阅读 628评论 0 0
  • 尊敬的家长: 您好!在您的关心和支持下,2018年春季学期即将结束,在此,衷心感谢本学期以来您对我园工作的支持与帮...
    中班老师王荣阅读 233评论 0 0
  • 昨夜,屋前还下着蒙蒙细雨,今天起床时,已成了倾盆大雨。忽然想起,今天是二十四节气中的雨水!真是“好雨知时节...
    王子猷阅读 596评论 2 6