首页 > 其他分享 >关于 SAP CRM User Status 处理的示例 ABAP 代码

关于 SAP CRM User Status 处理的示例 ABAP 代码

时间:2023-09-14 10:26:04浏览次数:38  
标签:Status option tj30 示例 lt 表中 table guid CRM

源代码如下:

*&---------------------------------------------------------------------*
*& Report ZSTATUS_INITIAL_LOAD
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zstatus_initial_load.

TYPES:
  BEGIN OF ty_sel_tab,
    sign   TYPE ddsign,
    option TYPE ddoption,
    low    TYPE string,
    high   TYPE string,
  END OF ty_sel_tab .
TYPES:
  tt_sel_tab TYPE STANDARD TABLE OF ty_sel_tab .

DATA: lt_tj30        TYPE STANDARD TABLE OF tj30,
      lv_valid_found TYPE abap_bool,
      lt_option      TYPE tt_sel_tab,
      lt_table       TYPE STANDARD TABLE OF zorder_guid.

SELECT stsma stonr INTO CORRESPONDING FIELDS OF TABLE lt_tj30 FROM tj30.

LOOP AT lt_tj30 ASSIGNING FIELD-SYMBOL(<tj30>).
  AT NEW stsma.
    lv_valid_found = abap_false.
  ENDAT.

  IF <tj30>-stonr IS NOT INITIAL.
    lv_valid_found = abap_true.
  ENDIF.

  AT END OF stsma.
    IF lv_valid_found = abap_true.
      DATA(ls_option) = VALUE ty_sel_tab( sign = 'I' option = 'EQ' low = <tj30>-stsma ).
      APPEND ls_option TO lt_option.
    ENDIF.
  ENDAT.

ENDLOOP.

SELECT guid INTO CORRESPONDING FIELDS OF TABLE lt_table FROM crmd_orderadm_h AS a INNER JOIN crm_jsto AS b
   ON a~guid = b~objnr WHERE b~stsma IN lt_option.

DELETE FROM zorder_guid.
INSERT zorder_guid FROM TABLE lt_table.
COMMIT WORK AND WAIT.
WRITE: / 'table inserted'.
BREAK-POINT.

这段 ABAP 程序的主要作用是从两个 SAP CRM 数据表中检索数据,并将符合特定条件的数据插入到一个自定义的数据表中。程序中还包括一些控制逻辑,用于选择符合条件的数据和执行提交操作。

让我详细解释这段程序的功能以及提供一个示例:

  1. 程序开始

    • REPORT zstatus_initial_load.:这一行指定了程序的名称。
  2. 类型定义

    • 在程序开始后,定义了两个数据结构(TYPES)。第一个是 ty_sel_tab,用于存储查询选择条件的信息,包括签名(sign)、选项(option)、下限(low)和上限(high)。第二个是 tt_sel_tab,是 ty_sel_tab 类型的标准表格类型。
  3. 数据声明

    • DATA 语句用于声明各种数据表和变量,包括 lt_tj30lv_valid_foundlt_optionlt_table
  4. 数据查询

    • SELECT 语句从 tj30 表中选择数据,并将结果存储在 lt_tj30 表中。
  5. 循环处理

    • 使用 LOOP 语句遍历 lt_tj30 表中的数据。在每次迭代中,使用 AT NEW stsmaAT END OF stsma 控制逻辑来执行某些操作。
  6. 条件检查

    • 在循环中,程序检查 <tj30>-stonr 是否为空。如果不为空,将 lv_valid_found 设置为真(abap_true)。
  7. 数据筛选

    • AT END OF stsma 控制逻辑内,如果 lv_valid_found 为真,程序创建了一个符合特定条件的选择条件 ls_option,然后将其附加到 lt_option 表中。
  8. 第二个数据查询

    • 在循环结束后,程序执行第二个 SELECT 语句,从 crmd_orderadm_h 表和 crm_jsto 表中选择数据,并将结果存储在 lt_table 表中。这个查询使用了之前构建的选择条件 lt_option
  9. 数据操作

    • DELETE FROM zorder_guid.:清空名为 zorder_guid 的自定义数据表。

    • INSERT zorder_guid FROM TABLE lt_table.:将 lt_table 表中的数据插入到 zorder_guid 表中。

    • COMMIT WORK AND WAIT.:提交数据库事务。

  10. 输出和中断

    • WRITE: / 'table inserted'.:在屏幕上输出文本消息,表示数据已插入。

    • BREAK-POINT.:插入断点,以便在程序执行期间进行调试。

现在,让我们用一个示例来说明程序的作用:

假设你在一个 SAP CRM 系统中管理客户订单数据。tj30 表包含了订单的状态信息,crmd_orderadm_h 表和 crm_jsto 表包含了订单的详细信息。你想要从 tj30 表中选择符合特定条件的订单状态,并将这些订单的详细信息插入到自定义表 zorder_guid 中。

例如,你想要选择所有订单状态为 'Approved'(批准)的订单。在程序执行后,它会遍历 tj30 表,找到所有状态为 'Approved' 的订单,并将它们的详细信息插入到 zorder_guid 表中。最后,屏幕上会显示消息 'table inserted',表示操作已完成。

这是一个简单的示例,说明了程序如何根据选择条件从一个表中选择数据,并将其插入到另一个表中。实际应用中,可以根据具体的业务需求修改程序中的选择条件和数据表,以实现不同的数据处理操作。

标签:Status,option,tj30,示例,lt,表中,table,guid,CRM
From: https://www.cnblogs.com/sap-jerry/p/17701778.html

相关文章

  • 根据指定关键字搜索指定时间范围内的 SAP CRM 中间件 BDOC 的 ABAP 小工具分享
    工具源代码如下:REPORTzscan_bdoc_via_keyword.PARAMETERS:startTYPEsmw3_bdoc-snd_dateOBLIGATORYDEFAULTsy-datlo,endTYPEsmw3_bdoc-snd_dateOBLIGATORYDEFAULTsy-datlo,keywordTYPEstringLOWERCASEOBLIGATORYDEFAULT'CR......
  • SpringMVC报错:HTTP Status 405 - JSPs only permit GET POST or HEAD
    错误描述如果项目是运行在Tomcat8及以上版本,浏览器发出的PUT请求和DELETE请求可以被页面控制器(Controller)成功接收到,但是返回JSP页面则会报HTTP405的错误提示:"消息JSP只允许GET、POST或HEAD。Jasper还允许OPTIONS"。原因分析原因是Tomcat按照JCP规范(JSP......
  • application 'vueApp' died in status NOT_MOUNTED: [qiankun]: Target container wit
    这是第一次微前端很常见的提示,尤其是第一次写前端的时候碰到的解决1:主应用的 App.vue标签上的id="app"去掉,这是报错的根本解决2://在子应用挂在的时候处理functionrender(props={}){const{container}=props;instance=newVue({render:h=>h......
  • BUG库(linux)tar文件解压: Exiting with failure status due to previous
    一.Bug场景描述linux下解压文件tar:Exitingwithfailurestatusduetopreviouserrors二.解决办法1.提升源权限chmod777 mysql-8.0.15-linux-glibc2.12-x86_64.tar.xz2.提升目标路径权限chmod-R777 mysql3.sudo执行  ......
  • VIM 零宽度(断言)匹配用法示例
    1.零宽度向左匹配(零宽度字符)@<=目标字符示例:查找左边是”ses“的字符“s” 2.零宽度向右匹配目标字符(零宽度字符)@=示例:查找右边是”isi“的字符”s“ ......
  • 注册到K8S上的Nacos报错com.alibaba.nacos.api.exception.NacosException: Client not
    契机近期升级SpringCloudAlibaba版本,从2021.0.1.0升级到2021.0.5问题现象注册到K8S平台上2.1.2版本的Nacos报错,错误信息如下:2023-09-1309:29:53.712INFO19988—[main]c.a.n.p.a.s.c.ClientAuthPluginManager:ClientAuthPluginManagerLoadClientAuthServiceco......
  • iptables简述及命令示例
    iptables:在Linux系统中,iptables不仅仅是一个服务或守护进程,它实际上是内核空间的一部分,用于处理网络包过滤和网络地址转换。这意味着,即使iptables服务没有运行,内核模块仍然会按照当前的iptables规则来处理网络数据包。iptables.service或者iptables-services通常用于......
  • grpc报错io.grpc.StatusRuntimeException: UNIMPLEMENTED: Service is unimplemented.
    如果被调用方的服务,proto文件上方定义了package,调用方不可以更改此路径!!!syntax="proto3";packagenucdl_FaceMatch;optionjava_multiple_files=true;optionjava_outer_classname="DLFaceProto";optionjava_package="com.nuctech.uranus.face.grpc"; ......
  • 上位机使用JS SerialPort进行串口通信, 包含开发环境搭建和完整示例代码
    在嵌入式开发中,我们经常需要使用上位机(PC)与一些电路模块进行通信,用于获取一些传感器的数据,或者发送命令控制相应的电路模块。NodeJS目前支持使用SerialPort模块进行串口通信,本文主要介绍如何搭建测试开发环境和如何使用SerialPort进行串口通信。 开发前准备:1.下载安装NodeJS......
  • kunyu 工具的常见案例和示例命令
    kunyu工具的常见案例和示例命令:基本主机搜索:执行基本的主机搜索,以获取有关特定域或IP地址的信息。 SearchHostexample.com基本Web搜索:执行基本的Web搜索,以查找与特定查询条件相关的网站。 SearchWeb"vulnerabilitiesinWordPress"SSL证书搜索:搜索与指......