SAP ABAP BAPI函数50连载31-BAPI_SALESORDER_CREATEFROMDAT2 VA01

关注微信公众号hot583,第一时间获取作者更新~

上海即将解封了。历史不会忘记耻辱的人。也会感谢付出的人。接下来经济如何发展?我们拭目以待。

在SAP系统的SD模块之中,我们经常会遇到需要通过接口或者批量创建销售订单的情形。

前台事务代码是VA01,一般我们使用BAPI:BAPI_SALESORDER_CREATEFROMDAT2 。

如下是DEMO例子tutorial example,希望您喜欢~

 

导入参数:

参数名称 关联类型 可选的 说明
ORDER_HEADER_IN BAPISDHD1 必选 抬头
ORDER_HEADER_INX BAPISDHD1X 可选 抬头

ORDER_HEADER_IN常用字段:(ORDER_HEADER_INX与之字段对应,类型不同,具体需求根据bapi参数的关联类型结构中查找)

表参数:

参数名称 关联类型 可选的 说明
RETURN BAPIRET2 可选 返回信息
ORDER_ITEMS_IN BAPISDITM 可选 行项目
ORDER_ITEMS_INX BAPISDITMX 可选
ORDER_PARTNERS BAPIPARNR 必选 伙伴
ORDER_SCHEDULES_IN BAPISCHDL 可选 计划行
ORDER_SCHEDULES_INX BAPISCHDLX 可选

备注:

ORDER_ITEMS_IN常用字段:(ORDER_ITEMS_INX字段与之对应,类型不一定相同,具体根据需求去bapi参数的关联类型结构中查找)

 

字段名 类型 简短描述
ITM_NUMBER POSNR_VA 销售凭证项目
MATERIAL MATNR18 物料编号(18个字符)
TARGET_QTY DZMENG 目标数量(采用销售单位)

 

ORDER_SCHEDULES_IN常用字段:(ORDER_SCHEDULES_INX字段与之对应,类型不一定相同,具体根据需求去bapi参数的关联类型结构中查找)

 

字段名 类型 简短描述
ITM_NUMBER POSNR_VA 销售凭证项目
SCHED_LINE ETENR 计划行
REQ_QTY WMENG 各销售单位订单数量

 

如下是demo代码,作为HOT583.com的码农,多年前也是SAP ABAP beginners ,最开始学习会有些难度,

到处去找Tutorial for Constant。如下是详细代码:

*bapi相关定义

DATA:HEADER_IN  TYPE BAPISDHD1,
HEADER_INX TYPE BAPISDHD1X.

DATA:SALESDOCUMENT TYPE BAPIVBELN-VBELN.

DATA:RETURN        LIKE TABLE OF BAPIRET2   WITH HEADER LINE,
ITEMS_IN      LIKE TABLE OF BAPISDITM  WITH HEADER LINE,
ITEMS_INX     LIKE TABLE OF BAPISDITMX WITH HEADER LINE,
PARTNERS      LIKE TABLE OF BAPIPARNR  WITH HEADER LINE,
SCHEDULES_IN  LIKE TABLE OF BAPISCHDL  WITH HEADER LINE,
SCHEDULES_INX LIKE TABLE OF BAPISCHDLX WITH HEADER LINE.

DATA:BEGIN OF GS_TAITOU,
DOC_TYPE    TYPE ZDOC_TYPE07,  “订单类型
SALES_ORG   TYPE ZSALES_ORG07, “销售组织
DISTR_CHAN  TYPE VTWEG,        “分销渠道
DIVISION    TYPE SPART,        “产品组
PARTN_NUMB1 TYPE KUNNR,        “售达方-AG
PARTN_NUMB2 TYPE KUNNR,        “送达方-WE
PURCH_NO_C  TYPE BSTKD,        “客户合同编码
END OF GS_TAITOU.
DATA:GT_TAITOU LIKE TABLE OF GS_TAITOU WITH HEADER LINE.

****************************

*中间省略逻辑数据处理部分代码

****************************

LOOP AT GT_TAITOU.
*-清空初始值
CLEAR:HEADER_IN,HEADER_INX,SALESDOCUMENT,
RETURN,RETURN[],
ITEMS_IN,ITEMS_IN[],
ITEMS_INX,ITEMS_INX[],
PARTNERS,PARTNERS[],
SCHEDULES_IN,SCHEDULES_IN[],
SCHEDULES_INX,SCHEDULES_INX[].

*-抬头赋值
HEADER_IN-DOC_TYPE   = GT_TAITOU-DOC_TYPE.      “销售凭证类型
HEADER_IN-SALES_ORG  = GT_TAITOU-SALES_ORG.     “销售组织
HEADER_IN-DISTR_CHAN = GT_TAITOU-DISTR_CHAN.    “分销渠道
HEADER_IN-DIVISION   = GT_TAITOU-DIVISION.    “产品组
HEADER_IN-PURCH_NO_C = GT_TAITOU-PURCH_NO_C.    “客户合同编码

HEADER_INX-DOC_TYPE   = ‘X’.              “销售凭证类型
HEADER_INX-SALES_ORG  = ‘X’.              “销售组织
HEADER_INX-DISTR_CHAN = ‘X’.              “分销渠道
HEADER_INX-DIVISION   = ‘X’.              “产品组
HEADER_INX-PURCH_NO_C = ‘X’.              “客户合同编码

*-伙伴
PARTNERS-PARTN_ROLE = ‘AG’.                 “售达方
PARTNERS-PARTN_NUMB = GT_TAITOU-PARTN_NUMB1.
APPEND PARTNERS.
CLEAR PARTNERS.

PARTNERS-PARTN_ROLE = ‘WE’.                 “收货方
PARTNERS-PARTN_NUMB = GT_TAITOU-PARTN_NUMB2.
APPEND PARTNERS.
CLEAR PARTNERS.

LOOP AT GT_OUT INTO GS_OUT WHERE
DOC_TYPE = GT_TAITOU-DOC_TYPE          “订单类型
AND SALES_ORG   = GT_TAITOU-SALES_ORG         “销售组织
AND DISTR_CHAN  = GT_TAITOU-DISTR_CHAN        “分销渠道
AND DIVISION    = GT_TAITOU-DIVISION          “产品组
AND PURCH_NO_C  = GT_TAITOU-PURCH_NO_C.       “客户合同编码.

*-行项目赋值
ITEMS_IN-ITM_NUMBER = GS_OUT-ITM_NUMBER.   “销售凭证项目
ITEMS_IN-MATERIAL   = GS_OUT-MATERIAL.     “物料编号
ITEMS_IN-TARGET_QTY = GS_OUT-TARGET_QTY.   “目标数量
APPEND ITEMS_IN.
CLEAR ITEMS_IN.

ITEMS_INX-ITM_NUMBER = GS_OUT-ITM_NUMBER.   “销售凭证项目
ITEMS_INX-MATERIAL   = ‘X’.                 “物料编号
ITEMS_INX-TARGET_QTY = ‘X’.                 “目标数量
APPEND ITEMS_INX.
CLEAR ITEMS_INX.

*-计划行赋值
SCHEDULES_IN-ITM_NUMBER = GS_OUT-ITM_NUMBER.  “销售凭证项目
SCHEDULES_IN-SCHED_LINE = ‘1’.                “计划行
SCHEDULES_IN-REQ_QTY    = GS_OUT-TARGET_QTY.  “数量
APPEND SCHEDULES_IN.
CLEAR SCHEDULES_IN.

SCHEDULES_INX-ITM_NUMBER = GS_OUT-ITM_NUMBER. “销售凭证项目
SCHEDULES_INX-SCHED_LINE = ‘1’.               “计划行
SCHEDULES_INX-REQ_QTY    = ‘X’.               “数量
APPEND SCHEDULES_INX.
CLEAR SCHEDULES_INX.

ENDLOOP.

*-调用BAPI
CALL FUNCTION ‘BAPI_SALESORDER_CREATEFROMDAT2’
EXPORTING
*   SALESDOCUMENTIN               =
ORDER_HEADER_IN               = HEADER_IN      “抬头
ORDER_HEADER_INX              = HEADER_INX
IMPORTING
SALESDOCUMENT                 = SALESDOCUMENT  “标准订单
TABLES
RETURN                        = RETURN         “返回值

ORDER_ITEMS_IN                = ITEMS_IN       “行项目
ORDER_ITEMS_INX               = ITEMS_INX

ORDER_PARTNERS                = PARTNERS       “伙伴

ORDER_SCHEDULES_IN            = SCHEDULES_IN   “计划行
ORDER_SCHEDULES_INX           = SCHEDULES_INX .

IF SALESDOCUMENT IS NOT INITIAL.

*-提交
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
EXPORTING
WAIT = ‘X’.

LOOP AT GT_OUT INTO GS_OUT WHERE
DOC_TYPE = GT_TAITOU-DOC_TYPE          “订单类型
AND SALES_ORG   = GT_TAITOU-SALES_ORG         “销售组织
AND DISTR_CHAN  = GT_TAITOU-DISTR_CHAN        “分销渠道
AND DIVISION    = GT_TAITOU-DIVISION          “产品组
AND PURCH_NO_C  = GT_TAITOU-PURCH_NO_C.

CONCATENATE ‘创建成功:’  SALESDOCUMENT INTO GS_OUT-MESS.

MESSAGE GS_OUT-MESS TYPE ‘S’.

MODIFY GT_OUT FROM GS_OUT.
CLEAR GS_OUT.

IF GT_ITAB[] IS NOT INITIAL.

LOOP AT GT_ITAB INTO GS_ITAB.

INSERT ZTABLE_SO_07 FROM GS_ITAB.

ENDLOOP.

这些代码都是结构化的代码,全部是在测试系统测试无误的。

但是您还是需要注意一下使用方式哦,尽量避免在生产机直接使用。

 

本文链接 http://www.hot583.com/2022/05/31/bapi_salesorder_createfromdat2/

本文为作者原创,如果这篇文章对您有用,欢迎转载,

转载请务必注明来源《今日热点在看》http://www.hot583.com/

我的微信公众号【 hot583 】 或者在这个链接联系我

微信原文《全文完》

今日热点在看SAP HOT583