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
原文地址:http://www.cnblogs.com/twttafku/p/3804198.html