点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) 尊敬的SAP专业人士 : ...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) 尊敬的SAP专业人士 : ...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
尊敬的SAP专业人士
:
为Tcode F-04创建带有结算的BDC时,单选按钮转移具有结算的单选按钮在后台模式下不起作用,因为在前台模式下可以正常工作。
报告ZF_04没有标准的页面标题行大小为255。
类型:记录的开始,
BLDAT类型CHAR10,"文档日期
BLART TYPE BLART,"文档类型
BUKRS TYPE BUKRS,"公司代码
BUDAT TYPE CHAR10",发布日期
* MONAT TYPE MONAT,
WAERS TYPE WAERS,"货币
XBLNR TYPE XBLNR,"参考文献
AUGTX TYPE AUGTX_F05A," 清除文本
* DOCID类型DOCID,
NEWBS类型NEWBS,"发布密钥
NEWKO类型NEWKO,"帐户
WRBTR类型WRBTR,"金额
BUPLA类型BUPLA,"营业地点
SGTXT类型SGTXT,"文本
* FMORE类型FMORE,
* AGBUK类型AGBUK,
AGKON类型AGKON,
AGKOA类型KOART,
* XNOPS类型XNOPS,
SEL01类型 SELXX_F05A,
* XPOS1类型XPOS1,
* XPOS1类型XPOS1,
* SEL01类型SEL01,
* ABPOS类型ABPOS,
* XBLNR,
END 的记录。
数据:I_RECORD类型的记录表,
W_RECORD类型的记录。
数据:BDCDATA的I_BDCDATA类型表,
W_BDCDATA类型BDCDATA。
>数据:I_MESSTAB T BDCMSGCOLL的YPE表,
W_MESSTAB类型BDCMSGCOLL。
数据:ALSMEX_TABLINE的IT_FILE类型表,
WA_FILE类型ALSMEX_TABLINE。
数据:GNUMBER类型CHAR15。
*错误消息的结构
类型:TY_S_ERROR的开始,
MSG_ERR(60)C类型,
TY_S_ERROR的结尾。
数据:
WA_PATH类型STRING,
WA_ERROR类型STRING,
WA_CNT类型 I,
W_MODE类型C,
WA_CNT1(2)N类型,
IT_OUTPUT类型表TY_S_ERROR,
WA_OUTPUT类似于IT_OUTPUT的行。
数据:BDCMSGCOLL的T_MSG类型表 ,""收集错误消息
W_MSG类型BDCMSGCOLL,
W_MSG1(51)。
数据:TAB1类型SY-INDEX,
TEMP1类型STR。
数据:MSG类型STRING。
具有帧标题FTXT的B1块的选择屏幕开始。
参数:P_FILE类型RLGRAP-FILENAME。
* E_FILE类型RLGRAP-FILENAME强制。
B1块的选择屏幕结束。 >
如果P_FILE是INITIAL。
消息'选择Excel工作表'类型'I'显示类似'E'。
退出。
ENDIF。
>在P_FILE值请求的选择屏幕上。
调用功能'F4_FILENAME'
导入
FILE_NAME = P_FILE
例外
其他= 1.
通话功能'ALSM_EXCEL_TO_INTERNAL_TABLE'
导出
FILENAME = P_FILE
I_BEGIN_COL ='1'
I_BEGIN_ROW ='2'
I_END_COL ='15'
I_END_ROW ='2000'
表
INTERN = IT_FILE
例外情况
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
其他=3。
如果SY-SUBRC <>0。
消息'选择Excel表' 类型'I'显示为'E'。
退出。
*消息ID SY-MSGID类型SY-MSGTY编号SY-MSGNO
*与SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4。
ENDIF。
* BREAK-POINT。
循环到IT_FILE到WA_FILE。
案例WA_FILE-COL。
当1.
W_RECORD-BLDAT = WA_FILE-VALUE时。 "文档日期
当2。
W_RECORD-BLART = WA_FILE-VALUE。"文档类型
当3.
W_RECORD-BUKRS = WA_FILE-VALUE。 "公司代码
何时4。
W_RECORD-BUDAT = WA_FILE-VALUE。"发布日期
*何时5.
* W_RECORD-MONAT = WA_FILE-VALUE。
何时5.
W_RECORD-WAERS = WA_FILE-VALUE。 "货币
何时为6。
W_RECORD-XBLNR = WA_FILE-VALUE。"参考文献
何时为7:
W_RECORD-AUGTX = WA_FILE-VALUE。 "清除文本
时为8。
W_RECORD-NEWBS = WA_FILE-VALUE。"发布键
时为9。
W_RECORD-NEWKO = WA_FILE-VALUE。 "帐户
何时10。
W_RECORD-WRBTR = WA_FILE-VALUE。"金额
何时11:
W_RECORD-BUPLA = WA_FILE-VALUE。 "营业地点
12时
W_RECORD-SGTXT = WA_FILE-VALUE。"文本
13时
W_RECORD-AGKON = WA_FILE-VALUE。
14时
W_RECORD- AGKOA = WA_FILE-VALUE。
何时15.
W_RECORD-SEL01 = WA_FILE-VALUE。
* W_RECORD-XNOPS = WA_FILE-VALUE。
*何时16.
* W_RECORD -XPOS1 = WA_FILE-VALUE。
*何时17.
* W_RECORD-ABPOS = WA_FILE-VALUE。
ENDCASE。
* BREAK ABAP。
在行尾。< br> APPEND W_RECORD到I_RECORD。
CLEAR W_RECORD。
ENDAT。
ENDLOOP。
开始选择。
如果I_RECORD是 INITIAL。
消息'在Excel工作表中找不到这样的记录'类型'E'。
退出。
ENDIF。
将I_RECORD插入到W_RECORD中。
清除:I_BDCDATA []。
>使用'SAPMF05A''0122'执行BDC_DYNPRO。
使用'BDC_CURSOR'执行PERC BDC_FIELD。
使用'BDC_OKCODE'执行PERC BDC_FIELD'
'/00'。
执行PERFORM BDC_FIELD BDC_FIELD使用'BKPF-BLDAT'
W_RECORD-BLDAT。 " RECORD-BLDAT_001。
使用'BKPF-BLART'执行BDC_FIELD。
W_RECORD-BLART。" RECORD-BLART_002。
使用'BKPF-BUKRS'执行BDC_FIELD。
W_RECORD-BUKRS。" RECORD-BUKRS_003。
使用'BKPF-BUDAT'执行BDC_FIELD。
*使用'BKPF-MONAT'执行BDC_FIELD。
* W_RECORD-MONAT。" RECORD-MONAT_005。
使用'BKPF-WAERS'执行BDC_FIELD。
W_RECORD-WAERS。" RECORD-WAERS_006。
>使用'BKPF-XBLNR'执行BDC_FIELD。
W_RECORD-XBLNR。" RECORD-XBLNR_007。
使用'RF05A-AUGTX'执行BDC_FIELD。
W_RECORD-AUGTX。 使用'FS006-DOCID'
* RECORD-DOCID_009。
使用'RF05A-NEWBS'执行BDC_FIELD。
W_RECORD-NEWBS。" RECORD-NEWBS_010。
使用'RF05A-NEWKO执行BDC_FIELD
> W_RECORD-NEWKO。" RECORD-NEWKO_011。
*使用'RF05A-XPOS1(02)'执行BDC_FIELD *'X'。" RECORD-XPOS1_02_012。
*使用'RF05A-XPOS1执行BDC_FIELD 04)'
* W_RECORD-XPOS1。" RECORD-XPOS1_04_013。
使用'SAPMF05A''0300'执行BDC_DYNPRO。
使用'BDC_CURSOR'执行BDC_FIELD
'BSEG-SGTXT '。
使用'BDC_OKCODE'执行BDC_FIELD
'= PA'。
使用'BSEG-WRBTR'执行BDC_FIELD
W_RECORD-WRBTR。 " RECORD-WRBTR_014。
使用'BSEG-BUPLA'执行BDC_FIELD。
W_RECORD-BUPLA。" RECORD-BUPLA_015。
使用'BSEG-SGTXT'执行BDC_FIELD。
W_RECORD-SGTXT。
*使用'DKACB-FMORE'执行BDC_FIELD。
* W_RECORD-FMORE。" RECORD-FMORE_017。
使用'SAPLKACB''0002'执行BDC_DYNPRO。
使用'BDC_CURSOR'执行BDC_FIELD
'COBL-GSBER'。
使用'BDC_OKCODE'执行BDC_FIELD'='ENTE'。
使用'SAPMF05A''0710'执行PERC BDC_DYNPRO。
使用'BDC_CURSOR'执行PERC BDC_FIELD
' RF05A-XPOS1(03)'。
*使用'RF05A-XPOS1(03)'
*'X'。" RECORD-XPOS1_03_023。
使用'BDC_OKCODE'执行BDC_FIELD'
'/ 00'。
*使用'RF05A-AGBUK'执行BDC_FIELD
* * RECORD-AGBUK_018。
使用'RF05A-AGKON'执行BDC_FIELD。W_RECORD-AGKON。" RECORD-AGKON_019。
PERFORM BDC_FIELD使用'RF05A-AGKOA'
W_RECORD-AGKOA。" RECORD-AGKOA_020。
*性能BDC_FIELD使用'RF05A-XNOPS'
* W_RECORD-XNOPS。" RECORD-XNOPS_021。
* PERFORM BDC D使用'RF05A-XPOS1(01)'
*'X'。
" W_RECORD-XPOS1。" RECORD-XPOS1_01_022。
执行BDC_FIELD使用'RF05A-XPOS1(03)'
'X '。" RECORD-XPOS1_03_023。
使用'SAPMF05A''0731'执行BDC_DYNPRO。
使用'BDC_CURSOR'执行BDC_FIELD。
'RF05A-SEL01(01)'。
使用BDC_FIELD使用'BDC_OKCODE'
'/00'。
使用'RF05A-SEL01(01)'执行BDC_FIELD。
W_RECORD-SEL01。" RECORD-SEL01_01_024。
使用'SAPMF05A''0731'执行BDC_DYNPRO。
使用'BDC_CURSOR'执行PERC BDC_FIELD
'RF05A-SEL01(01)..
使用'BDC_OKCODE'执行PERC BDC_FIELD'
'/00'。
使用'SAPMF05A'执行PERC BDC_DYNPRO''0731'。
使用'BDC_CURSOR'执行BDC_FIELD
'RF05A-SEL01(01)'。
使用'BDC_OKCODE'执行PERC BDC_FIELD'='RW'。
使用'SAPMF05A''0710'执行BDC_DYNPRO。< br>使用'BDC_CURSOR'执行BDC_FIELD
'RF05A-AGBUK'。
使用'BDC_OKCODE'执行PERC BDC_FIELD'
'/00'。
*使用'RF05A-AGBUK'执行BDC_FIELD
* W_RECORD-AGBUK。" _ 025。
使用'RF05A执行BDC_FIELD -AGKON'
W_RECORD-AGKON。" _ 026。
*使用'RF05A-AGKOA'执行BDC_FIELD。
* W_RECORD-AGKOA。" _ 027。
使用'RF05A-XNOPS'执行BDC_FIELD
'X'。" W_RECORD-XNOPS。" _ 028。
使用'SAPDF05X''3100'执行BDC_DYNPRO。
使用'BDC_OKCODE'执行BDC_FIELD。<=>'= BS'。
使用'BDC_CURSOR执行BDC_FIRSD '
'DF05B-PSSKT(01)'。
*使用'RF05A-ABPOS'执行BDC_FIELD。
* W_RECORD-ABPOS。" RECORD-ABPOS_029。
使用'SAPMF05A''0700'执行BDC_DYNPRO 。
使用'BDC_CURSOR'执行BDC_FIELD
'RF05A-NEWBS'。
使用'BDC_OKCODE'执行PERC BDC_FIELD'= BU'。
*使用'BKPF-XBLNR'执行PERC BDC_FIELD
* RECORD-XBLNR_030。
使用'F-04'执行BDC_TRANSACTION。
* ENDDO。
ENDLOOP。
*&- -------------------------------------------------- ------------------ *
*&表格BDC_DYNPRO
*&------------------- -------------------------------------------------- *
*文字
* ---------------------------------------- --------------------- --------- *
*->程序文本
*-> DYNPRO文本
* ------------------ -------------------------------------------------- -*
使用程序DYNPRO来形成BDC_DYNPRO。
清除W_BDCDATA。
W_BDCDATA-PROGRAM =程序。
W_BDCDATA-DYNPRO = DYNPRO。
W_BDCDATA-DYNBEGIN ='X'。
将W_BDCDATA附加到I_BDCDATA。
清除W_BDCDATA。
ENDFORM。 " BDC_DYNPRO
*&---------------------------------------- ----------------------------- *
*&表格BDC_FIELD
*&-------- -------------------------------------------------- ----------- *
*文字
* ----------------------------- ----------------------------------------- *
*-> FNAM 文字
*--> FVAL文字
* ------------------------------------ ---------------------------------- *
使用FNAM FVAL形成BDC_FIELD。
* IF FVAL <> NODATA。
CLEAR W_BDCDATA。
W_BDCDATA-FNAM = FNAM。
W_BDCDATA-FVAL = FVAL。
SHIFT W_BDCDATA-FVAL左删除领先空间。
将W_BDCDATA附加到I_BDCDATA。
清除W_BDCDATA。
* ENDIF。
ENDFORM。" BDC_FIELD
*&------------------------- -------------------------------------------- *
*& 表格BDC_TRANSACTION
*&------------------------------------------- -------------------------- *
*文字
* -------------- -------------------------------------------------- ------ *
*-> TCODE文本
* --------------------- ------------------------------------------------- *
使用TCODE形成BDC_TRANSACTION。
DATA MOD(1)。
BREAK ABAP。
MOD ='N'。
使用I_BDCDATA
MODE MOD" CTUMODE"" AN 调试模式
UPDATE'S'" CUPDATE
到T_MSG的消息。" I_MESSTAB。
中断ABAP。
TAB1 = TAB1 +1。
如果SY-SUBRC EQ 0。 br>
将T_MSG循环到W_MSG,其中MSGNR ='312'。
*格式化消息
通话功能'MESSAGE_TEXT_BUILD'
导出
MSGID = W_MSG-MSGID
MSGNR = W_MSG- MSGNR
MSGV1 = W_MSG-MSGV1
MSGV2 = W_MSG-MSGV2
MSGV3 = W_MSG-MSGV3
MSGV4 = W_MSG-MSGV4
导入
MESSAGE_TEXT_OUTPUT = W_MSGVE。 MSGV1到GNUMBER。
写:TAB1。
写:GNUMBER。
写:"生成客户收款凭证"。
新行无滚动记录。
ENDLOOP。
ELSE。
*发现错误
将T_MSG插入MSGTYP EQ'E'的W_MSG中。
*格式化消息
通话功能'MESSAGE_TEXT_BUILD'
导出 NG
MSGID = W_MSG-MSGID
MSGNR = W_MSG-MSGNR
MSGV1 = W_MSG-MSGV1
MSGV2 = W_MSG-MSGV2
MSGV3 = W_MSG-MSGV3
MSGV4 = W_MSGMS br>导入
MESSAGE_TEXT_OUTPUT = W_MSG1。
WA_OUTPUT-MSG_ERR = W_MSG1。
*合并TAB1 WA_OUTPUT-MSG_ERR INTO
* WA_OUTPUT-MSG_ERR单独按。 br>
*将WA_OUTPUT-MSG_ERR附加到IT_OUTPUT。
WRITE:TAB1。
WRITE:WA_OUTPUT-MSG_ERR。
新行无滚动。
ENDLOOP。
ENDIF。
清除:T_MSG,W_MSG。
ENDFORM。 " BDC_TRANSACTION
请帮助我...........
预先感谢您
hi
由于您是在循环中使用BDC,因此每次都最好提交工作。
在"呼叫交易"之后添加语句。
"提交工作并等待。"
致谢,
Archer
一周热门 更多>