- 当ABAP遇见普罗米修斯
Python中的class体内定义方法时,如果没有显式地包含self参数,有时候依然可以被调用。这是一个非常有趣的话题,因为它涉及到对Python中类与对象之间关系的更深理解。要理解为什么这种情况下方法依然能够被调用,我们需要逐步拆解Python类的构造方式以及方法绑定的原理。
- 不喜欢SAP GUI?那试试用Eclipse进行ABAP开发吧
在SAP项目实施中,Brownfield场景是一种迁移策略,尤其用于从SAPERP系统升级到SAPS/4HANA的过程中。Brownfield方法可以理解为“系统转换”模式,它是指在现有系统基础上进行优化和转换,而不是从头开始构建一个全新系统。这种策略可以让企业保留现有的业务流程和系统配置,最大程度地降低业务中断风险,同时利用S/4HANA提供的新功能来实现企业数字化转型。
- 聊聊C语言和ABAP
Python中的class体内定义方法时,如果没有显式地包含self参数,有时候依然可以被调用。这是一个非常有趣的话题,因为它涉及到对Python中类与对象之间关系的更深理解。要理解为什么这种情况下方法依然能够被调用,我们需要逐步拆解Python类的构造方式以及方法绑定的原理。
- 【ABAP】ole2多sheet导入类
Lingarrrd
sapabapabapsap
方便复用,实际就是ole2方式1、SE24创建类2、复制代码至相应位置*----------------------------------------------------------------------**CLASSZCL_TAB_DOCDEFINITIO*------------------------------------------------------------------
- 【ABAP】非OO普通ALV回车事件捕捉方法
Lingarrrd
sapabapabapsap
ALV事件添加参数"回车事件抓取REFRESHgt_events.CLEARgs_events.gs_events-name='CALLER_EXIT'.gs_events-form='CALLER_EXIT'.APPENDgs_eventsTOgt_events.添加参数对用的FORMFORMcaller_exitUSINGe_gridTYPEslis_data_caller_exit."回车事
- 【ABAP】算数表达式
Lingarrrd
abap
根据网上JAVA的代码改的,具体哪篇忘了。。。主要逻辑是中缀表达式转后缀表达式FORMcheck_formulaUSINGp_markCHANGINGp_formula."flag.CHECKerror_flag=''.CHECKp_formulaISNOTINITIAL.*flag='X'.*CLEARerror_flag.REFRESHt_code."解析公式CLEARl.l=STRLEN(p
- 【ABAP】ALV刷新显示及双击ALV跳转事务码的方法
Lingarrrd
sapabapsapabap
ALV刷新显示的方法如下callmethodref1->check_changed_data."检查alv变更callmethodref1->refresh_table_display."刷新显示刷新按钮when'&NTE'.rs_selfield-refresh='X'."REFESHALV如何只选中筛选后的全选或取消全选,方法如下。lt_filter表中就是被筛选后的数据,后续通过不同操作取得
- 【ABAP】BAPI资产凭证自动生成的问题和解决办法
Lingarrrd
abapabapsap
BAPI自动生成资产凭证时,提示错误:EAU33无法找到区域01的帐户‘对应科目:购置价值记帐’。DEBUG中发现函数BAPI_ACC_DOCUMENT_POST中变量obj_key若为空值,就会产生错误。所以添加了下面一段代码。callfunction'OWN_LOGICAL_SYSTEM_GET'"当前逻辑系统importingown_logical_system=l_awsysexcepti
- ABAP OLE导出Excel
a86632678
ABAPsapabap
INCLUDE程序代码如下:TYPE-POOLS:soi,ole2.DATA:lo_applicationTYPEole2_object,lo_workbookTYPEole2_object,lo_workbooksTYPEole2_object,lo_rangeTYPEole2_object,lo_worksheetTYPEole2_object,lo_worksheetsTYPEole2_ob
- SAP预制发票,相关屏幕增强及bapi 增强
IT 与丘
SAP精品资源SAP
SAPABAP]预制发票,相关屏幕增强及bapi增强MIRO:需要对屏幕增强,实现可以输入xref1,xref2.如下图:图中,参考代码1和参考代码2都是通过隐式增强放出来的,具体操作过程请查看链接:XREF1,XREF2,XREF3inMIRO–theultimatesolution|SAPBlogs在下列程序中,写隐式增强
- ABAP 程序间传递数据
Jack.Huangjh
oracle数据库ABAP
ABAP程序间传递数据ASSGINDATA:GV_FIELDNAME1TYPECHAR30VALUE‘(ZPM003)R1’,GV_FIELDNAME2TYPECHAR30VALUE‘(ZPM003)GT_OAJG[]’,ABAP提供了IMPORT/EXPORT和SET/GETPARAMETER语句,可对用户内存/服务器内存/数据库进行存储和访问。不过可能很多人对此还不是很了解,下面我们通过实例来
- IS BOUND, IS INITIAL 和 IS ASSIGNED的区别
Harryjing2018
ABAP其他
文章目录1Introduction2Explaination1IntroductionThesetsofthesethreepredicateexpressionscaneasilyconfuseABAPnewbies,iftheexplanationforthemincorrespondingABAPhelpdocumentarenotseriouslytaken.2ExplainationTh
- ABAP程序效率优化系列之④——开发优化之数据库(ST05那些事儿)
Leo_SDU
ABAP程序效率优化系列文章历史ABAP程序效率优化系列之①——业务层面的优化ABAP程序效率优化系列之②——开发优化之ABAP时间ABAP程序效率优化系列之③——开发优化之读取数据库写在前面1、读取数据库优化的这两篇(上一篇和这一篇),对于HANA来说意义不大,一直在HANA数据库上进行开发的朋友请忽略2、本文中的所有例子都是ORACLE数据库上的3、大家在测试时,如果遇到与我不同的测试结果,也
- 关于 SAP ABAP 里的 x 数据类型
sapabap
看这行代码:DATA:codeTYPExLENGTH2.ABAP代码解析在SAP的ABAP编程语言中,DATA关键字用于声明变量。这行代码DATA:codeTYPExLENGTH2.声明了一个名为code的变量,具体特征如下:TYPEx表示变量code是一个十六进制类型。LENGTH2指定这个变量的长度为2个字节。十六进制类型的变量通常用于处理二进制数据,比如文件、加密数据或是系统级的操作,其中对
- ABAP 如何把 unicode 代码点转换成字符
sapabap
答案:data:char.char=|{cl_abap_conv_in_ce=>uccp(code)WIDTH=1}|.这段ABAP代码主要用于将一个给定的Unicode代码点转换成其对应的字符,并且限制输出的宽度为一个字符。这里,cl_abap_conv_in_ce=>uccp(code)是调用一个类方法,用于转换Unicode代码点到字符,而WIDTH=1确保转换结果的宽度限制为1。变量cha
- native sql -ABAP开发从入门到精通笔记
guduchangjian
sql笔记数据库
NativeSQLSQL概要OPENSQL读取数据SelectSelect...Selectsignle....where.列去重数据Selectdistinct...where...当取多条数据时,select结果会保存到内表中。Select...into...语句的结果不是保存在内保中,而是保存到了wa中,这里就要加一个endselect语句。【如果是selectintowa,就要使用ends
- ABAP 关键字 READ TEXTPOOL 的用法介绍
sapabap
源代码:reportz.PARAMETERS:a1typestring,a2typestring.DATA:PROGRAMLIKESY-REPIDVALUE'ZLOCAL',TABLIKETEXTPOOLOCCURS50WITHHEADERLINE.READTEXTPOOLPROGRAMINTOTABLANGUAGESY-LANGU.BREAK-POINT.这个报表有两个参数,文本如下:执行报表后
- s l t
幕光_fafe
SLT的中文名称:SAP布局转换复制服务器。英文名称:SAPLT(LandscapeTransformation)ReplicationServer在以SAP系统作为主要ERP的企业中,不同系统之间的数据库数据同步是个重要的工作。对于这种需求,除了开发ABAP接口之外,也有高效的工具可用。SLT就是其中之一。SLT是SAP的第一个ETL(Extract-Transform-Load)工具,它允许实
- SAP ABAP 里如何高效找到修改某个数据库表字段的 ABAP 程序的三种思路介绍试读版
sapsaprfcabap
我的知识星球里,有朋友提问:公司的SAP中,总部开发了一个功能去更新采购订单行上的收货地址字段EKPO-ADRN2,我尝试着去Debug,但找不到最终是哪段程序更新了这一个字段。SAT也用了,也发现不了。不过我对SAT也不熟。有什么思路可以快速Debug找到那段更新程序不?其实这种需求有很多种思路可以实现。本文介绍笔者知道的三种。欢迎大家补充更多的方法。详细内容如下。本文介绍了三种不同的方法来实现
- XSL 转换与 ABAP 数据的关系
abapsaprfcsap
对于使用ABAP数据作为源的转换,ABAP数据首先被序列化为具有SAP标准transformationID的规范XML表示形式(canonicalXMLrepresentation,简称asXML)。然后,该中间结果将用作XSL转换的实际源。如果在CALLTRANSFORMATION中调用转换ID本身,则中间结果将会包含在直接输出中。SAP的标准transformationID在SAP系统中,tr
- 聊聊 SAP ABAP 系统里除了 TADIR 之外的其他注册表试读版
本教程之前的文章,介绍了SAPABAP系统里最重要的注册表TADIR:131.聊聊SAPABAP系统的ABAP对象注册表TADIR本文继续聊SAPABAP系统里,除了TADIR之外的其他注册表。这些注册表有一定的命名规则,即T*DIR,*代表一个英文字母。DIR可以理解成Directory,目录之意。本文详细介绍这些注册表的用途。
- 如何使用SAP HANA Studio的PlanViz分析CDS view性能问题
JerryWang_汪子熙
Part1–howtotestodataservicegeneratedbyCDSviewPart2–whatobjectsareautomaticallygeneratedafteryouactivateoneCDSviewPart3–howisviewsourceinEclipseconvertedtoABAPviewinthebackendPart4–howdoesannotation@OD
- ABAP 如何解析 JSON 数据试读版
JerryWang_汪子熙
零基础ABAP学习教程系列文章的目录ABAP标准培训教程BC400学习笔记之一:ABAP服务器的架构和一个典型的ABAP程序结构介绍ABAP标准培训教程BC400学习笔记之二:Cross-client和Client-specific的区别ABAP标准培训教程BC400学习笔记之三:ABAP编程语言的特性和基本构成要素ABAP标准培训教程BC400学习笔记之四:ABAP编程语言的数据类型ABAP标准
- 如何查找BAPI SD_SALESDOCUMENT_CHANGE里字段对应的数据库存储表
JerryWang_汪子熙
BAPI函数SD_SALESDOCUMENT_CHANGE可以让我们很方便地通过ABAP代码来修改SalesOrder。其输入参数ORDER_HEADER_IN的类型是BAPISDHD1,里面包含了这个字段,比如SERV_DATE:servicerendereddate。如果想知道一个SalesOrder的SERV_DATE字段存储在哪张表,该怎么找呢?注意上图提示,SERV_DATE的类型是FB
- Jerry的演讲预告:一个月的住院经历,我悟到了哪些和程序员职场发展相关的心得
JerryWang_汪子熙
时间过得很快,一转眼我出院后上班已经快两个月了。最近有公众号的关注者给我留言,询问一些ABAP开发的细节问题。不巧的是,我八月份返回公司之后,领了新的开发电脑,SAPGUI和ABAPDevelopmentTool还没有时间安装,因此现在手上没有ABAP开发环境了,也没有办法登进系统查看代码来解答这些朋友的问题,见谅。不过ABAP是我在SAP的初恋,等我有空闲时间,我还是会把上面提到的这两个ABAP
- 什么是 SAP ABAP 的 SYSTEM_EXIT
sapabap
ABAP(AdvancedBusinessApplicationProgramming)是一种由SAP开发的高级程序设计语言,用于开发SAP应用程序。在ABAP编程中,SYSTEM-EXIT是一个重要的概念,它与事务码的处理和SAP标准程序的增强有关。SYSTEM-EXIT是一个特殊的语句,用于控制程序的执行流程,特别是在与事务码相关的场景中。在SAP中,事务码用于调用程序、报表、屏幕等。每个事务
- 31. 如何让 ABAP 服务器能够响应通过浏览器发起的自定义 HTTP 请求
汪子熙
零基础快速学习ABAPsapABAPNetweaver服务器思爱普
本教程迄今为止的所有步骤,我们都是在SAPGUI里运行ABAP程序。在实际项目中,也存在很多ABAP服务器需要响应用户通过浏览器发起的请求。本文就来详细介绍如何在SAPGUI里进行开发,让你的ABAP服务器能够响应用户使用浏览器发起的需求。本步骤我们使用SICF和SE24这两个事物码完成开发。首先看一下本步骤完成后实现的效果。浏览器访问https://:/sap/crm/csdn?sap-clie
- 138. 第三方系统或者工具通过 HTTP 请求发送给 ABAP 系统的数据,应该如何解析
汪子熙
零基础快速学习ABAPhttp思爱普SAPABAPNetWeaver
本教程第37篇文章,我们介绍了如何在SAPABAP系统SICF事务码里,开发一段ABAP代码,用来响应通过浏览器或者第三方工具,比如curl,Postman发起的HTTP请求。31.如何让ABAP服务器能够响应通过浏览器发起的自定义HTTP请求在实际的ABAP集成项目中,这种方式非常使用。比如客户的第三方系统或者应用,通过HTTP协议,向ABAP系统发起数据交互请求,我们开发的ABAP程序,就可以
- SAP ABAP 系统里事务码 SMICM 的作用
SMICM截图如下:SAPABAP系统中的事务码SMICM是用来访问InternetCommunicationManager(ICM)的监视。ICM是SAP系统中负责HTTP、SMTP、或者HTTPS通信的组件。在SMICM事务中,你可以看到关于ICM的各种信息,例如线程信息、服务信息、连接信息和缓存信息等。在服务列表中,KeepAlive是一个重要的参数。在计算机网络中,KeepAlive机制被
- 如何使用动态 ABAP 程序生成技术,对 ABAP 系统标准的报表行为进行微调试读版
本教程前面有一篇文章,我们介绍了如何使用外部传入的字符串,动态生成ABAP报表实例,并执行的方法:120.SAPABAP动态生成ABAP程序并动态调用的例子代码我们可以看到在第120个例子里,我们使用硬编码拼接起来的字符串,来模拟外部传入的ABAP程序的代码源头。笔者的知识星球里,有朋友提问,能不能从本地ABAP系统,提取某个标准ABAP程序的代码源,然后基于这些代码源进行微调,动态生成新的ABA
- PHP,安卓,UI,java,linux视频教程合集
cocos2d-x小菜
javaUIPHPandroidlinux
╔-----------------------------------╗┆
- 各表中的列名必须唯一。在表 'dbo.XXX' 中多次指定了列名 'XXX'。
bozch
.net.net mvc
在.net mvc5中,在执行某一操作的时候,出现了如下错误:
各表中的列名必须唯一。在表 'dbo.XXX' 中多次指定了列名 'XXX'。
经查询当前的操作与错误内容无关,经过对错误信息的排查发现,事故出现在数据库迁移上。
回想过去: 在迁移之前已经对数据库进行了添加字段操作,再次进行迁移插入XXX字段的时候,就会提示如上错误。
&
- Java 对象大小的计算
e200702084
java
Java对象的大小
如何计算一个对象的大小呢?
 
- Mybatis Spring
171815164
mybatis
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
CustomerService userService = (CustomerService) ac.getBean("customerService");
Customer cust
- JVM 不稳定参数
g21121
jvm
-XX 参数被称为不稳定参数,之所以这么叫是因为此类参数的设置很容易引起JVM 性能上的差异,使JVM 存在极大的不稳定性。当然这是在非合理设置的前提下,如果此类参数设置合理讲大大提高JVM 的性能及稳定性。 可以说“不稳定参数”
- 用户自动登录网站
永夜-极光
用户
1.目标:实现用户登录后,再次登录就自动登录,无需用户名和密码
2.思路:将用户的信息保存为cookie
每次用户访问网站,通过filter拦截所有请求,在filter中读取所有的cookie,如果找到了保存登录信息的cookie,那么在cookie中读取登录信息,然后直接
- centos7 安装后失去win7的引导记录
程序员是怎么炼成的
操作系统
1.使用root身份(必须)打开 /boot/grub2/grub.cfg 2.找到 ### BEGIN /etc/grub.d/30_os-prober ### 在后面添加 menuentry "Windows 7 (loader) (on /dev/sda1)" { 
- Oracle 10g 官方中文安装帮助文档以及Oracle官方中文教程文档下载
aijuans
oracle
Oracle 10g 官方中文安装帮助文档下载:http://download.csdn.net/tag/Oracle%E4%B8%AD%E6%96%87API%EF%BC%8COracle%E4%B8%AD%E6%96%87%E6%96%87%E6%A1%A3%EF%BC%8Coracle%E5%AD%A6%E4%B9%A0%E6%96%87%E6%A1%A3 Oracle 10g 官方中文教程
- JavaEE开源快速开发平台G4Studio_V3.2发布了
無為子
AOPoraclemysqljavaeeG4Studio
我非常高兴地宣布,今天我们最新的JavaEE开源快速开发平台G4Studio_V3.2版本已经正式发布。大家可以通过如下地址下载。
访问G4Studio网站
http://www.g4it.org
G4Studio_V3.2版本变更日志
功能新增
(1).新增了系统右下角滑出提示窗口功能。
(2).新增了文件资源的Zip压缩和解压缩
- Oracle常用的单行函数应用技巧总结
百合不是茶
日期函数转换函数(核心)数字函数通用函数(核心)字符函数
单行函数; 字符函数,数字函数,日期函数,转换函数(核心),通用函数(核心)
一:字符函数:
.UPPER(字符串) 将字符串转为大写
.LOWER (字符串) 将字符串转为小写
.INITCAP(字符串) 将首字母大写
.LENGTH (字符串) 字符串的长度
.REPLACE(字符串,'A','_') 将字符串字符A转换成_
- Mockito异常测试实例
bijian1013
java单元测试mockito
Mockito异常测试实例:
package com.bijian.study;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.junit.Assert;
import org.junit.Test;
import org.mockito.
- GA与量子恒道统计
Bill_chen
JavaScript浏览器百度Google防火墙
前一阵子,统计**网址时,Google Analytics(GA) 和量子恒道统计(也称量子统计),数据有较大的偏差,仔细找相关资料研究了下,总结如下:
为何GA和量子网站统计(量子统计前身为雅虎统计)结果不同?
首先:没有一种网站统计工具能保证百分之百的准确出现该问题可能有以下几个原因:(1)不同的统计分析系统的算法机制不同;(2)统计代码放置的位置和前后
- 【Linux命令三】Top命令
bit1129
linux命令
Linux的Top命令类似于Windows的任务管理器,可以查看当前系统的运行情况,包括CPU、内存的使用情况等。如下是一个Top命令的执行结果:
top - 21:22:04 up 1 day, 23:49, 1 user, load average: 1.10, 1.66, 1.99
Tasks: 202 total, 4 running, 198 sl
- spring四种依赖注入方式
白糖_
spring
平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。依赖注入的另一种说法是“控制反转”,通俗的理解是:平常我们new一个实例,这个实例的控制权是我
- angular.injector
boyitech
AngularJSAngularJS API
angular.injector
描述: 创建一个injector对象, 调用injector对象的方法可以获得angular的service, 或者用来做依赖注入. 使用方法: angular.injector(modules, [strictDi]) 参数详解: Param Type Details mod
- java-同步访问一个数组Integer[10],生产者不断地往数组放入整数1000,数组满时等待;消费者不断地将数组里面的数置零,数组空时等待
bylijinnan
Integer
public class PC {
/**
* 题目:生产者-消费者。
* 同步访问一个数组Integer[10],生产者不断地往数组放入整数1000,数组满时等待;消费者不断地将数组里面的数置零,数组空时等待。
*/
private static final Integer[] val=new Integer[10];
private static
- 使用Struts2.2.1配置
Chen.H
apachespringWebxmlstruts
Struts2.2.1 需要如下 jar包: commons-fileupload-1.2.1.jar commons-io-1.3.2.jar commons-logging-1.0.4.jar freemarker-2.3.16.jar javassist-3.7.ga.jar ognl-3.0.jar spring.jar
struts2-core-2.2.1.jar struts2-sp
- [职业与教育]青春之歌
comsci
教育
每个人都有自己的青春之歌............但是我要说的却不是青春...
大家如果在自己的职业生涯没有给自己以后创业留一点点机会,仅仅凭学历和人脉关系,是难以在竞争激烈的市场中生存下去的....
&nbs
- oracle连接(join)中使用using关键字
daizj
JOINoraclesqlusing
在oracle连接(join)中使用using关键字
34. View the Exhibit and examine the structure of the ORDERS and ORDER_ITEMS tables.
Evaluate the following SQL statement:
SELECT oi.order_id, product_id, order_date
FRO
- NIO示例
daysinsun
nio
NIO服务端代码:
public class NIOServer {
private Selector selector;
public void startServer(int port) throws IOException {
ServerSocketChannel serverChannel = ServerSocketChannel.open(
- C语言学习homework1
dcj3sjt126com
chomework
0、 课堂练习做完
1、使用sizeof计算出你所知道的所有的类型占用的空间。
int x;
sizeof(x);
sizeof(int);
# include <stdio.h>
int main(void)
{
int x1;
char x2;
double x3;
float x4;
printf(&quo
- select in order by , mysql排序
dcj3sjt126com
mysql
If i select like this:
SELECT id FROM users WHERE id IN(3,4,8,1);
This by default will select users in this order
1,3,4,8,
I would like to select them in the same order that i put IN() values so:
- 页面校验-新建项目
fanxiaolong
页面校验
$(document).ready(
function() {
var flag = true;
$('#changeform').submit(function() {
var projectScValNull = true;
var s ="";
var parent_id = $("#parent_id").v
- Ehcache(02)——ehcache.xml简介
234390216
ehcacheehcache.xml简介
ehcache.xml简介
ehcache.xml文件是用来定义Ehcache的配置信息的,更准确的来说它是定义CacheManager的配置信息的。根据之前我们在《Ehcache简介》一文中对CacheManager的介绍我们知道一切Ehcache的应用都是从CacheManager开始的。在不指定配置信
- junit 4.11中三个新功能
jackyrong
java
junit 4.11中两个新增的功能,首先是注解中可以参数化,比如
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runn
- 国外程序员爱用苹果Mac电脑的10大理由
php教程分享
windowsPHPunixMicrosoftperl
Mac 在国外很受欢迎,尤其是在 设计/web开发/IT 人员圈子里。普通用户喜欢 Mac 可以理解,毕竟 Mac 设计美观,简单好用,没有病毒。那么为什么专业人士也对 Mac 情有独钟呢?从个人使用经验来看我想有下面几个原因:
1、Mac OS X 是基于 Unix 的
这一点太重要了,尤其是对开发人员,至少对于我来说很重要,这意味着Unix 下一堆好用的工具都可以随手捡到。如果你是个 wi
- 位运算、异或的实际应用
wenjinglian
位运算
一. 位操作基础,用一张表描述位操作符的应用规则并详细解释。
二. 常用位操作小技巧,有判断奇偶、交换两数、变换符号、求绝对值。
三. 位操作与空间压缩,针对筛素数进行空间压缩。
&n
- weblogic部署项目出现的一些问题(持续补充中……)
Everyday都不同
weblogic部署失败
好吧,weblogic的问题确实……
问题一:
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: URL [zip:E:/weblogic/user_projects/domains/base_domain/serve
- tomcat7性能调优(01)
toknowme
tomcat7
Tomcat优化: 1、最大连接数最大线程等设置
<Connector port="8082" protocol="HTTP/1.1"
useBodyEncodingForURI="t
- PO VO DAO DTO BO TO概念与区别
xp9802
javaDAO设计模式bean领域模型
O/R Mapping 是 Object Relational Mapping(对象关系映射)的缩写。通俗点讲,就是将对象与关系数据库绑定,用对象来表示关系数据。在O/R Mapping的世界里,有两个基本的也是重要的东东需要了解,即VO,PO。
它们的关系应该是相互独立的,一个VO可以只是PO的部分,也可以是多个PO构成,同样也可以等同于一个PO(指的是他们的属性)。这样,PO独立出来,数据持