EWM常规开发知识总结

目录

  • EWM常规开发知识总结
  • 前言
  • 一、EWM常用tcode/table/function汇总
    • 1.Tcode
    • 2.Table
    • 3.Function
    • 4.Class
  • 二、开发Demo
    • 1.基于函数
    • 2.基于Class
  • 三、增强
    • 1.SE18
    • 2.SPRO
    • 3.SE20
  • 总结

前言

什么是EWM?

SAP EWM即扩展仓库管理Extended Warehouse Management(简写EWM),此系统为客户处理各种商品移动和管理仓库库存,提供灵活的自动化支持。系统能够对客户所有仓库物流流程进行有计划地高效处理,而仓库中的主要流程是收货和退货,收货和发货。

一、EWM常用tcode/table/function汇总

1.Tcode

EWM直接前台输入的话需要加/n,否则需要在se93执行tcode

function area Description T-code
Monitor 仓库管理监控器 /n/scwm/mon
Outbound 维护出库交货订单 /n/scwm/prdo
Inbound 维护入库交货 /n/scwm/prdi
Internal 创建处理单位的仓库任务 /n/scwm/adhu
过账更改 /n/scwm/post
确认仓库任务 /n/scwm/to_conf
包装 - 常规 /n/scwm/pack
维护运输单位 /n/scwm/tu
维护波次 /n/scwm/wave
Physical inventory 创建实际库存凭证 /n/scwm/pi_create
输入库存盘点计数 /n/scwm/pi_count
处理实际库存凭证 /n/scwm/pi_process
RF 登录到 RF 环境 /n/scwm/rfui
用户维护 /n/scwm/user
资源维护 /n/scwm/rsrc
资源组维护 /n/scwm/rgrp
描述设备维护 /n/scwm/prdvc

2.Table

基本都是以/scwm和/scdl为开头

Table Area Description Table
Reference Reference /SCDL/DB_REFDOC
Status /SCDL/DB_STATUS
Outbound Outbound Delivery Order Header /SCDL/DB_PROCH_O
Outbound Delivery Order Item /SCDL/DB_PROCI_O
Inbound Inbound Delivery: Header /SCDL/DB_PROCH_I
Inbound Delivery Item /SCDL/DB_PROCI_I
HU Handling Unit /SCDL/DB_HU
Handling unit header /SCWM/HUHDR
Handling Unit Item /SCWM/GMHUITM
Handling Unit Reference /SCWM/HUREF
Warehouse Task Warehouse Tasks Log Table /SCWM/ORDIM_L
Warehouse Tasks Confirmed /SCWM/ORDIM_C
Warehouse Tasks Open /SCWM/ORDIM_O
Exception Codes for Warehouse Task /SCWM/ORDIM_E
Wave Wave - Header Information SCWM/WAVEHDR
Wave Item SCWM/WAVEITM
TU Assignment of Deliveries and HUs to Transportation Units /SCWM/TU_DLV
Status of Transportation Unit Activities /SCWM/TU_STATUS

3.Function

Function Description
/SCWM/SELECT_STOCK Selection of Stock
/SCWM/STOCK_CHANGE Stock Transfer Postings
/SCWM/TO_CREATE Generate Warehouse Task with Multiple Items
/SCWM/TO_CONFIRM Confirm Warehouse Task
/SCWM/TO_CANCEL Cancel Warehouse Task
/SCWM/TO_POST Update Internal Warehouse Task Tables
/SCWM/TO_CREATE_MOVE_HU Generate Warehouse Task for Moving HUs
/SCWM/HU_SELECT_GEN Selecting HUs
/SCWM/HUHEADER_READ Read a HU Header
/SCWM/HUITM_READ Read HU Items

4.Class

Class Description
/SCDL/CL_SP_PRD_INB Service Provider PRD Inbound Delivery
/SCDL/CL_SP_PRD_OUT Service Provider PRD Outbound Delivery
/SCWM/CL_WM_PACKING Packing in WM with Immediately Confirmed Transfer Orders
/SCWM/CL_DLV_PACK_IBDL Packing of Outbound Delivery
/SCWM/CL_RF_BLL_SRVC RF Business Logic Layer

二、开发Demo

1.基于函数

代码如下(EWM库存状态变更/SCWM/STOCK_CHANGE):

FUNCTION zewm_change_stock.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     REFERENCE(IV_LGNUM) TYPE  /SCWM/LGNUM
*"     REFERENCE(IT_INPUT) TYPE  ZEWM_T_001
*"  EXPORTING
*"     REFERENCE(ET_OUTPUT) TYPE  BAPIRET2_TAB
*"----------------------------------------------------------------------DATA:lr_huident  TYPE rseloption,lt_huitm    TYPE /scwm/tt_stock_select,lt_huhdr    TYPE /scwm/tt_huhdr,ls_header   TYPE /scwm/s_gmheader,lt_item     TYPE /scwm/tt_spitem,ls_item     TYPE /scwm/s_spitem,lt_ltap_vb  TYPE /scwm/tt_ltap_vb,lt_bapiret  TYPE bapiret2_tab,lt_bapiret2 TYPE bapiret2_tab,lv_severity TYPE bapi_mtype,lv_id       TYPE /lime/line_item_id.CLEAR:lt_bapiret.LOOP AT it_input INTO DATA(ls_input).CLEAR:lv_severity./scwm/cl_tm=>cleanup( )./scwm/cl_tm=>set_lgnum( iv_lgnum ).lr_huident = VALUE #( ( sign = 'I' option = 'EQ' low = ls_input-huident ) ).CLEAR: lt_huitm, lt_huhdr.CALL FUNCTION '/SCWM/SELECT_STOCK'EXPORTINGiv_lgnum   = iv_lgnumir_huident = lr_huidentIMPORTINGet_huitm   = lt_huitmet_huhdr   = lt_huhdrEXCEPTIONSerror      = 1.IF lt_huitm[] IS INITIAL.lv_severity = 'E'.APPEND VALUE #( id = '00' type = 'E' number = '398' message = '未查询到HU:' && ls_input-huident ) TO lt_bapiret.CONTINUE.ENDIF.READ TABLE lt_huitm INTO DATA(ls_huitm) INDEX 1.CLEAR ls_header.ls_header-lgnum = iv_lgnum.ls_header-created_by = sy-uname.ls_header-post  = abap_false.ls_header-compl = abap_true.ls_header-code = '/SCWM/POST'.CLEAR:lv_id,lt_item,ls_item,ls_item-t_quan.ADD 1 TO lv_id.ls_item-id                     = lv_id.ls_item-id_group               = '2'.ls_item-direction              = 'T'.ls_item-procty                 = ls_input-procty.ls_item-guid_hu                = ls_input-guid_hu.ls_item-huident                = ls_input-huident.
*    ls_item-squant_set             = 'X'.ls_item-loc-lgnum              = ls_huitm-lgnum.ls_item-loc-lgtyp              = ls_huitm-lgtyp.ls_item-loc-lgpla              = ls_huitm-lgpla." 源ls_item-source_s-idx_stock     = ls_huitm-idx_stock.ls_item-source_s-guid_stock    = ls_huitm-guid_stock.ls_item-source_s-matid         = ls_huitm-matid.ls_item-source_s-batchid       = ls_huitm-batchid.ls_item-source_s-cat           = ls_huitm-cat.ls_item-source_s-stock_doccat  = ls_huitm-stock_doccat.ls_item-source_s-stock_docno   = ls_huitm-stock_docno.ls_item-source_s-stock_itmno   = ls_huitm-stock_itmno.ls_item-source_s-stock_usage   = ls_huitm-stock_usage.ls_item-source_s-owner         = ls_huitm-owner.ls_item-source_s-owner_role    = ls_huitm-owner_role.ls_item-source_s-entitled      = ls_huitm-entitled.ls_item-source_s-entitled_role = ls_huitm-entitled_role.ls_item-source_s-stock_cnt     = ls_huitm-stock_cnt.ls_item-source_s-qdoccat       = ls_huitm-qdoccat.ls_item-source_s-qdocid        = ls_huitm-qdocid.ls_item-source_s-qitmid        = ls_huitm-qitmid." 目标ls_item-dest_s-matid           = ls_huitm-matid.ls_item-dest_s-batchid         = ls_huitm-batchid.ls_item-dest_s-cat             = ls_input-to_cat.   " Catls_item-dest_s-stock_doccat    = ls_huitm-stock_doccat.ls_item-dest_s-stock_docno     = ls_huitm-stock_docno.ls_item-dest_s-stock_itmno     = ls_huitm-stock_itmno.ls_item-dest_s-stock_usage     = ls_huitm-stock_usage.ls_item-dest_s-owner           = ls_huitm-owner.ls_item-dest_s-owner_role      = ls_huitm-owner_role.ls_item-dest_s-entitled        = ls_huitm-entitled.ls_item-dest_s-entitled_role   = ls_huitm-entitled_role.ls_item-dest_s-stock_cnt       = ls_huitm-stock_cnt.ls_item-dest_s-qdoccat         = ls_huitm-qdoccat.ls_item-dest_s-qdocid          = ls_huitm-qdocid.ls_item-dest_s-qitmid          = ls_huitm-qitmid.ls_item-dest_loc-lgnum         = ls_huitm-lgnum.ls_item-dest_loc-lgtyp         = ls_input-nltyp. " 目标存储类型ls_item-dest_loc-lgpla         = ls_input-nlpla. " 目标仓位APPEND VALUE #( quan = ls_huitm-quan unit = ls_huitm-meins ) TO ls_item-t_quan.APPEND ls_item TO lt_item.IF lt_item IS NOT INITIAL.CLEAR: lt_ltap_vb, lt_bapiret2, lv_severity.CALL FUNCTION '/SCWM/STOCK_CHANGE'EXPORTINGis_header   = ls_headerit_item     = lt_itemIMPORTINGet_ltap_vb  = lt_ltap_vbet_bapiret  = lt_bapiret2ev_severity = lv_severityEXCEPTIONSwrong_input = 1OTHERS      = 2.IF sy-subrc <> 0.lv_severity = 'E'.ELSE.LOOP AT lt_bapiret2 TRANSPORTING NO FIELDS WHERE type CA 'EAX'.lv_severity = 'E'.EXIT.ENDLOOP.ENDIF.IF lv_severity <> 'E'.CLEAR: lt_bapiret2, lv_severity.CALL FUNCTION '/SCWM/GM_POST'IMPORTINGet_bapiret  = lt_bapiret2ev_severity = lv_severity.LOOP AT lt_bapiret2 TRANSPORTING NO FIELDS WHERE type CA 'EAX'.lv_severity = 'E'.EXIT.ENDLOOP.ENDIF.IF lv_severity <> 'E'.COMMIT WORK AND WAIT.APPEND VALUE #( id = '00' type = 'S' number = '398' message = ls_input-huident && '修改成功' ) TO lt_bapiret.ELSE.APPEND LINES OF lt_bapiret2 TO lt_bapiret.APPEND VALUE #( id = '00' type = 'E' number = '398' message = ls_input-huident && '修改失败' ) TO lt_bapiret.ROLLBACK WORK.ENDIF./scwm/cl_tm=>cleanup( iv_reason = /scmb/if_sp_transaction=>sc_cleanup_commit ).ENDIF.ENDLOOP.IF lt_bapiret IS NOT INITIAL.et_output[] = lt_bapiret[].ENDIF.ENDFUNCTION.

2.基于Class

代码如下(/n/scwm/prdo更新交货单数量):

DATA: lo_sp             TYPE REF TO /scdl/cl_sp_prd_out,lo_message_box    TYPE REF TO /scdl/cl_sp_message_box,ls_sp_action      TYPE /scdl/s_sp_act_action,ls_relation_inkey TYPE /scdl/s_sp_k_head,lt_sp_k_head      TYPE /scdl/t_sp_k_head,lt_sp_k_item      TYPE /scdl/t_sp_k_item,lt_a_item2        TYPE /scdl/t_sp_a_item,ls_sp_k_item      TYPE /scdl/s_sp_k_item,lt_return_codes   TYPE /scdl/t_sp_return_code,lt_messages       TYPE /scdl/dm_message_tab,lv_rejected       TYPE boole_d,lv_error_occured  TYPE boole_d.FIELD-SYMBOLS: <ls_parameter>  TYPE  any.DATA: lv_msg TYPE bapi_msg,lv_txt TYPE bapi_msg.SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.PARAMETERS:p_lgnum TYPE /scwm/lgnum,p_vbeln TYPE vbeln_vl, " dnp_posnr TYPE posnr_vl. " dn itemSELECTION-SCREEN END OF BLOCK b1.BREAK-POINT." 根据ecc 的交货单 查询 ewm交货单key
SELECT SINGLE * FROM /scdl/db_refdocINTO @DATA(ls_db_refdoc)WHERE refdocno  = @p_vbelnAND refitemno = @p_posnrAND refdoccat = 'ERP'." 查询ewm交货单行数据
SELECT SINGLE * FROM /scdl/db_proci_oINTO @DATA(ls_prdo_i)WHERE docid  = @ls_db_refdoc-docidAND itemid = @ls_db_refdoc-itemid.ls_sp_k_item-docid  = ls_prdo_i-docid.
ls_sp_k_item-itemid = ls_prdo_i-itemid.
APPEND ls_sp_k_item TO lt_sp_k_item.ls_relation_inkey-docid = ls_prdo_i-docid.
APPEND ls_relation_inkey TO lt_sp_k_head.CREATE OBJECT lo_message_box. " message box" set class /scdl/cl_sp_prd_out
CREATE OBJECT lo_spEXPORTINGio_message_box = lo_message_boxiv_doccat      = /scdl/if_dl_doc_c=>sc_doccat_out_prdiv_mode        = /scdl/cl_sp=>sc_mode_classic."set warehouse
/scwm/cl_tm=>set_lgnum( p_lgnum )." set lock
lo_sp->lock(EXPORTINGinkeys       = lt_sp_k_headaspect       = /scdl/if_sp_c=>sc_asp_headlockmode     = /scdl/if_sp1_locking=>sc_exclusive_lockIMPORTINGrejected     = lv_rejectedreturn_codes = lt_return_codes )." get msg
READ TABLE lt_return_codes TRANSPORTING NO FIELDS WITH KEY failed = abap_true.
IF sy-subrc = 0 OR lv_rejected = abap_true.lv_error_occured = abap_true.MESSAGE ID sy-msgid TYPE 'E' NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4INTO lv_msg.
ENDIF." set action
CREATE DATA ls_sp_action-action_control TYPE /scdl/bo_action_adjqty_str.
ASSIGN ls_sp_action-action_control->* TO <ls_parameter>.
ls_sp_action-action_code = '028'.
<ls_parameter> = 'O001'.IF lv_error_occured = abap_false." executeCLEAR:lt_return_codes,lv_rejected.lo_sp->execute(EXPORTINGaspect       = /scdl/if_sp_c=>sc_asp_iteminkeys       = lt_sp_k_iteminparam      = ls_sp_actionaction       = /scdl/if_sp_c=>sc_act_execute_actionIMPORTINGoutrecords   = lt_a_item2rejected     = lv_rejectedreturn_codes = lt_return_codes )." get msgREAD TABLE lt_return_codes TRANSPORTING NO FIELDS WITH KEY failed = abap_true.IF sy-subrc = 0 OR lv_rejected = abap_true.lv_error_occured = abap_true.MESSAGE ID sy-msgid TYPE 'E' NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4INTO lv_msg.ENDIF.ENDIF." 可以通过类 抓取消息
lt_messages = lo_message_box->get_messages( ).IF lv_error_occured = abap_false.CLEAR lv_rejected." before savelo_sp->before_save( IMPORTING rejected = lv_rejected )." get msgIF lv_rejected = abap_true.lv_error_occured = abap_true.MESSAGE ID sy-msgid TYPE 'E' NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4INTO lv_msg.ENDIF.ENDIF.IF lv_error_occured = abap_false.CLEAR lv_rejected." savelo_sp->save( IMPORTING rejected = lv_rejected )." get msgIF lv_rejected = abap_true.lv_error_occured = abap_true.MESSAGE ID sy-msgid TYPE 'E' NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4INTO lv_msg.ENDIF.ENDIF.IF lv_error_occured = abap_true.MESSAGE lv_msg TYPE 'S' DISPLAY LIKE 'E'.ROLLBACK WORK.
ELSE.MESSAGE '更改成功' TYPE 'E'.COMMIT WORK AND WAIT.
ENDIF." clean up
CALL METHOD lo_sp->cleanupEXPORTINGreason = /scmb/if_sp_transaction=>sc_cleanup_commit."clear buffers and release loc
/scwm/cl_tm=>cleanup( ).

三、增强

可以通过三种方式查找

1.SE18

SE18->增强点 /SCWM/ES_*

2.SPRO

SPRO->SCM Extended Warehouse Management->扩展仓库管理->
SCM Extended Warehouse Management

3.SE20

SE20->复合增强点/SCWM/ESC_MAIN,显示的所有增强即为EWM可用增强位置

总结

以上就是今天要讲的内容,本文仅仅简单介绍了EWM常用的常规开发知识,也是我在项目上积累所得,具体的开发还需上手实操。

EWM常规开发知识汇总相关推荐

  1. Reporting报表开发知识汇总[个人原创]

    [个人原创] ,转发请声明原文链接 了解 a)      SSRS全称 SQL Server Reporting Services,是依赖于数据库运行的,是微软开发的重量级别的BI产品 b)      ...

  2. springboot 技术图谱_java后台(Springboot)开发知识图谱高频技术汇总-学习路线...

    [原创]java后台(Springboot)开发知识图谱&&高频技术汇总 1.引言: 学习一个新的技术时,其实不在于跟着某个教程敲出了几行.几百行代码,这样你最多只能知其然而不知其所以 ...

  3. python开发微信群_Python编程:微信群聊程序的开发与进/线程知识汇总(附代码)

    本文承接上篇文章的客户端-服务器聊天对话程序,进一步设计开发了微信群聊的python模拟程序,涉及的python知识点为:Python实战:聊天软件开发与TCP/Socket编程知识汇总(附代码)和 ...

  4. 后端开发知识框架汇总

    后端开发知识框架汇总 Spring框架 Spring/Springboot/SpringMVC Spring ​ 其是一个引擎,众多衍生产品例如boot.security.jpa等等:但他们的基础都是 ...

  5. 直播app开发基础知识汇总

    很多想进行直播app开发的朋友,可能并不太了解音视频软件开发基础知识,以下这篇文章来源网络,都是一些基础概念,转载与大家分享. 当然,这只是一篇基础知识文档,如果有需要更深度了解直播app开发知识的朋 ...

  6. 游戏软件性能测试怎么做?常规测试知识要点总结

    随着网络游戏市场的进一步繁荣,人们对游戏软件关注度和性能要求越来越高.就拿几款热门手游来说,如果游戏使用人群基数大,那么势必会对游戏软件服务器产生压力,玩家的体验也不好.所以做好游戏软件性能测试对于开 ...

  7. 网络基础知识汇总学习

    一.网线(双绞线)连接线的制作 双绞线制作有 568A 和 568B 两个标准,日常以 568B 标准较常用. 568B 标准按颜色排序为: 1- 橙白. 2- 橙.3- 绿白.4- 蓝. 5- 蓝白 ...

  8. java并发核心知识体系精讲_JAVA核心知识汇总

    双非同学如何逆袭大厂? 在互联网行业,入行的第一份工作很大程度上决定了以后职业发展的高度.有些双非的同学认为自己校招进不了大厂以后还会有社招,这种想法很危险.大厂的社招,大多数都只招大厂的员工.什么意 ...

  9. 关于IOS开发知识的总结

    IOS开发特别备注: IOS 7 UI适配方法 http://blog.sina.com.cn/s/blog_6fd90b5b0101cy50.html http://forum.bee-framew ...

最新文章

  1. Visual Studio2005奇怪的bug及解决【月儿原创】
  2. r740服务器增加内存,戴尔R740服务器获取cpu、内存、硬盘参数信息。
  3. 【转】log4net使用详解
  4. Spring Security:基于MySQL数据库的身份认证
  5. 紫书搜索 习题7-4 UVA - 818 Cutting Chains 暴力+dfs判环+位运算
  6. Android应用中使用及实现系统“分享”接口
  7. CST时间转换成 yyyy-MM-dd格式
  8. android 定时闹钟逻辑,Android 定时执行任务 AlarmManager的使用(可用于闹钟开发)...
  9. navigationcontroller和navigationbar和navigationitem之间的区别以及不用nib实现点击屏幕关闭虚拟键盘20130911...
  10. php区分字符串数字,php如何判断字符串是不是数字
  11. C语言开发环境搭建及调试
  12. matplotlib绘制风能玫瑰图
  13. JDK和CGLIB动态代理的区别
  14. 图片如何转化为pdf格式?
  15. Leetcode-1436: 旅行终点站(6行简单解法)
  16. 程序猿生存指南-11 入职朗云
  17. 计算机科学技术标准,计算机科学技术基础知识之标准化和知识产权基础知识
  18. WindowsXP注册表详解
  19. ❥关于C++之写入/读取文本文件
  20. Css margin和pandding的上下左右

热门文章

  1. 数据库having的用法详细介绍
  2. teamviewer付费版,授权轻松访问后还是每次电脑重启后还需要输入密码问题。
  3. 机器学习之ID3算法(小白入门级别)
  4. java tcc事务 例子_分布式事务之TCC事务模型
  5. 学计算机用书包吗,起底大学生活 | 书包物品大揭秘
  6. Dubbo3.0系列(6)- Dubbo3.0支持的RPC协议
  7. 把Redis当作队列来用,真的合适吗
  8. JavaScript DOM编程-佟刚-专题视频课程
  9. 【高等数学】-积分再现公式
  10. 0x01.渗透思路篇