PP生产订单的BADI增强 WORKORDER_UPDATE

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

**&---------------------------------------------------------------------*
**&      Form  frm_set_tdname
**&---------------------------------------------------------------------*
**       text
**----------------------------------------------------------------------*
**      -->P_TDNAME   text
**      -->P_TDLINES  text
**      -->OF         text
**      -->TLINE      text
**----------------------------------------------------------------------*
*FORM frm_set_tdname USING p_tdname TYPE string
*                     CHANGING p_tdlines TYPE table of tline.
*
*
*  CLEAR: ls_tline1.
*
**  ls_tline1-TDFORMAT = '*'.
*
*  ls_tline1-tdline = p_tdname.
*
*  INSERT ls_tline1 INTO p_tdlines INDEX 1.
*
*ENDFORM.                    "frm_set_tdname

你可能感兴趣的:(PP生产订单的BADI增强 WORKORDER_UPDATE)