SAP ABAP创建物料凭证

文章详细描述了如何在SAP系统中通过ABAP编程实现大批量物料数据的自动记账过程,包括账期校验、库存检查以及记账代码示例,展示了如何创建凭证和获取财务凭证的关键步骤。

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


需求

对大批量物料数据进行自动记账


一、校验

校验账期-财务账期

CALL FUNCTION 'FI_PERIOD_CHECK'
          EXPORTING
            i_bukrs          = lv_bukrs
            i_gjahr          = lv_year
            i_koart          = '+'
            i_monat          = lv_monf
          IMPORTING
            e_oper           = lv_oper
          EXCEPTIONS
            error_period     = 1
            error_period_acc = 2
            invalid_input    = 3
            OTHERS           = 4.

校验库存-取出对应物料库存比较 消耗是否大于库存

SELECT * INTO TABLE @DATA(lt_mard)
        FROM mard
        WHERE matnr EQ @gv_matnr
        AND werks IN @lr_werks
        AND lgort EQ @gv_lgort.

二、记账代码

同移动类型的数据可放一张凭证

代码如下(示例):


  DATA:lw_goodsmvt_header TYPE bapi2017_gm_head_01,
       pv_goodsmvt_code   TYPE bapi2017_gm_code,
       lv_materialdoc_fjy TYPE bapi2017_gm_head_ret-mat_doc,
       lv_year            TYPE bapi2017_gm_head_ret-doc_year,
       lt_goodsmvt_item   TYPE TABLE OF bapi2017_gm_item_create
### SAP创建物料凭证并生成转储单 在SAP系统中,创建物料凭证的同时可以设置自动生成转储单(Transfer Order, TO),这通常发生在仓库管理(Warehouse Management, WM)启用的情况下。当执行物料移动操作时,可以通过特定的事务码或BAPI来触发这一过程。 对于通过程序化方式创建物料凭证并希望同步生成转储单的情况,应使用`BAPI_ACC_GOODS_MOVEMENT_POST` BAPI[^1]。此接口允许定义物料移动的具体细节,在适当配置下会自动启动WM模块中的流程以创建相应的TO记录。需要注意的是,实际业务场景下的具体行为还取决于系统的配置以及所使用的移动类型。 为了确保创建物料凭证的过程中能够正确地生成转储单,需满足以下几个条件: - **启用WM功能**:确认工厂/存储地点已激活WM组件。 - **设定移动类型参数**:某些物料移动类型的默认动作即为创建TO;这些可以在交易代码`OMJJ`中查看和调整。 - **维护库存管理模式**:针对涉及的物料主数据条目,其“特殊采购键”字段应当指向支持WM集成的方式。 下面是一个简单的ABAP代码片段展示如何调用上述提到的BAPI来进行物料凭证创建,并期望随之而来的TO被建立: ```abap DATA: lt_bapi_goodsmvt_item TYPE TABLE OF bapigmditm, ls_bapi_goodsmvt_item LIKE LINE OF lt_bapi_goodsmvt_item. ls_bapi_goodsmvt_item-movement_type = '301'. " Example Movement Type ls_bapi_goodsmvt_item-material = 'MATNR'. ls_bapi_goodsmvt_item-storage_loc = 'STLOC'. APPEND ls_bapi_goodsmvt_item TO lt_bapi_goodsmvt_item. CALL FUNCTION 'BAPI_ACC_GOODS_MOVEMENT_POST' EXPORTING movement_date = sy-datum IMPORTING return = lv_return TABLES goodsmvt_item = lt_bapi_goodsmvt_item. ``` 这段代码仅作为概念验证用途,真实环境中还需要考虑更多因素如错误处理、额外的数据输入校验等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ggreekn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值