ABAPSCDO文档变更历史.docx
《ABAPSCDO文档变更历史.docx》由会员分享,可在线阅读,更多相关《ABAPSCDO文档变更历史.docx(19页珍藏版)》请在冰豆网上搜索。
![ABAPSCDO文档变更历史.docx](https://file1.bdocx.com/fileroot1/2023-2/25/03fc9ec4-9507-4e89-865c-c8d252b76fc5/03fc9ec4-9507-4e89-865c-c8d252b76fc51.gif)
ABAPSCDO文档变更历史
点击创建
根据需要保存到本地或者使用一个传输请求号
输入相关数据
回车进入全屏编辑
选择是继续
功能组根据开发的命名或者需要填入合适的,以便生成文档对象更新函数
其他的例如处理类型,是否生成面向对象的数据(ABAPOODATA)自己根据实际需要选择,这里就简单得填入功能组
点生成
如果函数组不存在回提示生成函数组
点是继续,生成下列信息
注意,这个时候仍未真正生成,需要保存才能开始真正生成,我们这里从开发角度只关心会生成的函数模块,这个函数名将是我们代码中会用到的。
保存
注意界面信息没什么变化,只是提示信息有所改变
YZPM_ITEM和YZPM_TABLE两个结构按需要产生,前缀由之前输入的信息决定
函数ZPMDATA_WRITE_DOCUMENT已经可以被我们使用了
返回上一屏幕,这里可以点生成信息,也可以看到部分生成的信息
退出后就可以开始测试函数
其他系统函数如下:
(如果不使用生成的函数,可以考虑用下面这些程序自己写一个类似的功能)
CHANGEDOCUMENT_CLOSE完成具有对象特征的文档创建的更改
CHANGEDOCUMENT_DELETE删除修改的文档(不依赖客户,不注册)
CHANGEDOCUMENT_DELETE_V2
CHANGEDOCUMENT_DISPLAYDisplaychangedocuments
CHANGEDOCUMENT_DISPLAY_ALL_BO
CHANGEDOCUMENT_DISPLAY_LOAN
CHANGEDOCUMENT_INSERT_NUMBER
CHANGEDOCUMENT_OPEN启动为对象特性创建更改文件
CHANGEDOCUMENT_READ读取并编辑更改的文档
CHANGEDOCUMENT_READ_HDRS_ONLY
CHANGEDOCUMENT_READ_HEADERSChangedocument:
Readchangedocumentheader
CHANGEDOCUMENT_READ_HEADERS_N
CHANGEDOCUMENT_READ_WITHOUT_ED
CHANGEDOCUMENT_UNICODE_CHECK
CHANGEDOCU_ARCHIVE_OBJECT改变文档/存档:
向存档传送对象
代码如下:
REPORTZTEST9999.
TABLES:
ZPM_TABLE,"头数据表
ZPM_ITEM."行项目表
DATA:
XZPM_ITEMLIKEYZPM_ITEMOCCURS0WITHHEADERLINE.
DATA:
YZPM_ITEMLIKEYZPM_ITEMOCCURS0WITHHEADERLINE.
DATA:
XZPM_TABLELIKEYZPM_TABLEOCCURS0WITHHEADERLINE.
DATA:
YZPM_TABLELIKEYZPM_TABLEOCCURS0WITHHEADERLINE.
DATA:
OBJLIKECDHDR-OBJECTID.
DATA:
CDTXTLIKECDTXTOCCURS0WITHHEADERLINE.
SORT内表(头数据表)BYZPMNO.
LOOPAT内表(头数据表).
ATNEWZPMNO.
REFRESH:
YZPM_ITEM,XZPM_ITEM.
REFRESH:
YZPM_TABLE,XZPM_TABLE.
ENDAT.
*存放当前内表中的数据值
MOVE-CORRESPONDING内表(头数据表)TOXZPM_TABLE.
APPENDXZPM_TABLE.
LOOPAT内表(行项目表)WEHREZPMNO=内表(头数据表)-ZPMNO.
MOVE-CORRESPONDING内表(行项目表)TOXZPM_ITEM.
APPENDXZPM_ITEM.
ENDLOOP.
*存放数据库表中与上面内表存放数据关键字一致的数据值
SELECT*INTOCORRESPONDINGFIELDSOFYZPM_TABLEFROMZPM_TABLE
WHEREZPMNO=内表(头数据表)-ZPMNO.
SELECT*INTOCORRESPONDINGFIELDSOFYZPM_ITEMFROMZPM_ITEM
WHEREZPMNO=内表(头数据表)-ZPMNO.
ATENDOFZPMNO.
CALLFUNCTION'ZPMDATA_WRITE_DOCUMENT'
EXPORTING
OBJECTID=OBJ"如果参照ZPM_TABLE-ZPMNO更新就把这个字段值赋到这里
TCODE=SY-TCODE
UTIME=SY-UZEIT
UDATE=SY-DATUM
USERNAME=SY-UNAME
*PLANNED_CHANGE_NUMBER=''
*OBJECT_CHANGE_INDICATOR='U'"U更新I插入E删除(单字段文档)D删除J插入(单字段文档)
*PLANNED_OR_REAL_CHANGES=''"U更新I插入E删除(单字段文档)D删除J插入(单字段文档)
*NO_CHANGE_POINTERS=''"U更新I插入E删除(单字段文档)D删除J插入(单字段文档)
*UPD_ICDTXT_ZPMDATA=''"U更新I插入E删除(单字段文档)D删除J插入(单字段文档)
UPD_ZPM_ITEM='U'"U更新I插入E删除(单字段文档)D删除J插入(单字段文档)
UPD_ZPM_TABLE='U'"U更新I插入E删除(单字段文档)D删除J插入(单字段文档)
TABLES
ICDTXT_ZPMDATA=CDTXT
*通过比对X和Y这2个不同字母开始内表的数据值来做更新
XZPM_ITEM=XZPM_ITEM"存放当前内表中的数据值
YZPM_ITEM=YZPM_ITEM"存放数据库表中与上面内表存放数据关键字一致的数据值
XZPM_TABLE=XZPM_TABLE"存放当前内表中的数据值
YZPM_TABLE=YZPM_TABLE"存放数据库表中与上面内表存放数据关键字一致的数据值
.
ENDAT.
ENDLOOP.
下面的代码是显示修改历史的代码:
REPORTZTEST9999.
*这里只考虑Headline表的文档变更历史
TABLES:
ZPM_TABLE,"头数据表
ZPM_ITEM."行项目表
DATA:
EDITPOSLIKECDREDOCCURS0WITHHEADERLINE.
DATA:
OBJLIKECDHDR-OBJECTID.
DATA:
WK_REPIDTYPEREPID.
PARAMETERS:
P_ZPMNOLIKEZPM_TABLE-ZPMNOOBLIGATORY.
PARAMETERS:
P_OBJCLLIKECDHDR-OBJECTCLASOBLIGATORYDEFAULT'ZPMDATA'."输入创建的对象号
PARAMETERS:
P_TABKEYLIKECDPOS-TABKEY.
SELECTSINGLE*FROMZPM_TABLEWHEREZPMNO=P_ZPMNO.
CHECKSY-SUBRC=0.
OBJ=P_ZPMNO.
CONCATENATESY-MANDTZPM_TABLE-ZPMNOINTOP_TABKEY.
CALLFUNCTION'CHANGEDOCUMENT_READ'
EXPORTING
*ARCHIVE_HANDLE=0
*CHANGENUMBER=''
*DATE_OF_CHANGE='00000000'
OBJECTCLASS=P_OBJCL
OBJECTID=OBJ
TABLEKEY=P_TABKEY
*TABLENAME=''
*TIME_OF_CHANGE='000000'
*USERNAME=''
*LOCAL_TIME=''
*TABLEKEY254=''
*KEYGUID=''
*DATE_UNTIL='99991231'
*TIME_UNTIL='235959'
*KEYGUID_STR=''
*READ_CHANGEDOCU=''
*IMPORTING
*ET_CDRED_STR=
TABLES
EDITPOS=EDITPOS
EXCEPTIONS
NO_POSITION_FOUND=1
WRONG_ACCESS_TO_ARCHIVE=2
TIME_ZONE_CONVERSION_ERROR=3
OTHERS=4.
IFSY-SUBRC<>0.
EXIT.
ENDIF.
WK_REPID=P_OBJCL.
CALLFUNCTION'CHANGEDOCUMENT_DISPLAY'
EXPORTING
I_APPLICATIONID=WK_REPID
*IS_LAYOUT=
*IS_VARIANT=
*FLG_AUTOCONDENSE=''
*I_CB_PROGRAM=
I_OBJECTCLAS=P_OBJCL
*IS_SEL_HIDE=
*I_SCREEN_START_LINE=0
*I_SCREEN_START_COLUMN=0
*I_SCREEN_END_LINE=0
*I_SCREEN_END_COLUMN=0
*I_CALLBACK_PF_STATUS_SET=''
*IT_EVENTS=
*IT_CDRED_STR=
TABLES
I_CDRED=EDITPOS.