测试APO函数 /SAPAPO/OM_ORDER_GET_DATA

2024-02-24 19:50

本文主要是介绍测试APO函数 /SAPAPO/OM_ORDER_GET_DATA,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

S4 hana 1709环境中,APO模块的LiveCache数据,都是通过存储过程到ABAP层的函数来实现访问。它们都在 /SAPAPO/OM_PLANNING函数组里:

近段时间关注了这个函数:/SAPAPO/OM_ORDER_GET_DATA,放几段测试的代码备忘:

ZJAMES_L001程序通过函数/SAPAPO/OM_ORDER_GET_DATA得到订单下的BOM组件也就是零部件,其中函数参数:ATC理解为工艺路线,inputs可以理解为投料,output理解为产成品。

*&---------------------------------------------------------------------*
*& Report ZJAMES_L001
*&---------------------------------------------------------------------*
*& 这个程序测试函数  
*&---------------------------------------------------------------------*
REPORT ZJAMES_L001.

DATA gs_gen_params   TYPE /sapapo/om_gen_params.

  DATA:
    lv_ordid   TYPE /sapapo/om_orderuid,
    lt_ordid   TYPE /sapapo/om_tab_ordid,
    ls_ordid   TYPE LINE OF /sapapo/om_tab_ordid,
    lt_ordkeys TYPE /sapapo/om_ordkey_tab.
 DATA:
  gt_ordstat      TYPE TABLE OF ztpd0002_ordstat,           "#EC NEEDED
  gt_ordkeys      TYPE /sapapo/om_ordkey_tab,               "#EC NEEDED
  gt_act          TYPE /sapapo/om_tab_act,                  "#EC NEEDED
  gt_shift        TYPE /sapapo/rrp_per_stamp_res_tab,       "#EC NEEDED
  gt_inputs       TYPE /sapapo/om_io_pp_tab,                "#EC NEEDED
  gt_outputs      TYPE /sapapo/om_io_pp_tab,                "#EC NEEDED
  gt_pldord_atp   TYPE RANGE OF /sapapo/om_atpcat,          "#EC NEEDED
  gt_ordbom_ekgrp TYPE RANGE OF /sapapo/matloc-ekgrp,       "#EC NEEDED
  gt_ordbom_matkl TYPE RANGE OF /sapapo/matkey-matkl.       "#EC NEEDED


DATAT1 TYPE I,
      T2 TYPE I,
      T TYPE DECIMALS 0.

DATAGV_C(6TYPE C .

*&---------------------------------------------------------------------*
*&      Screen
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-t01.

SELECT-OPTIONS:
  s_m FOR ls_ordid.

SELECTION-SCREEN END  OF BLOCK b1.

*&---------------------------------------------------------------------*
*&      INITIALIZATION
*&---------------------------------------------------------------------*
INITIALIZATION.
START-OF-SELECTION.
 gs_gen_params-simversion '000'.
*  ls_ordid = '051MbrXE7jkUtKu9vyvHAW'.
*  APPEND ls_ordid TO lt_ordid.

LOOP AT s_m INTO DATA(ls_m).

  ls_ordid ls_m-LOW.
  APPEND ls_ordid TO lt_ordid.

  ENDLOOP.

GET RUN TIME FIELD T1."开始时间

CALL FUNCTION '/SAPAPO/OM_ORDER_GET_DATA'
    EXPORTING
      is_gen_params     gs_gen_params
      iv_simsession     
space
      it_order          
lt_ordid
    
IMPORTING
      et_ordkeys        gt_ordkeys
      et_activities     
gt_act
      et_ext_inputs     
gt_inputs
      et_ext_outputs    
gt_outputs
    
EXCEPTIONS
      lc_connect_failed 1
      lc_com_error      2
      lc_appl_error     3
      OTHERS            4.

GET RUN TIME FIELD T2."结束时间

= ( T2 T1 1000000.
GV_C T.
CONDENSE GV_C NO-GAPS.


TYPES:
  BEGIN OF ty_pvcmpd,
    bomid       TYPE /sapapo/om_bomid,
    pvguid      TYPE pvs_pvguid,
    pvcdcnt     TYPE pvs_count,
    zz_com_code TYPE zz_comcode,
    zz_work_ws  TYPE zz_workws,
    zz_work_st  TYPE zz_workst,
    zz_bom_line TYPE zz_bomline,
    aennr       TYPE pvs_aennr,
    datuv       TYPE cc_ccdat,
  END OF ty_pvcmpd.

  DATA:
    ls_inputs TYPE /sapapo/om_io_pp,
    ls_pvcmpd TYPE ty_pvcmpd,
    lt_pvcmpd TYPE TABLE OF ty_pvcmpd.


 LOOP AT gt_inputs INTO ls_inputs WHERE bomid IS NOT INITIAL.
    TRY.
        CALL METHOD cl_system_uuid=>if_system_uuid_static~convert_uuid_c22
          
EXPORTING
            uuid     ls_inputs-bomid
          
IMPORTING
            uuid_x16 ls_pvcmpd-pvguid.
        ls_pvcmpd-bomid ls_inputs-bomid.
        APPEND ls_pvcmpd TO lt_pvcmpd.
        CLEARls_pvcmpd.
      CATCH cx_uuid_error.
        CONTINUE.
    ENDTRY.
  ENDLOOP.

  WRITE:
/'批量调用 耗时:GV_C '',
/'gt_ordkeys行数:linesgt_ordkeys ) ,
/'gt_act行数:'    linesgt_act ) ,
/'gt_inputs行数:linesgt_inputs ) ,
/'gt_outputs行数:linesgt_outputs ) .

 

ZJAMES_L002是单次调用这个函数的计时,目的是同上面程序对比,这个函数是批量调用速度快还是单个订单调用速度快。

*&---------------------------------------------------------------------*
*& Report ZJAMES_L002
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZJAMES_L002.

DATA gs_gen_params   TYPE /sapapo/om_gen_params.

  DATA:
    lv_ordid   TYPE /sapapo/om_orderuid,
    lt_ordid   TYPE /sapapo/om_tab_ordid,
    lt_temp   TYPE /sapapo/om_tab_ordid,

    ls_ordid   TYPE LINE OF /sapapo/om_tab_ordid,
    lt_ordkeys TYPE /sapapo/om_ordkey_tab.
 DATA:
  gt_ordstat      TYPE TABLE OF ztpd0002_ordstat,           "#EC NEEDED
  gt_ordkeys      TYPE /sapapo/om_ordkey_tab,               "#EC NEEDED
  gt_act          TYPE /sapapo/om_tab_act,                  "#EC NEEDED
  gt_shift        TYPE /sapapo/rrp_per_stamp_res_tab,       "#EC NEEDED
  gt_inputs       TYPE /sapapo/om_io_pp_tab,                "#EC NEEDED
  gt_outputs      TYPE /sapapo/om_io_pp_tab,                "#EC NEEDED
  gt_pldord_atp   TYPE RANGE OF /sapapo/om_atpcat,          "#EC NEEDED
  gt_ordbom_ekgrp TYPE RANGE OF /sapapo/matloc-ekgrp,       "#EC NEEDED
  gt_ordbom_matkl TYPE RANGE OF /sapapo/matkey-matkl.       "#EC NEEDED


DATAT1 TYPE I,
      T2 TYPE I,
      T TYPE DECIMALS 0.
DATAGV_C(6TYPE C .
*&---------------------------------------------------------------------*
*&      Screen
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-t01.

SELECT-OPTIONS:
  s_m FOR ls_ordid.

SELECTION-SCREEN END  OF BLOCK b1.

*&---------------------------------------------------------------------*
*&      INITIALIZATION
*&---------------------------------------------------------------------*
INITIALIZATION.
START-OF-SELECTION.
 gs_gen_params-simversion '000'.

*  ls_ordid = '051MbrXE7jkUtKu9vyvHAW'.
*  APPEND ls_ordid TO lt_ordid.
LOOP AT s_m INTO DATA(ls_m).
  ls_ordid ls_m-LOW.
  APPEND ls_ordid TO lt_ordid.
  ENDLOOP.

GET RUN TIME FIELD T1.


LOOP AT lt_ordid INTO DATA(ls_temp).

 APPEND ls_temp TO lt_temp.

CALL FUNCTION '/SAPAPO/OM_ORDER_GET_DATA'
    EXPORTING
      is_gen_params     gs_gen_params
      iv_simsession     
space
      it_order          
lt_temp
    
IMPORTING
      et_ordkeys        gt_ordkeys
      et_activities     
gt_act
      et_ext_inputs     
gt_inputs
      et_ext_outputs    
gt_outputs
    
EXCEPTIONS
      lc_connect_failed 1
      lc_com_error      2
      lc_appl_error     3
      OTHERS            4.


refresh lt_temp.


ENDLOOP.


GET RUN TIME FIELD T2.


= ( T2 T1 1000000.

GV_C T.
CONDENSE GV_C NO-GAPS.

WRITE/'单次调用总耗时:GV_C ''.

这篇关于测试APO函数 /SAPAPO/OM_ORDER_GET_DATA的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

C++操作符重载实例(独立函数)

C++操作符重载实例,我们把坐标值CVector的加法进行重载,计算c3=c1+c2时,也就是计算x3=x1+x2,y3=y1+y2,今天我们以独立函数的方式重载操作符+(加号),以下是C++代码: c1802.cpp源代码: D:\YcjWork\CppTour>vim c1802.cpp #include <iostream>using namespace std;/*** 以独立函数

函数式编程思想

我们经常会用到各种各样的编程思想,例如面向过程、面向对象。不过笔者在该博客简单介绍一下函数式编程思想. 如果对函数式编程思想进行概括,就是f(x) = na(x) , y=uf(x)…至于其他的编程思想,可能是y=a(x)+b(x)+c(x)…,也有可能是y=f(x)=f(x)/a + f(x)/b+f(x)/c… 面向过程的指令式编程 面向过程,简单理解就是y=a(x)+b(x)+c(x)

利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下:小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂 clear; close all;x = 1:3;aa=[28.6321521955954 26.2453660695847 21.69102348512086.93747104431360 6.25442246899816 3.342835958564245.51365061796319 4.87

OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使用了由[90]描述的第一个算法。开发者应该注意,由于数据点靠近包含的 Mat 元素的边界,返回的椭圆/旋转矩形数据