首页 > 其他分享 >SAP PO接口报文保存到内表中

SAP PO接口报文保存到内表中

时间:2024-08-07 10:29:30浏览次数:15  
标签:SAP SD242 SRTFD PO XDATA INPUT 内表中 报文 LS

有一个需求,接收PI传数据过来后,除整理数据保存到用户数据表外,在后期还需要把报文加工一下(要求报文内容与原接收报文一致,只是补加少量值),在发送到其它的系统。由于数据接收后已对数据加工到了用户表,已没有原报文内容(比如金额已累计),如从用户数据表中再取出数据整理加入发送出去,一是整理数据太麻烦,二是一些数据可能已丢失,并不能很好的还原接收到的报文。

所以考虑在接收到报文时,把接收到的报文(结构化数据)保存到内表中,然后在需要再次发送出去时,从内表中取出数据,并做必要的整理,然后再发送出去。

1.1.创建保存报文的内表,

可参考(复制)系统中的标准内表:INDX创建新的内表(比如我的ZSDT_XDATA),并加入自己必要的检索字段(比如业务数据的关键KEY值)。

2.2.把结构化对像结构存储到内表中

如下面的代码,主要使用  EXPORT TO DATABASE语句,把INPUT结构内容存入表透明表ZSDT_XDATA中,其中的01,表示表中的RELID字段的值,可用此值来区分不同的接口,

FUNCTION ZSD_0242_SAVE_DATA.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     VALUE(INPUT) TYPE  ZPI_MT_SD242_RESP OPTIONAL
*"     VALUE(I_SRTFD) TYPE  ZINDX_SRTFD OPTIONAL
*"----------------------------------------------------------------------

  DATA: L_SRTFD           TYPE ZINDX_SRTFD.
  DATA: LS_XDATA          TYPE ZSDT_XDATA.

  CHECK INPUT IS NOT INITIAL.
  L_SRTFD = I_SRTFD."KEY
  IF L_SRTFD IS INITIAL.
    L_SRTFD = INPUT-MT_SD242_RESP-HEADER-MESSAGE_ID.
  ENDIF.

  LS_XDATA-AEDAT = SY-DATUM.
  LS_XDATA-USERA = SY-UNAME.

  LS_XDATA-ZKEY1 = INPUT-MT_SD242_RESP-I_GOODS_ITEM-ZXMLI.
  LS_XDATA-ZKEY2 = INPUT-MT_SD242_RESP-I_GOODS_ITEM-ZXMLD.
  LS_XDATA-ZKEY3 = INPUT-MT_SD242_RESP-I_GOODS_ITEM-CCODE.
  LS_XDATA-ZKEY4 = INPUT-MT_SD242_RESP-I_GOODS_ITEM-PCODE.

  EXPORT DATA = INPUT
    TO DATABASE ZSDT_XDATA(01)"01表示0242接口报文
    FROM LS_XDATA
    ID L_SRTFD.


  COMMIT WORK.

ENDFUNCTION.

 

3.3.从内表中读到数据到结构化的结构中。

其中I_SRTFD为表ZSDT_XDATA中的SRTFD关键字段值,也就业务中报文的主键值

  DATA: LS_INPUT TYPE ZPI_MT_SD242_RESP.                    "242接口传入数据。

  IMPORT DATA = LS_INPUT FROM DATABASE ZSDT_XDATA(01) ID I_SRTFD.
  CHECK SY-SUBRC = 0.

通过这种方式,就能把内表(多级内容嵌套),或者是结构(结构中可能还包含内表)保存到内表中,并且还保存的数据的结构化,也就是保存了结构化的数据,同时也相当于保存了报文的XML文件了,

此功能也可以用作长文件的的保存,比如,可以把EXEC,WORD等长文件文件导入文本内表中,然后把此内表附值给一个结构的字段,保存此结构到ZSDT_XDATA就行了。

4.注:此保存的是结构化的数据

标签:SAP,SD242,SRTFD,PO,XDATA,INPUT,内表中,报文,LS
From: https://blog.csdn.net/reagon2008/article/details/140981820

相关文章

  • 强化学习性能测试方法:取最后10个epoch的testing epoch的均值 —— 强化学习中的一种性
    参考:https://www.cnblogs.com/devilmaycry812839668/p/17813337.htmlTheActor-MimicandexpertDQNtrainingcurvesfor100trainingepochsforeachofthe8games.Atrainingepochis250,000framesandforeachtrainingepochweevaluatethenetworkswith......
  • SciTech-Mathematics-Probability+Statistics-Comparison:Chance + Possibility + Lik
    https://www.geeksforgeeks.org/what-is-the-difference-between-likelihood-and-probability/1.Chance2.Possibility3.Likelihood4.ProbabilityWhatIstheDifferenceBetween“Likelihood”and“Probability”?LastUpdated:30Jul,2024https://www.geeksforg......
  • PostgreSQL学习之pg_recvlogical与pgoutput的使用
        参考:        pg内功修炼:逻辑复制_pgoutput-CSDN博客        PG原生解码工具pg_recvlogical的使用-在脑裂时帮我们找回丢失的数据-腾讯云开发者社区-腾讯云(tencent.com)        postgresql数据库的原生解码插件pg_recvlogical可以将wal......
  • Flink实战(10)-checkpoint容错保证
    0前言程序在Flink集群运行,某个算子因为某些原因出现故障,如何处理在故障恢复后,如何保证数据状态,和故障发生之前的数据状态一致?1什么是checkpoint(检查点)?Checkpoint能生成快照(Snapshot)。若Flink程序崩溃,重新运行程序时可以有选择地从这些快照进行恢复。Checkpoin......
  • Docker-Compose单机容器集群编排工具
    目录容器编排管理与传统的容器管理的区别什么Docker-Compose?Docker-Compose的简介Docker-Compose的作用Docker-compose的三大概念什么YAML文件?YAML文件介绍使用YAML时的注意事项YAML文件的基本数据结构Docker-Compose配置常用字段Docker-Compose常用命令我们知道......
  • Kubernetes Pod之间的通信
    Pod之间的通信可以通过以下几种方式实现:1.同一Pod内的容器通信:在同一个Pod内的容器可以通过localhost或者127.0.0.1进行通信,因为它们通过pause容器共享相同的网络命名空间和IP地址。2.Pod之间的通信:Pod之间的通信可以通过Service或者Endpoint来实现。Service是一个抽象的逻辑概......
  • Goby漏洞发布 | CVE-2024-38856 Apache OFbiz /ProgramExport 命令执行漏洞【已复现】
    漏洞名称:ApacheOFbiz/ProgramExport命令执行漏洞(CVE-2024-38856)EnglishName:ApacheOFbiz/ProgramExportCommandExecutionVulnerability(CVE-2024-38856)CVSScore:9.0漏洞描述:ApacheOFBiz是一个电子商务平台,用于构建大中型企业级、跨平台、跨数据库、跨应用服务器的......
  • ASTGNN (Learning Dynamics and Heterogeneity of Spatial-Temporal Graph Data forTr
    引言    时空神经网络(STGNNs)被广泛应用于交通预测问题中,在STGNNs中每个节点代表一个交通监测站,边表示道路网络。        在动态预测中,物理量x(t)随时间的变化模型是一个黑盒模型,我们要做的事情就是对黑盒模型进行建模。线性自回归方法直接将动态变化规律看......
  • 在webapi中发起HttpPost请求
    1.第一步,在启动文件添加builder.Services.AddHttpClient();实体类: publicclassSearchReq{publicstringName{get;set;}publicstringDescription{get;set;}publicintPageIndex{get;set;}publicintPageSize{get;set;}}u......
  • 《PostgreSQL 数据库在国内的发展前景》
    从DB-engines这张2024年8月的最新排名图上可以看出,PostgreSQL数据库的发展趋势还是非常好的,在国内,PostgreSQL数据库也展现出令人振奋的发展前景,非常明显的一种表现就是腾讯云、人大金仓、阿里云、华为等众多厂商都有基于PostgreSQL数据库的产品,比如TDSQL-PG版、PolarDB-PG版、Kin......