abap会计凭证 表增强 字段

合集下载

ABAP屏幕增强总结整理

ABAP屏幕增强总结整理

ABAP屏幕增强总结整理目录一:销售订单屏幕增强 VA01/VA02/VA03 (5)1:销售订单屏幕增强抬头屏幕增强 (5)A:屏幕增强实现 (5)B:屏幕增强位置 (6)2:销售订单屏幕增强行项目屏幕增强 (7)A:屏幕增强实现 (7)B:屏幕增强位置 (8)二:交货单(内向/外向)屏幕增强 (10)1:交货单抬头屏幕增强 (10)A:屏幕增强实现 (10)B:屏幕增强的位置 (14)2:交货单行项目屏幕增强 (15)A:屏幕增强实现 (15)B:屏幕增强的位置 (19)三:采购申请(ME51N/ME52N/ME53N) (19)A:屏幕增强实现 (19)B:屏幕增强位置 (25)四:采购订单(ME21N/ME22N/ME23N) (25)1.采购订单抬头屏幕增强 (25)A:屏幕增强实现 (25)B:屏幕增强位置 (30)2.采购订单行项目屏幕增强 (30)A:屏幕增强实现 (30)B:屏幕增强位置 (35)五:合同(框架协议) ME31K/ME32K/ME33K (35)1.合同(框架协议)抬头屏幕增强 (35)A:屏幕增强实现 (35)B:屏幕增强位置 (40)2.合同(框架协议)行项目屏幕增强 (41)A:屏幕增强实现 (41)B:屏幕增强位置 (45)六:询价单/报价单 ME41/ME42/ME43 (46)1.询价单/报价单抬头屏幕增强 (47)A:屏幕增强实现 (47)B:屏幕增强位置 (51)2.询价单/报价单行项目屏幕增强 (52)A:屏幕增强实现 (52)B:屏幕增强位置 (57)七:供应商主数据屏幕增强 (58)A:屏幕增强实现 (58)LFA1 供应商主数据 (一般地区) (58)LFB1 供应商主数据 (公司代码) (65)LFM1 供应商主记录购买组织数据 (73)B:屏幕增强位置 (80)八:客户商主数据屏幕增强 (81)A:屏幕增强实现 (81)KNA1 客户主文件的一般数据 (82)KNB1 客户主数据 (公司代码) (90)KNVV 客户主记录销售数据 (98)B:屏幕增强位置 (106)九:物料主数据屏幕增强 (107)A:屏幕增强实现 (107)a)新增视图子屏幕 (112)b)在原有视图子屏幕增加新字段 (119)B:屏幕增强位置 (125)十:工单 IW31/IW32/IW33 (127)1.工单抬头屏幕增强 (127)A:屏幕增强实现 (127)B:屏幕增强位置 (131)十一:项目屏幕增强 (131)A:屏幕增强实现 (131)B:屏幕增强位置 (135)十二:WBS屏幕增强 (135)A:屏幕增强实现 (135)B:屏幕增强位置 (138)十三:网络订单 CN21/CN22/CN23 CJ20N (139)1.网络抬头屏幕增强 (139)A:屏幕增强实现 (139)B:屏幕增强位置 (142)2.网络工序行项目屏幕增强 (143)A:屏幕增强实现 (143)B:屏幕增强位置 (146)十四:生产订单 CO01/CO02/CO03 (147)1.生产订单抬头屏幕增强 (147)A:屏幕增强实现 (147)B:屏幕增强位置 (151)十五:物料BOM CS01 / CS02 / CS03 (152)1.物料BOM抬头屏幕增强 (152)A:屏幕增强实现 (152)B:屏幕增强位置 (155)2.物料BOM行项目屏幕增强 (155)A:屏幕增强实现 (155)B:屏幕增强位置 (158)十六:资产主数据屏幕增强 AS01 / AS02 / AS03 (158)A:屏幕增强实现 (158)a)作为“折旧范围”表页的一个子屏幕显示 (163)b)创建一个新的表页并且在新表页中显示 (167)B:屏幕增强位置 (174)a)作为“折旧范围”表页的一个子屏幕显示; (174)b)创建一个新的表页并且在新表页中显示 (174)十七:设备主数据屏幕增强 IE01 / IE02 / IE03 (175)A:屏幕增强实现 (175)B:屏幕增强位置 (185)十八:功能位置主数据屏幕增强 IL01 / IL02 / IL03 (186)A:屏幕增强实现 (186)B:屏幕增强位置 (197)一:销售订单屏幕增强 VA01/VA02/VA031:销售订单屏幕增强抬头屏幕增强A:屏幕增强实现在表“VBAK”中APPEND一自定义的结构,如下图TCODE:SE80 程序名:SAPMV45A 屏幕:8309 如图:直接在屏幕上增强你所要的字段就可,如下图。

ABAP增强

ABAP增强



第二代 Exit
• • • • • • 简介 分类 增强相关函数和表格 实现方法 SMOD和CMOD 查找方法
Exit简介
• 第二代增强(基于函数模块的增强),用SMOD和CMOD维护;在SAP 发布的版本中,使用Call customer-function ‘xxx’调用函数模块的,所以 可以通过在程序中搜索coucusomer-function来查找第二代增强,第二 代增强函数名构成:Exit_程序名_’xxx(3 digital number)’,这样你就可 以找到对应的增强函数模块了,它们在发布的时候只有一句代码 include ‘xxxxxxx’,修改时无需像第一代增强一样需要ACCESS key,直 接双击回车就可以了,但同时这种增强以及后面几代的增强都不能像 第一代一样随便使用程序的全局数据,只能使用接口中传递进来的参 数。
BADI实现方法
• T-CODE:SE19,实例化接口生成一个类,SE24中编写功能代码
第四代-New Badi
• • • • 面向对象的基本概念 简介 层次结构 BADI调用
面向对象的基本概念
• 对象 对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能 表示具体的事物,还能表示抽象的规则、计划或事件。 对象的状态和行为 – 对象具有状态,一个对象用数据值来描述它的状态。 – 对象还有操作,用于改变对象的状态,操作就是对象的行为。 – 对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中 类 – 具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也 可以说类的实例是对象。 类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。 类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。 –

ABAP增强的使用

ABAP增强的使用

SAP用户出口的类型sap的用户出口总共有三代:1、第一代sap提供一个空代码的子过程,在这个子过程中用户可以添加自己的代码,控制自己的需求。

这类增强都需要修改sap的标准代码。

示例:USEREXIT.. in SAPMV45A2、第二代sap提供的是CUSTOMER-FUNCTION,它是通过SMOD和CMOD完成实现。

参见我的3、第三代sap提供的第三代的用户出口就是BADI,他的调用方式是CALL METHOD (instance),(相关的TCODE是SE18和SE19),你可以通过EXIT_HANDL ER这个单词查找BADI。

BADI查找方式: CL_EXITHANDLER=>GET_INSTANCESe24 get instance CL_EXITHANDLEREXIT 查找方式在函数MODX_FUNCTION_ACTIVE_CHECK 中设断点。

找到组件(funcname),然后根据组件到表MODSAP中找到对应的增强名称如果找不到的话,用以下方式:找CALL CUSTOMER-FUNCTION’XXX’,下断点。

如果经过的话。

exit calls function module的名称就是: EXIT_程序名_XXX。

然后根据组件到表MODSAP中找到对应的增强名称BADI作为SAP的第三代用户出口,他的应用也越来越广泛,但如何找到合适的badi是许多abap程序员的困惑。

我这里就介绍一下我个人的应用的经验,供大家参考。

1、badi对象的信息存储在SXS_INTER, SXC_EXIT, SXC_CLASS 和SXC_ATTR 这四个表中(参见SECE包);2、sap程序都会调用cl_exithandler=>get_instance来判断对象是否存在,并返回实例;其实get_instance就是对上述几个表和他们的视图(V_EXT_I MP 和 V_EXT_ACT)进行查询和搜索。

abap 标准增强记录表

abap 标准增强记录表

abap标准增强记录表
在ABAP中,标准增强是对SAP系统标准程序的修改和扩展。

这些增强点允许开发人员在不修改标准SAP程序代码的情况下添加自定义逻辑。

增强点可能是隐式的,也可能是显式的。

增强点记录表用于记录这些增强点的位置和内容,其中包括:
1.表名:增强点记录表可能包含了标准SAP程序的表名或对象名。

2.增强类型:描述增强点的类型,例如,是隐式增强点、显示增强点还是其他
类型。

3.增强位置:指示在标准程序中的哪个位置可以进行增强。

4.增强描述:对增强点的描述,可能包括了需要添加的逻辑或变更的目的。

5.其他属性:可能还包括一些其他属性,如开发者信息、变更记录等。

这些表的命名规范可能因组织或项目而异。

在SAP系统中,有一些标准表或数据元素被用于记录这些增强信息,例如:ENHACCESS、ENHOBJECT、ENHRESLOG 等。

这些表可用于存储增强点的位置和描述,方便开发者对系统进行扩展和修改,同时保持了SAP系统的原始结构和稳定性。

SAP方丈-ABAP-SAP增强应用实例

SAP方丈-ABAP-SAP增强应用实例

SAP方丈-ABAP-SAP增强应用实例SAP增强大伙儿都专门熟悉,在此不再详细讲解,下面只是通过一个实例来展现一下增强的应用。

系统增强实例为建立工单前进行校验,如没有进行标准成本公布那么提示错误信息E。

T-code:CMOD通过增强程序我们能够操纵相关应用,假如你不明白到底功能是用到的哪个增强,那么请看我附录上的列表。

我们以ppco0006举例如下:如图2.我们需要的是制定我们的组件,如图3.通过功能退出增加增强语句:如图4:双击程序后加入如下语句~~~~if sy-tcode <> 'CK11N' and sy-tcode <> 'CK40N'.data:begin of l_matnr,matnr like mbew-matnr,VPRSV like mbew-VPRSV,vjvpr like mbew-vjvpr,pprdl like mbew-pprdl,lplpr like mbew-lplpr,end of l_matnr.select single matnr vprsv vjvpr pprdl lplpr from mbew into l_matnrwhere matnr = CAUFVD_IMP-MA TNR* and pprdl <> ''* and lplpr <> ''and bwkey = CAUFVD_IMP-WERKS.* and vjvpr = 'S'.if l_matnr-vprsv = 'V'.exit.elseif sy-subrc <> 0 or ( l_matnr-pprdl is initial and l_matnr-lplpr is initial ).message e888(sabapdocu) with '物料' CAUFVD_IMP-MATNR'没有做成本估算, 不能创建生产订单,请通知SAP 方丈,yeah~~~!'.exit.endif.endif.OK,快去看看你增强后的成效吧~~~~~¥%&%&*〔*〔SAP所有模块用户出口:用户出口名称短文本描述0VRF0001 客户指定路线确定AAIC0001 IM 总结: 在选择后处理数据AAIC0002 IM 总结: 在选择后处理指定的输入项AAIP0001 IM 追溯: 实际价值对预算类别的分配AAIP0002 IM 追溯: 定义用户定义的指标AAIP0003 IM 追溯: 定义用户定义的特性AAIR0001 IM-IS: 适用要求报表中的用户值字段AAIR0002 IM-FA: 拨款申请的用户字段AAIR0003 IM: 创建拨款申请中的PM 定单时工作场所的分配AAIR0004 IM 追溯: 定义用户定义的特性AAIS0003 投资计量对资产的实际结算AAIS0004 全部打算值或预算值的结算AAPM0001 资产会计和工厂爱护的集成ACBAPI01 会计核算: 对BAPI 界面的客户增强功能ACCID001 会计核算的IDoc 过程ACCID002 支出会计的IDoc 处理ACCOBL01 代码块中PAI 和PBO 的客户出口AD010001 更换对象清单及其层次AD010002 定界选择和/或过滤已定数据AD010003 创建自定义动态项目特性AD010005 创建自定义资源AD010006 菜单退出:更换动态项目值AD010007 更换DI 处理信息AFAR0001 External determination of ref. value for dep. calculation AFAR0002 External determination of depreciationAFAR0003 外部转换方式AFAR0004 报废比例值的确定AINT0001 当记帐资产时进行扩展的检查AINT0002 出入流水中冲销帐户的替代...AINT0003 定义投资支持再付款的百分比/金额AINT0004 更换某范畴已过帐金额AINT0005 虚拟扩展语法检查. 不使用。

abap enhancement语句-概述说明以及解释

abap enhancement语句-概述说明以及解释

abap enhancement语句-概述说明以及解释1.引言1.1 概述ABAP (Advanced Business Application Programming) Enhancement语句是SAP系统中用于对标准ABAP程序进行增强和改进的关键语句。

通过使用ABAP Enhancement语句,开发人员可以在不修改原始代码的情况下,添加新的功能或逻辑,以满足业务需求。

在传统的软件开发中,当我们需要对一个已有的程序进行修改时,通常需要直接对这个程序进行更改。

然而,这种做法往往存在风险,因为修改可能会导致系统中其他部分的不稳定或错误。

此外,当SAP系统进行升级时,我们必须重新应用所有的修改,这会给系统维护和升级带来困难。

ABAP Enhancement语句的引入解决了这些问题。

它提供了一种灵活的方式,使开发人员能够在不直接修改标准代码的情况下增加新的功能。

通过使用这些语句,我们可以定义一个增强点,将我们的新代码插入到标准代码的特定位置,并在运行时调用它们。

使用ABAP Enhancement语句的好处是明显的。

首先,它们遵循了良好的软件工程原则,例如开闭原则和单一职责原则。

其次,它们为系统维护和升级提供了很大的便利,因为我们不再需要手动应用修改或重新实现已有的功能。

在本文中,我们将详细介绍ABAP Enhancement语句的定义和使用场景。

我们将讨论不同类型的ABAP Enhancement语句,并提供实际示例来说明它们的用法。

最后,我们将总结ABAP Enhancement语句的优势,并展望它们的未来发展。

通过深入了解和合理使用ABAP Enhancement语句,我们可以更好地应对业务需求,并为SAP系统的开发和维护带来更高的效率和稳定性。

1.2 文章结构本篇文章将围绕ABAP Enhancement语句展开讨论。

首先,在引言部分,我们将对ABAP Enhancement语句进行概述,并介绍文章的结构和目的。

ABAP增强

ABAP增强

方法一:(1)TCODE:se37,查找"MODX*"的检查增强函数,并在其内设定断点MODX_FUNCTION_ACTIVE_CHECK(check user_exits)MODX_MENUENTRY_ACTIVE_CHECK(check menu)MODX_SUBSCREEN_ACTIVE_CHECK(check screen)MODX_ALL_ACTIVE_MENUENTRIES(checkmenu 2)(2)运行需要查找增强的TCODE(3)查找MODSAP表中functionname和enhancement name的对应关系方法二:(1) 找到需要增强TCODE对应的主程序比如MIGO的程序为SAPLMIGO。

(2) 通过查找CALL CUSTOMER-FUNCTION找出对应的function nameSE38 ——> "编辑"——> "查找和替换"——> 输入CALL CUSTOMER-FUNCTION——> 得到出口编号(EXIT_程序名_出口编号,ex: EXIT_SAPLMIGO_001)——>SMOD 组件COMPONENT——>得到ENHANCEMENT名(migo-MBCF0006)——>CMOD 建立一个工程,分配组件——>对组件编辑实现,激活。

图 1 SE38 查看程序图2 查找出口编号图3 获得出口编号图4 SMOD 查找组件图5 F4 设置查找条件图6 已经查到的组件图7 查看组件的功能模块图8 组件功能模块图9 找到合适的include函数编写代码通过查找CL_EXITHANDLER=>GET_INSTANCE找出对应的BADI 通过查找CALL CUSTOMER-SUBSCREEN找出对应的SCREEN方法三:通过程序查找(参考"查找user_exits& badi的程序")方法四:(1) 执行tcode --> system--> status,找出程序名称,双击进入查找package名称(2) SE80 --> Repository Information System --> Enhancements -->Customer Exits-->Enhancements -->将第二步中找到的Package 名称输入,执行,就可以找到tcode的所有用户出口。

sap abap查找增强的方法和程序查找增强方法

sap abap查找增强的方法和程序查找增强方法

1、通过程序——查找第二代、第三代增强方法。

找到出口名称,在smod里面查找相应的增强组件,再去cmod里面创建包含多个组件的增强项目,再去实现这些增强(屏幕增强、结构增强字段增强等)。

其他方法:***方法一****************************************通过SE30,运行TCODE后,点Evaluate后,查看运行时间分析评估:命中清单。

找以“exit”开头的SAP程序,如:EXIT_SAPLIE01_007,这个FUNCTION就是TCODE提供的一个出口。

至于如何查看这个增强是属于哪个SMOD,能够查阅MODSAP这个表(SAP Enhancements).***方法二****************************************通过SE37中的:MODX_FUNCTION_ACTIVE_CHECK 函数来找,在函数的最后一行打个断点,再运行TCODE的,如果有增强则会跳入DEBUG界面,在DEBUG界面中,查看L_FUNCNAME字段对应的值,此值就是就是要找的出口,再去SE11中通过MODSAP来查看出口对就的是那个SMOD,接下来就可以在CMOD中创建增强组了,把找到的增强填入,最后根据实际的业务进行处理。

以上的两种方法是用来找第二代增强。

***方法三****************************************找BADI的方法。

先运行SE24,查看类对象CL_EXITHANDLER, 在其方法:GET_INSTANCE的14行(CALL METHOD CL_EXITHANDLER=>GET_CLASS_NAME_BY_INTERFACE)打上一个断点。

接下来运行事务代码,当有BADI是将会被执行,这时在DEBUG模式下,会进入类CL_EXITHANDLER 的GET_INSTANCE 方法,按F6执行这个方法之后,点参数EXIT_NAME查看其对应的值,所有的方法实现都在此类对象中,此时就是我们所要找的BADI。

ABAP增强实战:EnhancementImplementation增强点实施例子

ABAP增强实战:EnhancementImplementation增强点实施例子

ABAP增强实战:EnhancementImplementation增强点实施例⼦今天遇到⼀个需求,很有意思,所以我把它记录下来。

需求: IW32输⼊order ,进⼊界⾯中后点击change Status,之后会显⽰⼀个⼦屏幕,想通过增强的⽅式,把这个⾃屏幕的内容设为不可编辑。

寻找增强:我们直接通过F1帮助进⼊⼦屏幕,先看看当前屏幕的PBO有没有出⼝,很幸运,我们刚好发现程序本⾝就有对这个字段不可输⼊的控制,⽽控制的字段,我们发现是⼀个叫DISPLAY_ON的变量,经过DEBUG发现,这个字段确实能控制这个屏幕的不可编辑。

下⾯我们有两种想法,⼀种可以尝试在这⾥直接加,还有就是看⼀下这个display在哪⾥赋值,是否还控制其他内容。

发现当前位置没有合适的点,那我们只能去看⼀下这个display_NO的赋值位置。

反查这个变量赋值的位置,发现两处赋值。

在这两个位置打断点之后,运⾏程序,发现程序运⾏到这个function中,我点击他的上⼀个调⽤的位置,发现它仅仅是由⼀个⾃定义的变量L_display控制的。

⽽且debug测试这个字段赋值后,可以能成功,所以我觉得在这个位置加增强点,⽽且这个位置是有加增强点的位置的。

下⾯创建增强(创建增强,创建⼀次后⾯就是傻⽠式点⿏标,重点还是在上⾯的查找增强,能找到⼀个合适的增强点,才是增强中⽐较困难的部分。

)⾸先点击这个鸣⼈卷似的按钮,然后选择显⽰隐式增强把光标放在有⿊⾊箭头的那⾏上,点击Create选择code点击新建输⼊新建Enhancement Implementation的命名及简短描述创建完了,再点对勾然后这个位置就会出现可编辑的区域了。

我⼀般喜欢在⾥⾯加个include,在include⾥⾯写相关代码,我们需要加上对应的tcode限制及公司代码限制,并且我们发现下⾯的变量是定义在我们出⼝下⽅的,所以我们需要新定义⼀个变量去调⽤下⾯那个函数,并且在后⾯写个return,跳过下⽅的代码。

使用BAPI_ACC_DOCUMENT_POST,创建会计凭证,用BADI扩展字段(转)

使用BAPI_ACC_DOCUMENT_POST,创建会计凭证,用BADI扩展字段(转)

使⽤BAPI_ACC_DOCUMENT_POST,创建会计凭证,⽤BADI扩展字段(转)业务需求:和银⾏做⼀个接⼝,要通过银⾏流⽔产⽣会计凭证,会计凭证的事务码是F-02,查到了BAPI⽅法BAPI_ACC_DOCUMENT_POST。

昨天测试发现,有⼀些参数在BAPI_ACC_DOCUMENT_POST的输⼊和表参数中根本没有,如记账码Posting Key、原因代码Reason Code,那怎么把这些字段的值传进去呢?在SDN查了⼀下相关问题的解决办法,发现遇到这个问题的朋友还挺多,总结了⼀下,解决办法⼤体如下:1、se11创建结构,必须包含⾏项⽬号POSNR字段,和其他需要扩展的字段,如记账码Posting Key、原因代码Reason Code2、SE19实现BADI增强ACC_DOCUMENT,这个增强是⽤来将BAPI_ACC_DOCUMENT_POST参数表EXTENSION2传⼊系统表3、使⽤BAPI_ACC_DOCUMENT_POST参数表EXTENSION2,将扩展字段传⼊详细步骤如下:1、创建结构,se11,很简单,不再赘述,如下图:2、SE19实现BADI增强ACC_DOCUMENT通过ACC_DOCUMENT help⽂档知道,⽅法CHANGE⽤来完成字段的扩展,还有⼀个需要注意的是参考业务类型,这个⼀定要选对,不然执⾏BAPI的时候不会调⽤这个BADI,我⽤的是BKPFF,如下图:激活这个BADI实现。

双击change⽅法创建,可以查看ACC_DOCUMENT 的实现例⼦CL_EXM_IM_ACC_DOCUMENT(R/3 4.7版本,其他版本可能名称不⼀样),,将这个实例的change⽅法的代码直接copy过来,激活⽅法,代码如下************************************************************************ Example to move fields from BAPI parameter EXTENSION2 to structure ** ACCIT (accounting document line items). ** The dictionary structure (content for EXTENSION2-STRUCTURE) must ** contain field POSNR, (TYPE POSNR_ACC) to indentify the correct line ** item of the internal table ACCIT. ************************************************************************DATA: wa_extension TYPE bapiparex,ext_value(960) TYPE c,wa_accit TYPE accit,l_ref TYPE REF TO data.FIELD-SYMBOLS: <l_struc>TYPE ANY,<l_field>TYPE ANY.SORT c_extension2 BY structure.LOOP AT c_extension2 INTO wa_extension.AT NEW structure.CREATE DATA l_ref TYPE (wa_extension-structure).ASSIGN l_ref->* TO <l_struc>.ENDAT.CONCATENATE wa_extension-valuepart1 wa_extension-valuepart2wa_extension-valuepart3 wa_extension-valuepart4INTO ext_value.MOVE ext_value TO <l_struc>.ASSIGN COMPONENT 'POSNR' OF STRUCTURE <l_struc>TO <l_field>.READ TABLE c_accit WITH KEY posnr = <l_field>INTO wa_accit.IF sy-subrc IS INITIAL.MOVE-CORRESPONDING <l_struc>TO wa_accit.MODIFY c_accit FROM wa_accit INDEX sy-tabix.ENDIF.ENDLOOP.3、使⽤BAPI_ACC_DOCUMENT_POST参数表EXTENSION2,将扩展字段传⼊***********************************************************************INTERNAL TABLE DECLARATION***********************************************************************&—-G/L ACCOUNT ITEMDATA: ACCOUNTGL TYPE STANDARD TABLE OF BAPIACGL09.*&—CURRENCY ITEMSDATA: CURRENCY_AMOUNT TYPE STANDARD TABLE OF BAPIACCR09.*&—-RETURN PARAMETERDATA: RETURN TYPE STANDARD TABLE OF BAPIRET2 WITH HEADER LINE.*&—-it_extension2 ITEMSDATA: IT_EXTENSION2 TYPE STANDARD TABLE OF BAPIPAREX WITH HEADER LINE. *&—WORKAREA FOR ZEXTENDATA: WA_ZEXTEN LIKE ZEXTEN. ”ZEXTEN就是刚才SE11创建的那个结构***********************************************************************赋值***********************************************************************& EXTENSION2 扩展字段增强部分WA_ZEXTEN-POSNR = '0000000010'. "凭证⾏项⽬WA_ZEXTEN-RSTGR = '171'. "凭证⾏项⽬原因代码IT_EXTENSION2-STRUCTURE = 'ZEXTEN'.IT_EXTENSION2-VALUEPART1 = WA_ZEXTEN.APPEND IT_EXTENSION2.*其他参数表的字段赋值如下例HEADER-HEADER_TXT = 'TEST HEADER'."凭证抬头⽂本HEADER-USERNAME = SY-UNAME. "⽤户名HEADER-COMP_CODE = '1000'."公司代码HEADER-DOC_DATE = '20090618'."凭证中的凭证⽇期HEADER-PSTNG_DATE = '20090618'."凭证中的记帐⽇期HEADER-DOC_TYPE = 'S1'."凭证类型* HEADER-BUS_ACT = 'RFBU'."交易业务WA_ACCOUNTGL-ITEMNO_ACC = '0000000010'. "会计凭证⾏项⽬编号WA_ACCOUNTGL-GL_ACCOUNT = '1002010105'. "总分类帐帐⽬* WA_ACCOUNTGL-ITEM_TEXT = .WA_ACCOUNTGL-BUS_AREA = '8000'. "业务范围APPEND WA_ACCOUNTGL TO ACCOUNTGL.CLEAR WA_ACCOUNTGL.WA_ACCOUNTGL-ITEMNO_ACC = '0000000020'. "会计凭证⾏项⽬编号WA_ACCOUNTGL-GL_ACCOUNT = '1301040000'. "总分类帐帐⽬WA_ACCOUNTGL-BUS_AREA = '8000'. "业务范围*WA_ACCOUNTGL-ITEM_TEXT = .*wa_accountgl-ACCT_TYPE = 'R'.APPEND WA_ACCOUNTGL TO ACCOUNTGL.CLEAR WA_ACCOUNTGL.WA_CURRENCY_AMOUNT-ITEMNO_ACC = '0000000010'. "⾏项⽬编号WA_CURRENCY_AMOUNT-AMT_DOCCUR = '500'. "⾦额WA_CURRENCY_AMOUNT-CURRENCY = 'RMB'.APPEND WA_CURRENCY_AMOUNT TO CURRENCY_AMOUNT.CLEAR WA_CURRENCY_AMOUNT.WA_CURRENCY_AMOUNT-ITEMNO_ACC = '0000000020'.WA_CURRENCY_AMOUNT-AMT_DOCCUR = '-500'.WA_CURRENCY_AMOUNT-CURRENCY = 'RMB'.APPEND WA_CURRENCY_AMOUNT TO CURRENCY_AMOUNT.CLEAR WA_CURRENCY_AMOUNT.*执⾏BAPICALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'EXPORTINGDOCUMENTHEADER = HEADER*CUSTOMERCPD =*CONTRACTHEADER =*IMPORTING*OBJ_TYPE =*OBJ_KEY =*OBJ_SYS =TABLESACCOUNTGL = ACCOUNTGL*ACCOUNTRECEIVABLE =*ACCOUNTPAYABLE =*ACCOUNTTAX =CURRENCYAMOUNT = CURRENCY_AMOUNT*CRITERIA =*VALUEFIELD =*EXTENSION1 =RETURN = RETURN*PAYMENTCARD =*CONTRACTITEM =EXTENSION2 = IT_EXTENSION2*REALESTATE =.IF RETURN-TYPE NA 'EA'.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGWAIT = 'X'.ENDIF.如果还需要扩展其他字段,在结构ZEXTEN加⼊,然后在调⽤BAPI前对相应字段赋值,就⾏了。

◆◆1创建销售订单时如何给增强扩展字段赋值[BAPI_SALESORDER_CREATEF。。。

◆◆1创建销售订单时如何给增强扩展字段赋值[BAPI_SALESORDER_CREATEF。。。

◆◆1创建销售订单时如何给增强扩展字段赋值[BAPI_SALESORDER_CREATEF。

⼀⽉ 31, 2017 11,597 views在使⽤bapi BAPI_SALESORDER_CREATEFROMDAT2创建销售订单时,可以通过extensionin参数给⾃定义的参数赋值。

具体的使⽤⽅法可以通过点击Function module documentaion来查看,如下:下⾯举例说明:在销售订单的⾏项⽬上的additional data a tab页上有5个⾃定义的增强字段,如下:对应表vbap中是如下⼏个字段,这些字段是通过append的⽅式加到vbap上的同样,这些⾃定义字段也要加到structure VBAPKOZ,BAPE_VBAP和 BAPE_VBAPX中,总结⼀下:如果增强字段在销售订单抬头(vbak)上,则要将增强字段⼀并append到如下四个表/结构中:1. VBAKKOZ2. VBAKKOZX3. BAPE_VBAK4. BAPE_VBAKX在⾏项⽬(vbap)上:1. VBAPKOZ2. VBAPKOZX3. BAPE_VBAP4. BAPE_VBAPX在运货计划⾏(VBEP)上:1. VBEPKOZ2. BEPKOZX3. BAPE_VBEP4. BAPE_VBEPX下⾯介绍如何向bapi中extensionin参数赋值数据,具体代码如下:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23DATA: lwa_bape_vbap TYPE bape_vbap. "BAPI Interface for Customer Enhancements to Table VBAP DATA: lwa_bape_vbapx TYPE bape_vbapx. "BAPI Checkbox for Customer Enhancments to Table VBAP DATA: lwa_extensionin TYPE bapiparex. "Customer Enhancement for VBAK, VBAP, VBEP"Fill item level self-defined fields* extension BAPE_VBAPCLEAR: lwa_bape_vbap,lwa_bape_vbapx.* 订单号可以不填,只填⾏项⽬号就可以,然后给⾃定义字段赋值lwa_bape_vbap-posnr = lwa_order_items_in-itm_number.lwa_bape_vbap-yymv_mvgr1 = lwa_items-yymv_mvgr1.lwa_bape_vbap-yymv_mvgr2 = lwa_items-yymv_mvgr2.lwa_bape_vbap-yymv_mvgr3 = lwa_items-yymv_mvgr3.lwa_bape_vbap-yymv_mvgr4 = lwa_items-yymv_mvgr4.lwa_bape_vbap-yymv_mvgr5 = lwa_items-yymv_mvgr5.lwa_bape_vbapx-yymv_mvgr1 = 'X'.lwa_bape_vbapx-yymv_mvgr2 = 'X'.lwa_bape_vbapx-yymv_mvgr3 = 'X'.lwa_bape_vbapx-yymv_mvgr4 = 'X'.lwa_bape_vbapx-yymv_mvgr5 = 'X'.lwa_bape_vbapx-posnr = lwa_order_items_in-itm_number.MOVE 'BAPE_VBAP' TO lwa_extensionin-structure.CALL METHOD cl_abap_container_utilities=>fill_container_c23 24 25 26 27 28 29 30 31 32 33 CALL METHOD cl_abap_container_utilities=>fill_container_c EXPORTINGim_value = lwa_bape_vbapIMPORTINGex_container = lwa_extensionin-valuepart1.APPEND lwa_extensionin TO m_it_extensionin.CLEAR lwa_extensionin.MOVE 'BAPE_VBAPX' TO lwa_extensionin-structure.MOVE lwa_bape_vbapx TO lwa_extensionin-valuepart1.APPEND lwa_extensionin TO m_it_extensionin.最后调⽤bapi BAPI_SALESORDER_CREATEFROMDAT2时将上⾯代码中填充好的m_it_extensionin内表传⼊就可以了。

SAPBADI使用增强清单(精)

SAPBADI使用增强清单(精)

1、使用BADI的增强清单 (2)1.1. ZMB_MIGO_BADI (2)1.1.1. Method: PUBLISH_MATERIAL_ITEM (2)1.2. ZMB_RESERVATION_BADI (6)1.2.1.1.3. Method: DATA_CHECK (6)ZME_HOLD_PO (9)1.3.1. Method: IS_ALLOWED (9)1.4. ZME_PROCESS_PO_CUST (10)1.4.1.1.5. Method: PROCESS_ITEM (10)ZME_PROCESS_REQ_CUST (14)1.5.1. Method: OPEN (14)1.5.2. Method: PROCESS_ITEM ....................................... 错误!未定义书签。

1.5.3. Method: PROCESS_ACCOUNT ............................... 错误!未定义书签。

ZME_REQ_POSTED . (27)1.6.1. Method: POSTED (27)ZMRM_HEADER_CHECK (29)1.7.1. Method: HEADERDATA_CHECK (29)使用USER_EXIT的增强清单 (33)Project:ZMM1 外部采购文件审批的增强处理项目 ......................................... 33 1.6.1.7. 2、2.1.2.1.1. User Exit: M06E0004 (33)2.2. Project:ZMM2 采购申请审批的增强处理项目 (41)2.1.2. User Exit: M06B0002 (41)2.3. Project:ZMM3 (41)2.1.3. User Exit: LMEKO001 (43)2.1.4. User Exit: LMEKO002 (44)2.4. Project: ZMM5 采购文件建立的增强 (44)2.1.5.2.5.User Exit: MM06E005在采购凭证中的客户字段 .................................. 44 Project: ZMM6 .............................................................................................. 51 2.1.6. User Exit: MBCF0002物料凭证项目中的段文本 . (51)1、使用BADI的增强清单1.1. ZMB_MIGO_BADI1.1.1. Method: PUBLISH_MATERIAL_ITEMmethod IF_EX_MB_MIGO_BADI~PUBLISH_MATERIAL_ITEM .data abc(40) value '(SAPLMIGO)GODYNPRO-DETAIL_TAKE'. data: text type string, ZGOITEM TYPE GOITEM.DATA zME TYPE C.data: ctr(70).data: p_line type table of TLINE initial size 0.DATA P_INLINES type table of TLINE initial size 0 . field-symbols: <f01> type any. assign (abc) to <f01>.MOVE LS_GOITEM TO ZGOITEM.*---------------------------------------------------------------* *检查物料的ABC状态*----------------------------------------------------------------* IF ZGOITEM-EKORG ='2000' and ZGOITEM-MATNR is not initial and ( ZGOITEM-BWART = '103' or ZGOITEM-BWART = '101' ) AND <f01> = 'X'.CALL FUNCTION 'Z_MIGO_DIS_MAT'EXPORTINGzmatnr = ZGOITEM-MATNRzwerks = ZGOITEM-werks* CHANGING* DT =EXCEPTIONSCANCELLED = 1NO_VALUES = 2OTHERS = 3.IF sy-subrc <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.endif.*---------------------------------------------------------------* *对设备备件103收货后是否进行检验结果纪录进行检查*---------------------------------------------------------------* IF zgoitem-bwart = '105' AND zgoitem-ekorg = '2000'AND zgoitem-xdetermination = ' '. "库存确定选择才进行判断IF zgoitem-webre = ' '.MESSAGE w000(zz) WITH '非基于收货的发票校验情况下,不确定是否已有检验结果'. ELSE.* concatenate ZGOITEM-LFBNR ZGOITEM-LFBJA ZGOITEM-LFPOS into ctr.* CALL FUNCTION 'ZTEXT_READ_CHECK'* EXPORTING* ID = 'F00'* INLINE_COUNT = '1'* LANGUAGE = '1'* NAME = CTR* OBJECT = 'MSEG'** LOCAL_CAT = ' '* IMPORTING** HEADER =* ME = zME* TABLES* INLINES = P_INLINES* LINES = P_LINE** EXCEPTIONS** ID = 1** LANGUAGE = 2** NAME = 3** NOT_FOUND = 4** OBJECT = 5** REFERENCE_CHECK = 6** OTHERS = 7* .* IF SY-SUBRC <> 0.** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.* ENDIF.* if zme = 1.* message I024(zz) with zGOITEM-LFBNR ZGOITEM-LFBJA ZGOITEM-LFPOS. * LEAVE TO TRANSACTION 'MIGO'.* endif.* clear ctr.*&------------------------------------------------------------**&CHANGE THE LOGIC FOR THE RESULT OF QUALITY MAINTAINENCE *&------------------------------------------------------------*SELECT SINGLE * FROM zm01_s_103 INTO wa_zm01_s_103 WHERE zmblnr = zgoitem-lfbnr ANDzmjahr = zgoitem-lfbja ANDzzeile = zgoitem-lfpos.IF sy-subrc NE 0.MESSAGE i024(zz) WITH zgoitem-lfbnr zgoitem-lfbja zgoitem-lfpos.LEAVE TO TRANSACTION 'MIGO'.ENDIF.ENDIF.ENDIF.*---------------------------------------------------------**&*---------------------------------------------------------*IF zgoitem-bwart = '101' AND zgoitem-ekorg = '2000'AND zgoitem-pstyp = '0'AND zgoitem-knttp = ''.MESSAGE i000(zz) WITH '设备备件正常收货请使用移动类型103/105'.* leave to screen 2000.LEAVE TO TRANSACTION 'MIGO'.ENDIF.ENDMETHOD.1.1.2 IF_EX_MB_MIGO_BADI~POST_DOCUMENTMETHOD if_ex_mb_migo_badi~post_document.DATA: zit_mseg TYPE LINE OF ty_t_mseg,zis_mkpf TYPE mkpf.DATA: wa_mseg TYPE mseg.DATA: WA_ZMM02 TYPE ZMM02.DATA: MBLNR TYPE MSEG-MBLNR.DATA: ZEILE TYPE MSEG-ZEILE.DATA: MJAHR TYPE MSEG-MJAHR.DATA: EBELN TYPE EKPO-EBELN.DATA: EBELP TYPE EKPO-EBELP.BREAK WANGXIANBAO.*****************************************************************/对采购订单已经交货完成标志的不允许继续交货进行判断***************************************************************** DATA: zelikz TYPE ekpo-elikz.* LOOP AT it_mseg INTO zit_mseg WHERE BWART EQ '101'* AND WERKS EQ '6000'.* CLEAR ZELIKZ.* SELECT SINGLE elikz INTO zelikz FROM ekpo WHERE ebeln = ZIT_MSEG-EBELN * AND ebelp = ZIT_MSEG-EBELP. ** IF zelikz = 'X'.* MESSAGE E044(zz) WITH ZIT_MSEG-EBELN ZIT_MSEG-EBELP.* LEAVE TO TRANSACTION 'MIGO'.* ENDIF.** ENDLOOP.*************************************************** */实现让步使用输入采购订单、收货凭证和让步减单价值************************************************** LOOP AT it_mseg INTO zit_msegWHERE bwart EQ '343'AND grund EQ '0001'AND werks EQ '6000'AND xauto EQ ''.CALL FUNCTION 'ZMM_CALL_ZMM02_MANTAIN'EXPORTINGsmbln = zit_mseg-mblnrsjahr = zit_mseg-mjahrsmblp = zit_mseg-zeilematnr = zit_mseg-matnrbwart = zit_mseg-bwartmenge = zit_mseg-mengemeins = zit_mseg-meinscharg = zit_mseg-chargIMPORTINGMBLNR = MBLNRZEILE = ZEILEMJAHR = MJAHREBELN = EBELNEBELP = EBELP.* SELECT SINGLE * INTO WA_ZMM02 FROM ZMM02* WHERE MBLNR = MBLNR * AND MJAHR = MJAHR * AND ZEILE = ZEILE * AND EBELN = EBELN * AND EBELP = EBELP* AND smbln = zit_mseg-mblnr * AND sjahr = zit_mseg-mjahr * AND smblp =zit_mseg-zeile. ** IF SY-SUBRC NE 0.* MESSAGE E016(ZZ) WITH ZIT_MSEG-MATNR. * ENDIF.ENDLOOP.ENDMETHOD.1.1.3 IF_EX_MB_MIGO_BADI~CHECK_ITEMMETHOD if_ex_mb_migo_badi~check_item.DATA: zelikz TYPE ekpo-elikz.DATA: l_po_number(40) TYPE c VALUE '(SAPLMIGO)GOITEM-EBELN'. DATA: l_po_item(40) TYPE c VALUE '(SAPLMIGO)GOITEM-EBELP'. DATA: l_bwart(40) TYPE c VALUE '(SAPLMIGO)GOITEM-BWART'.FIELD-SYMBOLS: <fs1> TYPE ANY.FIELD-SYMBOLS: <fs2> TYPE ANY.FIELD-SYMBOLS: <fs3> TYPE ANY.ASSIGN (l_po_number) TO <fs1>.ASSIGN (l_po_item) TO <fs2>.ASSIGN (l_bwart) TO <fs3>.break wangxianbao.**************************************************************** */对采购订单已经交货完成标志的不允许继续交货进行判断**************************************************************** IF<fs3> IS NOT INITIAL.IF <fs3> EQ '101'.IF <fs1> IS NOT INITIAL AND <fs2> IS NOT INITIAL.SELECT SINGLE elikz INTO zelikz FROM ekpo WHERE ebeln = <fs1> AND ebelp = <fs2>. IF zelikz = 'X'.MESSAGE i044(zz) WITH <fs1> <fs2>.LEAVE TO TRANSACTION 'MIGO'.ENDIF.ENDIF.ENDIF.ENDIF.ENDMETHOD.1.2. ZMB_RESERVATION_BADI1.2.1. Method: DATA_CHECKMETHOD if_ex_mb_reservation_badi~data_check.DATA: zresb TYPE resb,zmarc TYPE marc,zrkpf TYPE rkpf,zmara TYPE mara.DATA: zit_changeable TYPE tdtab_c132.DATA: zi_new_item TYPE c.DATA: zflag TYPE c.DATA: zbdter TYPE resb-bdter.DATA: p_atinn TYPE cabn-atinn.DATA: zkostl TYPE rkpf-kostl.DATA: wa_zdepb TYPE zdepb.DATA: zusnam TYPE zdepb-usnam.zresb = is_resb.zrkpf = is_rkpf.********************************************************************** */对提报成本中心预留的要料计划,控制用户是否有权提报指定成本中心的预留********************************************************************** IF zrkpf-bwart EQ 'Z09' OR zrkpf-bwart EQ 'Z11' OR zrkpf-bwart EQ 'Z13' OR zrkpf-bwart EQ 'Z15' OR zrkpf-bwart EQ 'Z17' OR zrkpf-bwart EQ 'Z19' OR zrkpf-bwart EQ 'Z10' OR zrkpf-bwart EQ 'Z12' OR zrkpf-bwart EQ 'Z14' OR zrkpf-bwart EQ 'Z16' OR zrkpf-bwart EQ 'Z18' OR zrkpf-bwart EQ 'Z20'. * break wangxianbao.zkostl = zrkpf-kostl+2(4).zusnam = sy-uname.SELECT SINGLE * INTO wa_zdepb FROM zdepb WHERE usnam = zusnamAND grpname = zkostl.IF sy-subrc <> 0.* MESSAGE e041(zz) WITH ZUSNAM ZRKPF-KOSTL.ENDIF.ENDIF.********************************************************************** */对成本中心预留的移动类型进行控制********************************************************************** IF zrkpf-bwart EQ 'Z09'. "主体单位成本中心break wangxianbao.zkostl = zrkpf-kostl+2(4).IF zkostl NE '6023' AND Zkostl NE '6024' AND zkostl NE '6025' AND zkostl NE'6026' AND zkostl NE '6027' AND zkostl NE '6028' AND zkostl NE '6029' AND zkostl NE '6030'AND zkostl NE '6031' AND zkostl NE '6032' AND zkostl NE '6533'.MESSAGE E000(zz) WITH '辅助单位生产以领代耗物资必须用Z11!'.ENDIF.ENDIF.IF zrkpf-bwart EQ 'Z11'. "辅助单位成本中心break wangxianbao.zkostl = zrkpf-kostl+2(4).IF zkostl EQ '6023' OR zkostl EQ '6024' OR zkostl EQ '6025' OR zkostl EQ '6026' OR zkostl EQ '6027' OR zkostl EQ '6028' OR zkostl EQ '6029' OR zkostl EQ '6030' OR zkostl EQ '6031' OR zkostl EQ '6032' OR zkostl EQ '6533'.MESSAGE E000(zz) WITH '主线单位生产以领代耗物资必须用Z09!'.ENDIF.ENDIF.****************************************************************/对设备备件的预留必须输入计划批次号进行控制*************************************************************** SELECT SINGLE * INTO zmarc FROM marc WHERE matnr = zresb-matnr. SELECT SINGLE * INTO zmara FROM mara WHERE matnr = zresb-matnr.IF sy-subrc EQ 0.IF zmarc-xchpf = 'X' AND( zmara-mtart = 'B001' OR zmara-mtart = 'B002' ).IF zresb-charg IS INITIAL AND zresb-xloek IS INITIAL .MESSAGE e000(zz) WITH '针对设备备件的预留必须输入计划批次号'.ENDIF.IF zresb-lgort IS INITIAL.MESSAGE w000(zz) WITH '没有指定库存地预留对该计划批次的所有库存地有效'. ENDIF.ENDIF.ENDIF.****************************************************************/对使用单位创建原燃材料的预留时不能输入库存地点进行控制***************************************************************IF sy-tcode = 'MB21'.SELECT SINGLE * INTO zmara FROM mara WHERE matnr = zresb-matnr.IF zmara-mtart = 'A001' OR zmara-mtart = 'A002' OR zmara-mtart = 'A003'. IF zresb-lgort IS NOT INITIAL.MESSAGE e000(zz) WITH '创建原燃材料预留时不能指定库存地点!'.ENDIF.ENDIF.ENDIF.****************************************************************/对需要计量的原燃料在SAP系统中提报预留警告提示**************************************************************** break wangxianbao.IF zrkpf-umwrk EQ '6000'.SELECT SINGLE * INTO zmara FROM mara WHERE matnr = zresb-matnr.IF zmara-mtart = 'A003'.MESSAGE e036(zz).ENDIF.ENDIF.SELECT SINGLE atinn FROM cabn INTO p_atinn WHERE atnam = 'ZYL-012'.IF sy-subrc = 0.SELECT SINGLE atwrt INTO zflag FROM auspWHERE objek = zresb-matnrAND atinn = p_atinnAND klart = '001'.IF zflag EQ 'A'.MESSAGE w035(zz) WITH zresb-matnr.ENDIF.ENDIF.*****************************************************************/对原燃料控制不能在SAP系统中提报Z09和Z11的预留***************************************************************IF zrkpf-bwart EQ 'Z09' OR zrkpf-bwart EQ 'Z11'.SELECT SINGLE * INTO zmara FROM mara WHERE matnr = zresb-matnr.IF zmara-mtart EQ 'A001' OR zmara-mtart EQ 'A002'.MESSAGE w039(zz) WITH zresb-matnr.ENDIF.ENDIF.****************************************************************/对提报要料计划,需求日期不能超过当前日期+11天***************************************************************IF zrkpf-bwart EQ 'Z09' OR zrkpf-bwart EQ 'Z11' OR zrkpf-bwart EQ 'Z13' OR zrkpf-bwart EQ 'Z15' OR zrkpf-bwart EQ 'Z17' OR zrkpf-bwart EQ 'Z19' OR zrkpf-bwart EQ 'Z61' OR zrkpf-bwart EQ '241' OR zrkpf-bwart EQ '301'. * break wangxianbao. zbdter = sy-datum + 11.IF zresb-bdter > zbdter.MESSAGE e037(zz) WITH zbdter.ENDIF.ENDIF.****************************************************************/对提报退货预留,需求日期不能超过当前日期+3天***************************************************************IF zrkpf-bwart EQ 'Z10' OR zrkpf-bwart EQ 'Z12' OR zrkpf-bwart EQ 'Z14' OR zrkpf-bwart EQ 'Z16' OR zrkpf-bwart EQ 'Z18' OR zrkpf-bwart EQ 'Z20' OR zrkpf-bwart EQ 'Z62' OR zrkpf-bwart EQ '242' OR zrkpf-bwart EQ '302'. * break wangxianbao. zbdter = sy-datum + 3.IF zresb-bdter > zbdter.MESSAGE e037(zz) WITH zbdter.ENDIF.ENDIF.CLEAR:zresb,zrkpf,zmarc,zmara,zflag,p_atinn.ENDMETHOD.1.3. ZME_HOLD_PO1.3.1. Method: IS_ALLOWEDmethod IF_EX_ME_HOLD_PO~IS_ALLOWED.*-----------------------------------------------------------** disable the hold function when any error exists in the document*-----------------------------------------------------------*break wangxianbao.ch_allowed = space.IF im_ekko-bsart IS NOT INITIAL.IF im_bekpo[] IS INITIAL.ch_allowed = space.EXIT.ELSE.IF im_header_with_error NE space.ch_allowed = space.EXIT.ENDIF.READ TABLE im_bekpo WITH KEY item_with_error = 'X' TRANSPORTING NO FIELDS.IF sy-subrc IS INITIAL.ch_allowed = space.EXIT.ENDIF.READ TABLE im_beket WITH KEY item_with_error = 'X' TRANSPORTING NO FIELDS.IF sy-subrc IS INITIAL.ch_allowed = space.EXIT.ENDIF.READ TABLE im_ekknu WITH KEY item_with_error = 'X' TRANSPORTING NO FIELDS.IF sy-subrc IS INITIAL.ch_allowed = space.EXIT.ENDIF.ENDIF.ENDIF.IF ch_allowed NE 'X'.break wangxianbao.ch_allowed = space.ENDIF.endmethod.1.4. ZME_PROCESS_PO_CUST1.4.1. Method: PROCESS_ITEM******************************************************************** METHOD if_ex_me_process_po_cust~process_item.TYPES: mm1 TYPE komv .DATA: item TYPE mmpur_tkomv.DATA: item1 TYPE mm1.DATA: zwyt3 TYPE wyt3.************************DATA: item2 TYPE mepoitem,header2 TYPE mepoheader,m_header2 TYPE REF TO if_purchase_order_mm.DATA: zkostl TYPE mepoitem-kostl.DATA: zbednr TYPE mepoitem-bednr.DATA: zbednr1 TYPE mepoitem-bednr.DATA: wa_zdepb TYPE zdepb.DATA: wa_ekko TYPE ekko,wa_ekpo TYPE ekpo,wa_mbew TYPE mbew,wa_ekbe TYPE ekbe,wa_t16fb type t16fb.DATA wa_eban TYPE eban.break wangxianbao.m_header2 = im_item->get_header( ). " 获取采购订单抬头对象header2 = m_header2->get_data( ). " 获取采购订单抬头item2 = im_item->get_data( ). " 获取采购订单行项目********************************************************************** ***/针对订单类型YB的各种检查程序段-----开始IF header2-bsart EQ 'YB'.IF NOT item2 IS INITIAL.zbednr = item2-bednr.zkostl = item2-kostl.********************************************************************** *********** **/控制物料主数据中评估类为3080的只能创建科目分配类别为I的直接为成本中心采购的订单********************************************************************** *********** SELECT SINGLE * FROM mbew INTO wa_mbew WHERE matnr = item2-matnrAND bwkey = item2-werksAND bklas = '3080'.IF sy-subrc = 0.IF item2-knttp NE 'I'.MESSAGE e003(zz) WITH item2-matnr.ENDIF.ENDIF.IF item2-knttp EQ 'I'.SELECT SINGLE * FROM mbew INTO wa_mbew WHERE matnr = item2-matnr AND bwkey = item2-werksAND bklas = '3080'.IF sy-subrc NE 0.MESSAGE e003(zz) WITH item2-matnr.ENDIF.ENDIF.********************************************************************** *************************/控制科目分配类别为H的直接为成本中心的采购订单,其输入的成本中心必须为主体上线单位的成本中心********************************************************************** ***********************IF item2-knttp EQ 'H'.zbednr1 = zkostl+2(4).IF zbednr1 IS NOT INITIAL.CLEAR wa_zdepb.SELECT SINGLE * FROM zdepb INTO wa_zdepb WHERE grpname = zbednr1 AND zflag = 'A'.IF sy-subrc NE 0.MESSAGE e005(zz) WITH item2-knttp.ENDIF.ENDIF.ENDIF.********************************************************************** *************************/控制科目分配类别为J的直接为成本中心的采购订单,其输入的成本中心必须为辅助单位的成本中心********************************************************************** ***********************IF item2-knttp EQ 'J'.zbednr1 = zkostl+2(4).IF zbednr1 IS NOT INITIAL.CLEAR wa_zdepb.SELECT SINGLE * FROM zdepb INTO wa_zdepb WHERE grpname = zbednr1 AND zflag = 'B'.IF sy-subrc NE 0.MESSAGE e005(zz) WITH item2-knttp.ENDIF.ENDIF.ENDIF.****************************************************************** ENDIF.ENDIF.********************************************************************** ***/针对订单类型YB的各种检查程序段<-----结束********************************************************************** ****&----------------------------------------------------------------------------------**建立采购订单时将采购申请的批次号(供应商物料字段)传递到采购订单中-设备备件用 *-----------------------------------------------------------------------------------*IF item2-charg IS INITIAL AND ( header2-bsart = 'SP01'OR header2-bsart = 'SP02'OR header2-bsart = 'TB') .* HEADER2-BSART = 'SP01' OR HEADER2-BSART = 'SP02'.if item2-KONNR is initial.SELECT SINGLE * INTO wa_eban FROM eban WHERE banfn = item2-banfn AND bnfpo = item2-bnfpo.item2-charg = wa_eban-idnlf .CLEAR wa_eban.else.select single * into wa_ekpo from ekpo where ebeln = item2-KONNR andebelp = item2-KTPNR.SELECT SINGLE * INTO wa_eban FROM eban WHERE banfn = wa_ekpo-banfn AND bnfpo = wa_ekpo-bnfpo. if sy-subrc eq 0.item2-charg = wa_eban-idnlf .CLEAR:wa_eban,wa_ekpo.endif.endif.CALL METHOD im_item->set_dataEXPORTINGim_data = item2.ENDIF.********************************************************************** * **/根据供应商合作伙伴,自动设定FRE对应的供应商********************************************************************** *** CALL METHOD im_item->get_conditionsIMPORTINGex_conditions = item.LOOP AT item INTO item1 WHERE kvsl1 = 'FRE'.* and KVSL2 = 'FR1'.SELECT SINGLE * FROM wyt3 INTO zwyt3 WHERE lifnr = item1-lifnr AND parvw = 'TF'.IF sy-subrc = 0.item1-lifnr = zwyt3-lifn2.MODIFY item FROM item1.ENDIF.ENDLOOP.CALL METHOD im_item->set_conditionsEXPORTINGim_conditions = item.********************************************************************&----------------------------------------------------------------------------------**建立采购订单时检查询价单是否经过审批*-----------------------------------------------------------------------------------*if item2-ANFNR is not initial.select single * from ekko into wA_ekko where ebeln = item2-ANFNR.if sy-subrc eq 0.select single * from t16fb into wa_t16fb where FRGKE = wA_ekko-FRGKE.if wa_t16fb-KZFRE NE 'X'.MESSAGE E000(ZZ) WITH '询价单未审批,不能建立采购订单'.ENDIF.endif.endif.CLEAR:wA_ekko,wa_t16fb.*&----------------------------------------------------------------------------------**检查总帐科目是否为空*-----------------------------------------------------------------------------------*if item2-KOSTL is not initial and item2-SAKTO is initial.message e051(zz).endif.ENDMETHOD.method IF_EX_ME_PROCESS_PO_CUST~CHECK.BREAK WANGXIANBAO.IF SY-TCODE = 'ME21N' AND SY-UCOMM = 'MESAVEPR'.MESSAGE E000(zz) WITH '采购订单不允许暂存!'. ENDIF.endmethod.1.5. ZME_PROCESS_REQ_CUST1.5.1. Method: OPENMETHOD if_ex_me_process_req_cust~open.DATA: tf_01 TYPE REF TO zif_ex_me_process_req_me. DATA: zheader TYPE REF TO if_purchase_requisition. DATA: zeban TYPE mereq_item. "结构-采购申请行项目DATA: zmereq TYPE mereq_header."结构-采购申请抬头DATA: zbednr TYPE eban-bednr. "需求跟踪号DATA: wa_zdepb TYPE zdepb, "所在部门与用户对照表(YCL) wa_mbew TYPE mbew. "物料评估DATA:t_eban TYPE TABLE OF eban INITIAL SIZE 0 . DATA: zex_strategy TYPE REF TO if_release_strategy_mm. DATA: zex_state TYPE REF TO if_release_state_mm. DATA: zre_codes TYPE merel_t_codes. "已经审批代码DATA: zrel_code TYPE frgco. "当前用户授权的审批代码DATA: zre_allowed1 TYPE mmpur_bool. "是否审批标志DATA: zre_allowed2 TYPE mmpur_bool. "是否取消审批标志DATA: zre_allowed3 TYPE mmpur_bool. "点击取消审批按钮DATA: zex_frggr TYPE eban-frggr. "审批组DATA: zex_frgst TYPE eban-frgst. "审批策略DATA: zex_codes TYPE merel_t_codes. "审批代码DATA: zre_codes1 TYPE merel_t_codes.DATA: zex_prerequisites TYPE merel_t_prereq.DATA: zex_final TYPE merel_t_final.DATA: zex_group TYPE frggr.DATA: wa_re_codes1 LIKE LINE OF zre_codes1.DATA: zre_fgrco TYPE frgco. "已经审批的最后一级审批代码DATA: tmp01 LIKE LINE OF zex_codes.DATA: zbednr1 TYPE eban-bednr.DATA: zint TYPE i.DATA: zbadat TYPE eban-badat.DATA: zunq1 TYPE zscalar-zunq.DATA: zbnfpo TYPE eban-bnfpo.DATA: zbanfn TYPE eban-banfn.DATA: zeban1 TYPE eban.DATA: ztemp1(2) TYPE c.DATA: zusnam TYPE zdepb-usnam.DATA: l_feld(40) TYPE c VALUE '(SAPLMEGUI)MEREQ_TOPLINE-BANFN_EXT'.DATA: fban(40) TYPE c VALUE '(SAPLMEGUI)MEREQ_TOPLINE-BANFN_EXT'. FIELD-SYMBOLS: <fs> TYPE ANY.zeban = im_item->get_data( ).break wangxianbao.********************************************************************** ******************/检查紧急采购计划次数是否超标和正常计划,必须在每月23-29日创建,其余时间只能报紧急计划********************************************************************** *****************IF zeban-bsart EQ 'Y00'.IF sy-tcode EQ 'ME51N' OR sy-tcode EQ 'ME52N'.IF sy-uname(3) NE 'YCL' .MESSAGE e000(zz) WITH '非原材料处用户,不能创建Y00类型的采购申请!'. ENDIF.ENDIF.ENDIF.IF zeban-bsart EQ 'Y01' OR ZEBAN-BSART EQ 'Y02'.IF sy-tcode EQ 'ME51N' OR sy-tcode EQ 'ME52N'.IF sy-uname(5) NE 'SQDWY' .if sy-uname(3) NE 'YCL'.MESSAGE e000(zz) WITH '向原材料提报采购申请,用户必须为SQDWY***或YCL***!'. ENDIF.ENDIF.ENDIF.ENDIF.********************************************************************** ******************/检查紧急采购计划次数是否超标和正常计划,必须在每月23-29日创建,其余时间只能报紧急计划********************************************************************** *****************IF zeban-bsart EQ 'Y01'.IF sy-tcode EQ 'ME51N' OR sy-tcode EQ 'ME52N'.ztemp1 = sy-datum+6(2).IF ztemp1 NOT BETWEEN '23' AND '29'.MESSAGE e000(zz) WITH '正常计划在每月23-29日报,其余时间只能报紧急计划!'. ENDIF.ENDIF.IF zeban-bsart EQ 'Y02' OR zeban-bsart EQ 'Y32'.IF zeban-bednr IS NOT INITIAL.zint = 0.zbadat = zeban-badat+0(6).CONCATENATE zbadat '01' INTO zbadat.SELECT SINGLE zunq INTO zunq1 FROM zscalar WHERE bednr = zeban-bednr. IF sy-subrc = 0.* break wangxianbao.SELECT bednr INTO zbednr FROM eban WHERE bednr = zeban-bednrAND bsart = 'Y02'AND badat >= zbadatAND loekz = ''.zint = zint + 1.ENDSELECT.zbnfpo = zeban-bnfpo.zbnfpo = zbnfpo / 10.zint = zint + zbnfpo.IF zint > zunq1 .MESSAGE e034(zz) WITH zunq1.ENDIF.ENDIF.ENDIF.ENDIF.ENDIF.IF sy-tcode = 'ME52N'.IF zeban-bsart EQ 'Y02' OR zeban-bsart EQ 'Y32'.IF zeban-bednr IS NOT INITIAL.ASSIGN (l_feld) TO <fs>.* break wangxianbao.IF <fs> IS NOT INITIAL.zbanfn = <fs>.SELECT SINGLE * INTO zeban1 FROM eban WHERE banfn = zbanfnAND bnfpo = zeban-bnfpo. IF sy-subrc <> 0.zint = 0.zbadat = zeban-badat+0(6).CONCATENATE zbadat '01' INTO zbadat.SELECT SINGLE zunq INTO zunq1 FROM zscalar WHERE bednr = zeban-bednr. IF sy-subrc = 0.* break wangxianbao.SELECT bednr INTO zbednr FROM eban WHERE bednr = zeban-bednr AND bsart = 'Y02'AND badat >= zbadatAND loekz = ''.zint = zint + 1.ENDSELECT.zbnfpo = zeban-bnfpo.zbnfpo = zbnfpo / 10.zint = zint + zbnfpo.SELECT bednr INTO zbednr FROM eban WHERE banfn = zbanfn.* AND bnfpo = zeban-bnfpo. zint = zint - 1.ENDSELECT.IF zint > zunq1 .MESSAGE e034(zz) WITH zunq1.ENDIF.ENDIF.ENDIF.ENDIF.ENDIF.ENDIF.ENDIF.******************************************************/针对采购申请类型为Y01\Y02\Y31\Y32,检查需求跟踪号输入的正确性*****************************************************IF zeban-bsart EQ 'Y01' OR zeban-bsart EQ 'Y02' OR zeban-bsart EQ 'Y31' OR zeban-bsart EQ 'Y32'.* BREAK WANGXIANBAO.IF zeban-bednr IS INITIAL. "需求跟踪号不能为空MESSAGE e004(zz).ELSE. "对非空的需求跟踪号判断是否正确CLEAR wa_zdepb.SELECT SINGLE * FROM zdepb INTO wa_zdepb WHERE grpname = zeban-bednr. * break wangxianbao.IF sy-subrc NE 0.MESSAGE e004(zz).ENDIF.zusnam = sy-uname.SELECT SINGLE * INTO wa_zdepb FROM zdepb WHERE usnam = zusnamAND grpname = zeban-bednr. IF sy-subrc NE 0.* MESSAGE e042(zz) WITH ZUSNAM zeban-bednr.ENDIF.ENDIF.ENDIF.******************************************************************/删除PR时,检查是否已经审批,如果已经审批,必须先取消审批才能删除*****************************************************************IF sy-tcode EQ 'ME52N' OR sy-tcode EQ 'ME53N'.IF sy-ucomm EQ 'MEREQFLUSH'.ASSIGN (l_feld) TO <fs>.* break wangxianbao.IF <fs> IS NOT INITIAL.zbanfn = <fs>.SELECT SINGLE * INTO zeban1 FROM eban WHERE banfn = zbanfnAND bnfpo = zeban-bnfpo.IF zeban1-frgzu IS NOT INITIAL.* break wangxianbao.MESSAGE e033(zz) .ENDIF.ENDIF.ENDIF.ENDIF.*********************************************************/创建和修改PR时,检查是否存在审批策略,如果不存在,则报错********************************************************IF zeban-bsart EQ 'Y01' OR zeban-bsart EQ 'Y02' OR zeban-bsart EQ 'Y31' OR zeban-bsart EQ 'Y32'.CLEAR wa_re_codes1.IF sy-tcode EQ 'ME51N' .* break wangxianbao.IF zeban-werks NE '6000'.MESSAGE e023(zz) .ENDIF.CALL METHOD im_item->if_releasable_mm~get_data "读取是否存在审批策略IMPORTINGex_strategy = zex_strategyex_state = zex_state.IF zex_strategy IS INITIAL.MESSAGE e006(zz) WITH zeban-bsart.ENDIF.ENDIF.ENDIF.*********************************************************/取消PR审批时,检查是否为逐级取消,系统控制必须逐级取消审批********************************************************IF sy-tcode = 'ME54N'.zre_allowed1 = im_item->if_releasable_mm~is_release_allowed( ). "点击审批按钮zre_allowed2 = im_item->if_releasable_mm~is_reset_rej_allowed( ).zre_allowed3 = im_item->if_releasable_mm~is_reset_rel_allowed( ). "点击取消审批按钮IF zre_allowed3 EQ 'X'. "AND COUNTER = 0.CALL METHOD im_item->if_releasable_mm~get_data "读取是否存在审批策略IMPORTINGex_strategy = zex_strategyex_state = zex_state.IF zex_strategy IS INITIAL.MESSAGE e006(zz) WITH zeban-bsart.ELSE.CALL METHOD zex_strategy->get_infoIMPORTINGex_codes = zex_codesex_strategy = zex_frgstex_group = zex_groupex_prerequisites = zex_prerequisitesex_final = zex_final.CALL METHOD zex_strategy->get_codes_from_stateEXPORTINGim_frgzu = zeban-frgzuRECEIVINGre_codes = zre_codes1.LOOP AT zre_codes1 INTO wa_re_codes1.zre_fgrco = wa_re_codes1-rel_code.ENDLOOP.CLEAR wa_re_codes1.IF zre_fgrco IS NOT INITIAL.READ TABLE zex_codes INTO tmp01 WITH KEY rel_code = zre_fgrco.IF sy-subrc = 0.IF tmp01-authority <> 0.MESSAGE e007(zz).ENDIF.ENDIF.ENDIF.ENDIF.ENDIF.********************************************************************** *********** **/控制物料主数据中评估类为3080的只能创建科目分配类别为I的。

abap标准表字段扩展

abap标准表字段扩展

在ABAP中扩展标准表字段可以通过以下步骤实现:
1. 找到要扩展的标准表。

2. 进入SE11事务代码,输入标准表的名称,并点击“修改”按钮。

3. 在表维护界面上,点击“表字段”按钮,进入字段维护界面。

4. 找到要扩展的字段,并在字段列表的结尾添加新的字段。

可以为新字段指定名称、数据类型、长度等。

5. 保存并激活所有的修改。

这样就可以成功扩展ABAP标准表的字段了。

注意,这种增强方式不会对SAP标准产品发布的数据库表造成直接修改,因此客户可以在自己的系统上进行增强操作。

如果后续SAP数据库表发生了版本更新,增强过的字段也不会受到影响。

增强介绍参考模板

增强介绍参考模板

ABAP总结之十一,Enhancement(2)--DictionaryElementsABAP总结之十一,Enhancement(3)--User Exits* E_DATE =* E_CHAR =* E_VAR =.ENDFORM.下面来讲一下,如何找到此类出口:方法1:SPRO -> SAP Reference IMG,按ABAP总结之十一,Enhancement(4)--Customer Exits Customer Exits,顾名思义,就是用户自定义出口。

有3类这样的出口:Function Module Exits; Menu Exits; Screen Exits有两个常用的T-code:CMOD: 用于增强项目的管理SMOD: 增强项目的具体实现Function Module Exits: 就是在标准程序中预置有形如call customer-function 'NNN'的call function语句,来动态调用相关的出口程序。

'NNN'是3位数字,而实际的出口函数命名方式为:EXIT_<program name>_<exit number>。

寻找这样的可以用SMOD的查询功能,同时也有一个程序可以用T-CODE来帮助查找,在老白的博客上应该有这个程序。

这个出口形式比较简单,所以就不举例子了。

Menu Exits: 个人觉得是用得比较少的一种出口,项目上很少使用,SAP预留的出口也很少。

抓住几点关键就可以了,Menu Exits会有一个预留的function code 比如+PGE什么的。

你要在做增强的程序中发现这样的句子:CASE: OK_CODE....WHEN '+PGE'.CALL CUSTOMER-FUNCTION '001'....ENDCASE.这样就可以在相应的出口里编写你想要的东西了。

ABAP-SAP增强应用实例

ABAP-SAP增强应用实例

SAP增强应用实例SAP增强大家都很熟悉,在此不再详细讲解,下面只是通过一个实例来展示一下增强的应用。

系统增强实例为建立工单前进行校验,如没有进行标准成本发布则提示错误信息E。

T-code:CMOD通过增强程序我们可以控制相关应用,如果你不知道到底功能是用到的哪个增强,那么请看我附录上的列表。

我们以ppco0006举例如下:如图2.我们需要的是制定我们的组件,如图3.通过功能退出增加增强语句:如图4:双击程序后加入如下语句~~~~if sy-tcode <> 'CK11N' and sy-tcode <> 'CK40N'.data:begin of l_matnr,matnr like mbew-matnr,VPRSV like mbew-VPRSV,vjvpr like mbew-vjvpr,pprdl like mbew-pprdl,lplpr like mbew-lplpr,end of l_matnr.select single matnr vprsv vjvpr pprdl lplpr from mbew into l_matnrwhere matnr = CAUFVD_IMP-MATNR* and pprdl <> ''* and lplpr <> ''and bwkey = CAUFVD_IMP-WERKS.* and vjvpr = 'S'.if l_matnr-vprsv = 'V'./移动平均价exit.elseif sy-subrc <> 0 or ( l_matnr-pprdl is initial and l_matnr-lplpr is initial ).message e888(sabapdocu) with '物料' CAUFVD_IMP-MATNR'没有做成本估算, 不能创建生产订单,请通知SAP方丈,yeah~~~!'.exit.endif.endif.OK,快去看看你增强后的效果吧~~~~~¥%&%&*(*(SAP所有模块用户出口:用户出口名称短文本描述0VRF0001 客户指定路线确定AAIC0001 IM 总结: 在选择后处理数据AAIC0002 IM 总结: 在选择后处理指定的输入项AAIP0001 IM 追溯: 实际价值对预算类别的分配AAIP0002 IM 追溯: 定义用户定义的指标AAIP0003 IM 追溯: 定义用户定义的特性AAIR0001 IM-IS: 适用请求报表中的用户值字段AAIR0002 IM-FA: 拨款申请的用户字段AAIR0003 IM: 创建拨款申请中的PM 定单时工作场所的分配AAIR0004 IM 追溯: 定义用户定义的特性AAIS0003 投资计量对资产的实际结算AAIS0004 全部计划值或预算值的结算AAPM0001 资产会计和工厂维护的集成ACBAPI01 会计核算: 对BAPI 界面的客户增强功能ACCID001 会计核算的IDoc 过程ACCID002 支出会计的IDoc 处理ACCOBL01 代码块中PAI 和PBO 的客户出口AD010001 更改对象清单及其层次AD010002 定界选择和/或过滤已定数据AD010003 创建自定义动态项目特性AD010005 创建自定义资源AD010006 菜单退出:更改动态项目值AD010007 更改DI 处理信息AFAR0001 External determination of ref. value for dep. calculation AFAR0002 External determination of depreciationAFAR0003 外部转换方式AFAR0004 报废比例值的确定AINT0001 当记帐资产时进行扩展的检查AINT0002 出入流水中冲销帐户的替代...AINT0003 定义投资支持再付款的百分比/金额AINT0004 更改某范围已过帐金额AINT0005 虚拟扩展语法检查. 不使用。

查找增强的方法

查找增强的方法

SAP 三代增强badi的查找方法对于根据事务代码查找对应的BADI,网上介绍的方法很多,但总结下来无非就两种方法,在此把它记录下来,方便以后自己查阅了。

(1)通过SE24,输入CL_EXITHANDLER,然后在方法GET_INSTANCE中设置断点,然后运行事务代码判断exit_name的值,操作过程如下:输入se24,然后输入cl_exithandler进去双击get_instance设置断点查看exit_name的值:(2)通过st05跟踪,badi对应的数据表为SXS_INTER, SXC_EXIT, SXC_CLASS 和SXC_ATTR,而这些表都是通过视图V_EXT_IMP 和V_EXT_ACT来查询的。

1、打开运行事务码: ST05 选择“table buffer trace”而不是常用的"SQL trace"2、activate trace(开始跟踪)3、运行事务码:me21n4、创建一个采购订单,保存5、deactivate trace(结束跟踪)6、点击display trace,在出来的选择条件中:objects中输入:V_EXT_IMP和V_EXT_ACT;在operations中输入“OPEN”7、查询通过查询的结果可以看出,视图V_EXT_IMP的BADI的接口类名字都是以IF_EX_开头的,其中IF_EX_之后的就是对应BADI接口的定义。

方法二、利用系统函数寻找MODX_FUNCTION_ACTIVE_CHECK在这个FUNCTION的代码最后添加一个断点。

执行需要增强的TCODE,如果有增强,就会自动跳入DEBUG界面。

在DEBUG界面,查看f_tab字段,这里面所显示的Smod就是关于这个TCODE所有的增强项目的列表。

这些增强都是属于EXIT_XXXXXX_XXX这种形式。

至于如何查看这个增强是属于哪个SMOD,可以自己查阅 MODSAP这个表(SAPEnhancements).这是第二代增强。

abap 累加金额字段

abap 累加金额字段

abap 累加金额字段【实用版】目录1.ABAP 简介2.累加金额字段的概念3.累加金额字段的应用4.累加金额字段的优缺点5.实例:使用 ABAP 创建累加金额字段正文【1.ABAP 简介】ABAP(Advanced Business Application Programming)是一种高级商业应用程序编程语言,主要用于开发企业资源规划(ERP)系统的应用程序。

它是由德国软件公司 SAP 开发,主要用于 SAP R/3和SAP EWM 等系统的开发和维护。

【2.累加金额字段的概念】在 ABAP 中,累加金额字段是一种特殊的数据类型,用于存储和计算某个特定条件下的总金额。

它可以在程序中进行累加和计算,以便在财务处理、成本计算和其他相关业务场景中提供准确的数据支持。

【3.累加金额字段的应用】累加金额字段在 ABAP 中有广泛的应用,例如:- 在销售订单中,可以使用累加金额字段计算每个订单的 total amount;- 在采购订单中,可以使用累加金额字段计算每个订单的 total cost;- 在财务凭证中,可以使用累加金额字段计算每个凭证的 total value。

【4.累加金额字段的优缺点】累加金额字段的优点:- 可以方便地进行金额的累加和计算;- 可以提高程序的运行效率;- 可以减少人为错误。

累加金额字段的缺点:- 在某些情况下,可能会导致数据不准确;- 如果条件变化,需要手动修改累加逻辑。

【5.实例:使用 ABAP 创建累加金额字段】以下是一个使用 ABAP 创建累加金额字段的简单实例:```DATA: lv_order TYPE order,lv_total TYPE amount.lv_order-order_id = 10000.lv_order-customer_id = 100.lv_total = lv_order-price * lv_order-quantity.```在这个实例中,我们创建了一个名为`lv_total`的累加金额字段,用于存储订单 10000 的总金额。

abap标准表字段扩展

abap标准表字段扩展

abap标准表字段扩展摘要:1.ABAP 标准表字段扩展概述2.ABAP 标准表字段扩展的方法3.ABAP 标准表字段扩展的实例4.ABAP 标准表字段扩展的优缺点5.ABAP 标准表字段扩展的未来发展正文:一、ABAP 标准表字段扩展概述ABAP(Advanced Business Application Programming)是一种高级商业应用编程语言,主要用于开发企业级应用。

在ABAP 中,标准表是一种常用的数据结构,用于存储和管理数据。

然而,在实际应用中,标准表的字段可能需要进行扩展,以满足特定的业务需求。

本文将介绍如何对ABAP 标准表字段进行扩展。

二、ABAP 标准表字段扩展的方法1.使用扩展键扩展键是一种在标准表中添加新字段的方法,它允许你在不修改原有数据的前提下,向表中添加新的数据。

要使用扩展键,首先需要创建一个扩展键,然后在程序中使用该扩展键来访问新字段。

2.使用结构体结构体是一种复合数据类型,可以用于存储多个相关字段的值。

在ABAP中,可以通过创建结构体来扩展标准表的字段。

这种方法允许你在程序中使用结构体变量来操作扩展字段。

3.使用视图视图是一种虚拟表,基于SQL 查询定义。

通过创建视图,你可以将标准表的字段与扩展字段结合在一起,以便在程序中同时使用它们。

视图不仅可以扩展表字段,还可以实现与其他表的关联查询。

三、ABAP 标准表字段扩展的实例假设有一个名为“ORDERS”的标准表,包含字段“ORDER_NUMBER”、“CUSTOMER_NAME”和“ORDER_DATE”。

现在,需要添加一个新字段“SHIPPING_STATUS”,用于记录订单的运输状态。

可以通过以下方法实现字段扩展:1.使用扩展键:创建一个名为“SHIPPING_STATUS_EXTENSION”的扩展键,并将其添加到“ORDERS”表中。

2.使用结构体:创建一个名为“ORDER_DETAILS”的结构体,包含原有字段和扩展字段“SHIPPING_STATUS”。

abap 累加金额字段

abap 累加金额字段

abap 累加金额字段摘要:1.ABAP 简介2.累加金额字段的定义与作用3.累加金额字段的应用实例4.ABAP 中累加金额字段的优缺点5.总结正文:【ABAP 简介】ABAP(Advanced Business Application Programming)是一种高级商业应用编程语言,主要用于开发企业级应用程序。

它最初由德国的SAP 公司开发,作为其R/3 系统的主要开发语言。

ABAP 具有强大的数据处理和业务逻辑实现能力,广泛应用于财务、生产、销售、采购等领域。

【累加金额字段的定义与作用】在ABAP 中,累加金额字段是一种特殊的数据类型,用于存储和计算财务相关的金额信息。

它的主要作用是在程序中实现对各种金额的累加,以便在后续的业务处理中进行汇总和分析。

【累加金额字段的应用实例】假设一个企业有多个部门,每个部门都有一个对应的账户,我们需要计算每个部门的总费用。

在这种情况下,我们可以使用累加金额字段来实现。

具体步骤如下:1.定义一个结构体,包含部门名称和费用金额字段。

2.使用循环读取各个部门的费用数据,并将其累加到对应的部门费用金额字段中。

3.输出每个部门的总费用。

【ABAP 中累加金额字段的优缺点】优点:1.可以方便地实现金额的累加和汇总。

2.支持各种运算操作,如加、减、乘、除等。

3.可以在程序中直接使用,无需额外的数据维护工作。

缺点:1.累加金额字段只适用于金额相关的数据类型,对其他类型的数据不适用。

2.在进行金额计算时,需要注意数据类型的转换,以避免计算错误。

【总结】总的来说,ABAP 中的累加金额字段为开发者提供了一种便捷的方式来处理财务相关的数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

文章标题:探究ABAP会计凭证表增强字段的应用与优势
在SAP系统中,ABAP会计凭证表增强字段是一项非常重要的功能,它可以帮助用户在实际应用中更加灵活地处理会计凭证数据。

本文将从深度和广度两个角度来探讨ABAP会计凭证表增强字段的应用与优势,希望通过本文的分析,读者能更好地理解并应用这一功能。

一、ABAP会计凭证表增强字段的概念和作用
在SAP系统中,会计凭证是记录了公司业务活动的重要文档,它包含了诸如借贷方金额、科目、日期等关键信息。

而ABAP会计凭证表增强字段,则是指在现有会计凭证表的基础上,通过增加自定义字段来满足特定的业务需求。

通过增强字段,用户可以在原有的会计凭证表上扩展新的字段,以满足公司特定的需求。

二、ABAP会计凭证表增强字段的应用场景
1. 会计凭证数据分析
在实际应用中,会计凭证表增强字段可以帮助用户更加全面地分析会计数据。

通过增加自定义字段,用户可以根据具体的业务需求进行灵活的数据分析,比如按照自定义字段进行统计分析,从而更好地了解公司的业务状况。

2. 业务流程优化
通过增强字段,用户可以根据公司的具体业务需求进行定制化的功能
开发,从而优化业务流程。

举个例子,用户可以根据自定义字段定制
特定的审核流程,以满足公司特定的业务需求。

3. 数据报表输出
通过增强字段,用户可以更加灵活地生成数据报表。

根据自定义字段
的增加,用户可以根据具体的业务需求来定制不同的数据报表输出,
从而更好地满足公司的管理需求。

三、ABAP会计凭证表增强字段的优势
1. 灵活性
ABAP会计凭证表增强字段的优势之一就是其灵活性。

用户可以根据
具体的业务需求来增加自定义字段,从而更好地满足公司特定的需求。

2. 定制化
通过增强字段,用户可以定制化地开发特定的功能,以满足公司特定
的业务需求。

这无疑会提高用户在SAP系统中的工作效率。

3. 数据可视化
通过增强字段,用户可以更好地进行数据可视化。

通过自定义字段,
用户可以更加全面地分析和展示公司的会计数据,为公司的决策提供
更好的数据支持。

个人观点
对于ABAP会计凭证表增强字段,我认为这是一项非常重要的功能,它可以帮助用户更加灵活地处理会计凭证数据,满足公司特定的业务需求。

在实际应用中,用户可以根据具体的业务需求灵活地增加自定义字段,以实现数据分析、业务流程优化和数据报表输出。

在企业信息化建设中,ABAP会计凭证表增强字段的应用将会更加广泛,为企业管理和决策提供更好的数据支持。

总结
通过本文的分析,我们对ABAP会计凭证表增强字段的概念、应用场景和优势有了更加全面的了解。

在实际应用中,用户可以根据公司的具体业务需求来灵活地使用增强字段,以更好地满足公司的管理和决策需求。

相信随着企业信息化建设的不断深入,ABAP会计凭证表增强字段将会扮演越来越重要的角色,为企业的发展提供更好的支持。

以上所述,是对ABAP会计凭证表增强字段的应用与优势的一些个人看法和理解,希望能够对大家有所帮助。

ABAP会计凭证表增强字段的应用与优势是企业信息管理中的一个重要环节,通过对这一功能的有效利用,可以帮助企业更好地管理会计凭证数据,提高工作效率,优化业务流程,以及提供更好的决策支持。

在下文中,我们将进一步探讨ABAP会计凭证表增强字段的具体应用和其优势。

在实际应用中,ABAP会计凭证表增强字段可以帮助企业更加全面地分析会计数据。

通过增加自定义字段,用户可以根据具体的业务需求
进行灵活的数据分析。

可以根据自定义字段进行统计分析,从而更好
地了解公司的业务状况。

在数据分析方面,ABAP会计凭证表增强字
段的优势在于灵活性和定制性。

用户可以根据具体的业务需求进行定
制化的功能开发,从而优化业务流程。

除了数据分析之外,ABAP会计凭证表增强字段还在业务流程优化方
面发挥着重要作用。

通过增强字段,用户可以根据公司的具体业务需
求进行定制化的功能开发。

举个例子,用户可以根据自定义字段定制
特定的审核流程,以满足公司特定的业务需求。

这种定制化的功能开
发可以大大提高工作效率,减少不必要的人工操作,从而降低企业成本。

另外,在数据报表输出方面,ABAP会计凭证表增强字段同样具有重
要优势。

通过增强字段,用户可以更加灵活地生成数据报表。

根据自
定义字段的增加,用户可以根据具体的业务需求来定制不同的数据报
表输出,从而更好地满足公司的管理需求。

这种数据报表的灵活生成,可以帮助企业更好地监控业务运营情况,及时发现问题并进行对策调整。

ABAP会计凭证表增强字段在企业信息管理中具有重要作用。

它不仅
能够帮助企业更好地管理会计凭证数据,还可以提高工作效率,优化
业务流程,以及提供更好的决策支持。

随着企业信息化建设的不断深入,ABAP会计凭证表增强字段将会扮演越来越重要的角色,为企业
的发展提供更好的支持。

企业在使用SAP系统时,应该充分利用ABAP会计凭证表增强字段的功能,定制化地开发特定的功能,满足公司特定的业务需求,提高工作效率,优化业务流程,以及提供更好的决策支持。

相信随着企业信息化建设的不断深入,ABAP会计凭证表增强字段将成为企业管理中的重要利器,助力企业更好地发展。

相关文档
最新文档