点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
尊敬的SAP HR专家
我正在尝试在SAP HR中自动创建人员数据。 因此,我编写了一个ABAP报告,该报告从Excel文件中获取人员数据,并尝试使用HR_MAINTAIN_MASTERDATA在SAP中创建它。 但是我目前收到错误消息:在所有必填字段中填写
有人可以帮助我吗?
我的报告如下:
*&--------------------------------------------- ------------------------ * *&报告ZPD_PA40 *& *&------------------------------------------------ --------------------- * *& *& *& *&------------------------------------------------ --------------------- * 报告YPD_PA40。 类型:开始于TY_EXCEL, PERNR(100), MASSG(100), 贝格达(100), ENDDA(100), 佩尔萨(100), BTRTL(100), PERSG(100), 珀斯(100), 计划(100) ABKRS(100), ANSVH(100), ANRED(100), 盖世(100), CNAME(100), NACHN(100), VORNA(100), STELL(100), 欧格(100), VDSK1(100), PERID(100), GBDAT(100), SPRSL(100), NATIO(100), END OF TY_EXCEL。 类型:开始于TY_HR_NEW_HIRE, PERNR类型P0001-PERNR, 大众型号P0000-大众 BEGDA类型P0001-BEGDA, ENDDA类型P0001-ENDDA, 佩莎P0001型 BTRTL类型P0001-BTRTL, 珀格类型P0001-PERSG, 权限类型P0001-PERSK 计划类型P0001-计划 ABKRS类型P0001-ABKRS, ANSVH类型P0001-ANSVH, ANRED TYPE P0002-ANRED, GESCH型P0002-GESCH, CNAME类型P0002-CNAME, 针型P0002-NACHN, VORNA类型P0002-VORNA, 机种P0001-STELL, ORGEH类型P0001-ORGEH, VDSK1类型P0001-VDSK1, PERID类型P0002-PERID, GBDAT类型P0002-GBDAT, SPRSL类型P0002-SPRSL, NATIO类型P0002-NATIO, 像BAPIRETURN这样, END OF TY_HR_NEW_HIRE。 数据: LV_RC TYPE I, LT_FILE_TABLE TYPE FILETABLE, LS_FILE_TABLE之类的LT_FILE_TABLE, LT_RAW TYPE TRUXS_T_TEXT_DATA, 引用到CX_ROOT的错误类型, LV_DS TYPE STRING, LV_TXTERROR TYPE STRING, LV_TXTERROR_LONG TYPE STRING, TY_EXCEL的LT_YOUR_TABEL类型标准表, LS_YOUR_TABEL,如LT_YOUR_TABEL, PERSONALNUMMER类型PERNR_D, MESSAGE_HANDLER TYPE REF IF_HRPA_MESSAGE_HANDLER, IS_INTERNAL TYPE BOOLE_D。 数据:LV_STRING_FILE TYPE STRING, LV_RAW TYPE TRUXS_T_TEXT_DATA, 带有标题行的TY_EXCEL的LI_EXCEL类型表, LI_HR_NEW_HIRE TYPE_TY_HR_NEW_HIRE TABLE HEADER LINE, 带有标题行的TY_HR_NEW_HIRE的GT_OUTPUT类型表, LV_COUNT TYPE I, LV_CHAR(5), LV_STRING(100), GV_MESSAGE TYPE CHAR100, LV_VAL喜欢PPROP-FVAL。 数据:带有标题行的LI_PROPOSED像PPROP出现0, LW_RC LIKE BAPIRETURN, LW_RC1 LIKE BAPIRETURN1, LW_HR TYPE HRHRMM_MSG。 数据:BDCMSGCOLL的LT_MESSTAB类型表, LS_MESSTAB类型BDCMSGCOLL。 带标题标题文本001的块参数1的选择屏幕开始。 参数:P_FNAME类型RLGRAP-FILENAME默认'C:\ HCMEmployees_97.xls', GV_TEST类型的CHAR1默认值ABAP_FALSE。 块参数的选择屏幕结束1。 在P_FNAME的VALUE-REQUEST的SELECTION屏幕上。 呼叫方法CL_GUI_FRONTEND_SERVICES => FILE_OPEN_DIALOG 出口 WINDOW_TITLE ='Excel-Dateiauswählen' FILE_FILTER ='* .XLS | * .XLSX' * file_filter ='* .XLS)| * .XLSX' 改变 FILE_TABLE = LT_FILE_TABLE RC = LV_RC 例外情况 FILE_OPEN_DIALOG_FAILED = 1 CNTL_ERROR = 2 ERROR_NO_GUI = 3 NOT_SUPPORTED_BY_GUI = 4 其他= 5。 如果SY-SUBRC EQ 0。 如果LT_FILE_TABLE不是INITIAL。 LS_FILE_TABLE = LT_FILE_TABLE [1]。 将LS_FILE_TABLE-FILENAME写入P_FNAME。 万一。 其他。 消息ID SY-MSGID类型SY-MSGTY编号SY-MSGNO 与SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4。 万一。 选择开始。 通话功能" TEXT_CONVERT_XLS_TO_SAP" 出口 I_LINE_HEADER = ABAP_TRUE I_TAB_RAW_DATA = LT_RAW I_FILENAME = P_FNAME 桌子 * i_tab_converted_data = lt_your_tabel I_TAB_CONVERTED_DATA = LI_EXCEL 例外情况 CONVERSION_FAILED = 1 其他= 2。 如果SY-SUBRC <> 0。 消息ID SY-MSGID类型SY-MSGTY编号SY-MSGNO 与SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4。 其他。 尝试。 环聊LI_EXCEL。 向LV_COUNT添加1。 将LI_EXCEL移动到LI_HR_NEW_HIRE。 将LI_EXCEL-ENDDA + 6(4)LI_EXCEL-ENDDA + 3(2)LI_EXCEL-ENDDA(2)并入LI_HR_NEW_HIRE-ENDDA。 将LI_EXCEL-BEGDA + 6(4)LI_EXCEL-BEGDA + 3(2)LI_EXCEL-BEGDA(2)并入LI_HR_NEW_HIRE-BEGDA。 将LI_EXCEL-GBDAT + 6(4)LI_EXCEL-GBDAT + 3(2)LI_EXCEL-GBDAT(2)并入LI_HR_NEW_HIRE-GBDAT。 APPEND LI_HR_NEW_HIRE。 结局。 清除LV_COUNT个。 如果GV_TEST ='X'。 将LV_COUNT写到LV_CHAR。 压缩LV_CHAR。 将"成功处理" LV_CHAR"行"合并为按空格分隔的GV_MESSAGE。 其他。 环聊LI_HR_NEW_HIRE。 刷新:LI_PROPOSED。 " P0000 LV_VAL = LI_HR_NEW_HIRE-MASSG。 填写表格LI_PROPOSED使用'0000' 'P0000-MASSG' LV_VAL。 " P0002 LV_VAL = LI_HR_NEW_HIRE-ANRED。 建议填写表格LI_PROPOSED使用'0002' 'P0002-ANRED' LV_VAL。 * lv_val = li_hr_new_hire-gesch。 *执行填充表li_建议使用'0002' *'P0002-GESCH' * lv_val。 LV_VAL = LI_HR_NEW_HIRE-CNAME。 建议填写表格LI_PROPOSED使用'0002' 'P0002-CNAME' LV_VAL。 LV_VAL = LI_HR_NEW_HIRE-NACHN。 建议填写表格LI_PROPOSED使用'0002' 'P0002-NACHN' LV_VAL。 LV_VAL = LI_HR_NEW_HIRE-VORNA。 建议填写表格LI_PROPOSED使用'0002' 'P0002-VORNA' LV_VAL。 LV_VAL = LI_HR_NEW_HIRE-PERID。 建议填写表格LI_PROPOSED使用'0002' 'P0002-PERID' LV_VAL。 LV_VAL = LI_HR_NEW_HIRE-GBDAT。 建议填写表格LI_PROPOSED使用'0002' 'P0002-GBDAT' LV_VAL。 LV_VAL = LI_HR_NEW_HIRE-SPRSL。 建议填写表格LI_PROPOSED使用'0002' 'P0002-SPRSL' LV_VAL。 * lv_val = li_hr_new_hire-natio。 *执行填充表li_建议使用'0002' *'P0002-NATIO' * lv_val。 LV_VAL = LI_HR_NEW_HIRE-GBDAT。 建议填写表格LI_PROPOSED使用'0002' 'P0002-GBPAS' LV_VAL。 * lv_val ='1'。 *执行填充表li_建议使用'0002' *'P0002-FAMST' * lv_val。 " P0001 LV_VAL ='1000'。 填写表格LI_PROPOSED使用'0001' 'P0001-BUKRS' LV_VAL。 LV_VAL = LI_HR_NEW_HIRE-PERSK。 填写表格LI_PROPOSED使用'0001' 'P0001-PERSK' LV_VAL。 LV_VAL = LI_HR_NEW_HIRE-BTRTL。 填写表格LI_PROPOSED使用'0001' 'P0001-BTRTL' LV_VAL。 * * lv_val = li_hr_new_hire-abkrs。 *执行填充表li_建议使用'0001' *'P0001-ABKRS' * lv_val。 ** * lv_val = li_hr_new_hire-ansvh。 *执行填充表li_建议使用'0001' *'P0001-ANSVH' * lv_val。 LV_VAL = LI_HR_NEW_HIRE-STELL。 填写表格LI_PROPOSED使用'0001' 'P0001-STELL' LV_VAL。 LV_VAL = LI_HR_NEW_HIRE-ORGEH。 填写表格LI_PROPOSED使用'0001' 'P0001-ORGEH' LV_VAL。 * lv_val = li_hr_new_hire-vdsk1。 *执行填充表li_建议使用'0001' *'P0001-VDSK1' * lv_val。 LV_VAL = LI_HR_NEW_HIRE-PERSA。 填写表格LI_PROPOSED使用'0001' 'P0001-WERKS' LV_VAL。 通话功能'HR_MAINTAIN_MASTERDATA' 出口 MASSN ='01' ACTIO ='INS' TCLAS ='A' BEGDA = LI_HR_NEW_HIRE-BEGDA ENDDA = LI_HR_NEW_HIRE-ENDDA WERKS = LI_HR_NEW_HIRE-PERSA PERSG = LI_HR_NEW_HIRE-PERSG PERSK = LI_HR_NEW_HIRE-PERSK 计划= LI_HR_NEW_HIRE-PLANS NO_EXISTENCE_CHECK ='X' DIALOG_MODE ='0' LUW_MODE ='2' NO_ENQUEUE ='' 输入 返回= LW_RC RETURN1 = LW_RC1 HR_RETURN = LW_HR 桌子 PROPOSED_VALUES = LI_PROPOSED。 如果LW_RC-TYPE NE'E'。 GT_OUTPUT = LI_HR_NEW_HIRE。 获取参数ID" PER"字段GT_OUTPUT-PERNR。 GT_OUTPUT-MESS = LW_RC-MESSAGE。 APPEND GT_OUTPUT。 其他。 GT_OUTPUT = LI_HR_NEW_HIRE。 GT_OUTPUT-MESS = LW_RC-MESSAGE。 APPEND GT_OUTPUT。 万一。 结局。 MESSAGE GT_OUTPUT类型" I"。 万一。 将CX_ROOT捕获为错误。 LV_TXTERROR =错误-> GET_TEXT()。 LV_TXTERROR_LONG =错误-> GET_LONGTEXT()。 带有LV_TXTERROR的消息I531(0U)。 信息LV_TXTERROR_LONG类型" I"。 ENDTRY。 万一。 表格填写表LOC_PROPOSED_VALUES STRUCTURE PPROP 像PPROP-INFTY一样使用INFTY FNAME像PPROP-FNAME 像PPROP-FVAL那样的FVAL。 * seqnr类似于pprop-seqnr。 数据:WA_VALUES像PPROP。 WA_VALUES-INFTY = INFTY。 WA_VALUES-FNAME = FNAME。 WA_VALUES-FVAL = FVAL。 * wa_values-seqnr = seqnr。 将WA_VALUES附加到LOC_PROPOSED_VALUES。 ENDFORM。
在功能模块'HR_MAINTAIN_MASTERDATA'中设置参数DIALOG_MODE ='1'。
这将停止在信息类型上执行并出现错误。
Hi
根据代码,您试图更新信息类型0000,0001和0002。
1。 请针对这些信息类型手动运行PA30,并记下系统要求查询的字段。
2。 将它们包含在您的BAPI代码中
问候
Venkat
一周热门 更多>