PP生產訂單的BADI加強 WORKORDER_UPDATE

METHOD if_ex_workorder_update~before_update.spa

*---------------------->加強1 開始
* "當生產訂單類型爲PP01時,若是該生產訂單有參考相關的銷售訂單,
* "那麼在今生產訂單存盤時,就須要判斷該生產訂單是否已經維護了相關的長文本數據,若是沒有長文本數據,就須要查看
* "所對應的銷售訂單行項目上是否有長文本數據,若是有則將銷售訂單行項目的長文本帶到該生產訂單長文本中。
* "反之,若是今生產訂單已經維護有相關的長文本數據,則不須要再去考慮銷售訂單行項目中的長文本code

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

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

DATA: wa_header TYPE LINE OF cobai_t_header,
v_flag.date

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.co

WHEN 'CO40' OR 'CO08' OR 'CO01' OR 'CO41'.header

READ TABLE it_header INTO wa_header INDEX 1.arc

"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

相關文章
相關標籤/搜索