一步一步跟我学函数出口增强开发图解教程.docx
- 文档编号:4761456
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:10
- 大小:275.92KB
一步一步跟我学函数出口增强开发图解教程.docx
《一步一步跟我学函数出口增强开发图解教程.docx》由会员分享,可在线阅读,更多相关《一步一步跟我学函数出口增强开发图解教程.docx(10页珍藏版)》请在冰豆网上搜索。
一步一步跟我学函数出口增强开发图解教程
一步一步跟我学函数出口增强开发-图解教程
部门:
IT服务部作者:
肖剑锋
一、案例需求:
财务要求管控成品生产订单收货,成品生产订单收货入库数量不能大于成品生产订单报工确认数量,换句话说,报工多少数量,就只能收货入库多少数量。
二、增强背景:
从成本角度看现在成品生产报工与入库并无关联,成品仓只需根据车间开具的成品入库单就可录入系统并做发货操作,因此存在问题有三:
第一、如果车间未报工,成品入库后其生产成本无法自动计入;
第二、只能进行补报工,但成本也需人工手动投入,费时费工;
第三、是成品仓录入数据多与少无法比对(订单数量往往和生产实际数量不一致)。
若做关联,成品仓就会起到应有的复核把关监督的职能,弥补系统流程上的漏洞,减少生产报工和仓库录入的错误,促进和改善系统运行。
但就现实状况来讲对生产报工的压力增大,报工不及时或出错,会造成成品入库不及时,势必影响到订单出货。
三、增强开发的利弊分析:
利:
1.规范生产交货、仓储收货行为;
2.督促生产及时报工;
3.减少漏报工问题;
4.避免货已交客户,但生产尚未报工的现象出现;
5.减少对财务月结的影响;
弊:
在紧急情况下,销售等不及生产报工完成便要出货,那这一控制便是一个障碍,至于这个障碍时间有多长,则取决于生产报工的态度。
(针对一个生产订单的报工时间一般是几分钟便可完成,可忽略不计。
)
四、实现步聚:
Step1:
查找某个事务码的用户出口
1.录入事务码ZPPU018后,回车执行;
2.录入某个可能需要增强的事务码,比如生产收货事务码:
MIGO/MB31;点击执行按钮,或者直接按F8执行;
3.分析找到的函数出口名称;
Step2:
分析函数出口
1.录入事务码SMOD/CMOD,回车执行;
2.输入上面找到的函数出口名称,选取组件,并点击【显示】按钮进入下一个窗口界面;
3.双击某个出口功能模块,进入下一个窗口界面;
4.双击系统预留函数名称,并创建它;
Step3:
实现增强逻辑
1.根据实际业务需求编写自已的程序逻辑;
2.激活并测试,一定要记得激活,否则将无效。
五、附增强逻辑代码:
*&--------------------------------------------------------------*
*& 包括 ZXMBCU02
*& auther:
euler
*& date:
20130807
*&--------------------------------------------------------------*
data:
lv_type type mseg-bwart,"移动类型
lv_prefix1 type c,"生产订单编码前缀
lv_prefix2 type c,"物料编码前缀
lv_temp type makt-matnr,"临时变量,用于临时存储生产订单编码或者物料编码
lv_quan type afko-igmng,"生产订单确认数量
lv_sum1 type aufm-menge,"生产订单已入库数
lv_sum2 type aufm-menge,"生产订单已入库数-冲销的
lv_yxsl type aufm-menge,"可收货入库的有效数量
lv_yxsl2 type string."可收货入库的有效数量,将负号前提
clear:
lv_type, lv_prefix1, lv_prefix2, lv_temp, lv_quan, lv_sum1, lv_sum2, lv_yxsl, lv_yxsl2.
lv_type = I_MSEG-bwart.
clear lv_temp.
lv_temp = I_MSEG-aufnr.
shift lv_temp left deleting leading '0'.
lv_prefix1 = lv_temp+0
(1).
clear lv_temp.
lv_temp = I_MSEG-matnr.
shift lv_temp left deleting leading '0'.
lv_prefix2 = lv_temp+0
(1).
if lv_type = '101' and lv_prefix1 = '6' and lv_prefix2 = '6'.
"取生产订单已确认数量
select single igmng
into (lv_quan)
from afko
where aufnr = I_MSEG-aufnr.
"取生订订单已入库数量
select sum( menge )
into (lv_sum1)
from aufm
where bwart = '101' and matnr = I_MSEG-matnr and aufnr = I_MSEG-aufnr.
"取生产订单已入库数量-冲销的
select sum( menge )
into (lv_sum2)
from aufm
where bwart = '102' and matnr = I_MSEG-matnr and aufnr = I_MSEG-aufnr.
"可收货入库数量
lv_yxsl = lv_quan - ( lv_sum1 - lv_sum2 ).
lv_yxsl2 = lv_yxsl.
if lv_yxsl < 0.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
CHANGING
value = lv_yxsl2.
endif.
"收货入库数量不能大于可收货入库数量
if I_MSEG-erfmg > lv_yxsl.
MESSAGE ID '00' TYPE 'E' NUMBER '001' WITH '收货数量不能大于生产订单报工数量!
允许收货入库数量为:
' lv_yxsl2 I_MSEG-erfme.
exit.
endif.
endif.
六、附查找事务码用户出口程序源代码:
*****************************************************************
* System :
丰彩ERP项目
* Module :
PP AND QM
* Program ID :
U005
* Program :
查找事务码用户出口
* Author :
肖剑锋
* Date :
08.08.2013 16:
11:
57
* Description :
查找事务码用户出口
*****************************************************************
* Modified Recorder :
* Date C#NO Author Content
* ----------- ------- ------------------ ---------------
* 20130808
*****************************************************************
REPORT ZFC_PP_U005.
TABLES :
tstc, "SAP Transaction Codes(SAP 事务代码)
tadir, "Directory of Repository Objects(资源库对象的目录)
modsapt, "SAP Enhancements - Short Texts(SAP增强-短文件)
modact, "Modifications(修正)
trdir, "System table TRDIR(系统表 TRDIR)
tfdir, "Function Module(功能模块)
enlfdir, "Additional Attributes for Function Modules(功能模块的附加属性)
tstct. "Transaction Code Texts(事务代码文本)
DATA :
jtab LIKE tadir OCCURS 0 WITH HEADER LINE.
DATA :
field1(30).
DATA :
v_devclass LIKE tadir-devclass.
SELECTION-SCREEN BEGIN OF BLOCK a01 WITH FRAME TITLE text-001.
SELECTION-SCREEN SKIP.
PARAMETERS :
p_tcode LIKE tstc-tcode OBLIGATORY.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK a01.
START-OF-SELECTION.
SELECT SINGLE * FROM tstc WHERE tcode EQ p_tcode.
IF sy-subrc EQ 0.
SELECT SINGLE * FROM tadir
WHERE pgmid = 'R3TR'
AND object = 'PROG'
AND obj_name = tstc-pgmna.
MOVE :
tadir-devclass TO v_devclass.
IF sy-subrc NE 0.
SELECT SINGLE * FROM trdir
WHERE name = tstc-pgmna.
IF trdir-subc EQ 'F'.
SELECT SINGLE * FROM tfdir
WHERE pname = tstc-pgmna.
SELECT SINGLE * FROM enlfdir
WHERE funcname = tfdir-funcname.
SELECT SINGLE * FROM tadir
WHERE pgmid = 'R3TR'
AND object = 'FUGR'
AND obj_name = enlfdir-area.
MOVE :
tadir-devclass TO v_devclass.
ENDIF.
ENDIF.
SELECT * FROM tadir
INTO TABLE jtab
WHERE pgmid = 'R3TR'
AND object = 'SMOD'
AND devclass = v_devclass.
SELECT SINGLE * FROM tstct
WHERE sprsl EQ sy-langu
AND tcode EQ p_tcode.
FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
WRITE:
/(12) '事务代码 - ',
13(20) p_tcode,
34(10) '功能 - ' ,
45(50) tstct-ttext.
SKIP.
IF NOT jtab[] IS INITIAL.
WRITE:
/(95) sy-uline.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE:
/1 sy-vline,
2 'Exit Name',
21 sy-vline ,
22 'Description',
95 sy-vline.
WRITE:
/(95) sy-uline.
LOOP AT jtab.
SELECT SINGLE * FROM modsapt
WHERE sprsl = sy-langu AND
name = jtab-obj_name.
FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
WRITE:
/1 sy-vline,
2 jtab-obj_name HOTSPOT ON,
21 sy-vline ,
22 modsapt-modtext,
95 sy-vline.
ENDLOOP.
WRITE:
/(95) sy-uline.
DESCRIBE TABLE jtab.
SKIP.
FORMAT COLOR COL_TOTAL INTENSIFIED ON.
WRITE:
/ '用户出口数量:
' , sy-tfill.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:
/(95) '此TCode没有用户出口!
'.
ENDIF.
ELSE.
FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
WRITE:
/(95) '事务代码不存在!
'.
ENDIF.
AT LINE-SELECTION.
GET CURSOR FIELD field1.
CHECK field1(4) EQ 'JTAB'.
SET PARAMETER ID 'MON' FIELD sy-lisel+1(10).
CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一步一步 函数 出口 增强 开发 图解 教程