【SAP 异常解决 】创建资产时单位数量缺失

本文解决SAP系统中资产创建时单位数量缺失的问题,通过调整代码确保单位从ST正确转换为PC,并验证流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值