【转载】ABAP物料仓位扩充

SAP物料库存扩展数据保存函数实现
这是一个SAP ABAP函数,用于扩展物料在特定工厂库位的库存数据。当指定的物料、工厂和库位不存在时,该函数会创建相关数据。通过调用'BAPI_MATERIAL_SAVEDATA'来保存头数据和存储位置信息。


FUNCTION ZMM_EXTEND_MATERIAL_LGORT.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(I_MATNR) TYPE  MARD-MATNR
*"     VALUE(I_WERKS) TYPE  MARD-WERKS
*"     VALUE(I_LGORT) TYPE  MARD-LGORT
*"----------------------------------------------------------------------
 
  DATA:I_HEADDATA             LIKE  BAPIMATHEAD,
       I_STORAGELOCATIONDATA  LIKE BAPI_MARD,
       I_STORAGELOCATIONDATAX LIKE  BAPI_MARDX,
       I_RETURN               LIKE BAPIRET2.
  DATA: LW_MARD TYPE MARD.
  SELECT SINGLE * FROM MARD INTO LW_MARD
    WHERE MATNR = I_MATNR
    AND WERKS = I_WERKS
    AND LGORT = I_LGORT.
  IF SY-SUBRC <> 0."不存在 扩库位
    CLEAR I_HEADDATA.
    I_HEADDATA-MATERIAL = I_MATNR.
    I_HEADDATA-STORAGE_VIEW = 'X'.
    CLEAR I_STORAGELOCATIONDATA.
    CLEAR I_STORAGELOCATIONDATAX.
    I_STORAGELOCATIONDATA-PLANT    = I_WERKS.
    I_STORAGELOCATIONDATA-STGE_LOC = I_LGORT.
    I_STORAGELOCATIONDATAX-PLANT = I_WERKS.
    I_STORAGELOCATIONDATAX-STGE_LOC = I_LGORT.
    CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
      EXPORTING
        HEADDATA             = I_HEADDATA
        STORAGELOCATIONDATA  = I_STORAGELOCATIONDATA
        STORAGELOCATIONDATAX = I_STORAGELOCATIONDATAX
      IMPORTING
        RETURN               = I_RETURN.
  ENDIF.
ENDFUNCTION.

————————————————
版权声明:本文为优快云博主「SAP剑客」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/zhongguomao/article/details/79591023

ABAP中实现打印仓位二维码可参考以下方法: ### 利用ABAP Webdynpro渲染二维码 可以参考“54. 使用ABAP代码制作手机能够扫描的二维码(QRCode) 方法2:利用ABAP Webdynpro渲染二维码”中的完整源代码和详细步骤来生成仓位二维码,之后再进行打印操作。不过这里未给出该教程的具体内容,可进一步查找此教程获取详细代码实现 [^1]。 ### 使用ABAP SMARTFORMS打印二维码 - **创建系统条形码**:在SMARTFORMS里可以创建系统条形码来生成二维码。 - **调节二维码尺寸和编码格式**: - **Module Size**:可以调节二维码的尺寸。 - **Mode参数**:控制生成二维码数据的编码格式,有多种常用选择。若仓位信息包含中文,可选择 “U : byte_UTF8” 来支持中文、拉丁文等;若仅为数字,可选择 “N : numeric” 。示例代码如下,在SMARTFORMS中配置好二维码相关字段后,可在ABAP程序里设置编码格式等参数: ```abap " 示例代码,假设要设置编码格式为U(byte_UTF8) DATA: lv_mode TYPE char1 VALUE 'U'. " 假设二维码内容为仓位信息 DATA: lv_bin_info TYPE string VALUE '仓位信息内容'. " 这里可根据实际情况与SMARTFORMS交互,将参数和内容传递过去 ``` - **解决二维码打印大小受字符串长度影响的问题**:如果仓位信息字符串长度不一致,打印时二维码大小可能会受影响。可对变量设置定长,例如仓位号长度默认固定数,可在内容前面增加空格来解决。示例代码如下: ```abap DATA lv_len TYPE i. "添加空格 CLEAR lv_len. lv_len = strlen( lv_bin_info ). lv_len = 固定长度 - lv_len. CONDENSE lv_bin_info NO-GAPS. DO lv_len TIMES. CONCATENATE ' ' lv_bin_info INTO lv_bin_info RESPECTING BLANKS. ENDDO. ``` 注意尽量在程序代码中进行添加空格的操作,若在smartforms中新建程序行使用以上代码,可能不会有太大变化 [^2][^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值