返回顶部
首页 > 资讯 > 精选 >SAP ABAP怎么调用WEBAPI
  • 535
分享到

SAP ABAP怎么调用WEBAPI

2023-06-04 07:06:44 535人浏览 薄情痞子
摘要

这篇文章主要介绍“SAP ABAP怎么调用webapi”,在日常操作中,相信很多人在SAP ABAP怎么调用WEBapi问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SAP ABAP怎么调用WEBAPI”的疑

这篇文章主要介绍“SAP ABAP怎么调用webapi”,在日常操作中,相信很多人在SAP ABAP怎么调用WEBapi问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SAP ABAP怎么调用WEBAPI”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

JSON定义

JSON(javascript Object Notation) 是一种轻量级的数据交换格式。简单地说,jsON 将数据转换为字符串,在终端之间传递。

数据在名称/值对中、数据由逗号分隔、花括号保存对象、方括号保存数组

JSON 值可以是:数字(整数或浮点数)、字符串(在双引号中)、逻辑值(true 或 false)、数组(在方括号中)、对象(在花括号中)、null

例如:

{

    "name":"小强",

    "age":16,

    "msg":["a","b"],

    "regex": "^Http://.*"

};

JSON与XML的区别比较

定义介绍

(1).XML定义

扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。

XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。

(2).JSON定义

JSON(JavaScript Object Notation)一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。可在不同平台之间进行数据交换。JSON采用兼容性很高的、完全独立于语言文本格式,同时也具备类似于C语言的习惯(包括C, c++, C#, Java, JavaScript, Perl, python等)体系的行为。这些特性使JSON成为理想的数据交换语言。

JSON基于JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999 的一个子集。

XML和JSON优缺点

(1).XML的优缺点

<1>.XML的优点

  A.格式统一,符合标准;

  B.容易与其他系统进行远程交互,数据共享比较方便。

<2>.XML的缺点

  A.XML文件庞大,文件格式复杂,传输占带宽;

  B.服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护;

  C.客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码;

  D.服务器端和客户端解析花费较多的资源和时间。

(2).JSON的优缺点

<1>.JSON的优点:

  A.数据格式比较简单,易于读写,格式都是压缩的,占用带宽小;

  B.易于解析,客户端JavaScript可以简单的通过eval()进行JSON数据的读取;

  C.支持多种语言,包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等服务器端语言,便于服务器端的解析;

  D.在php世界,已经有PHP-JSON和JSON-PHP出现了,偏于PHP序列化后的程序直接调用,PHP服务器端的对象、数组等能直接生成JSON格式,便于客户端的访问提取;

  E.因为JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。

<2>.JSON的缺点

  A.没有XML格式这么推广的深入人心和喜用广泛,没有XML那么通用性;

  B.JSON格式目前在Web Service中推广还属于初级阶段。

XML和JSON的优缺点对比

(1).可读性方面。

JSON和XML的数据可读性基本相同,JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,XML可读性较好些。

(2).可扩展性方面。

XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。

(3).编码难度方面。

XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。

(4).解码难度方面。

XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。这一点XML输的真是没话说。

(5).流行度方面。

XML已经被业界广泛的使用,而JSON才刚刚开始,但是在ajax这个特定的领域,未来的发展一定是XML让位于JSON。到时Ajax应该变成Ajaj(Asynchronous Javascript and JSON)了。

(6).解析手段方面。

JSON和XML同样拥有丰富的解析手段。

(7).数据体积方面。

JSON相对于XML来讲,数据的体积小,传递的速度更快些。

(8).数据交互方面。

JSON与JavaScript的交互更加方便,更容易解析处理,更好的数据交互。

(9).数据描述方面。

JSON对数据的描述性比XML较差。

(10).传输速度方面。

JSON的速度要远远快于XML。

XML与JSON数据格式比较

(1).关于轻量级和重量级

轻量级和重量级是相对来说的,那么XML相对于JSON的重量级体现在哪呢?应该体现在解析上,XML目前设计了两种解析方式:DOM和 SAX。

<1>.DOM

DOM是把一个数据交换格式XML看成一个DOM对象,需要把XML文件整个读入内存,这一点上JSON和XML的原理是一样的,但是XML要考虑父节点和子节点,这一点上JSON的解析难度要小很多,因为JSON构建于两种结构:key/value,键值对的集合;值的有序集合,可理解为数组;

<2>.SAX

SAX不需要整个读入文档就可以对解析出的内容进行处理,是一种逐步解析的方法。程序也可以随时终止解析。这样,一个大的文档就可以逐步的、一点一点的展现出来,所以SAX适合于大规模的解析。这一点,JSON目前是做不到得。

所以,JSON和XML的轻/重量级的区别在于:

JSON只提供整体解析方案,而这种方法只在解析较少的数据时才能起到良好的效果;

XML提供了对大规模数据的逐步解析方案,这种方案很适合于对大量数据的处理。

(2).关于数据格式编码及解析难度

<1>.在编码方面。

虽然XML和JSON都有各自的编码工具,但是JSON的编码要比XML简单,即使不借助工具,也可以写出JSON代码,但要写出好的XML代码就有点困难;与XML一样,JSON也是基于文本的,且它们都使用Unicode编码,且其与数据交换格式XML一样具有可读性。

主观上来看,JSON更为清晰且冗余更少些。JSON网站提供了对JSON语法的严格描述,只是描述较简短。从总体来看,XML比较适合于标记文档,而JSON却更适于进行数据交换处理。

<2>.在解析方面。

在普通的web应用领域,开发者经常为XML的解析伤脑筋,无论是服务器端生成或处理XML,还是客户端用 JavaScript 解析XML,都常常导致复杂的代码,极低的开发效率。

实际上,对于大多数Web应用来说,他们根本不需要复杂的XML来传输数据,XML宣称的扩展性在此就很少具有优势,许多Ajax应用甚至直接返回html片段来构建动态Web页面。和返回XML并解析它相比,返回HTML片段大大降低了系统的复杂性,但同时缺少了一定的灵活性。同XML或 HTML片段相比,数据交换格式JSON 提供了更好的简单性和灵活性。在Web Serivice应用中,至少就目前来说XML仍有不可动摇的地位。

(3).实例比较

XML和JSON都使用结构化方法来标记数据,下面来做一个简单的比较。

<1>.用XML表示中国部分省市数据如下:

复制代码

<?xml version="1.0" encoding="utf-8" ?>

<country>

  <name>中国</name>

  <province>

    <name>黑龙江</name>

    <citys>

      <city>哈尔滨</city>

      <city>大庆</city>

    </citys>    

  </province>

  <province>

    <name>广东</name>

    <citys>

      <city>广州</city>

      <city>深圳</city>

      <city>珠海</city>

    </citys>   

  </province>

  <province>

    <name>台湾</name>

    <citys>

       <city>台北</city>

       <city>高雄</city>

    </citys> 

  </province>

  <province>

    <name>新疆</name>

    <citys>

      <city>乌鲁木齐</city>

    </citys>

  </province>

</country>

复制代码

<2>.用JSON表示中国部分省市数据如下:

复制代码

 var country =

        {

            name: "中国",

            provinces: [

            { name: "黑龙江", citys: { city: ["哈尔滨", "大庆"]} },

            { name: "广东", citys: { city: ["广州", "深圳", "珠海"]} },

            { name: "台湾", citys: { city: ["台北", "高雄"]} },

            { name: "新疆", citys: { city: ["乌鲁木齐"]} }

            ]

        }

复制代码

编码的可读性来说,XML有明显的优势,毕竟人类的语言更贴近这样的说明结构。JSON读起来更像一个数据块,读起来就比较费解了。不过,我们读起来费解的语言,恰恰是适合机器阅读,所以通过JSON的索引country.provinces[0].name就能够读取“黑龙江”这个值。

编码的手写难度来说,XML还是舒服一些,好读当然就好写。不过写出来的字符JSON就明显少很多。去掉空白制表以及换行的话,JSON就是密密麻麻的有用数据,而XML却包含很多重复的标记字符。

以上内容转载于 https://www.cnblogs.com/SanMaoSpace/p/3139186.html

--------------------------------------------------------------------------------------------------

实际案例:

ABAP、WEBAPI、JSON的应用

业务背景:

调用webapi,输入员工号,返回员工信息。

代码实现:

编写webapi调用子程序

*&---------------------------------------------------------------------**&      FORM  frm_call_webapi*&---------------------------------------------------------------------**       调用webapi*----------------------------------------------------------------------**  -->  iv_json_input        输入json字符串*  -->  iv_service_ur        服务地址(http://****)*  <--  ev_json_output       输出json字符串*----------------------------------------------------------------------*FORM frm_call_webapi USING iv_json_input iv_service_url CHANGING ev_json_output.  DATA: lo_http_client TYPE REF TO if_http_client,        gv_json_out    TYPE string,        lv_url         TYPE string,        lv_len         TYPE i.  lv_url = iv_service_url.  "创建客户端请求  CALL METHOD cl_http_client=>create_by_url    EXPORTING      url                = lv_url    IMPORTING      client             = lo_http_client    EXCEPTIONS      argument_not_found = 1      plugin_not_active  = 2      internal_error     = 3      OTHERS             = 4.  IF sy-subrc <> 0.    "lv_subrc = sy-subrc.    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH               sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.    EXIT.  ENDIF.  "设定传输请求内容格式以及编码格式  lo_http_client->request->set_content_type( content_type = 'application/json; charset=utf-8' ).  "设定调用服务  lo_http_client->request->set_method( if_http_request=>co_request_method_post ).  "设置待传输内容长度  lv_len = STRLEN( iv_json_input ).  "设置调用方法  CALL METHOD lo_http_client->request->set_header_field    EXPORTING      name  = '~request_method'      value = 'POST'.  "设置传入字符串  CALL METHOD lo_http_client->request->set_cdata    EXPORTING      data   = iv_json_input      offset = 0      length = lv_len.  "发送数据  lo_http_client->send(    EXCEPTIONS      http_communication_failure = 1      http_invalid_state         = 2 ).  "接收返回  lo_http_client->receive(    EXCEPTIONS      http_communication_failure = 1      http_invalid_state         = 2      http_processing_failed     = 3 ).  "提取返回字符串  ev_json_output = lo_http_client->response->get_cdata( ).  "将字符串中的回车符替换,否则abap将会识别为#  REPLACE ALL OCCURRENCES OF REGEX '\n' IN ev_json_output WITH space.ENDFORM.                    "frm_call_webapi

调用子例程,传入参数

REPORT yaiolos_test_05.INCLUDE zbc_webapi_incl.DATA : gv_service_url TYPE string VALUE 'http://10.100.0.232:8081/api_sapnew/ZRFM_HR_OA_GCQD_KH_MAINTAIN',       gv_json_in     TYPE string VALUE '{"IT_INPUT":[{"CUSTOMER":"12345678","PERNR":"00190935"}]}',       gv_json_out    TYPE string.START-OF-SELECTION.  "调用webapi  PERFORM frm_call_webapi USING gv_json_in gv_service_url CHANGING gv_json_out.END-OF-SELECTION.  WRITE gv_json_out.

yaiolos_test_05.txt

frm_call_webapi.txt

代码中有html标签<br>不便于copy使用,请参见上述附件。

结果确认

 SAP ABAP怎么调用WEBAPI

注意事项:

abap中经常会将特殊字符识别为#,需要特别处理。

正则表达式解释及特殊字符如何对应正则表达式,请见以下链接

https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1700215?fr=aladdin

debug时遇见#字符而不知其实际内容时,查看十六进制值,如0A00等。

到此,关于“SAP ABAP怎么调用WEBAPI”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: SAP ABAP怎么调用WEBAPI

本文链接: https://lsjlt.com/news/236870.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SAP ABAP怎么调用WEBAPI
    这篇文章主要介绍“SAP ABAP怎么调用WEBAPI”,在日常操作中,相信很多人在SAP ABAP怎么调用WEBAPI问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SAP ABAP怎么调用WEBAPI”的疑...
    99+
    2023-06-04
  • SAP的ABAP调试器怎么使用
    这篇文章主要讲解了“SAP的ABAP调试器怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SAP的ABAP调试器怎么使用”吧!首先弄清楚ABAP Classic调试器和新调试器的区别:...
    99+
    2023-06-04
  • SAP ABAP的OPEN SQL怎么使用
    本篇内容主要讲解“SAP ABAP的OPEN SQL怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SAP ABAP的OPEN SQL怎么使用”吧!当使用CDS实体的名称作为数据源访问SE...
    99+
    2023-06-04
  • 怎么用ABAP连接SAP上的ABAP编程环境
    这篇文章主要介绍“怎么用ABAP连接SAP上的ABAP编程环境”,在日常操作中,相信很多人在怎么用ABAP连接SAP上的ABAP编程环境问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用ABAP连接SAP上...
    99+
    2023-06-04
  • ABAP怎么调用OCX
    本篇内容主要讲解“ABAP怎么调用OCX”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ABAP怎么调用OCX”吧!这是一个LED显示的例子.Run这个report之前,首先要把ocx文件注册到系...
    99+
    2023-06-04
  • 如何理解SAP ABAP 程序之间的调用
    如何理解SAP ABAP 程序之间的调用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一,同步调用从一个程序同步调用其他的ABAP程序,有2种方式:1,调用程序...
    99+
    2023-06-05
  • SAP Vim和ABAP Editor怎么设置
    这篇文章主要介绍“SAP Vim和ABAP Editor怎么设置”,在日常操作中,相信很多人在SAP Vim和ABAP Editor怎么设置问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SAP Vim和ABA...
    99+
    2023-06-04
  • ABAP调试器怎么使用
    这篇文章主要介绍“ABAP调试器怎么使用”,在日常操作中,相信很多人在ABAP调试器怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ABAP调试器怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-04
  • 使用ABAP代码提交SAP CRM Survey调查问卷
    Jerry之前曾经写过两篇关于SAP CRM Survey调查问卷的技术文章:SAP CRM Survey调查问卷的模型设计原理解析如何使用SAP CRM Marketing Survey创建一个市场问卷调查我们在浏览器里填写调查问卷的内容...
    99+
    2023-06-02
  • winform怎么调用webapi上传文件
    要在WinForm应用程序中调用WebAPI上传文件,你可以使用HttpClient类来发送HTTP请求。以下是一个简单的示例代码来...
    99+
    2024-03-01
    winform webapi
  • 怎么在SAP的ABAP编程环境里消费API的ABAP
    这篇文章主要介绍“怎么在SAP的ABAP编程环境里消费API的ABAP”,在日常操作中,相信很多人在怎么在SAP的ABAP编程环境里消费API的ABAP问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么在SA...
    99+
    2023-06-04
  • C#使用RestClient调用WebAPI
    获取Token /// <summary> /// 获取Token /// </summary> /// ...
    99+
    2024-04-02
  • 如何使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise系统里的函数
    小编给大家分享一下如何使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise系统里的函数,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!为了确保Internet应用能够访问Cor...
    99+
    2023-06-04
  • 怎么用ABAP代码读取SAP的附件数据
    这篇文章主要介绍“怎么用ABAP代码读取SAP的附件数据”,在日常操作中,相信很多人在怎么用ABAP代码读取SAP的附件数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用ABAP代码读取SAP的附件数据...
    99+
    2023-06-04
  • 怎么把ABAP webdynpro应用配置到SAP Fiori Launchpad里
    本篇内容介绍了“怎么把ABAP webdynpro应用配置到SAP Fiori Launchpad里”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有...
    99+
    2023-06-04
  • C# 调用WebApi的实现
    1.WebRequest方式 Post: private void button1_Click(object sender, EventArgs e) { ...
    99+
    2024-04-02
  • 怎么在SAP CAL上搭建ABAP HANA系统
    这篇文章主要介绍“怎么在SAP CAL上搭建ABAP HANA系统”,在日常操作中,相信很多人在怎么在SAP CAL上搭建ABAP HANA系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么在SAP CA...
    99+
    2023-06-03
  • SAP Hybris和ABAP Netweaver里的DAO怎么实现
    本篇内容主要讲解“SAP Hybris和ABAP Netweaver里的DAO怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SAP Hybris和ABAP Netweaver里的DAO怎...
    99+
    2023-06-04
  • ABAP Netweaver和SAP Hybris的内存怎么管理
    这篇文章主要介绍“ABAP Netweaver和SAP Hybris的内存怎么管理”,在日常操作中,相信很多人在ABAP Netweaver和SAP Hybris的内存怎么管理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希...
    99+
    2023-06-04
  • SAP ABAP SQL的execution plan和cache有什么用
    本篇内容介绍了“SAP ABAP SQL的execution plan和cache有什么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!我在...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作