自动反转FBL3N

2020-08-26 23:32发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


FBL3N交易:如果供应商未在90天前存入支票,则应在第91天自动撤消

TYPES:ty_bsis的开始,

bukrs TYPE bukrs,"公司代码
hkont TYPE hkont,"总帐科目
augdt TYPE augdt,"结算日期
augbl TYPE augbl, "清算凭证的文件编号
zuonr TYPE dzuonr,"工作分配编号
gjahr TYPE gjahr,"会计年度
belnr TYPE belnr_d,"会计凭证编号
buzei TYPE buzei,"行项目编号 在会计凭证
类别budat中,"凭证中的过帐日期
bldat TYPE bldat,"凭证中的凭证日期
类别waers,"货币
xblnr TYPE xblnr1,"引用
blart TYPE blart,"文档类型
monat TYPE monat,"句号
bschl TYPE bschl,"发布密钥
gsber TYPE gsber,"业务区域
dmbtr TYPE dmbtr,"金额
wrbtr TYPE wrbtr,"单据货币金额
sgtxt TYPE sgtxt,"文本
aufnr TYPE aufnr_neu," order
kostl TYPE kostl,"成本中心
ty_bsis的结尾。

TYPES: ty_bkpf的开始,
bukrs TYPE bukrs,
belnr TYPE belnr _d,
gjahr类型gjahr,
bktxt类型bktxt,
ty_bkpf的结尾。
TYPES:ty_bseg的开始,
bukrs类型bukrs,
belnr类型belnr_d,
gjahr TYPE gjahr,
buzei TYPE buzei,
lifnr TYPE lifnr,
hkont TYPE hkont,

ty_bseg的结尾。



数据:计数TYPE i VALUE 1 。
数据:ty_bsis的lt_bsis类型表,
ty_bkpf的lt_bkpf类型表,
ty_bseg的lt_bseg类型表,
ls_bseg的类型ty_bseg,
ls_bsis的类型ty_b> ,
lv_date(4)类型n。


数据:w_head类型bapiachegl08,
w_accgl类型bapiacgl08,
t_accgl类型bapiacgl08的表,
w_curramt类型bapiaccr08,< br> bapiaccr08的t_curramt类型表,
t_return bapiret2的类型表,
w_return bapiret2的类型表。

数据lt_REVERSAL TYPE BAPIACREV。


数据:ld_obj_type类型bapiacre- obj_type,
ld_obj_key类型bapiacrev-obj_key,
ld_obj_sys类型bapiacrev-obj_sys。
* DATA DOCUMENTHEADER类型BAPIACHE08。
* DATA OBJ_TYPE TYPE BAPIACHE02-OBJ_TYPE。
*数据对象TYPE BAPIACHE02-OBJ_KEY。
* DATA OBJ_SYS TYPE BAPIACHE02-OBJ_SYS。
* DATA ACCOUNTGL类型标准表BAPIACGL08的表。
* DATA CURRENCYAMCROUNT类型的标准表 。
* BAPIRET2的数据返回类型标准表。
* BAPIEXTC的数据扩展1类型标准表。

b1块的开始,带有帧标题text-001的选择屏幕。
SELECT- 选项:s_hkont用于bsis-hkont。
b1块的选择屏幕结束。


开始选择。

SELECT
bukrs
hkont < br> augdt
augbl
zuonr
gjahr
belnr
buzei
budat
bldat
waers
xblnr
blart
monat
bschl
gsber
dmbtr
wrbtr
sgtxt
aufnr
kostl
从bsis
到表lt_bsis
中,hkont在s_hkont
和bukrs = 1000 。


如果lt_bsis不初始。
SELECT
bukrs
belnr
gjahr
bktxt

从bkpf
到表lt_bkpf
对于lt_bsis中的所有条目
bukrs = lt_bsis-bukrs
AND belnr = lt_bsis-belnr
AND gjahr = lt_bsis-gjahr。


SELECT
bukrs
belnr
gjahr
buzei
lifnr
hkont
从bseg
到表lt_bseg
中lt_bsis
中的所有条目,其中bukrs = lt_bsis-bukrs
AND belnr = lt_bsis-belnr
gjahr = lt_bsis-gjahr

AND koart ='K'。

ENDIF。

将lt_bsis循环到ls_bsis。
lv_date = ls_bsis-budat-sy-datum 。
转换lv_date左删除领先'0'。

IF lv_date LE 90.

从ls_bsis删除表lt_bsis。
ENDIF。
ENDLOOP。
< br>选择结束。

将lt_bsis循环到ls_bsis中。

清除ls_bseg。
读取表lt_bseg并使用键将其放到ls_bseg中bukrs = ls_bsis-bukrs
belnr = ls_bsis -belnr
gjahr = ls_bsis-gjahr


清除ls_bkpf。
读取表lt_bkpf到带有键bukrs的ls_bkpf中= ls_bsis-bukrs
belnr = ls_bsis-belnr
g = ls_bsis-gjahr。


w_head-username = sy-uname。
w_h ead-comp_code ='1000'。
w_head-doc_type ='BA'。
w_head-fisc_year = ls_bsis-gjahr。
w_head-fis_period = ls_bsis-monat。
w_head-doc_date = sy- 基准。
w_head-pstng_date = sy-datum。
w_head-ref_doc_no = ls_bsis-xblnr。
w_head-header_txt = ls_bkpf-bktxt。




w_accgl-itemno_acc =计数。 " ********** Dount ****************""
w_accgl-gl_account = ls_bsis-hkont。
w_accgl-bus_area = ls_bsis-gsber 。
w_accgl-orderid = ls_bsis-aufnr。
w_accgl-costcenter = ls_bsis-kostl。
w_accgl-item_text = ls_bsis-sgtxt。
呼叫功能'CONVERSION_EXIT_ALPHA_INPUT'
= w_accgl-gl_account
导入
输出= w_accgl-gl_account。

通话功能'CONVERSION_EXIT_ALPHA_INPUT'
导出
输入= w_accgl-orderid
IMPORTING
输出= w_accgl -orderid。

将w_accgl附加到t_accgl。

清除w_curramt。
w_curramt-itemno_acc =计数。 " ********* Dount ****************""
w_curramt-curr_type ='00'。
w_curramt-currency = ls_bsis-waers。
w_curramt-amt_doccur = ls_bsis-wrbtr。
APPEND w_curramt到t_curramt。
*
*
清除w_accgl。
w_accgl-itemno_acc =计数。
w_accgl-gl_account = ls_b -hkont .."'0007102202'。
w_accgl-AC_DOC_NO = ls_bsis-belnr。
w_accgl-VENDOR_NO = ls_BSEG-LIFNR .."'0007102202'。
w_accgl-item_text = ls_bsis-sgtxt。 > w_accgl-bus_area = ls_bsis-gsber。 "'1000'。

如果ls_bsis-aufnr不初始化。
w_accgl-orderid = ls_bsis-aufnr。"'000000900262'。
ENDIF。
如果ls_bsis-kostl不是初始化 。
w_accgl-costcenter = ls_bsis-kostl。 "'HO1090'。
ENDIF。

通话功能'CONVERSION_EXIT_ALPHA_INPUT'
导出
输入= w_accgl-gl_account
导入
输出= w_accgl-gl_account。
< br>调用功能'CONVERSION_EXIT_ALPHA_INPUT'
导出
输入= w_accgl-orderid
导入
输出= w_accgl-orderid。


APPEND w_accgl到t_accgl。

清除 w_curramt。
w_curramt-itemno_acc =计数。" 1。
w_curramt-curr_type ='00'。
w_curramt-currency = ls_bsis-waers。
w_curramt-amt_doccur = ls_bsis-wrbtr。 " 200.



*附加w_curramt至t_curramt。
* ENDIF。
count =计数+ 1.



lv_date = ls_bsis-budat-sy-datum。
Shift lv_date左侧删除领先,为'0'。

IF lv_date GT 90.


BREAK-POINT。
通话功能' BAPI_ACC_GL_POSTING_POST'
导出
documentheader = w_head
IMPORTING
obj_type = ld_obj_type
obj_key = ld_obj_key
obj_sys = ld_obj_sys
表格
accountgl = t_accgl

return = t_return
* EXTENSION1 = EXTENSION1

ENDIF。

断点。
如果t_return不初始。
读取表t_return进入w_return WITH 密钥类型='S'。
如果sy-subrc EQ0。
调用函数'BAPI_TRANSACTION_COMMIT'
*导出
*等待=
*导入
*返回=


WRITE:/w_return-message。
ELSE。

*数据返回类型BAPIRET2。

通话功能'BAPI_TRANSACTION_ROLLBACK'
*导入
* RETURN = RETURN


LOOP AT t _return INTO w_return。
写:/w_return-message。
ENDLOOP。
ENDIF。
ENDIF。
ENDLOOP。

我写了这段代码,但是我遇到了错误

1 E RW 609文档错误:BKPFF $ NLDCLNT900

2 E RW 014 FI/CO界面:订单项多次输入

3 E F 5354公司代码1000中的帐户2310000无法直接发布到

感谢与问候,

Prashanth Namani

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


FBL3N交易:如果供应商未在90天前存入支票,则应在第91天自动撤消

TYPES:ty_bsis的开始,

bukrs TYPE bukrs,"公司代码
hkont TYPE hkont,"总帐科目
augdt TYPE augdt,"结算日期
augbl TYPE augbl, "清算凭证的文件编号
zuonr TYPE dzuonr,"工作分配编号
gjahr TYPE gjahr,"会计年度
belnr TYPE belnr_d,"会计凭证编号
buzei TYPE buzei,"行项目编号 在会计凭证
类别budat中,"凭证中的过帐日期
bldat TYPE bldat,"凭证中的凭证日期
类别waers,"货币
xblnr TYPE xblnr1,"引用
blart TYPE blart,"文档类型
monat TYPE monat,"句号
bschl TYPE bschl,"发布密钥
gsber TYPE gsber,"业务区域
dmbtr TYPE dmbtr,"金额
wrbtr TYPE wrbtr,"单据货币金额
sgtxt TYPE sgtxt,"文本
aufnr TYPE aufnr_neu," order
kostl TYPE kostl,"成本中心
ty_bsis的结尾。

TYPES: ty_bkpf的开始,
bukrs TYPE bukrs,
belnr TYPE belnr _d,
gjahr类型gjahr,
bktxt类型bktxt,
ty_bkpf的结尾。
TYPES:ty_bseg的开始,
bukrs类型bukrs,
belnr类型belnr_d,
gjahr TYPE gjahr,
buzei TYPE buzei,
lifnr TYPE lifnr,
hkont TYPE hkont,

ty_bseg的结尾。



数据:计数TYPE i VALUE 1 。
数据:ty_bsis的lt_bsis类型表,
ty_bkpf的lt_bkpf类型表,
ty_bseg的lt_bseg类型表,
ls_bseg的类型ty_bseg,
ls_bsis的类型ty_b> ,
lv_date(4)类型n。


数据:w_head类型bapiachegl08,
w_accgl类型bapiacgl08,
t_accgl类型bapiacgl08的表,
w_curramt类型bapiaccr08,< br> bapiaccr08的t_curramt类型表,
t_return bapiret2的类型表,
w_return bapiret2的类型表。

数据lt_REVERSAL TYPE BAPIACREV。


数据:ld_obj_type类型bapiacre- obj_type,
ld_obj_key类型bapiacrev-obj_key,
ld_obj_sys类型bapiacrev-obj_sys。
* DATA DOCUMENTHEADER类型BAPIACHE08。
* DATA OBJ_TYPE TYPE BAPIACHE02-OBJ_TYPE。
*数据对象TYPE BAPIACHE02-OBJ_KEY。
* DATA OBJ_SYS TYPE BAPIACHE02-OBJ_SYS。
* DATA ACCOUNTGL类型标准表BAPIACGL08的表。
* DATA CURRENCYAMCROUNT类型的标准表 。
* BAPIRET2的数据返回类型标准表。
* BAPIEXTC的数据扩展1类型标准表。

b1块的开始,带有帧标题text-001的选择屏幕。
SELECT- 选项:s_hkont用于bsis-hkont。
b1块的选择屏幕结束。


开始选择。

SELECT
bukrs
hkont < br> augdt
augbl
zuonr
gjahr
belnr
buzei
budat
bldat
waers
xblnr
blart
monat
bschl
gsber
dmbtr
wrbtr
sgtxt
aufnr
kostl
从bsis
到表lt_bsis
中,hkont在s_hkont
和bukrs = 1000 。


如果lt_bsis不初始。
SELECT
bukrs
belnr
gjahr
bktxt

从bkpf
到表lt_bkpf
对于lt_bsis中的所有条目
bukrs = lt_bsis-bukrs
AND belnr = lt_bsis-belnr
AND gjahr = lt_bsis-gjahr。


SELECT
bukrs
belnr
gjahr
buzei
lifnr
hkont
从bseg
到表lt_bseg
中lt_bsis
中的所有条目,其中bukrs = lt_bsis-bukrs
AND belnr = lt_bsis-belnr
gjahr = lt_bsis-gjahr

AND koart ='K'。

ENDIF。

将lt_bsis循环到ls_bsis。
lv_date = ls_bsis-budat-sy-datum 。
转换lv_date左删除领先'0'。

IF lv_date LE 90.

从ls_bsis删除表lt_bsis。
ENDIF。
ENDLOOP。
< br>选择结束。

将lt_bsis循环到ls_bsis中。

清除ls_bseg。
读取表lt_bseg并使用键将其放到ls_bseg中bukrs = ls_bsis-bukrs
belnr = ls_bsis -belnr
gjahr = ls_bsis-gjahr


清除ls_bkpf。
读取表lt_bkpf到带有键bukrs的ls_bkpf中= ls_bsis-bukrs
belnr = ls_bsis-belnr
g = ls_bsis-gjahr。


w_head-username = sy-uname。
w_h ead-comp_code ='1000'。
w_head-doc_type ='BA'。
w_head-fisc_year = ls_bsis-gjahr。
w_head-fis_period = ls_bsis-monat。
w_head-doc_date = sy- 基准。
w_head-pstng_date = sy-datum。
w_head-ref_doc_no = ls_bsis-xblnr。
w_head-header_txt = ls_bkpf-bktxt。




w_accgl-itemno_acc =计数。 " ********** Dount ****************""
w_accgl-gl_account = ls_bsis-hkont。
w_accgl-bus_area = ls_bsis-gsber 。
w_accgl-orderid = ls_bsis-aufnr。
w_accgl-costcenter = ls_bsis-kostl。
w_accgl-item_text = ls_bsis-sgtxt。
呼叫功能'CONVERSION_EXIT_ALPHA_INPUT'
= w_accgl-gl_account
导入
输出= w_accgl-gl_account。

通话功能'CONVERSION_EXIT_ALPHA_INPUT'
导出
输入= w_accgl-orderid
IMPORTING
输出= w_accgl -orderid。

将w_accgl附加到t_accgl。

清除w_curramt。
w_curramt-itemno_acc =计数。 " ********* Dount ****************""
w_curramt-curr_type ='00'。
w_curramt-currency = ls_bsis-waers。
w_curramt-amt_doccur = ls_bsis-wrbtr。
APPEND w_curramt到t_curramt。
*
*
清除w_accgl。
w_accgl-itemno_acc =计数。
w_accgl-gl_account = ls_b -hkont .."'0007102202'。
w_accgl-AC_DOC_NO = ls_bsis-belnr。
w_accgl-VENDOR_NO = ls_BSEG-LIFNR .."'0007102202'。
w_accgl-item_text = ls_bsis-sgtxt。 > w_accgl-bus_area = ls_bsis-gsber。 "'1000'。

如果ls_bsis-aufnr不初始化。
w_accgl-orderid = ls_bsis-aufnr。"'000000900262'。
ENDIF。
如果ls_bsis-kostl不是初始化 。
w_accgl-costcenter = ls_bsis-kostl。 "'HO1090'。
ENDIF。

通话功能'CONVERSION_EXIT_ALPHA_INPUT'
导出
输入= w_accgl-gl_account
导入
输出= w_accgl-gl_account。
< br>调用功能'CONVERSION_EXIT_ALPHA_INPUT'
导出
输入= w_accgl-orderid
导入
输出= w_accgl-orderid。


APPEND w_accgl到t_accgl。

清除 w_curramt。
w_curramt-itemno_acc =计数。" 1。
w_curramt-curr_type ='00'。
w_curramt-currency = ls_bsis-waers。
w_curramt-amt_doccur = ls_bsis-wrbtr。 " 200.



*附加w_curramt至t_curramt。
* ENDIF。
count =计数+ 1.



lv_date = ls_bsis-budat-sy-datum。
Shift lv_date左侧删除领先,为'0'。

IF lv_date GT 90.


BREAK-POINT。
通话功能' BAPI_ACC_GL_POSTING_POST'
导出
documentheader = w_head
IMPORTING
obj_type = ld_obj_type
obj_key = ld_obj_key
obj_sys = ld_obj_sys
表格
accountgl = t_accgl

return = t_return
* EXTENSION1 = EXTENSION1

ENDIF。

断点。
如果t_return不初始。
读取表t_return进入w_return WITH 密钥类型='S'。
如果sy-subrc EQ0。
调用函数'BAPI_TRANSACTION_COMMIT'
*导出
*等待=
*导入
*返回=


WRITE:/w_return-message。
ELSE。

*数据返回类型BAPIRET2。

通话功能'BAPI_TRANSACTION_ROLLBACK'
*导入
* RETURN = RETURN


LOOP AT t _return INTO w_return。
写:/w_return-message。
ENDLOOP。
ENDIF。
ENDIF。
ENDLOOP。

我写了这段代码,但是我遇到了错误

1 E RW 609文档错误:BKPFF $ NLDCLNT900

2 E RW 014 FI/CO界面:订单项多次输入

3 E F 5354公司代码1000中的帐户2310000无法直接发布到

感谢与问候,

Prashanth Namani

付费偷看设置
发送
5条回答
悠然的二货
1楼 · 2020-08-27 00:00.采纳回答

您好 namani Prashanth

对于第二条消息" E RW 014 FI/CO接口:订单项输入了几次",这是因为您要传递给t_accgl的项目编号。

在传递第一个项目之后,第二行必须增加no_acc,但是 您的代码在添加两行之后都在增加,因此两条GL行的itemno_acc均为1。

"公司代码1000中的F5354帐户2310000无法直接过帐到"受SKB1-MITKZ字段影响。

在检查此消息的使用位置列表时,大多数地方已经检查了NE'V'和'A'。 在SKB1表中为MITKZ检查2310000,这可能是FI同事设置帐户的方式。

 CLEAR w_accgl。
 count = count +1。<-----------------添加此代码--------------
 w_accgl-itemno_acc =计数。
 w_accgl-gl_account = ls_bseg-hkont。"'0007102202'。
 w_accgl-AC_DOC_NO = ls_bsis-belnr。
 w_accgl-VENDOR_NO = ls_BSEG-LIFNR .."'0007102202'。
 w_accgl-item_text = ls_bsis-sgtxt。
 w_accgl-bus_area = ls_bsis-gsber。  "'1000'。
 
当学会了学习
2楼-- · 2020-08-26 23:56

发布代码时,请使用" CODE"按钮共享代码,然后所有人都可以看到。

您尝试手动撤消此文档吗? 使用FB08或您以前在公司中获得的tcode? 如果工作正常,则需要调试代码并查看传递的参数。

如果手动执行操作时遇到相同的错误,则应检查要撤销的GL帐户。

宇峰Kouji
3楼-- · 2020-08-26 23:48

你好 namani Prashanth

首先 始终使用CODE选项粘贴您的代码,这种方式几乎是不可能的。

以下错误可能是根本原因:

->输入了相同的订单项

->您的总帐帐户映射/配置错误。

检查有效数据,然后使用CODE选项粘贴代码。

注意 !

骆驼绵羊
4楼-- · 2020-08-26 23:39

Tq非常适合您,您需要快速回复@ Thanga Prakash 汤加拉吉(Thanga Raj)

我将更改代码,

,我会尽快回复您。

何必丶何苦呢
5楼-- · 2020-08-26 23:39

您好 namani Prashanth

您可以找到以下突出显示的CODE选项:

一周热门 更多>