码迷,mamicode.com
首页 > 其他好文 > 详细

PP生产订单的BADI增强 WORKORDER_UPDATE

时间:2014-06-28 10:17:03      阅读:332      评论:0      收藏:0      [点我收藏+]

标签:数据   os   art      cti   name   

METHOD if_ex_workorder_update~before_update.

*---------------------->增强1 开始
* "当生产订单类型为PP01时,如果该生产订单有参考相关的销售订单,
* "那么在此生产订单存盘时,就需要判断该生产订单是否已经维护了相关的长文本数据,如果没有长文本数据,就需要查看
* "所对应的销售订单行项目上是否有长文本数据,如果有则将销售订单行项目的长文本带到该生产订单长文本中。
* "反之,如果此生产订单已经维护有相关的长文本数据,则不需要再去考虑销售订单行项目中的长文本

FIELD-SYMBOLS: <f1> TYPE cobai_t_header,
<f2> TYPE LINE OF cobai_t_header.

DATA v_program(50) TYPE c VALUE ‘(SAPLCOBT)CAUFV_BT[]‘.

DATA: wa_header TYPE LINE OF cobai_t_header,
v_flag.

DATA: v_tdname TYPE thead-tdname,
lt_lines TYPE STANDARD TABLE OF tline,
lt_lines0 TYPE STANDARD TABLE OF tline,
lt_lines1 TYPE STANDARD TABLE OF tline,
lt_lines2 TYPE STANDARD TABLE OF tline,
lt_lines3 TYPE STANDARD TABLE OF tline,
ls_line TYPE tline,
ls_line1 TYPE tline.

CLEAR: v_tdname, lt_lines0, lt_lines1, lt_lines2, lt_lines3,
lt_lines, ls_line, ls_line1.

CASE sy-tcode.

WHEN ‘CO40‘ OR ‘CO08‘ OR ‘CO01‘ OR ‘CO41‘.

READ TABLE it_header INTO wa_header INDEX 1.

"AUART订单类型、LTEXT长文本标识、KDAUF_AUFK参考销售订单号、KDPOS_AUFK参考销售订单行项目号
IF wa_header-auart EQ ‘PP01‘ AND wa_header-ltext EQ space AND wa_header-kdauf_aufk IS NOT INITIAL
AND wa_header-kdpos_aufk IS NOT INITIAL.

CONCATENATE wa_header-kdauf_aufk wa_header-kdpos_aufk INTO v_tdname. "销售订单行项目长文本的Name

"读取参考的销售订单行项目长文本
CALL FUNCTION ‘READ_TEXT‘
EXPORTING
id = ‘Z002‘
language = sy-langu
name = v_tdname
object = ‘VBBP‘
TABLES
lines = lt_lines0
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.

v_tdname = wa_header-kdauf_aufk.
"读取参考的销售订单行项目长文本
CALL FUNCTION ‘READ_TEXT‘
EXPORTING
id = ‘ZV06‘
language = sy-langu
name = v_tdname
object = ‘VBBK‘
TABLES
lines = lt_lines1
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.

CONCATENATE wa_header-kdauf_aufk wa_header-kdpos_aufk INTO v_tdname. "销售订单行项目长文本的Name
"读取参考的销售订单行项目长文本
CALL FUNCTION ‘READ_TEXT‘
EXPORTING
id = ‘Z001‘
language = sy-langu
name = v_tdname
object = ‘VBBP‘
TABLES
lines = lt_lines2
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.

* CONCATENATE wa_header-kdauf_aufk wa_header-kdpos_aufk INTO v_tdname. "销售订单行项目长文本的Name
* "读取参考的销售订单行项目长文本
* CALL FUNCTION ‘READ_TEXT‘
* EXPORTING
* id = ‘Z002‘
* language = sy-langu
* name = v_tdname
* object = ‘VBBP‘
* TABLES
* lines = lt_lines3
* EXCEPTIONS
* id = 1
* language = 2
* name = 3
* not_found = 4
* object = 5
* reference_check = 6
* wrong_access_to_archive = 7
* OTHERS = 8.


ls_line1-tdline = ‘行项目备注:‘.
INSERT ls_line1 INTO lt_lines0 INDEX 1.

ls_line1-tdline = ‘此单特殊要求:‘.
INSERT ls_line1 INTO lt_lines1 INDEX 1.

ls_line1-tdline = ‘开模信息:‘.
INSERT ls_line1 INTO lt_lines2 INDEX 1.
*
* ls_line1-tdline = ‘行项目备注:‘.
* INSERT ls_line1 INTO lt_lines3 INDEX 1.

LOOP AT lt_lines0 INTO ls_line.
APPEND ls_line TO lt_lines.
ENDLOOP.

LOOP AT lt_lines1 INTO ls_line.
APPEND ls_line TO lt_lines.
ENDLOOP.

LOOP AT lt_lines2 INTO ls_line.
APPEND ls_line TO lt_lines.
ENDLOOP.

* LOOP AT lt_lines3 INTO ls_line.
* APPEND ls_line TO lt_lines.
* ENDLOOP.

IF lt_lines IS NOT INITIAL.
CONCATENATE sy-mandt wa_header-aufnr INTO v_tdname."生产订单行项目长文本的Name

CALL FUNCTION ‘CREATE_TEXT‘
EXPORTING
fid = ‘KOPF‘
flanguage = sy-langu
fname = v_tdname
fobject = ‘AUFK‘
TABLES
flines = lt_lines
EXCEPTIONS
no_init = 1
no_save = 2
OTHERS = 3.

IF sy-subrc = 0.
ASSIGN (v_program) TO <f1>.
READ TABLE <f1> ASSIGNING <f2> INDEX 1.
<f2>-ltext = ‘1‘.

ENDIF.

ENDIF.

ENDIF.

ENDCASE.
*--------------------------->增强1结束
ENDMETHOD. "if_ex_workorder_update~before_update

PP生产订单的BADI增强 WORKORDER_UPDATE,布布扣,bubuko.com

PP生产订单的BADI增强 WORKORDER_UPDATE

标签:数据   os   art      cti   name   

原文地址:http://www.cnblogs.com/twttafku/p/3804198.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!