ABAP创建销售订单BAPI示例_bapi 创建退货销售订单-程序员宅基地

技术标签: SAP  ABAP开发  ABAP 实用程序记录  ABAP  

1.BAPI种类

  1. BAPI_SALESORDER_CREATEFROMDAT2
  2. BAPI_CUSTOMERRETURN_CREATE
  3. SD_SALESDOCUMENT_CREATE

2.BAPI区别

  • BAPI_SALESORDER_CREATEFROMDAT2 业务对象限制为BUS2032
  • BAPI_CUSTOMERRETURN_CREATE 业务对象限制为BUS2102
  • SD_SALESDOCUMENT_CREATE 未限制业务对象类型
    • BUS2030 客户询价单
    • BUS2031 客户报价
    • BUS2032 销售订单
    • BUS2034 合同
    • BUS2094 贷项订单
    • BUS2096 借项订单
    • BUS2102 退货订单
    • BUS2103 后续免费送货订单
  • BAPI_SALESORDER_CREATEFROMDAT2和BAPI_CUSTOMERRETURN_CREATE都在内部调用SD_SALESDOCUMENT_CREATE
  • 对于不同订单类型(Z001,Z002…),配置了的SD凭证类型;可在TVAK表中VBTYP字段查看
    1
    2
  • 业务对象和SD凭证类型有绑定关系;比如Z008 Z009凭证,SD凭证类型为H(退货)所以需要使用业务对象类型BUS2102的BAPI;或者使用SD_SALESDOCUMENT_CREATE并设置参数BUSINESS_OBJECT = ‘BUS2102’

3.创建抬头行项目输入结构

3

4

4.创建接口函数,并配置传入传出参数

5
6
7

5.代码

  • 此方法save_text切割的字符串结尾为空格时;会造成空格丢失,需要自行写逻辑处理
  • 处理逻辑:缩短切割长度(例如:120);然后判断前一行是否末尾为空格,如果空则将空格写入本行开头
    FUNCTION ZSD_IF0012.
    *"----------------------------------------------------------------------
    *"*"本地接口:
    *"  IMPORTING
    *"     VALUE(I_HEAD) TYPE  ZSDS_CRM_IF007
    *"  EXPORTING
    *"     VALUE(RESULTCODE) TYPE  CHAR1
    *"     VALUE(RESULTMSG) TYPE  BAPI_MSG
    *"     VALUE(O_VBELN) TYPE  VBELN
    *"  TABLES
    *"      T_ITEM STRUCTURE  ZSDS_CRM_IF008
    *"----------------------------------------------------------------------
    
      DATA:
            WA_ORDER_HEADER_IN      LIKE BAPISDHD1,                 "抬头
            WA_ORDER_HEADER_INX     LIKE BAPISDHD1X,                "抬头控制
            WA_LOGIC_SWITCH         LIKE BAPISDLS,                  "内部控制参数
            GV_SALESDOCUMENT_EX     LIKE BAPIVBELN-VBELN,           "返回SO凭证号
            WA_ORDER_ITEMS_IN       LIKE BAPISDITM,                 "行项目
            ORDER_ITEMS_IN          LIKE  TABLE OF  BAPISDITM,      "行项目
            WA_ORDER_ITEMS_INX      LIKE BAPISDITMX,                "行项目控制
            ORDER_ITEMS_INX         LIKE  TABLE OF  BAPISDITMX,     "行项目控制
            WA_ORDER_PARTNERS       LIKE BAPIPARNR,                 "业务伙伴
            ORDER_PARTNERS          LIKE  TABLE OF  BAPIPARNR,      "业务伙伴
            WA_ORDER_SCHEDULES_IN   LIKE BAPISCHDL,                 "计划行
            ORDER_SCHEDULES_IN      LIKE  TABLE OF  BAPISCHDL,      "计划行
            WA_ORDER_SCHEDULES_INX  LIKE BAPISCHDLX,                "计划行控制
            ORDER_SCHEDULES_INX     LIKE  TABLE OF  BAPISCHDLX,     "计划行控制
            WA_ORDER_CONDITIONS_IN  LIKE BAPICOND,                  "定价条件
            ORDER_CONDITIONS_IN     LIKE  TABLE OF  BAPICOND,       "定价条件
            WA_ORDER_CONDITIONS_INX LIKE BAPICONDX,                 "定价条件控制
            ORDER_CONDITIONS_INX    LIKE  TABLE OF  BAPICONDX,      "定价条件控制
            WA_ORDER_TEXT           LIKE BAPISDTEXT,                "文本
            ORDER_TEXT              LIKE  TABLE OF  BAPISDTEXT,     "文本
            WA_EXTENSIONIN          TYPE BAPIPAREX,
            ORDER_EXTENSIONIN       TYPE TABLE OF BAPIPAREX,
            WA_RETURN               LIKE BAPIRET2,                  "BAPI返回
            RETURN                  LIKE  TABLE OF  BAPIRET2.       "BAPI返回
    
      DATA: WA_BAPE_VBAP  TYPE BAPE_VBAP,
            WA_BAPE_VBAPX TYPE BAPE_VBAPX,
            WA_BAPE_VBAK  TYPE BAPE_VBAK,
            WA_BAPE_VBAKX TYPE BAPE_VBAKX.
    
      DATA: WA_ITEM TYPE ZSDS_CRM_IF008,
            GS_LOGS TYPE ZALL_LOGS.                       "日志
    
      DATA: GT_DATA TYPE TABLE OF ZSDT_CRM_IF012,         "业务数据
            WA_DATA TYPE ZSDT_CRM_IF012.
    
      DATA: GV_STRING TYPE STRING,
            GT_STRING TYPE TABLE OF CHAR_132,
            WA_STRING TYPE  CHAR_132,
            GV_LENGTH TYPE I.
    
      SELECT *
      FROM ZMPPZB AS A
      FOR ALL ENTRIES IN @T_ITEM
      WHERE ZMPXX = @T_ITEM-ZMPXX
      INTO TABLE @DATA(GT_ZMPPZB).
    
    *    获取日志表流水号
      CALL FUNCTION 'NUMBER_RANGE_ENQUEUE'
      EXPORTING
        OBJECT           = 'ZLOG001'
      EXCEPTIONS
        FOREIGN_LOCK     = 1
        OBJECT_NOT_FOUND = 2
        SYSTEM_FAILURE   = 3
        OTHERS           = 4.
      IF SY-SUBRC EQ 0.
    * Implement suitable error handling here
        CALL FUNCTION 'NUMBER_GET_NEXT'
        EXPORTING
          NR_RANGE_NR             = '01'
          OBJECT                  = 'ZLOG001'
        IMPORTING
          NUMBER                  = GS_LOGS-SEQNR
    *       QUANTITY                =
    *       RETURNCODE              =
        EXCEPTIONS
          INTERVAL_NOT_FOUND      = 1
          NUMBER_RANGE_NOT_INTERN = 2
          OBJECT_NOT_FOUND        = 3
          QUANTITY_IS_0           = 4
          QUANTITY_IS_NOT_1       = 5
          INTERVAL_OVERFLOW       = 6
          BUFFER_OVERFLOW         
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_30797051/article/details/120094731

智能推荐

[年中总结]真正的精彩都在海里-程序员宅基地

文章浏览阅读325次。碎碎念一篇

Android 开发之Retrofit》《一》_安卓开发 retrofit-程序员宅基地

文章浏览阅读249次。一、Retrofit是什么?Retrofit 是一个 HTTP 网络请求框架的封装,网络请求的工作本质上是 OkHttp 完成,而 Retrofit 仅负责 网络请求接口的封装,所以你可以将Retrofit 看成是一个对OkHttp 封装的网络请求框架。本篇文章也不但算介绍Retrofit 的基本用法,而是研究一下Retrofit源码,知其然也要知其所以然。二、源码解析 public interface NetInterface { @GET("getSomething")_安卓开发 retrofit

redhat Enterprise 8.0Linux中的进程管理_gnome-keyring-daemon-程序员宅基地

文章浏览阅读465次。### 1.进程定义 ####进程的定义:程序是静态的代码文件进程是指程序运行时的形态进程是程序的一个副本进程是有生命周期的(准备期,运行期,终止期)#进程&线程进程是资源调用的最小单位线程是进程的最小单位程序执行流是从上倒下贯穿运行的当进程是多任务物,cpu是多核心,多任务应该同时被每个核心处理,每个核心处理的任务叫线程线程资源是共享的.#进程状态#R(TAKS_RUNNING) ##可执行态(running,ready)#S(TASK_..._gnome-keyring-daemon

chrome插件学习笔记之webRequest_chrome.webrequest.onbeforerequest-程序员宅基地

文章浏览阅读1.2w次。今天突发奇想,想给自己开发一个修改http为https的_chrome.webrequest.onbeforerequest

sin cos 查表法算法解析_查表计算sin和cos值-程序员宅基地

文章浏览阅读2.9k次。sin cos 查表法算法解析前言三角函数生成sin表sin计算cos计算扩展 tan计算前言在项目开发中,有些项目对三角函数使用频繁,尤其是游戏项目,三角函数计算是很耗性能的,产品性能直接影响用户体验,这里对三角函数计算优化方案:查表法的算法解析,希望能对大家有所帮助,三角函数在三角函数中,有一些特殊角,计算中可以直接求出具体的值角度0°15°30°45°60°90°120°135°150°180°270°弧度0π/12π/6π/4π/3π/_查表计算sin和cos值

【Flask框架】——10 Jinja2模板 - 传参_jinja2 模版文件传参-程序员宅基地

文章浏览阅读467次。【Flask框架】——Jinja2模板传参_jinja2 模版文件传参

随便推点

(二)、Spring Security OAuth2 四个常用注解说明_oauth2clientcontext是什么-程序员宅基地

文章浏览阅读5.5k次,点赞4次,收藏14次。更多相关文章请见:Spring Security文章目录 1、模块说明:资源服务:提供资源访问 认证授权服务:提供认证和授权服务 客户端:请求资源服务的OAuth2 客户端 应用系统:提供应用能力的系统,在单点登录sso场景下,每一个需要认证授权服务认证授权的系统,就是一个应用系统。2、常用注解:spring security oauth2 提供了四个常用注解,来辅助oau..._oauth2clientcontext是什么

咸鱼购买小米红米有锁机-完美解锁机有什么区别?MIUI解锁机升级系统_完美解锁机是什么意思-程序员宅基地

文章浏览阅读2.9w次。手机数码产品更新非常的快,新机发布后,旧的手机经常就挂着闲鱼等网站上进行二手出手 但懂手机的都知道,2手闲鱼手机产品套路很多,新手和小白入手的时候最容易踩坑。今天 我们就以小米红米手机为例,和大家仔细的讲讲,小米红米有锁机怎么进行区别,以及有锁 机到底分为哪几种?当我们不幸购买有锁机后,怎么进行升级系统首先我们先了解下有锁机是什么?非常简单的理解就是:小米的安全机制是当我们登录小米 账号后 开启查找手机功能,手机丢失或者彻底遗忘密码,导致不能激活使用。成为了大家口中的有锁机。如果手机确实是本人_完美解锁机是什么意思

ZYNQ学习笔记——6_自定义IP_led实验_zynq 自定义ip核-程序员宅基地

文章浏览阅读204次。较为重要。_zynq 自定义ip核

报错Caused by: java.net.ConnectException: Timeout connecting to [localhost/127.0.0.1:9200]-程序员宅基地

文章浏览阅读2.2w次,点赞14次,收藏12次。报错情况lz在使用springboot整合springboot-admin的时候报错,项目原来是正常的,所以和springboot-admin有关系报错信息java.net.ConnectException: Timeout connecting to [localhost/127.0.0.1:9200] at org.elasticsearch.client.RestClient$SyncResponseListener.get(RestClient.java:943) ~[elasticsear_java.net.connectexception: timeout connecting to [localhost/127.0.0.1:9200]

caffe代码阅读4:LayerRegistry的介绍与实现_caffe layerregistry-程序员宅基地

文章浏览阅读905次。一、LayerRegistry的作用简介LayerResistry的功能很简单,就是将类和对应的字符串类型放入到一个map当中去,以便灵活调用。主要就是注册类的功能二、LayerRegistry类的详细介绍1)构造函数和析构函数构造函数 [cpp] view plain copy // 禁止实例化,因为该类都是静态函数,所以是_caffe layerregistry

em启动不了,无法登入数据库。_emd.properties-程序员宅基地

文章浏览阅读1k次。在win7环境下安装oracle10g和pl/sql后登录不了database,原因:时区错误。解决方法:1.找到emd.properties2.在附件中找到记事本点击右键以管理员身份运行3.在记事本中打开emd.properties4.将最后一行agentTZRegion=GMT改为gentTZRegion=Asia/Shanghai(改为你所在是时区)时区参考:suppor_emd.properties

推荐文章

热门文章

相关标签