QP01 BAPI、QP02 BDC

近期在改动一个检验计划分配的一个程序。上网查了一些资料,分别对QP01检验计划创建、改动QP02、删除物料等操作。分享一下。

一、QP01 BAPI

BAPI_INSPECTIONPLAN_CREATE

二、BDC for QP02

REPORT  ZQM_BDC_QP02.

************************************************************************

*TYPE-POOLS                                                            *

************************************************************************

TYPE-POOLS TRUXS.

************************************************************************

*TYPE DECLARATION                                                      *

************************************************************************

TYPES : BEGIN OF TYPE_BDCDATA,

PROGRAM  TYPE BDC_PROG,

DYNPRO   TYPE BDC_DYNR,

DYNBEGIN TYPE BDC_START,

FNAM     TYPE FNAM_____4,

FVAL     TYPE BDC_FVAL,

END OF TYPE_BDCDATA,

BEGIN OF TYPE_DATA,

MATNR TYPE MATNR_BI,

WERKS TYPE WERKS,

END OF TYPE_DATA.

************************************************************************

*WORK AREA DECLARATION                                                 *

************************************************************************

DATA : WA_BDCDATA TYPE TYPE_BDCDATA,

WA_DATA    TYPE TYPE_DATA,

WA_MESSTAB TYPE BDCMSGCOLL,

WA_RAW     TYPE TRUXS_T_TEXT_DATA.

************************************************************************

*INTERNAL TABLE DECLARATION                                            *

************************************************************************

DATA : I_BDCDATA TYPE STANDARD TABLE OF TYPE_BDCDATA,

I_DATA    TYPE STANDARD TABLE OF TYPE_DATA,

I_MESSTAB TYPE STANDARD TABLE OF BDCMSGCOLL.

************************************************************************

*DATA DECLARATION                                                      *

************************************************************************

DATA   WF_MESSAGE(100).

************************************************************************

*SELECTION-SCREEN DECLARATION                                          *

************************************************************************

SELECTION-SCREEN BEGIN OF BLOCK A1 WITH FRAME TITLE TEXT-001.

PARAMETERS : P_FILE TYPE LOCALFILE OBLIGATORY,

P_MODE DEFAULT ‘A‘.

SELECTION-SCREEN END OF BLOCK A1.

************************************************************************

*AT SELECTION-SCREEN ON VALUE-REQUEST DECLARATION                      *

************************************************************************

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

CALL FUNCTION ‘KD_GET_FILENAME_ON_F4‘

EXPORTING

FIELD_NAME          = ‘P_FILE‘

CHANGING

FILE_NAME           = P_FILE

.

REFRESH I_DATA[].

CALL FUNCTION ‘TEXT_CONVERT_XLS_TO_SAP‘

EXPORTING

I_LINE_HEADER              = ‘X‘

I_TAB_RAW_DATA             = WA_RAW

I_FILENAME                 = P_FILE

TABLES

I_TAB_CONVERTED_DATA       = I_DATA

.

************************************************************************

*START-OF-SELECTION                                                    *

************************************************************************

START-OF-SELECTION.

LOOP AT I_DATA INTO WA_DATA.

perform bdc_dynpro      using ‘SAPLCPDI‘ ‘8010‘.

perform bdc_field       using ‘BDC_OKCODE‘

‘/00‘.

perform bdc_field       using ‘RC27M-MATNR‘

WA_DATA-MATNR.

perform bdc_field       using ‘RC27M-WERKS‘

WA_DATA-WERKS.

perform bdc_dynpro      using ‘SAPLCPDI‘ ‘1400‘.

perform bdc_field       using ‘BDC_OKCODE‘

‘=ALD1‘.

perform bdc_field       using ‘RC27X-ENTRY_ACT‘

‘1‘.

perform bdc_dynpro      using ‘SAPLCPDA‘ ‘1200‘.

perform bdc_field       using ‘BDC_OKCODE‘

‘=MTUE‘.

perform bdc_dynpro      using ‘SAPLCZDI‘ ‘4010‘.

perform bdc_field       using ‘MAPL-PLNAL(02)‘

‘1‘.

perform bdc_field       using ‘MAPL-PLNAL(03)‘

‘1‘.

perform bdc_field       using ‘MAPL-PLNAL(04)‘

‘1‘.

perform bdc_field       using ‘MAPL-PLNAL(05)‘

‘1‘.

perform bdc_field       using ‘MAPL-PLNAL(06)‘

‘1‘.

perform bdc_field       using ‘MAPL-PLNAL(07)‘

‘1‘.

perform bdc_field       using ‘MAPL-PLNAL(08)‘

‘1‘.

perform bdc_field       using ‘MAPL-PLNAL(09)‘

‘1‘.

perform bdc_field       using ‘MAPL-PLNAL(10)‘

‘1‘.

perform bdc_field       using ‘MAPL-PLNAL(11)‘

‘1‘.

perform bdc_field       using ‘MAPL-PLNAL(12)‘

‘1‘.

perform bdc_field       using ‘MAPL-PLNAL(13)‘

‘1‘.

perform bdc_field       using ‘MAPL-PLNAL(14)‘

‘1‘.

perform bdc_field       using ‘MAPL-MATNR(02)‘

‘8514AA-MEG-0002-02‘.

perform bdc_field       using ‘MAPL-MATNR(03)‘

‘8514AA-MEG-0002-03‘.

perform bdc_field       using ‘MAPL-MATNR(04)‘

‘8514AA-MEG-0002-04‘.

perform bdc_field       using ‘MAPL-MATNR(05)‘

‘8514AA-MEG-0002-05‘.

perform bdc_field       using ‘MAPL-MATNR(06)‘

‘8514AA-MEG-0002-06‘.

perform bdc_field       using ‘MAPL-MATNR(07)‘

‘8514AA-MEG-0002-07‘.

perform bdc_field       using ‘MAPL-MATNR(08)‘

‘8514AA-MEG-0002-08‘.

perform bdc_field       using ‘MAPL-MATNR(09)‘

‘8514AA-MEG-0002-09‘.

perform bdc_field       using ‘MAPL-MATNR(10)‘

‘8514AA-MEG-0002-10‘.

perform bdc_field       using ‘MAPL-MATNR(11)‘

‘8514AA-MEG-0002-11‘.

perform bdc_field       using ‘MAPL-MATNR(12)‘

‘8514AA-MEG-0002-12‘.

perform bdc_field       using ‘MAPL-MATNR(13)‘

‘8514AA-MEG-0002-13‘.

perform bdc_field       using ‘MAPL-MATNR(14)‘

‘8514AA-MEG-0002-14‘.

perform bdc_field       using ‘MAPL-WERKS(02)‘

‘2000‘.

perform bdc_field       using ‘MAPL-WERKS(03)‘

‘2000‘.

perform bdc_field       using ‘MAPL-WERKS(04)‘

‘2000‘.

perform bdc_field       using ‘MAPL-WERKS(05)‘

‘2000‘.

perform bdc_field       using ‘MAPL-WERKS(06)‘

‘2000‘.

perform bdc_field       using ‘MAPL-WERKS(07)‘

‘2000‘.

perform bdc_field       using ‘MAPL-WERKS(08)‘

‘2000‘.

perform bdc_field       using ‘MAPL-WERKS(09)‘

‘2000‘.

perform bdc_field       using ‘MAPL-WERKS(10)‘

‘2000‘.

perform bdc_field       using ‘MAPL-WERKS(11)‘

‘2000‘.

perform bdc_field       using ‘MAPL-WERKS(12)‘

‘2000‘.

perform bdc_field       using ‘MAPL-WERKS(13)‘

‘2000‘.

perform bdc_field       using ‘MAPL-WERKS(14)‘

‘2000‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘RC271-PLNNR‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘RC271-PLNNR‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘RC271-PLNNR‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘RC271-PLNNR‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘RC271-PLNNR‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘RC271-PLNNR‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘RC271-PLNNR‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘RC271-PLNNR‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘RC271-PLNNR‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘RC271-PLNNR‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘RC271-PLNNR‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘RC271-PLNNR‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘RC271-PLNNR‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘RC271-PLNNR‘.

perform bdc_dynpro      using ‘SAPLCZDI‘ ‘4010‘.

perform bdc_field       using ‘BDC_OKCODE‘

‘/00‘.

perform bdc_field       using ‘MAPL-PLNAL(02)‘

‘1‘.

perform bdc_field       using ‘MAPL-PLNAL(03)‘

‘1‘.

perform bdc_field       using ‘MAPL-PLNAL(04)‘

‘1‘.

perform bdc_field       using ‘MAPL-PLNAL(05)‘

‘1‘.

perform bdc_field       using ‘MAPL-PLNAL(06)‘

‘1‘.

perform bdc_field       using ‘MAPL-PLNAL(07)‘

‘1‘.

perform bdc_field       using ‘MAPL-PLNAL(08)‘

‘1‘.

perform bdc_field       using ‘MAPL-PLNAL(09)‘

‘1‘.

perform bdc_field       using ‘MAPL-PLNAL(10)‘

‘1‘.

perform bdc_field       using ‘MAPL-PLNAL(11)‘

‘1‘.

perform bdc_field       using ‘MAPL-PLNAL(12)‘

‘1‘.

perform bdc_field       using ‘MAPL-PLNAL(13)‘

‘1‘.

perform bdc_field       using ‘MAPL-PLNAL(14)‘

‘1‘.

perform bdc_field       using ‘MAPL-MATNR(02)‘

‘8514AA-MEG-0002-15‘.

perform bdc_field       using ‘MAPL-MATNR(03)‘

‘8514AA-MEG-0002-16‘.

perform bdc_field       using ‘MAPL-MATNR(04)‘

‘8514AA-MEG-0002-17‘.

perform bdc_field       using ‘MAPL-MATNR(05)‘

‘8514AA-MEG-0002-18‘.

perform bdc_field       using ‘MAPL-MATNR(06)‘

‘8514AA-MEG-0002-19‘.

perform bdc_field       using ‘MAPL-MATNR(07)‘

‘8514AA-MEG-0002-20‘.

perform bdc_field       using ‘MAPL-MATNR(08)‘

‘8514AA-MEG-0002-21‘.

perform bdc_field       using ‘MAPL-MATNR(09)‘

‘8514AA-MEG-0002-22‘.

perform bdc_field       using ‘MAPL-MATNR(10)‘

‘8514AA-MEG-0002-23‘.

perform bdc_field       using ‘MAPL-MATNR(11)‘

‘8514AA-MEG-0002-24‘.

perform bdc_field       using ‘MAPL-MATNR(12)‘

‘8514AA-MEG-0002-25‘.

perform bdc_field       using ‘MAPL-MATNR(13)‘

‘8514AA-MEG-0002-26‘.

perform bdc_field       using ‘MAPL-MATNR(14)‘

‘8514AA-MEG-0002-27‘.

perform bdc_field       using ‘MAPL-WERKS(02)‘

‘2000‘.

perform bdc_field       using ‘MAPL-WERKS(03)‘

‘2000‘.

perform bdc_field       using ‘MAPL-WERKS(04)‘

‘2000‘.

perform bdc_field       using ‘MAPL-WERKS(05)‘

‘2000‘.

perform bdc_field       using ‘MAPL-WERKS(06)‘

‘2000‘.

perform bdc_field       using ‘MAPL-WERKS(07)‘

‘2000‘.

perform bdc_field       using ‘MAPL-WERKS(08)‘

‘2000‘.

perform bdc_field       using ‘MAPL-WERKS(09)‘

‘2000‘.

perform bdc_field       using ‘MAPL-WERKS(10)‘

‘2000‘.

perform bdc_field       using ‘MAPL-WERKS(11)‘

‘2000‘.

perform bdc_field       using ‘MAPL-WERKS(12)‘

‘2000‘.

perform bdc_field       using ‘MAPL-WERKS(13)‘

‘2000‘.

perform bdc_field       using ‘MAPL-WERKS(14)‘

‘2000‘.

perform bdc_dynpro      using ‘SAPLCZDI‘ ‘4010‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘RC271-PLNNR‘.

perform bdc_field       using ‘BDC_OKCODE‘

‘/00‘.

perform bdc_dynpro      using ‘SAPLCZDI‘ ‘4010‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘RC271-PLNNR‘.

perform bdc_field       using ‘BDC_OKCODE‘

‘/00‘.

perform bdc_dynpro      using ‘SAPLCZDI‘ ‘4010‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘RC271-PLNNR‘.

perform bdc_field       using ‘BDC_OKCODE‘

‘/00‘.

perform bdc_dynpro      using ‘SAPLCZDI‘ ‘4010‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘RC271-PLNNR‘.

perform bdc_field       using ‘BDC_OKCODE‘

‘/00‘.

perform bdc_dynpro      using ‘SAPLCZDI‘ ‘4010‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘RC271-PLNNR‘.

perform bdc_field       using ‘BDC_OKCODE‘

‘/00‘.

perform bdc_dynpro      using ‘SAPLCZDI‘ ‘4010‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘RC271-PLNNR‘.

perform bdc_field       using ‘BDC_OKCODE‘

‘/00‘.

perform bdc_dynpro      using ‘SAPLCZDI‘ ‘4010‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘RC271-PLNNR‘.

perform bdc_field       using ‘BDC_OKCODE‘

‘/00‘.

perform bdc_dynpro      using ‘SAPLCZDI‘ ‘4010‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘RC271-PLNNR‘.

perform bdc_field       using ‘BDC_OKCODE‘

‘/00‘.

perform bdc_dynpro      using ‘SAPLCZDI‘ ‘4010‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘RC271-PLNNR‘.

perform bdc_field       using ‘BDC_OKCODE‘

‘/00‘.

perform bdc_dynpro      using ‘SAPLCZDI‘ ‘4010‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘RC271-PLNNR‘.

perform bdc_field       using ‘BDC_OKCODE‘

‘/00‘.

perform bdc_dynpro      using ‘SAPLCZDI‘ ‘4010‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘RC271-PLNNR‘.

perform bdc_field       using ‘BDC_OKCODE‘

‘/00‘.

perform bdc_dynpro      using ‘SAPLCZDI‘ ‘4010‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘MAPL-WERKS(03)‘.

perform bdc_field       using ‘BDC_OKCODE‘

‘=BACK‘.

perform bdc_field       using ‘MAPL-PLNAL(03)‘

‘1‘.

perform bdc_field       using ‘MAPL-MATNR(03)‘

‘8514AA-MEG-0002-28‘.

perform bdc_field       using ‘MAPL-WERKS(03)‘

‘2000‘.

perform bdc_dynpro      using ‘SAPLCPDA‘ ‘1200‘.

perform bdc_field       using ‘BDC_OKCODE‘

‘=BU‘.

perform bdc_field       using ‘BDC_CURSOR‘

‘PLKOD-KTEXT‘.

perform bdc_field       using ‘PLKOD-KTEXT‘

‘8514AA-MEG-0002-01  -Package -04- RC C‘

& ‘oo‘.

perform bdc_field       using ‘PLKOD-WERKS‘

‘2000‘.

perform bdc_field       using ‘PLKOD-VERWE‘

‘Z1‘.

perform bdc_field       using ‘PLKOD-STATU‘

‘4‘.

perform bdc_field       using ‘PLKOD-LOSBS‘

‘99,999,999‘.

perform bdc_field       using ‘PLKOD-PLNME‘

‘EA‘.

perform bdc_field       using ‘PLKOD-SLWBEZ‘

‘Z01‘.

CALL TRANSACTION ‘QP02‘ USING I_BDCDATA MODE P_MODE UPDATE ‘A‘ MESSAGES INTO I_MESSTAB.

REFRESH I_BDCDATA[].

ENDLOOP.

************************************************************************

*START-OF-SELECTION                                                    *

************************************************************************

END-OF-SELECTION.

LOOP AT I_MESSTAB INTO WA_MESSTAB.

CLEAR WF_MESSAGE.

CALL FUNCTION ‘FORMAT_MESSAGE‘

EXPORTING

ID              = WA_MESSTAB-MSGID

LANG            = SY-LANGU

NO              = WA_MESSTAB-MSGNR

V1              = WA_MESSTAB-MSGV1

V2              = WA_MESSTAB-MSGV2

V3              = WA_MESSTAB-MSGV3

V4              = WA_MESSTAB-MSGV4

IMPORTING

MSG             = WF_MESSAGE

EXCEPTIONS

NOT_FOUND       = 1

OTHERS          = 2.

WRITE / WF_MESSAGE .

ENDLOOP.

ULINE.

*&---------------------------------------------------------------------*

*&      Form  BDC_FIELD

*&---------------------------------------------------------------------*

FORM BDC_FIELD USING FNAM TYPE ANY

FVAL TYPE ANY.

CLEAR WA_BDCDATA.

WA_BDCDATA-FNAM = FNAM.

WA_BDCDATA-FVAL = FVAL.

APPEND WA_BDCDATA TO I_BDCDATA.

ENDFORM.                    " BDC_FIELD

*&---------------------------------------------------------------------*

*&      Form  BDC_DYNPRO

*&---------------------------------------------------------------------*

FORM BDC_DYNPRO USING PROGRAM DYNPRO.

CLEAR WA_BDCDATA.

WA_BDCDATA-PROGRAM  = PROGRAM.

WA_BDCDATA-DYNPRO   = DYNPRO.

WA_BDCDATA-DYNBEGIN = ‘X‘.

APPEND WA_BDCDATA TO I_BDCDATA.

ENDFORM.                    " BDC_DYNPRO

三、Deleting material assignments from inspection plans

ISSUE

Recently I had the issue that a material has been wrongly assigned to an inspection plan in a test system. If you remove the assignment in QP02 via the delete button, the system only sets a deletion indicator in table MAPL on this assignment. Hence the material
assignment is still blocking actions like "change of unit of measure". After digging a bit in the internet I found an SAP report for this, which I like to share also here on SCN.

STANDARD SOLUTION

The correct way to get rid of the assignment is to archive the complete inspection plan (I have not found a way so far to just archive a material-task list assignment).

WORKAROUND

Beside using transaction QSR6 (which deletes the complete inspection plan from the database without archiving), there is an SAP report that just deletes material assignments from the database: RCPMAPL1

With entering the task list type (e.g. Q) and the group ID, the report displays all assignments. The ones that should be removed can be marked and deleted. It is advisable to first remove the assignment with QP02, as then the deletion indicator will be visible
in the report. This ensures that you tick the right assignment...

WARNING

As always with these kind of actions: be aware that you bypass most SAP security concepts (like dependency/integrity checks,...) with this action! You will most likely need a special approval from (IT) Managment and you normally have to record these actions
and document them so that an auditor will understand why this had to be done.

时间: 2024-11-09 12:42:44

QP01 BAPI、QP02 BDC的相关文章

LSMW应用

声明:原创作品,转载时请注明文章来自SAP师太技术博客:www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4291458.html LSMW应用... 43 创建项目... 43 步骤详解... 44 第1步:基本属性维护Maintain Object Attributes. 45 第2步:创建数据源结构Maintain Source Struct

SAP Web Service简介与配置方法

p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-size: 10.5000pt } h1 { margin-top: 17.0000pt; margin-bottom: 16.5000pt; margin-left: 0.0000pt; text-indent: 21.0000pt; page-break-after: avoid; text-al

SAP Gateway简介

SAP Gateway在S4/HANA时代的ABAP开发模型中有着重要的地位.SAP Gateway是什么?它对ABAP开发有怎样的影响?可以为我们提供哪些方便?这篇译文将浅要地讨论这些话题. SAP NetWeaver Gateway是一项基于市场标准的技术,它提供了简单的方式以连接SAP软件与设备.环境和平台.这个框架允许实现创新的.以人为本的解决方案,为SAP的商务软件带来了新体验:比如社交与协作环境.手机和笔记本设备以及富internet应用. 简而言之,NetWeaver Gatewa

Portal架构相关技术汇总

一.什么是Portal? Portal技术强调以用户为中心,简而言之就是整合现有企业中遗留的各种系统,使之有统一的入口,实现信息的集中访问. 二.Portal中主要应用的功能 1)SSO-Single Sign-On 主要开源SSO协议有 ①Jasig CAS CAS 就是 Central Authentication Service(中央认证服务)的意思,CAS 实际上这是一种 SSO 协议. ②OpenID OpenID 的创建基于这样一个概念:我们可以通过 URI (又叫 URL 或网站地

Linux命令自己总结

对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面我们就开始了解一下linux目录结构的相关知识. 当 在使用Linux的时候,如果您通过ls –l / 就会发现,在/下包涵很多的目录,比如etc.usr.var.bin ... ... 等目录,而 在这些目录中,我们进去看看,发现也有很多的目录或文件.文件系统在Linux下看上去就象树形结构,所以

BDC、CATT批量数据维护

声明:原创作品,转载时请注明文章来自SAP师太技术博客:www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4291452.html BDC批量数据导入... 19 SM35(包含SHDB)录屏操作... 19 生成程序... 22 带服务器端测试数据文件... 22 编辑服务器端上生成的测试数据文件... 23 CG3Y.CG3Z文件每行字符超长问

销售订单、外向交货单、交货 bapi

转自[http://www.cnblogs.com/elegantok/archive/2009/10/18/1585398.html]***********SALES ORDER INPUT CREATION. REPORT soi. PARAMETERS: p_auart TYPE auart OBLIGATORY.PARAMETERS: p_vkorg TYPE vkorg OBLIGATORY.PARAMETERS: p_vtweg TYPE vtweg OBLIGATORY.PARAM

与SAP集成的接口方式比较:IDOC BAPI RFC 之间的区别

se37写出来的叫function,其中可以远程调用的叫rfc,remote-enabled function,abap语法和输入输出参数就会有一些限制.bapi是sap做好的实现特定业务操作的rfc.idoc是基于sap自己的类似xml格式的文档数据交换的方式.rfc必须在线的方式调用,一般做同步的,idoc基于文档,可以实现异步的. idoc是基于sap自己的类似xml格式的文档数据交换的方式.rfc必须在线的方式调用,一般做同步的,idoc基于文档,可以实现异步的. idoc是系统间利用m

业务对象和BAPI

声明:原创作品,转载时请注明文章来自SAP师太技术博客:www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4291469.html 业务对象和BAPI 59 SAP业务对象(SWO1)... 59 业务对象类型的组成... 62 测试业务对象... 66 BAPI 68 BAPI与ABAP OO.. 70 BAPI的查找... 70 通过业务对象创