点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家们,
我开发了如下所示的bdc程序,用于将excel文件上传到sap系统中,还从数据库中检索数据并下载错误记录。
但是当我运行以下代码时,程序进入转储。 除了使用所有的条目之外,我还使用内部联接,但是查询不是进程。 你能帮我找到这个吗
报告zbdc_call无标准页标题行大小255。 桌子:lfbk,bnka。 TYPE-POOLS特克斯。 数据标志TYPE c。 数据cnt(2)类型n。 数据t_cnt(6)类型n。 数据l_cnt(5)类型n。 数据rng(6)类型n。 数据字段(20)。 *声明上传excel文件 数据it_raw TYPE truxs_t_text_data。 数据:w_textout类似于t100文本。 数据:ty_lfbk的开头, 像lfbk-lifnr一样, 像lfbk-banks这样的银行, 像lfbk-bankl一样的bankl, 像lfbk-bankn一样的bankn, 像lfbk-koinh一样 像lfbk-bkref一样的bkref, ty_lfbk的结尾。 数据:ty_bnka的开头, 班纳(bnka-banka) 像bnka-brnch一样 像bnka-bankl一样的bankl, ty_bnka结束。 *内部表 数据:开始于ty_final发生0, 像lfbk-lifnr一样, 像lfbk-banks这样的银行, 像lfbk-bankl一样的bankl, 像lfbk-bankn一样的bankn, 像lfbk-koinh一样 班纳(bnka-banka) 像bnka-brnch一样 像lfbk-bkref一样的bkref, ty_final结束。 *内部表处理错误 数据:开始为ty_error, 像lfbk-lifnr一样, 像lfbk-banks这样的银行, 像lfbk-bankl一样的bankl, 像lfbk-bankn一样的bankn, 像lfbk-koinh一样 班纳(bnka-banka) 像bnka-brnch一样 像lfbk-bkref一样的bkref, err_msg(73)类型c, ty_error结束。 数据:it_lfbk与带有标题行的ty_lfbk表类似, it_bnka像ty_bnka的标题行表一样, 带有标题行的ty_final的it_final表。 类似于bdcdata的DATA bdcdata出现在标题行中的0。 数据:it_error与HEAD_LINE的ty_error表类似。 *用于存储来自CALL TRANSACTION功能模块的错误信息 数据:开始时为messtab发生0。 包含结构bdcmsgcoll。 数据:消息末尾。 具有标题标题的Block1的选择屏幕开始。 参数:rad1 RADIOBUTTON GROUP rad USER-COMMAND frad1 DEFAULT'X', rad2 RADIOBUTTON GROUP rad。 选择屏幕结束块1。 带有标题标题文本t02的block2的选择屏幕开始。 参数:p_file类型rlgrap文件名MODIF ID g3。 选择屏幕结束块3。 TYPE-POOLS slis。 选择屏幕输出时。 如果rad1 ='X'。 环视屏幕。 IF screen-group1 ='G2'。或OR screen-group1 ='G4'。 screen-active =" 1"。 *屏幕输入= 0。 ELSEIF screen-group1 ='G3'。 screen-active =" 0"。 万一。 修改屏幕。 结局。 * 万一。 ELSEIF rad2 ='X'。 环视屏幕。 如果screen-group1 ='G2'。 screen-active =" 0"。 ELSEIF screen-group1 ='G3'。 screen-active =" 1"。 万一。 修改屏幕。 结局。 万一。 *选择lfbk〜lifnr * lfbk〜银行 * lfbk〜bankl * lfbk〜bankn * lfbk〜koinh * bnka〜班卡 * bnka〜分支 * lfbk〜bkref *插入表it_final *来自lfbk AS lfbk INNER JOIN bnka AS bnka *在bnka〜bankl EQ lfbk〜bankl *在s_lifnr中的lfbk〜lifnr中。 从lfbk选择lifnr银行bankl bankn koinh bkref 到表it_lfbk中,其中lifnr在s_lifnr中。 如果it_lfbk不是初始的。 从bnka中选择banka brnch bankl 到表it_bnka中it_lfbk中的所有条目 其中bankl = it_lfbk-bankl。 万一。 在it_lfbk循环。 it_final-lifnr = it_lfbk-lifnr。 it_final-banks = it_lfbk-banks。 it_final-bankl = it_lfbk-bankl。 it_final-bankn = it_lfbk-bankn。 it_final-koinh = it_lfbk-koinh。 it_final-bkref = it_lfbk-bkref。 在it_bnka循环。 it_final-banka = it_bnka-banka。 it_final-branch = it_bnka-branch。 附加it_final。 清除:it_final, it_lfbk, it_bnka。 it_final-banks = it_lfbk-banks。 结局。 结束循环。 *万一。 * ------------------------------------------------- -------------------- * *初始化* * ------------------------------------------------- -------------------- * 初始化。 将"文件名"移动到标题。 * ------------------------------------------------- -------------------- * *在选择屏幕上* * ------------------------------------------------- -------------------- * 在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。 使用'SAPMF02K''0101'执行bdc_dynpro。 使用'BDC_CURSOR'执行bdc_field " RF02K-LIFNR"。 使用'BDC_OKCODE'执行bdc_field '/00'。 使用'RF02K-LIFNR'执行bdc_field it_final-lifnr。 使用'RF02K-D0130'执行bdc_field 'X'。 使用'SAPMF02K''0130'执行bdc_dynpro。 使用'BDC_CURSOR'执行bdc_field 'LFBK-BKREF(01)'。 使用'BDC_OKCODE'执行bdc_field '= BANK'。 使用'LFBK-BANKS(01)'执行bdc_field it_final-banks。 使用'LFBK-BANKL(01)'执行bdc_field it_final-bankl。 使用'LFBK-BANKN(01)'执行bdc_field it_final-bankn。 使用'LFBK-KOINH(01)'执行bdc_field it_final-koinh。 使用'LFBK-BKREF(01)'执行bdc_field it_final-bkref。 使用'SAPLBANK''0100'执行bdc_dynpro。 使用'BDC_CURSOR'执行bdc_field " BNKA-BANKA"。 使用'BDC_OKCODE'执行bdc_field '= ENTR'。 使用'BNKA-BANKA'执行bdc_field it_final-banka。 使用'BNKA-BRNCH'执行bdc_field it_final-branch。 使用'SAPMF02K''0130'执行bdc_dynpro。 使用'BDC_CURSOR'执行bdc_field 'LFBK-BKREF(01)'。 使用'BDC_OKCODE'执行bdc_field '= UPDA'。 *致电交易以更新客户分期付款文字 使用bdcdata模式'N'更新'S'进行交易'XK02' 将消息发送到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-lifnr = it_final-lifnr。 it_error-banks = it_final-banks。 it_error-bankl = it_final-bankl。 it_error-bankn = it_final-bankn。 it_error-koinh = it_final-koinh。 it_error-banka = it_final-banka。 it_error-brnch = it_final-branch。 it_error-bkref = it_final-bkref。 it_error-err_msg = w_textout。 APPEND it_error。 清除it_error。 万一。 *清除BDC数据表 清除:bdcdata。 刷新:bdcdata。 结局。 数据:IT_FCAT类型SLIS_T_FIELDCAT_ALV, WA_FCAT类型SLIS_FIELDCAT_ALV, WA_LAYOUT类型SLIS_LAYOUT_ALV。 REFRESH:IT_FCAT []。 使用以下内容执行FCAT:" LIFNR","供应商", 'BANKS''COUNTRY KEY', 'BANKL''ACC NUM', 'BANKN''ACC密钥', 'KOINH''帐户持有人', 'BANKA''BANK NAME', 'BRNCH''BRANCH', 'bkref''IFSC代码'。 * ENDFORM。 " BUILD_FCAT * FORM DISPLAY_OUTPUT。 WA_LAYOUT-ZEBRA ='X'。 WA_LAYOUT-COLWIDTH_OPTIMIZE ='X'。 通话功能'REUSE_ALV_GRID_DISPLAY' 出口 * I_INTERFACE_CHECK ='' * I_BYPASSING_BUFFER ='' * I_BUFFER_ACTIVE ='' I_CALLBACK_PROGRAM = SY-REPID I_CALLBACK_PF_STATUS_SET ='PF_STATUS' I_CALLBACK_USER_COMMAND ='USER_COMMAND' * I_CALLBACK_TOP_OF_PAGE ='' * I_CALLBACK_HTML_TOP_OF_PAGE ='' * I_CALLBACK_HTML_END_OF_LIST ='' * I_STRUCTURE_NAME = * I_BACKGROUND_ID ='' * I_GRID_TITLE = * I_GRID_SETTINGS = IS_LAYOUT = WA_LAYOUT IT_FIELDCAT = IT_FCAT * IT_EXCLUDING = * IT_SPECIAL_GROUPS = * IT_SORT = IT_SORT * IT_FILTER = * IS_SEL_HIDE = * I_DEFAULT ='X' * I_SAVE ='' * IS_VARIANT = * IT_EVENTS = * IT_EVENT_EXIT = * IS_PRINT = * IS_REPREP_ID = * I_SCREEN_START_COLUMN = 0 * I_SCREEN_START_LINE = 0 * I_SCREEN_END_COLUMN = 0 * I_SCREEN_END_LINE = 0 * I_HTML_HEIGHT_TOP = 0 * I_HTML_HEIGHT_END = 0 * IT_ALV_GRAPHICS = * IT_HYPERLINK = * IT_ADD_FIELDCAT = * IT_EXCEPT_QINFO = * IR_SALV_FULLSCREEN_ADAPTER = *重要 * E_EXIT_CAUSED_BY_CALLER = * ES_EXIT_CAUSED_BY_USER = 桌子 T_OUTTAB = IT_Error *例外情况 * PROGRAM_ERROR = 1 *其他= 2 。 * ENDFORM。 使用字段文本填写表格。 WA_FCAT-FIELDNAME = FIELD。 WA_FCAT-SELTEXT_M =文本。 将WA_FCAT附加到IT_FCAT。 清除WA_FCAT。 最终形式。 表格下载。 *设置PF-STATUS'stat'。 *在USER-COMMAND。 如果sy-ucomm ='download'。 通话功能'GUI_DOWNLOAD' 出口 ** BIN_FILESIZE = ** FILENAME = F_EFILE FILETYPE ='asc' *** APPEND ='' WRITE_FIELD_SEPARATOR ='X' ** HEADER ='00' ** TRUNC_TRAILING_BLANKS ='' ** WRITE_LF ='X' ** COL_SELECT ='' ** COL_SELECT_MASK ='' ** DAT_MODE ='' ** CONFIRM_OVERWRITE ='' ** NO_AUTH_CHECK ='' ** CODEPAGE ='' ** IGNORE_CERR = ABAP_TRUE **替换='#' ** WRITE_BOM ='' ** TRUNC_TRAILING_BLANKS_EOL ='X' ** WK1_N_FORMAT ='' ** WK1_N_SIZE ='' ** WK1_T_FORMAT ='' ** WK1_T_SIZE ='' ** WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE ** SHOW_TRANSFER_STATUS = ABAP_TRUE **进口 **文件长度= 桌子 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。 *在这里实施适当的错误处理 万一。 万一。 ENDFORM。 " DOWNLOAD_ERRFIL * ------------------------------------------------- ------------------- * *开始新屏幕* * ------------------------------------------------- --------------------- * 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
您太可笑了!
在两个问题中,您询问如何完成整个用于上传/下载文件的报告,一个被主持人关闭,第二个给您一个提示。 可能对您有用的答案。
现在您有一个问题可以让我们分析整个报告并查找错误,即使您没有发布错误信息本身及其发生的位置。
您是否考虑过接受培训,或者至少考虑过一些ABAP文献?
如果我们中的一些人回答了这个问题,我们还能指望您明天再来 下一个问题?
我想知道您正在使用的系统是谁。
抱歉,听起来有些卑鄙,但是您似乎并没有在这个问题上花费很多精力 全部。
请附加简短转储。
一周热门 更多>