on 2023 Jun 06 5:25 AM
有没有什么BAPI、函数或者类,能读取出类似PPETI的物料清单?原计划是用BDC的方式读取,但是后台JOB不能使用。
我今天找到了一个方法,CL_PPEXICMP_CNTL->PV_READ_WITH_FILTER。如果有哪位大佬能告诉我,怎么实现PPETI插入特征值的效果,问题就解决了!
这么长时间都没人回答,我受不了了,CU50的解决方案放这里了!(我秃了,但是我变强了)
CU50首次运行有个弹窗,要求你选择一个工厂。
通过调试,发现在SAPLCUKO/LCUKOFU0/FORM UI_B0030中有这么一段代码
很明显,首次运行时,rcuko-werks和PARAMETER ID WRK都可能是空的,所以我们可以直接给WRK传个工厂来解决问题。
之后在录屏中,我发现SAP让特征值分配的操作,录屏和前台走了不同的屏幕。前台执行的屏幕是104,后台执行的屏幕是109
通过亿点点调试,我定位到函数CE_I_CONFIGURE,这里针对录屏操作、后台操作,进行了逻辑分流。所以这里直接强改系统代码(危险操作)
通过memory id,让指定程序不走109屏幕这段。
最后,我们将运行结果抓到手就可以了。定位到程序LM61OF41,调用函数MD_BEARBEITEN_KOMPONENTEN来进行结果的展示,我们直接将内表数据传出。
这边其实还能再加个退出程序的语句。
最后是参考代码
REPORT zcu50
NO STANDARD PAGE HEADING LINE-SIZE 255.
* Include bdcrecx1_s:
* The call transaction using is called WITH AUTHORITY-CHECK!
* If you have own auth.-checks you can use include bdcrecx1 instead.
INCLUDE bdcrecx1_s.
START-OF-SELECTION.
*====================start by jgabap at 30.07.2023 09:48:16====================*
EXPORT flag = 'X' TO MEMORY ID 'ZCU50'.
SET PARAMETER ID 'WRK' FIELD '一个不重要的工厂'.
*====================start by jgabap at 30.07.2023 09:48:16====================*
PERFORM open_group.
PERFORM bdc_dynpro USING 'SAPLCUKO' '0030'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RCUKO-MATNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=GOON'.
PERFORM bdc_field USING 'RCUKO-MATNR'
'一个不重要的物料'.
PERFORM bdc_field USING 'RCUKO-WERKS'
'一个不重要的工厂'.
PERFORM bdc_field USING 'RCUKO-MENGE'
'1.000'.
PERFORM bdc_field USING 'RCUKO-DATUV'
'2023.07.30'.
PERFORM bdc_field USING 'RCUKO-PROCESS_SALES'
'X'.
PERFORM bdc_field USING 'RCUKO-RSBOM'
'X'.
PERFORM bdc_dynpro USING 'SAPLCEI0' '0104'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SUCHE'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RCTMS-MWERT(01)'.
PERFORM bdc_dynpro USING 'SAPLCLHU' '0600'.
PERFORM bdc_field USING 'BDC_CURSOR'
'CLHP-CR_STATUS_TEXT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=RETURN'.
PERFORM bdc_field USING 'CLHP-CR_STATUS_TEXT'
'用搜索按钮去查找某个关键的特性名称'.
PERFORM bdc_field USING 'D0600_MAX_HITS'
'50'.
PERFORM bdc_dynpro USING 'SAPLCEI0' '0104'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RCTMS-MWERT(01)'.
PERFORM bdc_field USING 'RCTMS-MWERT(01)'
'关键特性的特征值'.
PERFORM bdc_dynpro USING 'SAPLCEI0' '0104'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=PAUF'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RCTMS-MWERT(01)'.
PERFORM bdc_dynpro USING 'SAPLM61Q' '0115'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/EEXIT'.
PERFORM bdc_dynpro USING 'SAPLCEI0' '0104'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/EEOT'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RCTMS-MWERT(01)'.
PERFORM bdc_dynpro USING 'SAPLSPO1' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=YES'.
PERFORM bdc_transaction USING 'CU50'.
PERFORM close_group.
*====================start by jgabap at 30.07.2023 09:48:39====================*
* DATA: BEGIN OF mdpmi OCCURS 100.
* INCLUDE STRUCTURE mdpm.
* DATA: END OF mdpmi.
DATA mdpmi TYPE TABLE OF mdpm.
IMPORT mdpmi = mdpmi[] FROM MEMORY ID 'ZCU50_MDPMI'.
FREE MEMORY ID: 'ZCU50_MDPMI','ZCU50'.
*====================start by jgabap at 30.07.2023 09:48:39====================*
Request clarification before answering.
补充一下,这种方法可以正常的在后台作业中运行,已通过测试了
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
6 | |
4 | |
4 | |
2 | |
2 | |
1 | |
1 | |
1 | |
1 | |
1 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.