SAP APO 取订单函数(取计划订单数据一)
测试环境中,ZRFC_GETORDKEY自开发函数,用于读取计划订单相关数据。输入参数为时间段喝工厂,输出数据为: 计划订单的订单、工艺时间、班次。 图片显示有9223条订单数据,每一条订单数据应该对应4条生产线的工艺时间,但RFC中只取了第一条工艺数据,所以也有9223条工艺数据。SHIFT是系统中的工作班次,有722个。
FUNCTION ZRFC_GETORDKEY.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(GV_CONFIG_BEGIN) TYPE /SAPAPO/STARTTI
*" VALUE(GV_CONFIG_END) TYPE /SAPAPO/ENDTI
*" VALUE(WERKS) TYPE CHAR4
*" TABLES
*" GT_ORDKEY STRUCTURE /SAPAPO/ORDKEY
*" GT_ACT STRUCTURE ZSPP_GETACT
*" GT_SHIFT STRUCTURE ZSPP_GETSHIFT1
*"----------------------------------------------------------------------CONSTANTS: gc_active_version TYPE /sapapo/om_vrsioid VALUE /sapapo/cl_om_c=>active_version ##needed.DATA:
gv_simid TYPE /sapapo/vrsioid VALUE gc_active_version,
gs_gen_params TYPE /sapapo/om_gen_params,
gv_simsession TYPE /sapapo/om_simsession,
gt_cap_reqs TYPE /sapapo/om_cap_req_pt_tab,
lt_ordid TYPE /sapapo/om_tab_ordid,
ls_ordid type /SAPAPO/OM_ORDERUID,gt_outputs TYPE /sapapo/om_io_pp_tab, "#EC NEEDED
gt_ACTIVITIES TYPE /SAPAPO/OM_TAB_ACT.DATA gt_pegkey TYPE SORTED TABLE OF /SAPAPO/PEGKEY WITH NON-UNIQUE KEY pegid. "大表一次抓
DATA gs_pegkey TYPE /SAPAPO/PEGKEY.DATA GT_MATKEY TYPE SORTED TABLE OF /SAPAPO/MATKEY WITH NON-UNIQUE KEY MATID.
DATA GS_MATKEY TYPE /SAPAPO/MATKEY.DATA GT_ACCKEY TYPE SORTED TABLE OF /SAPAPO/ACCKEY WITH NON-UNIQUE KEY ACCID.
DATA GS_ACCKEY TYPE /SAPAPO/ACCKEY.DATA gt_cawn TYPE SORTED TABLE OF CAWN WITH NON-UNIQUE KEY ATINN ATZHL ADZHL. "大表一次抓
DATA gs_cawn TYPE CAWN.DATA gt_cawnt TYPE SORTED TABLE OF CAWNT WITH NON-UNIQUE KEY ATINN ATZHL SPRAS. "大表一次抓
DATA gs_cawnt TYPE CAWNT.DATA gt_periodext TYPE /sapapo/seq_period_ext_tab . "#EC NEEDED
DATA gs_line_plng TYPE /sapapo/seq_line_str."1000工厂 : 051MbrXE7kYkoUx2z4bRMW
"1002工厂 : 051MiFlB7johvRhOsk83b0"----------按工厂得到locid---------
SELECT SINGLE * FROM /SAPAPO/LOC WHERE LOCTYPE = '1001' and LOCNO = @WERKS INTO @DATA(gs_loc)."--------得到LC中的全部订单--------
select * INTO TABLE GT_ORDKEY FROM /SAPAPO/ORDKEY WHERE ORDTYPE = '20' and OUTPUT_FIXED = '' and locid = gs_loc-locid .LOOP AT GT_ORDKEY INTO DATA(GS_ORDKEY).append gs_ordkey-ordid TO lt_ordid. "后面函数的参数ENDLOOP."------------创建一个事件---------------
gs_gen_params-simversion = '000'.CALL FUNCTION '/SAPAPO/RRP_SIMSESSION_CREATE'EXPORTINGiv_simid = gv_simidIMPORTINGev_simsession = gv_simsessionEXCEPTIONSerror_message = 1."-----------------取得班次------------------"gs_line_plng-PNAME = '1000_LINE_BS'."gs_line_plng-RESID = '051MbrXE7kYlZhLoub4RjW'. "这里资源名称在表中叫:1000_RES_BSgs_line_plng-PNAME = WERKS && '_LINE_BS'.DATA gv_res type char40.gv_res = WERKS && '_RES_BS'.SELECT SINGLE * FROM /SAPAPO/RES_HEAD WHERE name = @gv_res INTO @DATA(gs_res).gs_line_plng-RESID = gs_res-RESUID.gs_line_plng-TZONE = 'UTC+8'.CALL FUNCTION '/SAPAPO/SEQM_PERIODSEXT_GET'EXPORTINGiv_simid = gv_simidiv_simsession = gv_simsessionis_line = gs_line_plng"iv_start_time = '20220101010101'"iv_end_time = '20221231235959'iv_start_time = GV_CONFIG_BEGINiv_end_time = GV_CONFIG_endIMPORTINGet_periodext = gt_periodextEXCEPTIONSinternal_error = 1no_shift_stamp = 2no_periods = 3OTHERS = 4.MOVE-CORRESPONDING gt_periodext[] TO GT_SHIFT[]."-------------------获取订单的工艺-------------------
CALL FUNCTION '/SAPAPO/OM_ACT_GET_BY_ORDER'EXPORTINGis_gen_params = gs_gen_paramsiv_simsession = gv_simsessionit_order = lt_ordid" iv_start_time = '19970101010101'" iv_end_time = '20991231235959'iv_start_time = GV_CONFIG_BEGINiv_end_time = GV_CONFIG_endIMPORTINGet_cap_reqs = gt_cap_reqsEXCEPTIONSlc_connect_failed = 1lc_com_error = 2lc_appl_error = 3OTHERS = 4."-----------保留第一个工艺-------------------
DATA gs_act LIKE LINE OF GT_ACT.LOOP AT gt_cap_reqs INTO DATA(gs_cap_reqs).IF gs_cap_reqs-MODE_NO = 1.MOVE-CORRESPONDING gs_cap_reqs TO GS_ACT.APPEND GS_ACT TO GT_ACT.ENDIF.ENDLOOP."--------------加工工艺时间--------------------FIELD-SYMBOLS <gs_act> like gs_act .LOOP AT gt_act ASSIGNING <gs_act>.READ TABLE gt_ordkey WITH KEY ordid = <gs_act>-orderid INTO gs_ordkey.IF sy-subrc = 0.<gs_act>-ordno = gs_ordkey-ordno. "填充ordnoENDIF."时间搓转为日期时间PERFORM timestamp_to_date using <gs_act>-STARTTI SY-ZONLO CHANGING <gs_act>-START_DATE <gs_act>-START_TIME.ENDLOOP."---------------得到成品物料,再通过PEGID得到后续数据-------------CALL FUNCTION '/SAPAPO/OM_ORDER_GET_DATA'EXPORTINGis_gen_params = gs_gen_paramsiv_simsession = spaceit_order = lt_ordidIMPORTINGet_ext_outputs = gt_outputs" ET_ACTIVITIES = gt_ACTIVITIESEXCEPTIONSlc_connect_failed = 1lc_com_error = 2lc_appl_error = 3OTHERS = 4.SELECT * INTO TABLE gt_pegkey FROM /SAPAPO/PEGKEY.
SELECT * INTO TABLE gt_MATKEY FROM /SAPAPO/MATKEY.
SELECT * INTO TABLE gt_ACCKEY FROM /SAPAPO/ACCKEY.
SELECT * INTO TABLE gt_CAWN FROM CAWN.
SELECT * INTO TABLE gt_CAWNT FROM CAWNT.LOOP AT gt_act ASSIGNING <gs_act>."填充物料READ TABLE gt_outputs WITH KEY orderid = <gs_act>-orderid INTO DATA(gs).IF sy-subrc = 0.<gs_act>-PEGID = gs-PEGID. "填充ordnoREAD TABLE gt_pegkey WITH KEY pegid = <gs_act>-pegid INTO DATA(tmp).IF sy-subrc = 0.<gs_act>-matid = tmp-matid.<gs_act>-accid = tmp-accid.READ TABLE gt_matkey WITH KEY matid = <gs_act>-matid INTO DATA(oth).IF sy-subrc = 0.<gs_act>-matnr = oth-matnr.ENDIF.ENDIF.ENDIF."填充销售订单READ TABLE gt_ACCKEY WITH KEY accid = <gs_act>-accid INTO DATA(f4).IF sy-subrc = 0.<gs_act>-KDAUF = f4-sskey(10).<gs_act>-KDPOS = f4-sskey+10(6).ENDIF."填充销售订单批次和VSNDATA: lv_name TYPE thead-tdname,lt_line TYPE TABLE OF tline.CONCATENATE <gs_act>-KDAUF <gs_act>-KDPOS INTO lv_name.REFRESH lt_line.CALL FUNCTION 'READ_TEXT'EXPORTINGid = '0001'language = '1'name = lv_nameobject = 'VBBP'TABLESlines = lt_lineEXCEPTIONSid = 1language = 2name = 3not_found = 4object = 5reference_check = 6wrong_access_to_archive = 7OTHERS = 8.IF lt_line[] IS INITIAL.CALL FUNCTION 'READ_TEXT'EXPORTINGid = '0001'language = 'E'name = lv_nameobject = 'VBBP'TABLESlines = lt_lineEXCEPTIONSid = 1language = 2name = 3not_found = 4object = 5reference_check = 6wrong_access_to_archive = 7OTHERS = 8.ENDIF.READ TABLE lt_line ASSIGNING FIELD-SYMBOL(<ls_line>) INDEX 1.IF sy-subrc = 0.SPLIT <ls_line>-tdline AT '_' INTO TABLE DATA(lt_lines).READ TABLE lt_lines ASSIGNING FIELD-SYMBOL(<ls_lines>) INDEX 1.IF sy-subrc = 0.<gs_act>-VSN = <ls_lines>.ENDIF.READ TABLE lt_lines ASSIGNING <ls_lines> INDEX 4.IF sy-subrc = 0.<gs_act>-PC = <ls_lines>.ENDIF.ENDIF."填充配置"定义结构体
TYPES: BEGIN OF ty_sub,ATINN TYPE ATINN,ATNAM TYPE ATNAM,ATWRT TYPE ATWRT,ATWTB TYPE ATWTB,END OF ty_sub."定义
DATA gs_sub TYPE ty_sub.DATA:lv_matnr TYPE matnr,lv_char TYPE char10,ls_data1 TYPE zspd0006_ord_alv,ls_data3 TYPE zspd0006_bom_alv,ls_values TYPE ibco2_value_rec,lt_values TYPE ibco2_value_tab.REFRESH: lt_values .CALL FUNCTION 'CUCB_GET_VALUES_FROM_INSTANCE'EXPORTINGiv_instance = gs-cuobjIMPORTINGet_values = lt_valuesEXCEPTIONSinvalid_instance = 1instance_is_a_classification = 2OTHERS = 3.IF sy-subrc = 0.LOOP AT lt_values INTO ls_values. "下面200个配置,每个都要处理一次gs_sub-ATINN = ls_values-ATINN. "1、 放特征编号 0000000811CALL FUNCTION 'MMRP_ATINN_2_ATNAM'EXPORTINGiv_atinn = ls_values-ATINNIMPORTINGev_atnam = gs_sub-ATNAM "2、放特征文本 ZMANRTEXCEPTIONScharacteristic_not_found = 1OTHERS = 2.IF sy-subrc <> 0.CONTINUE.ENDIF.gs_sub-ATWRT = ls_values-ATWRT. " 3、放特征值 F517等等DATA:l_atzhl LIKE cawn-atzhl.CLEAR:l_atzhl.READ TABLE gt_cawn WITH KEY atinn = ls_values-ATINN atwrt = ls_values-ATWRT INTO gs_cawn.IF sy-subrc = 0.l_atzhl = gs_cawn-atzhl.ENDIF.* SELECT SINGLE atzhl
* INTO l_atzhl
* FROM cawn
* WHERE atinn = ls_values-ATINN
* AND atwrt = ls_values-ATWRT .CLEAR:gs_sub-atwtb.READ TABLE gt_cawnt WITH KEY atinn = ls_values-ATINN atzhl = l_atzhl spras = sy-langu INTO gs_cawnt.IF sy-subrc = 0.gs_sub-ATWTB = gs_cawnt-ATWTB.ENDIF.* SELECT SINGLE ATWTB
* INTO gs_sub-ATWTB
* FROM cawnt
* WHERE atinn = ls_values-ATINN
* AND atzhl = l_atzhl
* AND spras = sy-langu.SPLIT gs_sub-ATNAM AT '_' INTO lv_matnr lv_char.CASE lv_char.WHEN 'PM' OR 'BPACK'.<gs_act>-zbpack = gs_sub-atwrt.<gs_act>-zbpack_txt = gs_sub-atwtb.WHEN 'PKG0' OR 'SPACK'.CONCATENATE <gs_act>-zspack gs_sub-atwrt INTO <gs_act>-zspack SEPARATED BY space.CONCATENATE <gs_act>-zspack_txt gs_sub-atwtb INTO <gs_act>-zspack_txt SEPARATED BY space.WHEN 'PA00' OR 'INNER'.<gs_act>-zint_trim = gs_sub-atwrt.<gs_act>-zint_trim_txt = gs_sub-atwtb.WHEN 'CC00' OR 'EXTOR'.<gs_act>-zext_color = gs_sub-atwrt.<gs_act>-zext_color_txt = gs_sub-atwtb.ENDCASE.IF gs_sub-ATNAM = 'ZWERKS'.<gs_act>-PLANT = ls_values-ATWRT.ENDIF.ENDLOOP.* CLEAR:ls_data2-atbez.
*
* SELECT SINGLE atbez
* INTO CORRESPONDING FIELDS OF ls_data2
* FROM cabnt
* WHERE atinn = ls_values-atinn
* AND spras = sy-langu.
*
* DATA:l_atzhl LIKE cawn-atzhl.
* CLEAR:l_atzhl.
*
* SELECT SINGLE atzhl
* INTO l_atzhl
* FROM cawn
* WHERE atinn = ls_values-atinn
* AND atwrt = ls_values-atwrt.
*
* CLEAR:ls_data2-atwtb.
*
* SELECT SINGLE atwtb
* INTO CORRESPONDING FIELDS OF ls_data2
* FROM cawnt
* WHERE atinn = ls_values-atinn
* AND atzhl = l_atzhl
* AND spras = sy-langu.
*
* ls_data2-atwrt = ls_values-atwrt.* Provide characters to order data
* SPLIT ls_data2-atnam AT '_' INTO lv_matnr lv_char.*
* CASE lv_char.
*
* WHEN 'PM' OR 'BPACK'.
* <gs_act>-zbpack = ls_data2-atwrt.
* <gs_act>-zbpack_txt = ls_data2-atwtb.
*
* WHEN 'PKG0' OR 'SPACK'.
* CONCATENATE <gs_act>-zspack ls_data2-atwrt INTO <gs_act>-zspack SEPARATED BY space.
* CONCATENATE <gs_act>-zspack_txt ls_data2-atwtb INTO <gs_act>-zspack_txt SEPARATED BY space.
*
* WHEN 'PA00' OR 'INNER'.
* <gs_act>-zint_trim = ls_data2-atwrt.
* <gs_act>-zint_trim_txt = ls_data2-atwtb.
*
* WHEN 'CC00' OR 'EXTOR'.
* <gs_act>-zext_color = ls_data2-atwrt.
* <gs_act>-zext_color_txt = ls_data2-atwtb.
* ENDCASE.endif.ENDLOOP.*
*
*
*
*TYPES:
* BEGIN OF ty_pegkey,
* pegid TYPE /sapapo/pegid,
* locid TYPE /sapapo/locid,
* locno TYPE /sapapo/locno,
* matid TYPE /sapapo/matid,
* matnr TYPE /sapapo/matnr,
* meins TYPE /sapapo/meins,
* sskey TYPE /sapapo/acckey-sskey,
* planner_pps TYPE /sapapo/matloc-planner_pps,
* END OF ty_pegkey.
*
*
* DATA:
* lt_pegid TYPE TABLE OF /sapapo/pegid,
* gt_pegkey TYPE HASHED TABLE OF ty_pegkey
* WITH UNIQUE KEY pegid.
*
*
* LOOP AT gt_outputs INTO DATA(ls).
* APPEND ls-PEGID TO lt_pegid.
* ENDLOOP.
*
*
*
*
*
* IF lt_pegid IS NOT INITIAL.
* SELECT a~pegid
* a~locid
* c~locno
* a~matid
* b~matnr
* b~meins
* d~sskey
* e~planner_pps
* FROM /sapapo/pegkey AS a
* JOIN /sapapo/matkey AS b
* ON a~matid = b~matid
* JOIN /sapapo/loc AS c
* ON a~locid = c~locid
* LEFT JOIN /sapapo/acckey AS d
* ON a~accid = d~accid
* JOIN /sapapo/matloc AS e
* ON a~matid = e~matid
* AND a~locid = e~locid
* INTO TABLE gt_pegkey
* FOR ALL ENTRIES IN lt_pegid
* WHERE a~pegid = lt_pegid-table_line.
*
*
* endif.ENDFUNCTION.* &---------------------------------------------------------------------*
* & Form date_to_timestamp
* &---------------------------------------------------------------------*
* 日期+时间+时区 转变为 时间戳
* ----------------------------------------------------------------------*FORM date_to_timestamp USING i_date LIKE sy-datumi_time LIKE sy-uzeiti_tzone LIKE tzonref-tzoneCHANGING o_tstamp LIKE tzonref-tstamps .CONVERT DATE i_date TIME i_time INTO TIME STAMP o_tstamp TIME ZONE i_tzone.CASE sy-subrc.WHEN 8.MESSAGE e000(oo) WITH '时区错'.WHEN 12.MESSAGE e000(oo) WITH '时间戳错误'.WHEN OTHERS.ENDCASE.ENDFORM. "date_to_timestamp* &---------------------------------------------------------------------*
* & Form TIMESTAMP_TO_DATE
* &---------------------------------------------------------------------*
* 时间戳+时区 转变为 日期和时间
* ----------------------------------------------------------------------*FORM timestamp_to_date USING i_tstamp LIKE tzonref-tstampsi_tzone LIKE tzonref-tzoneCHANGING o_date LIKE sy-datumo_time LIKE sy-uzeit.DATA: w_tzone LIKE tzonref-tzone.w_tzone = i_tzone.CONVERT TIME STAMP i_tstamp TIME ZONE w_tzone INTO DATE o_date TIME o_time.CASE sy-subrc.WHEN 8.MESSAGE e000(oo) WITH '时区错'.WHEN 12.MESSAGE e000(oo) WITH '时间戳错误'.WHEN OTHERS.ENDCASE.ENDFORM. "TIMESTAMP_TO_DATE
SAP APO 取订单函数(取计划订单数据一)相关推荐
- Markdown+取数函数 让你的数据活起来
Redash中文版支持完整的Markdown技术,之前已经介绍过markdown可以添加视频接入监控的流媒体服务器等高级功能,大大拓展了传统大大拓展了传统dashboard的表现力.接下来我们介绍Re ...
- sap 获取计划订单bapi_SAP 生产模块常用BAPI
工艺路线 BAPI_ROUTING_CREATE创建工艺路线 BAPI_ROUTING_EXISTENCE_CHECK检查工艺路线是否存在 参考操作集 BAPI_REFSETOFOPERATIONS_ ...
- 关于SAP APO RPMCALL 指定生产订单的BOM更新
1.APO模块中,主生产计划把销售订单分解为生产订单时,会给每一个生产订单绑定BOM清单. 2.一段时间后,计划员选取一部分订单去确认生产,并在对生产的订单下达到下游系统前,有一个RPMCALL 订单 ...
- 京东订单拉取接入流程
1,创建应用获取appKey,appSecret,SKD下载 需要缴费:入鼎费用,安全包购买费用 2 , 订单拉取服务(新工程),创建在云鼎上 需要调用接口: /** * 获取京东订单列表 * @th ...
- sap采购申请自动转采购订单_我的SAP运维日常_0021_MM_计划订单转采购申请时绑定凭证类型...
大家好,我是林恩~谢谢大家的喜欢和关注喔. 我的SAP运维日常专栏是跟大家分享自己运维过程中遇到的问题和解决方案哦~目前碰到的问题来自各个模块,MM\WM\PP\SD\QM\FICO,还有一些比较ge ...
- sap 获取计划订单bapi_【原创】2011.09.18 SAP 订单中修改订单净价
本文以销售订单为例,说一下如何使用SAP预置的BAPI来更新销售订单(SD)的净价. 1.前提 首先需要了解一下销售订单所对应的表的关系: 订单抬头表:VBAK--订单行项目表:VBAP. 我们所要修 ...
- SAP ABAP 计划订单转采购申请 MD14
用户觉得通过MD14一个一个把计划订单转采购申请太麻烦,MD15 虽然可以批量,但是也需要一个一个确认. 当业务顾问无法说服用户检查走标准功能的时候,压力就给到了技术. 经过研究,函数 MD_PLAN ...
- 淘宝/天猫seller_order_list-获取卖出的商品订单列表接口接入解决方案
一.淘宝/天猫seller_order_list-获取卖出的商品订单列表接口API 返回值说明 点击注册获取key和secret测试账号 提取淘宝天猫店铺卖家账号买到的订单编号,订单金额,订单详情等, ...
- SAP-MM 采购订单净价取值精度问题
问题记录: 最近修改了几个MM模块的报表,都涉及到同一个问题--采购订单净价(又称未税单价)精度丢失. 问题原因: 旧逻辑直接取值采购订单行项目中的净价除以价格单位,即EKPO-NETPR / EKP ...
- 淘宝订单API-获取订单详情接口应用
项目背景 最近做一个电子商务平台的投标工作,写技术标过程中,配到客户一些和淘宝集成的接口,其中有一个需求就是需要将目前ERP系统中的定的那和淘宝店铺中订单进行同步,具体需求如下描述: 1.零售.批销. ...
最新文章
- 嵌入式开发笔记-存储控制器
- FPGA开发综合技巧
- Oracle 多行、多列子查询
- 前端学习(713)创建数组
- 【蓝桥杯官网试题 - 算法提高 】P0404(模拟)
- Coursera自动驾驶课程第11讲:2D Object Detection
- postgresql定义访问ip与用户_Postgresql-12.1最新版本在线安装以及配置使用全流程
- 极路由 1S 使用经验
- 【TI-ONE系列教程(一)】如何使用TI-ONE平台
- 数据库的基本概念(数据库的发展、主流数据库介绍)
- zabbix3.2短信告警脚本
- m3u8格式视屏播放
- 汽车的android怎么使用方法,汽车安卓投屏怎么用 其实投屏方法很简单
- java qq登陆 server_java实现QQ互联登录
- AI大视觉(六) | 特征金字塔(FPN)如何进行特征融合?
- 关于vs2022设置默认浏览器
- USB数据线厂家加工生产流程
- VUE项目练习大全(附github源码)
- 一篇文章带你了解2018 大数据开发工程师必备那些技能
- 搭建SVN服务端及创建SVN账号