从2018年3月14日到2018年3月14日之间不存在信息类型P0007

2020-09-23 17:10发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


为了通过z程序上传时间事件,已编写了以下代码

报告ZHRTIME4。

参数:P_FILE类似RLGRAP-FILENAME强制性。
信息类型:2011,0050。

*将表上载数据到
的内部表数据:开始 IT_DATATAB发生0,
ROW(500)C类型,
IT_DATATAB的结尾。

数据:GD_FILE类型STRING。

*数据表的文本版本
类型: T_UPLOADTXT的开始,
PERNR类型P0000-PERNR,
日期类型BEGDA,
时间类型TIMS,
T_UPLOADTXT的结尾。

类型:T_UPLOADTXT1的开始,
PERNR P0032-PNALT类型,
日期类型BEGDA,
时间类型TIMS,
TIM_TYPE类型TEVEN-SATZA,
T_UPLOADTXT1的结尾。

类型:T_UPLOADTXT2的开始,
PERNR类型P0000-PERNR,
日期类型BEGDA,
T_UPLOADTXT2的结尾。

数据:WA_STRING(255)类型C,
WA_UPLOADTXT类型T_UPLOADTXT,
IT_T_UPLOADTXT类型表 ,
WA_T247 T247型表,
IT_T247 T247型表,
IT_UPLOAD1 T_UPLOADTXT型表,
IT_UPLOAD3 T_UPLOADTXT2型表,
IT_UPLOAD4 T_UP型表 LOADTXT,
WA_UPLOAD类型T_UPLOADTXT,
WA_UPLOAD2类型T_UPLOADTXT2,
WA_UPLOAD3类型T_UPLOADTXT1,
PA0032的IT_P032类型表,
WA_P032。 br>在P_FILE值请求的选择屏幕上。
调用功能'WS_FILENAME_GET'
导出
DEF_FILENAME = P_FILE
MASK =',*。TXT。'
MODE ='O '
TITLE ='上传文件'(078)
导入
文件名= P_FILE
例外情况
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
其他=5。

选择开始。

GD_FILE = P_FILE。

选择*从T247到表IT_T247中,其中SPRAS ='EN'。

数据:W_DATE类型CHAR15,
W_DAY类型CHAR2,
W_MON类型CHAR3,
W_YEAR类型CHAR4,
W_TIME类型CHAR8。
通话功能'GUI_UPLOAD'
导出
FILENAME = GD_FILE
FILETYPE ='ASC'
表格
DATA_TAB = IT_DATATAB" ITBL_IN_RECORD []
例外情况
FILE_OPEN_ERROR = 1
其他= 2 。
如果SY-SUBRC NE 0.
ELSE。
遍历IT_DATATAB。
清除:WA_STRING,WA_UPLOADTXT。
WA_STRING = IT_DATATAB。
WA_UPLOADTXT-PERNR = WA_STRING + 0( 10)。
W_DATE = WA_STRING + 10(11)。
在'-'处将W_DATE拆分为W_DAY W_MON W_YEAR。
用密钥KTX = W_MON将表IT_T247读入WA_T247。
如果是SY-SUBRC 均衡器0.
IF WA_T247-MNR LT 10.
*将'0'WA_T247-MNR合并为WA_T247-MNR。
ENDIF。
ENDIF。
合并W_YEAR WA_T247-MNR W_DATE并入WA_UPLOADTXT -DATE。
清除:WA_T247,W_DAY,W_YEAR,W_DATE。
W_TIME = WA_STRING + 22(8)。
用空格替换W:时所有':'的出现。
WA_UPLOADTXT-TIME = W_TIME。
追加WA_UPLOADTXT到IT_UPLOAD。
清除:WA_UPLOADTXT。
ENDLOOP。
ENDIF。

SORT IT_UPLOAD按PERNR日期时间排序。

数据:标签类型 SY-TABIX,
I型线。

描述表IT_UPLOAD线。

将IT_UPLOAD循环到WA_UPLOAD。
将WA_UPLOAD对应移动到WA_UPLOAD3。
追加WA_UPLOAD3 至 IT_UPLOAD3。
清除:WA_UPLOAD3,WA_UPLOAD。
ENDLOOP。

从IT_UPLOAD3删除相邻的重复项。

在IT_UPLOAD3处将LOOP循环到WA_UPLOAD3。 = WA_UPLOAD3-PERNR和DATE = WA_UPLOAD3-DATE。
追加WA_UPLOAD到IT_UPLOAD4。
清除:WA_UPLOAD。
ENDLOOP。

按PERNR日期时间排序IT_UPLOAD4。
描述表IT_UPLOAD4。 LINES LINES LINES。
将表IT_UPLOAD4读入WA_UPLOAD索引1。
如果SY-SUBRC EQ0。
将WA_UPLOAD对应移动到WA_UPLOAD1。
WA_UPLOAD1-TIM_TYPE ='P10'。
APPEND WA_UPLOAD1 到IT_UPLOAD1。
清除:WA_UPLOAD1。
ENDIF。

清除:WA_UPLOAD。
将表IT_UPLOAD4读入WA_UPLOAD索引行。
如果SY-SUBRC EQ 0.
移动 -对应WA_UPLOAD到WA_UPLOAD1。
WA_UPLOAD1-TIM_TYPE ='P20'。
将WA_UPLOAD1附加到IT_UPLOAD1。
清除:WA_UPLOAD1。
ENDIF。
清除:WA_UPLOAD。
刷新:IT_UPLOAD4 。
ENDLOOP。

数据:LS_P2011 TYPE P2011,
IT_ 返回类型BAPIRETURN1,
BAPIPAKEY类型BAPIPAKEY。

如果未初始化IT_UPLOAD1 []。

从* PA0032
中选择*到表IT_P032
中,用于IT_UPLOAD1中的所有条目< br> PNALT EQ IT_UPLOAD1-PERNR。

ENDIF。


将IT_UPLOAD1插入WA_UPLOAD1。

用键PNALT = WA_UPLOAD1-PERNR将表IT_P032读入WA_P032。 。
如果SY-SUBRC EQ 0.
WA_UPLOAD1-PERNR = WA_P032-PNALT。
ENDIF。

清除:WA_P032。

LS_P2011-PERNR = WA_P032-PERNR 。
LS_P2011-LDATE = WA_UPLOAD1-DATE。
LS_P2011-LTIME = WA_UPLOAD1-TIME。
LS_P2011-SATZA = WA_UPLOAD1-TIM_TYPE。

通话功能'BAPI_EMPLOYEE_ENQUEUE'
导出< br> NUMBER = WA_P032-PERNR



通话功能'HR_INFOTYPE_OPERATION'
导出
INFTY ='2011'
NUMBER = WA_P032-PERNR
记录= LS_P2011
操作='INS'
导入
返回= IT_RETURN



通话功能'BAPI_EMPLOYEE_DEQUEUE'
导出
编号= WA_P032-PE RNR


清除:WA_UPLOAD1。

ENDLOOP。

尽管从语法上讲是正确的,但系统抛出一个错误,指出该时间段内不存在P0007。

已检查P0007信息类型并得到维护。

请帮助

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


为了通过z程序上传时间事件,已编写了以下代码

报告ZHRTIME4。

参数:P_FILE类似RLGRAP-FILENAME强制性。
信息类型:2011,0050。

*将表上载数据到
的内部表数据:开始 IT_DATATAB发生0,
ROW(500)C类型,
IT_DATATAB的结尾。

数据:GD_FILE类型STRING。

*数据表的文本版本
类型: T_UPLOADTXT的开始,
PERNR类型P0000-PERNR,
日期类型BEGDA,
时间类型TIMS,
T_UPLOADTXT的结尾。

类型:T_UPLOADTXT1的开始,
PERNR P0032-PNALT类型,
日期类型BEGDA,
时间类型TIMS,
TIM_TYPE类型TEVEN-SATZA,
T_UPLOADTXT1的结尾。

类型:T_UPLOADTXT2的开始,
PERNR类型P0000-PERNR,
日期类型BEGDA,
T_UPLOADTXT2的结尾。

数据:WA_STRING(255)类型C,
WA_UPLOADTXT类型T_UPLOADTXT,
IT_T_UPLOADTXT类型表 ,
WA_T247 T247型表,
IT_T247 T247型表,
IT_UPLOAD1 T_UPLOADTXT型表,
IT_UPLOAD3 T_UPLOADTXT2型表,
IT_UPLOAD4 T_UP型表 LOADTXT,
WA_UPLOAD类型T_UPLOADTXT,
WA_UPLOAD2类型T_UPLOADTXT2,
WA_UPLOAD3类型T_UPLOADTXT1,
PA0032的IT_P032类型表,
WA_P032。 br>在P_FILE值请求的选择屏幕上。
调用功能'WS_FILENAME_GET'
导出
DEF_FILENAME = P_FILE
MASK =',*。TXT。'
MODE ='O '
TITLE ='上传文件'(078)
导入
文件名= P_FILE
例外情况
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
其他=5。

选择开始。

GD_FILE = P_FILE。

选择*从T247到表IT_T247中,其中SPRAS ='EN'。

数据:W_DATE类型CHAR15,
W_DAY类型CHAR2,
W_MON类型CHAR3,
W_YEAR类型CHAR4,
W_TIME类型CHAR8。
通话功能'GUI_UPLOAD'
导出
FILENAME = GD_FILE
FILETYPE ='ASC'
表格
DATA_TAB = IT_DATATAB" ITBL_IN_RECORD []
例外情况
FILE_OPEN_ERROR = 1
其他= 2 。
如果SY-SUBRC NE 0.
ELSE。
遍历IT_DATATAB。
清除:WA_STRING,WA_UPLOADTXT。
WA_STRING = IT_DATATAB。
WA_UPLOADTXT-PERNR = WA_STRING + 0( 10)。
W_DATE = WA_STRING + 10(11)。
在'-'处将W_DATE拆分为W_DAY W_MON W_YEAR。
用密钥KTX = W_MON将表IT_T247读入WA_T247。
如果是SY-SUBRC 均衡器0.
IF WA_T247-MNR LT 10.
*将'0'WA_T247-MNR合并为WA_T247-MNR。
ENDIF。
ENDIF。
合并W_YEAR WA_T247-MNR W_DATE并入WA_UPLOADTXT -DATE。
清除:WA_T247,W_DAY,W_YEAR,W_DATE。
W_TIME = WA_STRING + 22(8)。
用空格替换W:时所有':'的出现。
WA_UPLOADTXT-TIME = W_TIME。
追加WA_UPLOADTXT到IT_UPLOAD。
清除:WA_UPLOADTXT。
ENDLOOP。
ENDIF。

SORT IT_UPLOAD按PERNR日期时间排序。

数据:标签类型 SY-TABIX,
I型线。

描述表IT_UPLOAD线。

将IT_UPLOAD循环到WA_UPLOAD。
将WA_UPLOAD对应移动到WA_UPLOAD3。
追加WA_UPLOAD3 至 IT_UPLOAD3。
清除:WA_UPLOAD3,WA_UPLOAD。
ENDLOOP。

从IT_UPLOAD3删除相邻的重复项。

在IT_UPLOAD3处将LOOP循环到WA_UPLOAD3。 = WA_UPLOAD3-PERNR和DATE = WA_UPLOAD3-DATE。
追加WA_UPLOAD到IT_UPLOAD4。
清除:WA_UPLOAD。
ENDLOOP。

按PERNR日期时间排序IT_UPLOAD4。
描述表IT_UPLOAD4。 LINES LINES LINES。
将表IT_UPLOAD4读入WA_UPLOAD索引1。
如果SY-SUBRC EQ0。
将WA_UPLOAD对应移动到WA_UPLOAD1。
WA_UPLOAD1-TIM_TYPE ='P10'。
APPEND WA_UPLOAD1 到IT_UPLOAD1。
清除:WA_UPLOAD1。
ENDIF。

清除:WA_UPLOAD。
将表IT_UPLOAD4读入WA_UPLOAD索引行。
如果SY-SUBRC EQ 0.
移动 -对应WA_UPLOAD到WA_UPLOAD1。
WA_UPLOAD1-TIM_TYPE ='P20'。
将WA_UPLOAD1附加到IT_UPLOAD1。
清除:WA_UPLOAD1。
ENDIF。
清除:WA_UPLOAD。
刷新:IT_UPLOAD4 。
ENDLOOP。

数据:LS_P2011 TYPE P2011,
IT_ 返回类型BAPIRETURN1,
BAPIPAKEY类型BAPIPAKEY。

如果未初始化IT_UPLOAD1 []。

从* PA0032
中选择*到表IT_P032
中,用于IT_UPLOAD1中的所有条目< br> PNALT EQ IT_UPLOAD1-PERNR。

ENDIF。


将IT_UPLOAD1插入WA_UPLOAD1。

用键PNALT = WA_UPLOAD1-PERNR将表IT_P032读入WA_P032。 。
如果SY-SUBRC EQ 0.
WA_UPLOAD1-PERNR = WA_P032-PNALT。
ENDIF。

清除:WA_P032。

LS_P2011-PERNR = WA_P032-PERNR 。
LS_P2011-LDATE = WA_UPLOAD1-DATE。
LS_P2011-LTIME = WA_UPLOAD1-TIME。
LS_P2011-SATZA = WA_UPLOAD1-TIM_TYPE。

通话功能'BAPI_EMPLOYEE_ENQUEUE'
导出< br> NUMBER = WA_P032-PERNR



通话功能'HR_INFOTYPE_OPERATION'
导出
INFTY ='2011'
NUMBER = WA_P032-PERNR
记录= LS_P2011
操作='INS'
导入
返回= IT_RETURN



通话功能'BAPI_EMPLOYEE_DEQUEUE'
导出
编号= WA_P032-PE RNR


清除:WA_UPLOAD1。

ENDLOOP。

尽管从语法上讲是正确的,但系统抛出一个错误,指出该时间段内不存在P0007。

已检查P0007信息类型并得到维护。

请帮助

付费偷看设置
发送
3条回答
野沐沐
1楼-- · 2020-09-23 17:15
软件心理学工程师
2楼-- · 2020-09-23 17:36

请使用代码格式。

小灯塔
3楼-- · 2020-09-23 17:28

嗨,

可疑HR_INFOTYPE_OPERATION无法用于加载时间事件。

这些实际上不是存储在PA2011上,而是存储在表TEVEN中。

您可以使用LSMW(业务对象BUS7014)加载它们

或在ABAP中使用

BAPI BAPI_CC1_UPLOAD_TIMEEVENT

HR_CC1_TIMEVENT_POST

我过去都做过

bg

一周热门 更多>