点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入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
在写金额以填充批次输入时,因此使用外部格式时,建议您使用CURRENCY选项。
发布键35还需要供应商编号而不是对帐帐号。
您确定需要自定义程序。您不能使用 BAPI创建会计凭证,还是标准批输入程序RFBIBL00?
亲爱的Bhavani Amra
语句
应该在it_final循环内。
我已经在fb01 t代码中为两个订单项35和40进行了记录。当我通过bdc填充数据时,如果订单项是35,则只希望将相关数据 输入的内容和其他订单项40的详细信息应当与40相同,反之亦然。 我正在考虑是否要满足该条件。是正确的还是该先生的其他替代方法
金额(和其他数据类型)有几种格式。
SAP中的金额为999999.99,输出中的金额可能为999.999,99 999,999.99 ...这取决于用户参数(检查事务SU3)。
在批输入中,您模拟了用户操作, 遵守字段的输出格式。 您可以按照 Venkateswaran Krishnamurthy 的说法使用WRITE。 仅当创建批输入的用户与要运行该批输入的用户具有相同的金额格式时,此方法才有效。
一周热门 更多>