matinal:SAP ABAP 关于SAP系统中如何集成HTTPS的若干功能总结篇【第一篇】

🚀欢迎来到本文🚀
🍉个人简介:matinal,目前职业是IT行业,一个正在慢慢前行的普通人。
🏀系列专栏:涵盖SAP各模块,Python,Excel,人工智能等
💡 其他专栏:一些平时学习的技术,感兴趣的小伙伴可以看看。

🍔公众号:matinal
🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝 ​
⛱️万物从心起,心动则万物动🏄‍♂️
 


前言:SAP ABAP 关于SAP系统中如何集成HTTPS的若干功能总结篇,这是第一篇。本篇主要介绍SAP中创建http服务,所以,如果你了解并熟知,请略过本篇。

🦙(工作遇到傻逼,千万要远离。道路千万条,远离傻逼第一条)


1990年互联网诞生之初,就已经开始用超文本传输协议 HTTP 传输数据,这也是为什么现在网页地址都是以 http 开头的原因。但是HTTP协议传输数据是明文传输,任意的人抓包就能看到传输的数据,这显然不安全。1994年,Netscape 公司用加密协议增加了 HTTP,开始在 HTTP 的基础上加入 SSL 即安全套接层(Secure Socket Layer)。称为 "HTTP over SSL" 或者 "HTTP Secure",也就是我们现在熟知的 HTTPS。

HTTPS 其实是一个“非常简单”的协议,RFC 文档很小,只有短短的 7 页,里面规定了新的协议名“https”,默认端口号 443,至于其他的什么请求 - 应答模式、报文结构、请求方法、URI、头字段、连接管理等等都完全沿用 HTTP,没有任何新的东西。

也就是说,除了协议名“http”和端口号 80 这两点不同,HTTPS 协议在语法、语义上和 HTTP 完全一样,优缺点也“照单全收”(当然要除去“明文”和“不安全”)。 

HTTP 协议一般指 HTTP(超文本传输协议)。

超文本传输协议(英语:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议,是因特网上应用最为广泛的一种网络传输协议,所有的 WWW 文件都必须遵守这个标准。

HTTP 是为 Web 浏览器与 Web 服务器之间的通信而设计的,但也可以用于其他目的。

HTTP 是一个基于 TCP/IP 通信协议来传递数据的(HTML 文件、图片文件、查询结果等)。

下面进入正文


一、创建类

1、进入SE24

2、类->接口添加IF_HTTP_EXTENSION

3、实现接口的HANDLE_REQUEST方法,并在源代码里编写代码,然后激活

  METHOD if_http_extension~handle_request.
    TYPES: BEGIN OF ty_data,
             matnr TYPE matnr,
             maktx TYPE maktx,
           END OF ty_data,
           BEGIN OF ty_mat,
             matnr TYPE matnr,
           END OF ty_mat.

    DATA: lt_data TYPE TABLE OF ty_data,
          lt_mat  TYPE TABLE OF ty_mat,
          ls_mat  TYPE ty_mat.

    DATA: lr_mat  TYPE RANGE OF matnr,
          lrs_mat LIKE LINE OF lr_mat.

    DATA: lt_form_fields   TYPE tihttpnvp, "请求url参数
          lt_header_fields TYPE tihttpnvp, "请求头部数据
          lv_method        TYPE string,    "请求类型
          lv_request       TYPE string,    "请求json数据
          lv_response      TYPE string.    "返回json数据

    "请求类型
    lv_method = server->request->get_header_field( name = '~request_method' ).

    "请求url参数
    server->request->get_form_fields( CHANGING fields = lt_form_fields ).

    "请求头部数据
    server->request->get_header_fields( CHANGING fields = lt_header_fields ).

    "请求json数据
    lv_request = server->request->get_cdata( ).

    "json转abap
    /ui2/cl_json=>deserialize( EXPORTING json = lv_request
                               CHANGING data = lt_mat ).

    "将内表数据转成range用作查询条件
    LOOP AT lt_mat INTO ls_mat.
      lrs_mat-sign = 'I'.
      lrs_mat-option = 'EQ'.
      lrs_mat-low = ls_mat-matnr.
      APPEND lrs_mat TO lr_mat.
    ENDLOOP.

    CASE lv_method.
      WHEN 'GET'.

        SELECT matnr maktx INTO CORRESPONDING FIELDS OF TABLE lt_data
               FROM makt
               UP TO 20 ROWS
               WHERE spras = sy-langu
               AND matnr IN lr_mat.

        "abap转换json
        /ui2/cl_json=>serialize( EXPORTING data   = lt_data
                                 RECEIVING r_json = lv_response ).

        "返回json数据给调用端
        server->response->set_cdata( EXPORTING data = lv_response ).

        "请求响应
        server->response->set_status( code = 200 reason = 'OK' ).
      WHEN OTHERS.

        "如果不是get请求,则返回错误
        server->response->set_status( code = 405 reason = 'ERROR' ).

    ENDCASE.



  ENDMETHOD.

二、配置服务

1、进入SICF,运行后,选中sap,鼠标右键点击"新的子元素"

2、填写服务名称,勾"服务是管理服务"

3、输入描述内容,不用设置集团和账号密码

4、在处理类清单里添加前面创建的类后保存

5、激活服务

三、用Postman测试http接口

1、用"测试服务"获取完整的http接口

2、Postman添加请求

3、备注一下请求的名称,选择好请求类型GET,填好URL(需要在接口后面增加?sap-client=202来决定是取哪个集团数据)

4、在Authorization里选择授权类型,并输入SAP登陆的账号密码

5、因为前面创建的类代码里是接收Json数据来做后面的逻辑处理,所以在Body里选择row和JSON,并按照Json的格式要求输入要查询的料号

6、点Send请求SAP的接口获取要查询出来的料号数据,如果HTTP的状态码是"200"表示请求成功,否则就是失败


怎么样,在了解此篇文章有何感想?


如果本文对大家有所帮助的话,还望各位能给我点赞、收藏并评论一下,感谢各位💕!!! 另如果大家有什么疑问或者建议的话,欢迎评论区留言。更多精彩内容->在这里

<think>好的,我现在需要处理用户关于SAP系统中车间和仓库盘盈盘亏处理方式及差异的问题。首先,我要回忆之前用户提到的内容,用户之前问过车间库负库存的设置,引用了matinalSAP FICO的资料。现在用户进一步询问盘盈盘亏的具体处理方法和区别,需要结合之前的引用信息,同时可能需要补充其他相关知识。 首先,盘盈盘亏通常涉及库存差异的处理,这在SAP中可能通过不同的移动类型和会计科目来体现。根据引用[1],车间库是虚拟库,允许负库存,而实体仓库不允许。这可能影响盘点的处理方式。例如,车间库的差异可能通过生产订单调整,而实体仓库的差异可能直接通过库存调整科目处理。 然后,引用[2]提到KO88结算生产订单时产生的会计凭证,涉及生产成本和材料成本差异科目。这说明生产相关的差异可能通过生产订单结算流程处理,而仓库的差异可能直接调整库存科目。 接下来,我需要区分车间和实体仓库的处理步骤。车间库作为虚拟库,可能生产订单相关,盘盈盘亏可能通过调整生产订单的投入或产出来处理,使用特定的移动类型如701/702。而实体仓库的差异可能使用移动类型701/702,并直接过账到差异科目,影响库存价值。 另外,会计处理方面,车间库的差异可能关联到生产成本科目,而实体仓库差异可能对应库存调整科目。需要注意系统配置中是否允许负库存对处理方式的影响,车间库允许负库存可能意味着差异处理更灵活,而实体仓库需要及时调整避免负库存。 用户可能还想知道具体的操作事务代码,比如MI07用于库存盘点,MI20查看差异,以及KO88结算生产订单。同时,需要说明两者的核心区别在于库存类型、会计科目和处理流程。 最后,生成相关问题需要考虑用户可能进一步的问题,比如配置步骤、会计凭证差异、生产订单影响等。确保问题覆盖用户可能的兴趣点,帮助他们深入理解处理机制。</think>### SAP车间仓库盘盈盘亏处理方法及区别 #### 一、车间库(虚拟库)盘盈盘亏处理 1. **业务背景** 车间库作为配合生产回冲扣料的虚拟库,允许负库存[^1],其差异通常生产订单执行相关。例如:生产投料未完全消耗或退库未及时记录。 2. **处理步骤** - **差异确认**:通过事务代码`MI07`进行库存盘点,系统生成差异清单。 - **调整方式**: - 盘盈:使用移动类型`701`(库存增加)关联生产订单,冲减生产成本。 - 盘亏:使用移动类型`702`(库存减少)关联生产订单,增加生产成本。 - **会计处理**:差异通过生产订单结算(事务代码`KO88`)转入成本中心或差异科目,例如: ``` 借:生产成本-差异调整 贷:库存-车间库 ``` [^2] #### 二、实体仓库盘盈盘亏处理 1. **业务限制** 实体仓库禁止负库存[^1],差异需立即处理,通常由物料管理模块触发。 2. **处理步骤** - **差异过账**:使用移动类型`701`/`702`直接调整库存,系统自动生成会计凭证: ``` 借/贷:库存商品 贷/借:库存盘盈盘亏科目 ``` - **权限控制**:需审批流程(通过审批码或电子工作流)。 #### 三、核心区别对比 | **维度** | **车间库** | **实体仓库** | |----------------|-----------------------------------|--------------------------------| | **库存类型** | 虚拟库(允许负库存)[^1] | 实物库(禁止负库存) | | **差异来源** | 生产订单执行偏差 | 收发存操作误差 | | **会计科目** | 关联生产成本科目[^2] | 直接使用库存调整科目 | | **处理流程** | 需结合生产订单结算(KO88)[^2] | 独立过账,无需关联订单 | #### 四、配置要点 1. **车间库**:在物料主数据中设置“特殊库存标识”(如生产库存),并配置移动类型生产订单的关联。 2. **实体库**:在物料管理(MM)模块定义库存调整科目,并设置审批策略。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值