点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我开发了一个bdc报告,...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我开发了一个bdc报告,...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我开发了一个bdc报告,用于以fb01 t代码将详细信息从excel文件上传到SAP系统(用于发布密钥35,40)。但是开发了bdc报告后,出现诸如"对帐帐户12011000或短键"的错误 00出现错误时,我在记录中更改了总帐科目编号,这时我得到的提示是"金额为零-订单项将被忽略"。下面是我开发的代码,请检查代码并告知 我该代码中的更正。 如果可以的话,请发布该录音。
报告ZLTT_DATA1。 type-POOL:通配符。 表:bseg。 数据:ty_final的开头, bldat(16)类型c,"类型bkpf-bldat, blart型bkpf-blart, bukrs类型bkpf-bukrs, budat(20)c型," bkpf-budat类型, waers类型bkpf-waers, xblnr类型bkpf-xblnr, bktxt类型bkpf-bktxt, bschl(20)",键入bkf-bldat, hkont(20)," bkf-bldat类型, wrbtr类型bseg-wrbtr, bupla型bseg-bupla, zuonr类型bseg-zuonr, sgtxt类型bseg-sgtxt, prctr类型cobl-prctr, kostl类型cobl-prctr, 值类型bseg-valut, ty_final结束。 数据:ty_error的开头, bldat(16)类型c,",类型bkpf-bldat, blart型bkpf-blart, bukrs类型bkpf-bukrs, budat(20)c型," bkpf-budat类型, waers类型bkpf-waers, xblnr类型bkpf-xblnr, bktxt类型bkpf-bktxt, bschl(20)",键入bkf-bldat, hkont(20)," bkf-bldat类型, wrbtr类型bseg-wrbtr, bupla型bseg-bupla, zuonr类型bseg-zuonr, sgtxt类型bseg-sgtxt, prctr类型cobl-prctr, kostl类型cobl-prctr, 值类型bseg-valut, err_msg(73)类型c, STRING(1000), ty_error结束。 *声明上传excel文件 数据it_raw TYPE truxs_t_text_data。 数据:w_textout类似于t100文本。 DATA:WA_FINAL,如TY_FINAL, it_final类似于带有标题行的ty_final表。 类似于bdcdata的DATA bdcdata出现在标题行中的0。 数据:it_error类似于带有标题行的ty_error表。 数据:IT_FCAT类型SLIS_T_FIELDCAT_ALV, WA_FCAT类型SLIS_FIELDCAT_ALV, WA_LAYOUT类型SLIS_LAYOUT_ALV。 数据:it_event类型为slis_t_event, wa_event类似于it_event的行。 wa_event-name ='user_command'。 wa_event-form ='uc'。 将wa_event附加到it_event。 数据:开始时为messtab发生0。 包含结构bdcmsgcoll。 数据:消息末尾。 数据:budat(20)类型c, blart(16)类型c, w_amount(16)类型c。 将it_final-wrbtr写入w_amount。 CONDENSE w_amount。 将sy-datum写到blart。 将sy-datum写到budat。 带有FRAME TITLE标题的block2的选择屏幕开始。 参数:p_file TYPE rlgrap-filename。 选择屏幕结束块2。 初始化。 将"文件名"移动到标题。 在p_file的VALUE-REQUEST的SELECTION屏幕上。 通话功能'F4_FILENAME' 出口 field_name ='P_FILE' 输入 file_name = p_file。 ****************************************************** ********************* * S T A R T O F S E L E C T I O N * ****************************************************** ********************* *开始选择。 通话功能" TEXT_CONVERT_XLS_TO_SAP" 出口 * I_FIELD_SEPERATOR ='X' * I_LINE_HEADER ='X' i_tab_raw_data = it_raw i_filename = p_file 桌子 i_tab_converted_data = it_final 例外情况 CONVERSION_FAILED = 1 其他= 2。 选择开始。 在it_final循环。 使用'SAPMF05A''0100'执行bdc_dynpro。 使用'BDC_CURSOR'执行bdc_field " RF05A-NEWKO"。 使用'BDC_OKCODE'执行bdc_field '/00'。 使用'BKPF-BLDAT'执行bdc_field it_final-bldat。 使用'BKPF-BLART'执行bdc_field it_final-blart。 使用'BKPF-BUKRS'执行bdc_field it_final-bukrs。 使用'BKPF-BUDAT'执行bdc_field it_final-budat。 使用'BKPF-WAERS'执行bdc_field it_final-waers。 使用'BKPF-XBLNR'执行bdc_field it_final-xblnr。 使用'BKPF-BKTXT'执行bdc_field it_final-bktxt。 使用'RF05A-NEWBS'执行bdc_field it_final-bschl。 使用'RF05A-NEWKO'执行bdc_field it_final-hkont。 使用'SAPMF05A''0302'执行bdc_dynpro。 使用'BDC_CURSOR'执行bdc_field " BSEG-SGTXT"。 使用'BDC_OKCODE'执行bdc_field '= AB'。 *使用'BSEG-HKONT'执行bdc_field * it_final-hkont。 使用'BSEG-WRBTR'执行bdc_field w_amount。 使用'BSEG-BUPLA'执行bdc_field it_final-bupla。 使用'BSEG-ZUONR'执行bdc_field it_final-zuonr。 使用'BSEG-SGTXT'执行bdc_field it_final-sgtxt。 使用'SAPMF05A''0700'执行bdc_dynpro。 使用'BDC_CURSOR'执行bdc_field " RF05A-NEWKO"。 使用'BDC_OKCODE'执行bdc_field '/00'。 使用'BKPF-XBLNR'执行bdc_field it_final-xblnr。 使用'BKPF-BKTXT'执行bdc_field it_final-bktxt。 使用'RF05A-NEWBS'执行bdc_field it_final-bschl。 使用'RF05A-NEWKO'执行bdc_field it_final-hkont。 使用'SAPMF05A''0300'执行bdc_dynpro。 使用'BDC_CURSOR'执行bdc_field " BSEG-SGTXT"。 使用'BDC_OKCODE'执行bdc_field '= AB'。 使用'BSEG-WRBTR'执行bdc_field w_amount。 使用'BSEG-BUPLA'执行bdc_field it_final-bupla。 使用'BSEG-ZUONR'执行bdc_field it_final-zuonr。 使用'BSEG-SGTXT'执行bdc_field it_final-sgtxt。 使用'DKACB-FMORE'执行bdc_field 'X'。 使用'SAPLKACB''0002'执行bdc_dynpro。 使用'BDC_CURSOR'执行bdc_field " COBL-PRCTR"。 使用'BDC_OKCODE'执行bdc_field '= ENTE'。 使用'COBL-KOSTL'执行bdc_field it_final-kostl。 使用'COBL-PRCTR'执行bdc_field it_final-prctr。 使用'SAPMF05A''0700'执行bdc_dynpro。 使用'BDC_CURSOR'执行bdc_field " RF05A-NEWBS"。 使用'BDC_OKCODE'执行bdc_field '= BU'。 使用'BKPF-XBLNR'执行bdc_field it_final-xblnr。 使用'BKPF-BKTXT'执行bdc_field it_final-bktxt。 *使用'FB01'执行bdc_transaction。 *使用'FB01'执行bdc_transaction。 使用bdcdata模式'A'更新'S'进行呼叫交易'FB01' 将消息发送到messtab。 *表格显示错误 *检查更新是否成功 IF sy-subrc NE 0。 *检索在BDC更新期间显示的错误消息 在msgtyp ='E'的地方在messtab中循环。 *根据呼叫交易返回的信息构建实际消息 通话功能" MESSAGE_TEXT_BUILD" 出口 msgid = messtab-msgid msgnr = messtab-msgnr msgv1 = messtab-msgv1 msgv2 = messtab-msgv2 msgv3 = messtab-msgv3 msgv4 = messtab-msgv4 输入 message_text_output = w_textout。 结局。 it_error-bschl = it_final-bschl。 it_error-bldat = it_final-bldat。 it_error-budat = it_final-budat。 it_error-waers = it_final-waers。 it_error-xblnr = it_final-xblnr。 it_error-bktxt = it_final-bktxt。 it_error-blart = it_final-blart。 it_error-bukrs = it_final-bukrs。 it_error-hkont = it_final-hkont。 * it_error-shkzg = it_final-shkzg。 it_error-wrbtr = it_final-wrbtr。 it_error-zuonr = it_final-zuonr。 it_error-kostl = it_final-kostl。 it_error-prctr = it_final-prctr。 it_error-sgtxt = it_final-sgtxt。 it_error-bupla = it_final-bupla。 it_error-valut = it_final-valut。 it_error-err_msg = w_textout。 APPEND IT_ERROR。 清除it_error。 万一。 清除:bdcdata。 刷新:bdcdata。 结局。 *万一。 * endloop。 REFRESH:IT_FCAT []。 执行FCAT使用: 'BLDAT''文档日期', 'BLART''文档类型', 'BUKRS''公司代码', " BUDAT""发布日期", " WAERS""货币", 'XBLNR''refrence', 'BKTXT''文档头', " BSCHL""发布密钥", " HKONT"" gl帐户", 'WRBTR''金额', " BUPLA""营业地点", " ZUONR""分配", *'wrbtr''金额', 'SGTXT''文本', " KOSTL""成本中心", " PRCTR""利润中心"。 * ENDFORM。 " BUILD_FCAT * FORM DISPLAY_OUTPUT。 WA_LAYOUT-ZEBRA ='X'。 WA_LAYOUT-COLWIDTH_OPTIMIZE ='X'。 通话功能'REUSE_ALV_GRID_DISPLAY' 出口 IS_LAYOUT = WA_LAYOUT IT_FIELDCAT = IT_FCAT 桌子 T_OUTTAB = IT_ERROR 。 使用类似sy-ucomm b类型的slis_selfield形成uv。 通话功能'GUI_DOWNLOAD' 出口 档案名称= P_FILE FILETYPE ='asc' WRITE_FIELD_SEPARATOR ='X' 桌子 DATA_TAB = IT_ERROR 例外情况 FILE_WRITE_ERROR = 1 NO_BATCH = 2 GUI_REFUSE_FILETRANSFER = 3 INVALID_TYPE = 4 NO_AUTHORITY = 5 UNKNOWN_ERROR = 6 HEADER_NOT_ALLOWED = 7 SEPARATOR_NOT_ALLOWED = 8 FILESIZE_NOT_ALLOWED = 9 HEADER_TOO_LONG = 10 DP_ERROR_CREATE = 11 DP_ERROR_SEND = 12 DP_ERROR_WRITE = 13 UNKNOWN_DP_ERROR = 14 ACCESS_DENIED = 15 DP_OUT_OF_MEMORY = 16 DISK_FULL = 17 DP_TIMEOUT = 18 FILE_NOT_FOUND = 19 DATAPROVIDER_EXCEPTION = 20 CONTROL_FLUSH_ERROR = 21 其他= 22 。 如果SY-SUBRC <> 0。 *在这里实施适当的错误处理 万一。 最终形式。 使用字段文本填写表格。 WA_FCAT-FIELDNAME = FIELD。 WA_FCAT-SELTEXT_M =文本。 将WA_FCAT附加到IT_FCAT。 清除WA_FCAT。 ENDFORM。 FORM bdc_dynpro使用程序dynpro。 清除bdcdata。 bdcdata-program =程序。 bdcdata-dynpro = dynpro。 bdcdata-dynbegin ='X'。 附加bdcdata。 ENDFORM。 " bdc_dynpro * ------------------------------------------------- --------------------- * *插入栏位* * ------------------------------------------------- --------------------- * FORM bdc_field使用fnam fval。 *如果fval <> nodata。 清除bdcdata。 bdcdata-fnam = fnam。 bdcdata-fval = fval。 附加bdcdata。 * 万一。 ENDFORM。 " bdc_field
我已经在fb01 t代码中为两个订单项35和40进行了记录。当我通过bdc填充数据时,如果订单项是35,则只希望将相关数据 输入的内容和其他订单项40的详细信息应当与40相同,反之亦然。 我正在考虑是否要满足该条件。是正确的还是该先生的其他替代方法
一周热门 更多>