当前位置: 首页 > news >正文

两台电脑一台做服务器 网站广州网络优化最早的公司

两台电脑一台做服务器 网站,广州网络优化最早的公司,空白的网站怎么建设,耒阳网站开发场景 MD04跑出来很多MRP元素,用户想手工控制某些MRP元素不参与运算 分析 增强点还蛮好找的,控制MRP元素是否参与运算用下面的se19三代增强点就可以,打个断点看下MD04进的哪个增强点就行 旧版本的用这个:MD_CHANGE_MRP_DATA 新…

场景

MD04跑出来很多MRP元素,用户想手工控制某些MRP元素不参与运算
在这里插入图片描述

分析

增强点还蛮好找的,控制MRP元素是否参与运算用下面的se19三代增强点就可以,打个断点看下MD04进的哪个增强点就行
旧版本的用这个:MD_CHANGE_MRP_DATA
新版本的用这个:MD_ADD_ELEMENTS
这个项目的客户SAP版本比较新,用的MD_ADD_ELEMENTS
只要在这个增强点中找到用户需要排除的行项目,将该行的需求数量置空,同时将参数CH_CHANGED赋值’X’即可
在这里插入图片描述
看到这好像还挺简单的,只要拉个报表把MD04的行项目拉出来,把需要排除的行项目打上标记,在增强点读取出需要排除掉的行项目即可
对于一般的MRP元素上述方案完全可行,但是有些MRP元素是多层的,比如工单涉及的其他下层物料MRP元素也需要一起排除,所以此时用户实际上的需求并不是按屏幕上MD04的行项目去排除,而是按订单去排除…跟业务沟通了好些时候才弄清楚,可能我以前没做过MRP增强而且也比较笨
分析完了就开始冻手观察前台的数据了,通过BAPI【MD_STOCK_REQUIREMENTS_LIST_API】输入工厂和物料可以拉取前台MD04的内表(实际MD04也是用的这个BAPI),前台的内表对应BAPI中的mdezx,后台增强的内表对应mdpsx
在这里插入图片描述
可以通过mdezx-aline找到对应的mdpsx,aline这个字段就代表前台md04内表mdezx在后台增强内表mdpsx的索引值
在这里插入图片描述
现在前后台内表的关联关系也有了,下一步就是排除所有相关的MRP元素对应的单据,业务给我做了条数据,左侧是最上层的工单,右侧是此工单产生的需求,都是要排除掉的

以此工单10000000560为例,增强的内表mdpsx中字段del12,delnr,delps三个字段组合起来可以作为唯一值关联到后续两个MD04的MRP元素,也是找了不少数据做校验才得出这个结论,所以只要能够在MD04增强的内表中组合这三个字段,在后台表中捞取得到就把该行MRP元素排除

实现

我就只放关键代码和自建表了
MRP排除元素自建表,内表mdpsx中字段del12,delnr,delps组合起来形成的主键MRP_ELMENTS才是关键,其他都是没啥用的字段,不重要
在这里插入图片描述
报表取数逻辑

" CODE PART1 
" 报表内表结构
TYPES:BEGIN OF ty_output,matnr       TYPE marc-matnr           , " 物料maktx       TYPE makt-maktx           , " 物料描述werks       TYPE marc-werks           , " 工厂name1       TYPE t001w-name1          , " 工厂描述del12       TYPE mdps-del12,delnr       TYPE mdps-delnr,delps       TYPE mdps-delps,excld       TYPE c                    , " 排除mrp_elments TYPE zppt025-mrp_elments  , " MRP元素号 DEL12+DELNR+DELPS组合字段flag        TYPE c                    , " 修改标记delb1       TYPE t457t-delb1          . " MRP元素描述INCLUDE STRUCTURE mdez.TYPES:END OF ty_output." CODE PART2 " 根据物料和工厂获取MD04物料信息CALL FUNCTION 'MD_STOCK_REQUIREMENTS_LIST_API'EXPORTINGmatnr = ls_data-matnrwerks = ls_data-werksTABLESmdpsx = lt_mdps    " MD04前台内表mdezx = lt_mdez.   " 后台增强的内表" 将前后台的表根据aline做匹配,mdezx中数据量会多一些,具体原因不清楚LOOP AT lt_mdez INTO DATA(ls_mdez).lv_tabix = sy-tabix.READ TABLE lt_zppt024 TRANSPORTING NO FIELDS WITH KEY delkz = ls_mdez-delkz BINARY SEARCH.IF sy-subrc = 0.MOVE-CORRESPONDING ls_mdez TO gs_output.READ TABLE lt_mdps INTO DATA(ls_mdps) INDEX gs_output-aline.IF sy-subrc = 0.gs_output = VALUE #( BASE gs_outputdel12       = ls_mdps-del12delnr       = ls_mdps-delnrdelps       = ls_mdps-delpsmrp_elments = ls_mdps-del12 && ls_mdps-delnr && ls_mdps-delps ). " 重点就是这个字段,后续需要存到数据库中ENDIF.APPEND gs_output TO gt_output.ENDIF.ENDLOOP.

报表成品长这样,用户勾选哪行要删除的话,对应的字段del12,delnr,delps组合起来形成主键mrp_elments保存到数据库
在这里插入图片描述
增强代码

  METHOD if_ex_md_add_elements~add_change_elements.TYPES:BEGIN OF ty_data,index       TYPE i                    , " 索引mrp_elments TYPE zppt025-mrp_elments  , " MRP元素号 DEL12+DELNR+DELPS组合字段END OF ty_data.DATA: lv_index TYPE i,lt_data  TYPE TABLE OF ty_data,lr_delkz TYPE RANGE OF zppt024-delkz.IF sy-tcode = 'SE38' OR sy-tcode = 'ZPPR026'. " 跑程序的时候需要拉所有清单,不做过滤EXIT.ENDIF." 获取配置表,拉取需要排除的订单类型" zppt024这个表也是个配置表,用户想在MD04排除某一特定类型的单据,好像是预留单被排除掉了...SELECT*FROM zppt024WHEREexcld = 'X'INTO TABLE @DATA(lt_zppt024).SORT lt_zppt024 BY delkz.lr_delkz[] = VALUE #( FOR lw_zppt024 IN lt_zppt024( sign = 'I' option = 'EQ' low = lw_zppt024-delkz ) )." 拉取所有元素,预处理索引和MRP元素LOOP AT ch_copy_mdpsx INTO DATA(ls_mdps).lt_data = VALUE #( BASE lt_data( index       = lv_index + 1mrp_elments = ls_mdps-del12 && ls_mdps-delnr && ls_mdps-delps ) )." 工单特殊处理,下钻的时候有可能带上预留单,所以要通过这个方式筛选出下钻的工单lt_data = VALUE #( BASE lt_data( index       = lv_index + 1mrp_elments = ls_mdps-del12 && ls_mdps-delps ) )." 委外订单特殊处理,下钻的时候需要通过AUFVR和POSVR找到上层的委外订单,才能删除下钻的预留单IF ls_mdps-delvr = 'BE' AND ls_mdps-delkz = 'BB'. " 采购 & 外协lt_data = VALUE #( BASE lt_data( index       = lv_index + 1mrp_elments = ls_mdps-aufvr && ls_mdps-posvr ) ).ENDIF.lv_index += 1.ENDLOOP.SORT lt_data BY index mrp_elments.DELETE ADJACENT DUPLICATES FROM lt_data COMPARING ALL FIELDS.IF lt_data IS INITIAL.EXIT.ENDIF." 读取需要被排除的mrp_elmentsSELECTtb~index,zppt025~mrp_elmentsFROM zppt025INNER JOIN @lt_data AS tb ON tb~mrp_elments = zppt025~mrp_elments              " 其次在MRP元素中删除所有该单据WHEREzppt025~exclude     = 'X'INTO TABLE @DATA(lt_zppt025).SORT lt_zppt025 BY index.DELETE ADJACENT DUPLICATES FROM lt_zppt025 COMPARING index.IF lt_zppt025 IS INITIAL.EXIT.ENDIF." 按mrp_elments排除单据LOOP AT lt_zppt025 INTO DATA(ls_zppt025).READ TABLE ch_copy_mdpsx ASSIGNING FIELD-SYMBOL(<fs_mdps>) INDEX ls_zppt025-index.IF sy-subrc = 0.CLEAR <fs_mdps>-mng01.ch_changed = 'X'.ENDIF.ENDLOOP." 按单据类型排除单据IF lr_delkz[] IS NOT INITIAL.LOOP AT ch_copy_mdpsx ASSIGNING <fs_mdps> WHERE delkz IN lr_delkz.CLEAR <fs_mdps>-mng01.ch_changed = 'X'.ENDLOOP.ENDIF.ENDMETHOD.

收工!追番!为美好的世界献上祝福!

http://www.zhongyajixie.com/news/2555.html

相关文章:

  • wordpress商务插件优化网站排名如何
  • 网站做调查问卷给钱的兼职广州网站排名推广
  • 网站做一年了没做301互联网营销师培训课程
  • 天津 网站优化谷歌seo优化中文章
  • 惠州淘宝网站建设广州十大营销策划公司
  • 重庆网站建设培训机构搜索引擎营销是什么意思
  • seo的最终目的是?宁波企业seo推广
  • 龙湾区网站制作公司桔子seo查询
  • 邢台物流网站建设百度账号购买网站
  • 公司网站建设费用预算深圳营销策划公司十强
  • fla可以做网站么如何做网络销售平台
  • 设计师网站接单排行榜哪个网站最好
  • 惠州做网站建设价格免费刷粉网站推广
  • 代做毕业设计找哪个网站好南召seo快速排名价格
  • 有没有免费做编辑网站管理系统百度收录要多久
  • 怎么查网站的注册信息百度竞价推广常用到的工具
  • 学院网站建设成果游戏推广赚佣金平台
  • 松江网站建设培训学校机构
  • 中国视觉设计网站如何做好线上营销
  • 化妆品网站建设原因网络营销模式
  • 深圳民治网站建设网络推广费用
  • 怎么查网站找谁做的网络推广员岗位职责
  • 东莞做网站最好的是哪家百度网盘app怎么打开链接
  • 做网站设计赚钱吗北京朝阳区疫情最新情况
  • 无锡新区网站建设网站seo外链建设
  • 做视频网站怎么挣钱手机制作网站的软件
  • 哪个网站专门做牛奶的电商运营自学网站
  • 动态网站代做乐事薯片软文推广
  • 适合大学生做兼职的网站有哪些百度查重入口
  • 建站63年来第一次闭站?北京站辟谣手机百度app下载安装