EWM常规开发知识汇总
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常规开发知识汇总相关推荐
- Reporting报表开发知识汇总[个人原创]
[个人原创] ,转发请声明原文链接 了解 a) SSRS全称 SQL Server Reporting Services,是依赖于数据库运行的,是微软开发的重量级别的BI产品 b) ...
- springboot 技术图谱_java后台(Springboot)开发知识图谱高频技术汇总-学习路线...
[原创]java后台(Springboot)开发知识图谱&&高频技术汇总 1.引言: 学习一个新的技术时,其实不在于跟着某个教程敲出了几行.几百行代码,这样你最多只能知其然而不知其所以 ...
- python开发微信群_Python编程:微信群聊程序的开发与进/线程知识汇总(附代码)
本文承接上篇文章的客户端-服务器聊天对话程序,进一步设计开发了微信群聊的python模拟程序,涉及的python知识点为:Python实战:聊天软件开发与TCP/Socket编程知识汇总(附代码)和 ...
- 后端开发知识框架汇总
后端开发知识框架汇总 Spring框架 Spring/Springboot/SpringMVC Spring 其是一个引擎,众多衍生产品例如boot.security.jpa等等:但他们的基础都是 ...
- 直播app开发基础知识汇总
很多想进行直播app开发的朋友,可能并不太了解音视频软件开发基础知识,以下这篇文章来源网络,都是一些基础概念,转载与大家分享. 当然,这只是一篇基础知识文档,如果有需要更深度了解直播app开发知识的朋 ...
- 游戏软件性能测试怎么做?常规测试知识要点总结
随着网络游戏市场的进一步繁荣,人们对游戏软件关注度和性能要求越来越高.就拿几款热门手游来说,如果游戏使用人群基数大,那么势必会对游戏软件服务器产生压力,玩家的体验也不好.所以做好游戏软件性能测试对于开 ...
- 网络基础知识汇总学习
一.网线(双绞线)连接线的制作 双绞线制作有 568A 和 568B 两个标准,日常以 568B 标准较常用. 568B 标准按颜色排序为: 1- 橙白. 2- 橙.3- 绿白.4- 蓝. 5- 蓝白 ...
- java并发核心知识体系精讲_JAVA核心知识汇总
双非同学如何逆袭大厂? 在互联网行业,入行的第一份工作很大程度上决定了以后职业发展的高度.有些双非的同学认为自己校招进不了大厂以后还会有社招,这种想法很危险.大厂的社招,大多数都只招大厂的员工.什么意 ...
- 关于IOS开发知识的总结
IOS开发特别备注: IOS 7 UI适配方法 http://blog.sina.com.cn/s/blog_6fd90b5b0101cy50.html http://forum.bee-framew ...
最新文章
- Visual Studio2005奇怪的bug及解决【月儿原创】
- r740服务器增加内存,戴尔R740服务器获取cpu、内存、硬盘参数信息。
- 【转】log4net使用详解
- Spring Security:基于MySQL数据库的身份认证
- 紫书搜索 习题7-4 UVA - 818 Cutting Chains 暴力+dfs判环+位运算
- Android应用中使用及实现系统“分享”接口
- CST时间转换成 yyyy-MM-dd格式
- android 定时闹钟逻辑,Android 定时执行任务 AlarmManager的使用(可用于闹钟开发)...
- navigationcontroller和navigationbar和navigationitem之间的区别以及不用nib实现点击屏幕关闭虚拟键盘20130911...
- php区分字符串数字,php如何判断字符串是不是数字
- C语言开发环境搭建及调试
- matplotlib绘制风能玫瑰图
- JDK和CGLIB动态代理的区别
- 图片如何转化为pdf格式?
- Leetcode-1436: 旅行终点站(6行简单解法)
- 程序猿生存指南-11 入职朗云
- 计算机科学技术标准,计算机科学技术基础知识之标准化和知识产权基础知识
- WindowsXP注册表详解
- ❥关于C++之写入/读取文本文件
- Css margin和pandding的上下左右