AS03 查询资产2601058985,没有单位、数量
AS03 查询资产2601058945,有单位、数量
ANLH 查询来源于领料单
CDHDR 可以看到,是由ZMMD0030B创建
SE38 可以查到写入的数据,和参考的结构zsfi0011
ZFI_I0012_ASSET_CREATE 这个函数,有个把单位PC转换为ST的步骤
查看该结构是有单位,但是没有数量
MARA 用SE16查看到的单位是ST、SET
MARA 用SE16N查看到的单位是PC、SET
T006可以查到ST对应PC,SET 对应 SET
直接读取内表MARA的单位是ST,而不是PC
需要对单位转换
*START-----------------------------------ZHF-240402 资产创建时数量、单位缺失,因为单位没有转-------------------------------------
IF ls_gz-meins IS NOT INITIAL.
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
EXPORTING
input = ls_gz-meins
language = sy-langu
IMPORTING
* LONG_TEXT =
output = ls_gz-meins.
ENDIF.
*END-----------------------------------ZHF-240402 资产创建时数量、单位缺失,因为单位没有转----------------------------------------
总结,创建资产是用的内置单位ST,但是由于又套了一层函数,是把PC转成ST,如果给函数传值是ST,则会转单位失败。必须把从MARA取到的ST,先转换成PC,然后再传值给这个函数ZFI_I0012_ASSET_CREATE才会运行正确。
ZMMD0030B 改动代码后,需要开单验证是否正确
MIGO 选择“A01 收货”“R10其他” 输入料号、库存地点数量等信息,直接用561初始导入库存的方法,增加料号的库存,方便后续开单领用。
ZMMD0030 开立领用单,领用料号
注意,这里的单位虽然是PC,但是在底表中保存时其实是ST
由于该单需要签核OA,才能审核,审核后才能过账,但是在DEMO区测试时没有办法链接OA单,
进入SE16N,输入审核时会用到的领料单抬头表ZTMM0030_HEAD,输入领料单,输入/H,点击执行
进入后台,把GD-SAPEDIT、GD-EDIT 的 值 “更改” 成 X,再点击“继续”F8
这样就可以把审核状态该成X,这样该单子就是审核状态,其他领用单也可以用这种方法审核,当然,这种方法只能在测试区使用,正式区还是要走OA签核的。
ZMMD0030B 过账
重新产生的资产就是有单位PC,和数量了
WMS接口函数测试
TABLES:ztmm0030_head.
DATA: lt_items TYPE TABLE OF zsmm_wms001_i0128_1n,
lt_return TYPE TABLE OF zspp_mes001_pp011_out.
SELECTION-SCREEN BEGIN OF BLOCK text1.
SELECT-OPTIONS :
s_lddnum FOR ztmm0030_head-lddnum.
SELECTION-SCREEN END OF BLOCK text1.
START-OF-SELECTION .
SELECT
b~lddnum AS zid, ""外围系统唯一编号
b~lddnum, ""部门领料单
b~sortid, ""序号
b~matnr, ""物料编号
b~bdmng AS pdmng, ""数量
b~hsdat, ""生产日期
b~charg, ""批号
b~bdter AS budat, ""凭证中的过账日期
b~werks, ""工厂
b~lgort, ""库存地点
b~bwart, ""移动类型(库存管理)
b~rsnum, ""预留/相关需求的编号
b~rspos, ""预留 / 相关需求的项目编号
b~sobkz, ""特殊库存标识
b~lifnr, ""供应商或债权人的帐号
b~aufnr ""订单号 "
FROM ztmm0030_head AS a
INNER JOIN ztmm0030_item AS b ON b~lddnum = a~lddnum
INTO CORRESPONDING FIELDS OF TABLE @lt_items
WHERE a~lddnum IN @s_lddnum.
CHECK lt_items[] IS NOT INITIAL.
CALL FUNCTION 'Z_MM_I0128_02_001_POST_01'
EXPORTING
i_syflg = '1'
TABLES
t_items = lt_items
t_return = lt_return.
BREAK-POINT.