
select from ZBUS_PARTNER where kunnr = 导入的kunnr
if sy-subrc = 0
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
date = 需要延后的Enddate
days =
months =
SIGNUM = '+'
years = ‘01’ ”延期一年
IMPORTING
CALC_DATE = 最后得到的日期
modify 要修改的表。
endif
因为不知道你是要修改ZBUS_PARTNER,还是重新插入一笔数据到ZBUS_PARTNER,所有代码可能不完整,但思路是这样的。你可以试试。
楼上的直接+ 365不正确,有时候一年并不是365天,直接在年的基础上加一最符合要求吧。呵呵。
调用function: CS_BOM_EXPL_MAT_V2
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
CAPID = 'PP02' "BOM Application
DATUV = SY-DATUM
EMENG = P_BMENG "BASE QUANTITY
MTNRV = WTL_MATNR-MATNR "MATERAIL NUMBER
STLAN = P_STLAN
STLAL = P_STLAL
CUOBJ = CUOBJ
MKTLS = 'X'
MEHRS = 'X'
WERKS = WTL_MATNR-WERKS "'PDGM'
TABLES
STB = WTL_STB
EXCEPTIONS
ALT_NOT_FOUND = 1
CALL_INVALID = 2
MATERIAL_NOT_FOUND = 3
MISSING_AUTHORIZATION = 4
NO_BOM_FOUND = 5
NO_PLANT_DATA = 6
NO_SUITABLE_BOM_FOUND = 7
OTHERS = 8
定义一个内表,然后按照内表中的字段进行select into到内表中。例如:
data:begin of gt_data occurs 0,
matnr like mard-matnr,
werks like mard-werks,
lgort like mard-lgort,
labst like mard-labst,
end of gt_data
上面的表示一个内表gt_data定义出来了。然后我们在把对应的数据提取出来,
select matnr
werks
lgort
labst
into table gt_data
from mard
where werks = '1100'
这样的话,数据就会按照物料号、工厂、库存地点、非限制库存 提取放到内表gt_data中了。
也可以写成:
select
into corresponding fields of table gt_data
from mard
where werks = '1100'
上面的这两种sql语句的区别在于: 第一种程序会只针对matnr werks lgort labst 这四个字段去提取数据,第二种,程序会提取mard表中所有字段,然后按照matnr werks lgort labst 来mapping上去。 相对效率而言,第一种效率好些。
至于程序优化上面,尽量减少对数据库的访问,尽量避开那几个大表,比如 mseg ,bseg 等这类的表。 尽量把数据放在内存中计算, 别的倒也没什么了,其实在内表上关于一些sort table 和 hash table 来说,虽然在速度上会快一些(“比如在处理几十万条数据”),如果在几万到十几万条数据的话,性能上其实没什么太大的变化,但是在后期程序修改上,会比较的麻烦一点,一般这种内表我们只是运用在比较大的表上用。OK。说完了。就这样吧。
以上就是关于在ABAP编写导入数据的程序全部的内容,包括:在ABAP编写导入数据的程序、如何用ABAP/4写SAP的BOM展开程序。、abap怎样抽取数据到内表 顺便想求教关于ABAP程序执行效率和优化等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)