1、一步一步跟我学函数出口增强开发图解教程一步一步跟我学函数出口增强开发-图解教程部门:IT服务部 作者:肖剑锋一、 案例需求:财务要求管控成品生产订单收货,成品生产订单收货入库数量不能大于成品生产订单报工确认数量,换句话说,报工多少数量,就只能收货入库多少数量。二、 增强背景:从成本角度看现在成品生产报工与入库并无关联,成品仓只需根据车间开具的成品入库单就可录入系统并做发货操作,因此存在问题有三:第一、如果车间未报工,成品入库后其生产成本无法自动计入;第二、只能进行补报工,但成本也需人工手动投入,费时费工;第三、是成品仓录入数据多与少无法比对(订单数量往往和生产实际数量不一致)。若做关联,成品仓
2、就会起到应有的复核把关监督的职能,弥补系统流程上的漏洞,减少生产报工和仓库录入的错误,促进和改善系统运行。但就现实状况来讲对生产报工的压力增大,报工不及时或出错,会造成成品入库不及时,势必影响到订单出货。三、 增强开发的利弊分析:利:1. 规范生产交货、仓储收货行为;2. 督促生产及时报工;3. 减少漏报工问题;4. 避免货已交客户,但生产尚未报工的现象出现;5. 减少对财务月结的影响;弊:在紧急情况下,销售等不及生产报工完成便要出货,那这一控制便是一个障碍,至于这个障碍时间有多长,则取决于生产报工的态度。(针对一个生产订单的报工时间一般是几分钟便可完成,可忽略不计。)四、 实现步聚:Step
3、 1 : 查找某个事务码的用户出口1. 录入事务码ZPPU018后,回车执行;2. 录入某个可能需要增强的事务码,比如生产收货事务码:MIGO/MB31;点击执行按钮,或者直接按F8执行;3. 分析找到的函数出口名称;Step 2 : 分析函数出口1. 录入事务码SMOD/CMOD,回车执行;2. 输入上面找到的函数出口名称,选取组件,并点击【显示】按钮进入下一个窗口界面;3. 双击某个出口功能模块,进入下一个窗口界面;4. 双击系统预留函数名称,并创建它;Step 3 : 实现增强逻辑1. 根据实际业务需求编写自已的程序逻辑;2. 激活并测试,一定要记得激活,否则将无效。五、 附增强逻辑代码
4、:*&-*&包括ZXMBCU02*&auther:euler*&date:20130807*&-*data:lv_typetypemseg-bwart,移动类型lv_prefix1typec,生产订单编码前缀lv_prefix2typec,物料编码前缀lv_temptypemakt-matnr,临时变量,用于临时存储生产订单编码或者物料编码lv_quantypeafko-igmng,生产订单确认数量lv_sum1typeaufm-menge,生产订单已入库数lv_sum2typeaufm-menge,生产订单已入库数-冲销的lv_yxsltypeaufm-menge,可收货入库的有效数量lv_
5、yxsl2typestring.可收货入库的有效数量,将负号前提clear:lv_type,lv_prefix1,lv_prefix2,lv_temp,lv_quan,lv_sum1,lv_sum2,lv_yxsl,lv_yxsl2.lv_type=I_MSEG-bwart.clearlv_temp.lv_temp=I_MSEG-aufnr.shiftlv_templeftdeletingleading0.lv_prefix1=lv_temp+0(1).clearlv_temp.lv_temp=I_MSEG-matnr.shiftlv_templeftdeletingleading0.lv_p
6、refix2=lv_temp+0(1).iflv_type=101andlv_prefix1=6andlv_prefix2=6.取生产订单已确认数量selectsingleigmnginto(lv_quan)fromafkowhereaufnr=I_MSEG-aufnr.取生订订单已入库数量selectsum(menge)into(lv_sum1)fromaufmwherebwart=101andmatnr=I_MSEG-matnrandaufnr=I_MSEG-aufnr.取生产订单已入库数量-冲销的selectsum(menge)into(lv_sum2)fromaufmwherebwar
7、t=102andmatnr=I_MSEG-matnrandaufnr=I_MSEG-aufnr.可收货入库数量lv_yxsl=lv_quan-(lv_sum1-lv_sum2).lv_yxsl2=lv_yxsl.iflv_yxsllv_yxsl.MESSAGEID00TYPEENUMBER001WITH收货数量不能大于生产订单报工数量!允许收货入库数量为:lv_yxsl2I_MSEG-erfme.exit.endif.endif.六、 附查找事务码用户出口程序源代码:*System:丰彩ERP项目*Module:PPANDQM*ProgramID:U005*Program:查找事务码用户出口*
8、Author:肖剑锋*Date:08.08.201316:11:57*Description:查找事务码用户出口*ModifiedRecorder:*DateC#NOAuthorContent*-*20130808*REPORTZFC_PP_U005.TABLES:tstc,SAPTransactionCodes(SAP事务代码)tadir,DirectoryofRepositoryObjects(资源库对象的目录)modsapt,SAPEnhancements-ShortTexts(SAP增强-短文件)modact,Modifications(修正)trdir,SystemtableTRDI
9、R(系统表TRDIR)tfdir,FunctionModule(功能模块)enlfdir,AdditionalAttributesforFunctionModules(功能模块的附加属性)tstct.TransactionCodeTexts(事务代码文本)DATA:jtabLIKEtadirOCCURS0WITHHEADERLINE.DATA:field1(30).DATA:v_devclassLIKEtadir-devclass.SELECTION-SCREENBEGINOFBLOCKa01WITHFRAMETITLEtext-001.SELECTION-SCREENSKIP.PARAMET
10、ERS:p_tcodeLIKEtstc-tcodeOBLIGATORY.SELECTION-SCREENSKIP.SELECTION-SCREENENDOFBLOCKa01.START-OF-SELECTION.SELECTSINGLE*FROMtstcWHEREtcodeEQp_tcode.IFsy-subrcEQ0.SELECTSINGLE*FROMtadirWHEREpgmid=R3TRANDobject=PROGANDobj_name=tstc-pgmna.MOVE:tadir-devclassTOv_devclass.IFsy-subrcNE0.SELECTSINGLE*FROMtr
11、dirWHEREname=tstc-pgmna.IFtrdir-subcEQF.SELECTSINGLE*FROMtfdirWHEREpname=tstc-pgmna.SELECTSINGLE*FROMenlfdirWHEREfuncname=tfdir-funcname.SELECTSINGLE*FROMtadirWHEREpgmid=R3TRANDobject=FUGRANDobj_name=enlfdir-area.MOVE:tadir-devclassTOv_devclass.ENDIF.ENDIF.SELECT*FROMtadirINTOTABLEjtabWHEREpgmid=R3T
12、RANDobject=SMODANDdevclass=v_devclass.SELECTSINGLE*FROMtstctWHEREsprslEQsy-languANDtcodeEQp_tcode.FORMATCOLORCOL_POSITIVEINTENSIFIEDOFF.WRITE:/(12)事务代码-,13(20)p_tcode,34(10)功能-,45(50)tstct-ttext.SKIP.IFNOTjtabISINITIAL.WRITE:/(95)sy-uline.FORMATCOLORCOL_HEADINGINTENSIFIEDON.WRITE:/1sy-vline,2ExitNam
13、e,21sy-vline,22Description,95sy-vline.WRITE:/(95)sy-uline.LOOPATjtab.SELECTSINGLE*FROMmodsaptWHEREsprsl=sy-languANDname=jtab-obj_name.FORMATCOLORCOL_NORMALINTENSIFIEDOFF.WRITE:/1sy-vline,2jtab-obj_nameHOTSPOTON,21sy-vline,22modsapt-modtext,95sy-vline.ENDLOOP.WRITE:/(95)sy-uline.DESCRIBETABLEjtab.SKI
14、P.FORMATCOLORCOL_TOTALINTENSIFIEDON.WRITE:/用户出口数量:,sy-tfill.ELSE.FORMATCOLORCOL_NEGATIVEINTENSIFIEDON.WRITE:/(95)此TCode没有用户出口!.ENDIF.ELSE.FORMATCOLORCOL_NEGATIVEINTENSIFIEDON.WRITE:/(95)事务代码不存在!.ENDIF.ATLINE-SELECTION.GETCURSORFIELDfield1.CHECKfield1(4)EQJTAB.SETPARAMETERIDMONFIELDsy-lisel+1(10).CALLTRANSACTIONSMODANDSKIPFIRSTSCREEN.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1