sap abap初体验6之bapi

2024-02-09 02:48
文章标签 初体验 sap abap bapi

本文主要是介绍sap abap初体验6之bapi,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SAP ABAP-6.BAPI

  • 6 BAPI
    • 6.1 基础篇
      • 6.1.1 bapi
      • 6.1.2 给用户上锁bapi
    • 6.2 直接上实例
      • 6.2.1 建输入参数结构
      • 6.2.2 建函数组和函数
        • 6.2.2.1 远程调用
        • 6.2.2.2 远程调用 输入参数,参考结构ZBAPI_ORDER_STATUS_IMPORTA,值传递
        • 6.2.2.3 输出是BAPI类型的输出,系统定义的,也是值传递
        • 6.2.2.4 表是ZBAPISTAT的结构
      • 6.2.3 函数代码
        • 6.2.3.1 函数组全局信息
        • 6.2.3.2 函数模块
        • 6.2.3.3 模块调用的子程序,建在函数组外面
        • 6.2.3.4 运行
    • 6.3 生成bapi
      • 6.3.1 SWO1创建,SAP自己封装的一层
      • 6.3.2 添加API
    • 6.4 再看BAPI
      • 6.4.1 释放对象类型
      • 6.4.2 当函数名和参数不含BAPI时,会报错

6 BAPI

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

6.1 基础篇

在这里插入图片描述

6.1.1 bapi

在这里插入图片描述

6.1.2 给用户上锁bapi

在这里插入图片描述

6.2 直接上实例

在这里插入图片描述

6.2.1 建输入参数结构

在这里插入图片描述

se11建结构1

在这里插入图片描述

在这里插入图片描述

se11建结构2,对应后台表JEST和TJ30T

在这里插入图片描述

查看表

在这里插入图片描述

在这里插入图片描述

6.2.2 建函数组和函数

在这里插入图片描述

在这里插入图片描述

6.2.2.1 远程调用

在这里插入图片描述

6.2.2.2 远程调用 输入参数,参考结构ZBAPI_ORDER_STATUS_IMPORTA,值传递

在这里插入图片描述

6.2.2.3 输出是BAPI类型的输出,系统定义的,也是值传递

在这里插入图片描述

6.2.2.4 表是ZBAPISTAT的结构

在这里插入图片描述

6.2.3 函数代码

6.2.3.1 函数组全局信息
在这里插入代码片
FUNCTION-POOL ZBAPI_GROUP.                  "MESSAGE-ID ..* INCLUDE LZBAPI_GROUPD...                   " Local class definition
DATA: l_char1 type char2,l_char2 type char2.* 把表TJ30T里面的状态ID istat  短描述 txt04和中长描述txt30给拉出来形成结构
TYPES :BEGIN OF Type_tj02t,istat like tj02t-istat,txt04 like tj02t-txt04,txt30 like tj02t-txt30,END OF type_tj02t.* 根据结构来定义内表和结构变量
DATA:T_BAPISTAT like ZBAPISTAT OCCURS 0,G_BAPISTAT like ZBAPISTAT,t_tj02t TYPE type_tj02t OCCURS 0,g_tj02t type type_tj02t .* 返回参数
DATA:BEGIN OF MESSAGE,MSGTY like SY-MSGTY,MSGID like SY-MSGID,MSGNO like SY-MSGNO,MSGV1 like SY-MSGV1,MSGV2 like SY-MSGV2,MSGV3 like SY-MSGV3,MSGV4 like SY-MSGV4,END OF MESSAGE.
6.2.3.2 函数模块
FUNCTION Z_BAPI_GET_ORDER_STATUS.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(BAPI_ORDER_STATUS_IMPORT) TYPE  ZBAPI_ORDER_STATUS_IMPORTA
*"  EXPORTING
*"     VALUE(RETURN) TYPE  BAPIRETURN
*"  TABLES
*"      T_BAPISTAT STRUCTURE  ZBAPISTAT
*"----------------------------------------------------------------------*定义两个变量,其中l_aufnr是用来定义生产订单编号的临时变量,而 l_objnr是存储jest表中订单的临时变量,后面主要是拼接OR开头的字符串DATA:l_aufnr like afko-aufnr,l_objnr like jest-objnr.* 第一步,将输入bapi_order_status_import的ID与afko中的aufnr对比,看看是否在生产订单表中存在该订单,不存在则报返回信息Select SINGLE aufnrfrom afkointo l_aufnrwhere aufnr = bapi_order_status_import-orderid.IF sy-subrc ne 0.clear message.message-msgty = 'E'.message-msgid ='Z3'.message-msgno = '000'.message-msgv1 = BAPI_ORDER_STATUS_IMPORT-orderid.PERFORM set_return_message USING messageCHANGING return.IF 1 = 2.MESSAGE e000(z3).ENDIF.ENDIF.* 第二步,检查返回信息是否初始化,拼接bapi_order_status_import的ID的前缀’orCHECK return is INITIAL.CONCATENATE 'OR' bapi_order_status_import-orderid INTO l_objnr.*  第三步 ,检查选项i_excludeinactive是否输入是X,如果是那么从jest状态表中把三个字段取出来,同时过滤状态是X的。啥都没查到继续抛信息IF bapi_order_status_import-i_excludeinactive ='X'.SElect objnr stat inactfrom jestinto TABLE t_bapistatwhere objnr = l_objnr and inact <> 'X'.ELSE.SElect objnr stat inactfrom jestinto TABLE t_bapistatwhere objnr = l_objnr .ENDIF.IF sy-subrc <> 0.clear message.message-msgty = 'E'.message-msgid ='Z3'.message-msgno = '001'.message-msgv1 = BAPI_ORDER_STATUS_IMPORT-orderid.PERFORM set_return_message USING messageCHANGING return.IF 1 = 2.MESSAGE e000(z3).ENDIF.ENDIF.*  第四步 ,从tj02t文本描述表查询状态名istat、文本信息,同时条件中过滤了i_spras(语言),当然检索了内表t_bapistat,将信息放到内表t_tj02t(这个内表在全局变量定义了)CHECK return is INITIAL.select istat txt04 txt30from tj02tINTO table t_tj02tFOR ALL ENTRIES IN t_bapistatwhere istat = t_bapistat-stat Andspras = bapi_order_status_import-i_spras.*  第五步 ,通过结构g_bapistat循环内表t_bapistat,读内表信息t_tj02t(用关键字istat状态名来判断,读到g_tj02t结构中,读到了就将信息写入到g_bapistat结构中,然后修改内表t_bapistat中的相关信息sort t_tj02t by istat.LOOP AT t_bapistat INTo g_bapistat.READ TABLE t_tj02t with key istat = g_bapistat-stat BINARY SEARCHinto g_tj02t.IF sy-subrc = 0.move:g_tj02t-txt04 to g_bapistat-txt04,g_tj02t-txt30 to g_bapistat-txt30.MODIFY t_bapistat from g_bapistat TRANSPORTING txt04 txt30.ENDIF.ENDLOOP.
ENDFUNCTION.
6.2.3.3 模块调用的子程序,建在函数组外面

在这里插入图片描述

在这里插入图片描述

*----------------------------------------------------------------------*
***INCLUDE LZBAPI_GROUPF01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Form  SET_RETURN_MESSAGE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_MESSAGE  text
*      <--P_RETURN  text
*----------------------------------------------------------------------*
FORM SET_RETURN_MESSAGE  USING    value(P_MESSAGE) like messageCHANGING P_RETURN like bapireturn.check not message is INITIAL.CALL FUNCTION 'BALW_BAPIRETURN_GET'EXPORTINGTYPE                             = p_message-msgtyCL                               = p_message-msgidNUMBER                           = p_message-msgnoPAR1                             = p_message-msgv1PAR2                             = p_message-msgv2PAR3                             = p_message-msgv3PAR4                             = p_message-msgv4
*     LOG_NO                           = ' '
*     LOG_MSG_NO                       = ' 'IMPORTINGBAPIRETURN                       = p_returnEXCEPTIONSONLY_2_CHAR_FOR_MESSAGE_ID       = 1OTHERS                           = 2.IF SY-SUBRC <> 0.
* Implement suitable error handling hereENDIF.ENDFORM.                    " SET_RETURN_MESSAGE
6.2.3.4 运行

在这里插入图片描述

点击输入参数

在这里插入图片描述

结果如下:
在这里插入图片描述

跟生产订单对比下,感觉好像对不上啊。以后再研究

在这里插入图片描述

如果输入一个不存在的订单呢?

在这里插入图片描述

6.3 生成bapi

6.3.1 SWO1创建,SAP自己封装的一层

在这里插入图片描述

在这里插入图片描述

6.3.2 添加API

在这里插入图片描述

在这里插入图片描述

下一步,定义table仅为输出参数

在这里插入图片描述

在这里插入图片描述

可以看到方法了,将方法发布实施

在这里插入图片描述

执行,结果和单独执行函数是一样的
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

6.4 再看BAPI

首先选择过滤,查看全部的BAPI,找到ZORDERSTAT,发现状态是未释放
在这里插入图片描述

6.4.1 释放对象类型

在这里插入图片描述

在这里插入图片描述

再点对象类型组件释放,提示

在这里插入图片描述

需要SE37先把函数释放

在这里插入图片描述

再点对象类型组件释放,提示OK

在这里插入图片描述

在这里插入图片描述

4.生成函数对象

在这里插入图片描述

再看BAPI状态
在这里插入图片描述

6.4.2 当函数名和参数不含BAPI时,会报错

在这里插入图片描述

这篇关于sap abap初体验6之bapi的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/692927

相关文章

17.用300行代码手写初体验Spring V1.0版本

1.1.课程目标 1、了解看源码最有效的方式,先猜测后验证,不要一开始就去调试代码。 2、浓缩就是精华,用 300行最简洁的代码 提炼Spring的基本设计思想。 3、掌握Spring框架的基本脉络。 1.2.内容定位 1、 具有1年以上的SpringMVC使用经验。 2、 希望深入了解Spring源码的人群,对 Spring有一个整体的宏观感受。 3、 全程手写实现SpringM

工作流Activiti初体验—流程撤回【二】

已经玩工作流了,打算还是研究一下撤回的功能。但是流程图里面并不带撤回的组件,所以需要自己动态改造一下,还是延续上一个流程继续试验撤回功能。《工作流Activiti初体验【一】》 完整流程图 我们研究一下分发任务撤回到发起任务,其他环节的撤回类似 撤回的原理大概如下: 将分发任务后面的方向清空,把发起任务拼接到原来的判断网关,然后结束分发任务,这样流程就到发起任务了 此时的流程如上图,

工作流Activiti初体验【一】

在这里记录一下我的Activiti历程:(以下示例不涉及真实业务,所有逻辑均建立在学习的基础上) bpmn图 发起任务我设置了一个权限组user1,只要是这个权限的用户都可以发起任务 分发任务我设置了一个用户组,用户组中每个用户都可以处理这步流程,只要有一个人处理这步任务,分发的流程就算结束了 分发任务这一环节还有个判断,允许任务下发和不允许任务下发 任务分发完成则来到子流程,每个被分

ABAP怎么把传入的参数刷新到内表里面呢?

1.在执行相关的功能操作之前,优先执行这一段代码,把输入的数据更新入内表里面 DATA: lo_guid TYPE REF TO cl_gui_alv_grid.CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'IMPORTINGe_grid = lo_guid.CALL METHOD lo_guid->check_changed_data.CALL M

SpringCloud Hystrix初体验

文章目录 简介实验步骤bookstore应用初始化应用主程序应用配置访问应用 reading应用初始化应用主程序BookService应用配置运行应用 参考资料 简介 Hystrix是SpringCloud Netflix下的一个库,实现了Circuit Breaker(电路熔断器)模式。关于Circuit Breaker模式的原理,可以参考:Circuit Breaker(电

SpringCloud Zuul初体验

文章目录 简介Zuul服务搭建后端服务book搭建创建一个web应用主程序配置application.properties访问book服务 Zuul服务搭建创建应用添加一个pre过滤器主程序配置application.properties通过Zuul服务网关访问book服务 参考资料 简介 Zuul在SpringCloud微服务架构中扮演服务网关的角色,对外部应用访问后端服务进

SpringCloud Eureka初体验

文章目录 Eureka Server创建Eureka Server项目配置application.properties增加@EnableEurekaServer注解访问Eureka Server Eureka Client创建Eureka Client项目配置bootstrap.properties编写EurekaclientApplication.java访问Eureka Client在E

[SAP ABAP] 读取内表数据

1.读取单条数据 1.1 索引查找 语法格式 READ TABLE <itab> INTO <wa> INDEX <idx>. <itab>:代表内表 <wa>:代表工作区 <idx>:代表索引值 示例1 结果显示: 1.2 关键字查找 READ TABLE <itab> INTO <wa> WITH KEY k1 = f1 k2 = f2 ... kn = fn.

开源C++版AI画图大模型框架stable-diffusion.cpp开发使用初体验

stable-diffusion.cpp是一个C++编写的轻量级开源类AIGC大模型框架,可以支持在消费级普通设备上本地部署运行大模型进行AI画图,以及作为依赖库集成的到应用程序中提供类似于网页版stable-diffusion的功能。 以下基于stable-diffusion.cpp的源码利用C++ api来开发实例demo演示加载本地模型文件输入提示词生成画图,这里采用显卡CUDA加速计算,

[SAP ABAP] 插入内表数据

语法格式 INSERT <wa> INTO <itab> INDEX <idx>. <wa>:代表工作区 <itab>:代表内表 <idx>:代表索引值 示例1 结果显示: 语法格式 INSERT <wa> INTO TABLE <itab>. <wa>:代表工作区 <itab>:代表内表 示例2 结果显示: 提示Tips:如果定义的是标准表,使用I