点击此处---> 群内免费提供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信息类型并得到维护。
请帮助
您为什么不使用 BAPI_CC1_UPLOAD_TIMEEVENT a>和BAPI_TRANSACTION_COMMIT(然后可能是 HR_CC1_TIMEEVENT_POST ) p>
请使用代码格式。
嗨,
可疑HR_INFOTYPE_OPERATION无法用于加载时间事件。
这些实际上不是存储在PA2011上,而是存储在表TEVEN中。
您可以使用LSMW(业务对象BUS7014)加载它们
或在ABAP中使用
BAPI BAPI_CC1_UPLOAD_TIMEEVENT
HR_CC1_TIMEVENT_POST
我过去都做过
bg
一周热门 更多>