创建生产订单时如何通过ABAP更新生产订单长文本?

2020-08-16 20:28发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 在创建生产订...

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

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


大家好,


在创建生产订单时,需要将Project长文本附加到生产订单长文本上(即使我们不为生产订单输入任何长文本,也需要将Project中的文本复制到生产订单长文本中 文字)。

为此,我在客户出口" EXIT_SAPLCOBT_001"中编写了以下代码。

首先,我正在使用READ_TEXT读取项目的长文本。

然后使用READ_TEXT读取生产订单长文本。

将项目长文本追加到生产订单长文本并使用SAVE_TEXT保存。

使用COMMIT_TEXT进行提交。

以上逻辑在一种情况下有效。

情况1:生产订单长文本不为空。

如果我们在生产订单长文本中输入内容,则效果很好。


情况2:生产订单长文本为空白。

当我们不在生产订单长文本下输入任何文本时,它不起作用。

保存文本后,我可以看到STXH表已使用相应的条目进行了更新,但长文本未在生产订单中更新。 并且AUFK-LTEXT字段也不会使用语言字段更新。 对于第二种情况,我也尝试使用CREATE_TEXT而不是SAVE_TEXT,但它也不起作用。


可以帮您解决此要求吗?


谢谢



此致

Ramesh

6条回答
悻福寶寶
2020-08-16 21:24

这是我的代码,

数据:lv_prod_tdname TYPE stxh-tdname。
数据:lv_proj_tdname TYPE stxh-tdname。

数据:lt_prod_lines TYPE STANDARD TABLE OF TLINE。
DATA:lt_proj_lines TYPE STANDARD TABLE。 br>数据:lt_lines类型标准行表。
数据:ls_header TYPE thead。
数据:lv_insert TYPE c。
数据:wa_caufvd TYPE caufvd。
数据:wa_aufk TYPE aufk。

DATA caufvd_imp TYPE caufvd。
DATA tc10_wa TYPE tc10。
DATA rc27s_imp TYPE rc27s。
DATA caufvd_imp_old TYPE caufvd。
DATA allocd_imp TYPE alloced。 br> *读取项目文本

读取表position_table索引1。
将'E'position_table-projn并入lv_proj_tdname。

调用函数'READ_TEXT'
导出
客户端 = sy-mandt
id ='LTXT'
语言= sy-langu
名称= lv_proj_tdname
对象='PMS'
表格
行= lt_proj_lines
例外
> id = 1
语言= 2
名称= 3
not_found = 4
对象= 5
reference_check = 6
错误_ac cess_to_archive = 7
其他=8。
IF sy-subrc EQ 0.

*读取生产订单文本

READ TABLE header_table INDEX 1.
合并sy-mandt header_table-aufnr INTO lv_prod_tdname。
呼叫功能'READ_TEXT'
导出
客户端= sy-mandt
id ='KOPF'
语言= sy-langu
名称= lv_prod_tdname
对象='AUFK'
表格
行= lt_prod_lines
例外情况
id = 1
语言= 2
名称= 3
not_found = 4
对象= 5
reference_check = 6
错误_access_to_archive = 7
其他=8。
*使用新表将项目文本追加到生产订单文本
将lt_prod_lines添加到lt_lines。
追加lt_proj_lines 到lt_lines。
ENDIF。

*保存新的生产订单长文本
如果不是lt_lines是INITIAL的话。
ls_header-tdobject ='AUFK'。
ls_header-tdname = lv_prod_tdname。
ls_header-tdspras = sy-language。
ls_header-tdid ='KOPF'。

*如果生产订单长文本不为空白
IF lt_prod_lines []无效。
调用功能'SAVE_TEXT'
导出
客户端= sy-mandt
标头= ls_header
插入='X'
表格
行= lt_lines
例外情况
id = 1
语言= 2
名称= 3
对象= 4
其他= 5
如果sy-subrc EQ 0.
调用 功能'COMMIT_TEXT'
导出
对象= ls_header-tdobject
名称= ls_header-tdname
id = ls_header-tdid
语言= ls_header-tdspras。
ENDIF。
ENDIF 。

*如果生产订单lon文本为空白

如果lt_prod_lines []是INITIAL。
通话功能'CREATE_TEXT'
导出
fid = ls_header-tdid
语言= ls_header-tdspras
fname = ls_header-tdname
fobject = ls_header-tdobject
save_direct ='X'
TABLES
flines = lt_lines
EXCEPTIONS
no_init = 1
no_save = 2
其他=3。
如果sy-subrc EQ0。
调用功能'COMMIT_TEXT'
导出
object = ls_header-tdobject
name = ls_header- tdname
id = ls_header-tdid
语言 年龄= ls_header-tdspras。

将header_table移动到caufvd_imp。
caufvd_imp-ltext ='X'。

通话功能'CO_IH_SET_HEADER'
导出
caufvd_imp = caufvd_imp。
执行caufv_upd(saplcobh),使用caufvd_imp。
ENDIF。
ENDIF。
ENDIF。

一周热门 更多>