点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
包含ZHR_PA0027_UPLOAD_TOP。 包括ZHR_PA0027_UPLOAD_FORM。 选择开始。 *初始化课程 数据:obj类型参考lcl_upload。 在p_file的VALUE-REQUEST的SELECTION屏幕上。 创建对象obj。 *在p_file的值请求选择屏幕上。 调用METHOD obj-> file_upload。 *&------------------------------------------------ --------------------- * *&包括ZHR_PA0027_UPLOAD_TOP *&------------------------------------------------ --------------------- * *内部表声明 类型:始于ty_pa0027, 佩尔纳TYPE p0027-pernr, begda TYPE char10, endda TYPE char10, kbu01型p0027-kbu01, kst01类型p0027-kst01, psp01类型p0027-psp01, kpr01类型p0027-kpr01, 结束于ty_pa0027。 数据:ty_pa0027的it_p0027类型标准表。 数据:alsab_tabline的itab类型标准表, wa_itab喜欢itab。 *工作区声明 数据:wa_p0027类型ty_pa0027。 数据:p0027类型p0027。 *参数声明 参数:P_FILE TYPE rlgrap文件名。 *当地日期声明 数据:l_date1 TYPE sy-datum, l_date2 TYPE sy-datum, l_psp01类型p0027-psp01。 *&------------------------------------------------ --------------------- * *&包括ZHR_PA0027_UPLOAD_FORM *&------------------------------------------------ --------------------- * * ================================================== ==================== * * L O C A L C L A S S D E F I N I T I O N * * ================================================== ==================== * CLASS lcl_upload定义。 公共部分。 方法:file_upload。 ENDCLASS。 * ================================================== ==================== * * L O C A L C L A S S的实现* * ================================================== ==================== * 类别lcl_upload IMPLEMENTATION。 方法file_upload。 *在p_file值请求的选择屏幕上。 " F4文件帮助。 通话功能'F4_FILENAME' *出口 * PROGRAM_NAME = SYST-CPROG * DYNPRO_NUMBER = SYST-DYNNR * FIELD_NAME ='' 输入 file_name = p_file。 调用函数" ALSM_EXCEL_TO_INTERNAL_TABLE" 出口 文件名= p_file i_begin_col ='1' i_begin_row ='2'"不需要标题 i_end_col ='14' i_end_row ='31' 桌子 实习生= Itab 例外情况 参数不一致= 1 upload_ole = 2 其他= 3。 如果sy-subrc <> 0。 带有文本001的消息e010(zz)。 "问题上传Excel电子表格 万一。 在itab上圈入wa_itab。 案例wa_itab-col。 当为" 1"时。 wa_p0027-pernr = wa_itab值。 当" 2"时。 wa_p0027-begda = wa_itab值。 当" 3"。 wa_p0027-endda = wa_itab值。 当" 4"。 wa_p0027-kbu01 = wa_itab值。 当" 5"。 wa_p0027-kst01 = wa_itab值。 当" 6"。 *将外部WBS元素转换为内部WBS元素 通话功能'CONVERSION_EXIT_ABPSP_INPUT' 出口 输入= wa_itab值 输入 输出= l_psp01 *例外情况 * NOT_FOUND = 1 *其他= 2 。 如果sy-subrc <> 0。 *在这里实施适当的错误处理 万一。 *将转换后的WBS元素传递到工作区 wa_p0027-psp01 = l_psp01。 当" 7"。 wa_p0027-kpr01 = wa_itab值。 结束。 在第END行。 将wa_p0027附加到it_p0027。 清除wa_p0027。 ENDAT。 结局。 在IT_p0027上环行,然后进入wa_p0027。 *将开始日期转换为内部格式 通话功能" CONVERT_DATE_TO_INTERNAL" 出口 date_external = wa_p0027-begda 输入 DATE_INTERNAL = l_date1 例外情况 DATE_EXTERNAL_IS_INVALID = 1 其他= 2。 如果sy-subrc <> 0。 消息ID SY-MSGID类型SY-MSGTY编号SY-MSGNO 与SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4。 万一。 *将结束日期转换为内部格式 通话功能" CONVERT_DATE_TO_INTERNAL" 出口 date_external = wa_p0027-endda 输入 DATE_INTERNAL = l_date2 例外情况 DATE_EXTERNAL_IS_INVALID = 1 其他= 2。 如果sy-subrc <> 0。 消息ID SY-MSGID类型SY-MSGTY编号SY-MSGNO 与SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4。 万一。 **将外部WBS元素转换为内部WBS元素 * * CALL FUNCTION'CONVERSION_EXIT_ABPSP_INPUT' *出口 *输入= wa_p0027-psp01 *重要 *输出= l_psp01 **例外情况 ** NOT_FOUND = 1 **其他= 2 *。 *如果sy-subrc <> 0。 **在此处实施适当的错误处理 *万一。 通话功能'BAPI_EMPLOYEE_ENQUEUE' 出口 NUMBER = wa_P0027-PERNR *重要 *返回= 。 *从WA_p0027到P0027移动。 p0027-pernr = wa_p0027-pernr。 p0027-begda = l_date1。 p0027-endda = l_date2。 p0027-kbu01 = wa_p0027-kbu01。 p0027-psp01 = wa_p0027-psp01。 p0027-kst01 = wa_p0027-kst01。 p0027-kpr01 = wa_p0027-kpr01。 通话功能" HR_INFOTYPE_OPERATION" 出口 INFTY ='0027' NUMBER = wa_p0027-PERNR SUBTYPE ='01' *对象= * LOCKINDICATOR = 有效期= l_date2 VALIDITYBEGIN = l_date1 * RECORDNUMBER = 记录= P0027 操作='INS' TCLAS ='A' DIALOG_MODE ='2' * NOCOMMIT = * VIEW_IDENTIFIER = * SECONDARY_RECORD = *重要 *返回= *键= 。 通话功能'BAPI_EMPLOYEE_DEQUEUE' 出口 NUMBER = wa_p0027-PERNR。 *重要 *返回= 。 结局。 终结法。 ENDCLASS。
你好朋友,
我已经编写了用于上传PA0027的代码。 当我仅将一个WBS元素用于一个员工ID时,它工作得很好。 但是,当我需要为单个pernr上传多个WBS元素时,我无法编写代码。 请提供有关如何编写代码的提示。 我不能使用BDC。
此致
拉乌里(Saurav Lahiry)
首先读取内部表中的所有数据,并按pernr排序。
然后在itab处循环,并用一些在新/结束处语句和一个简单的计数器。 在AT NEW bloc中重置计数器,将字段移到块外,在AT END OF块中调用HR_INFOTYPE_OPERATION ...
一周热门 更多>