PP生产订单的BADI增强 WORKORDER_UPDATE

来源:互联网 发布:德国威能暖气片知乎 编辑:程序博客网 时间:2024/04/29 19:49
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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 新生儿头竖立0分怎么办 20天的宝宝便秘怎么办 出生23天的宝宝便秘怎么办 喝奶粉的宝宝便秘怎么办 抱孩子抱的驼背怎么办 4岁宝宝不拉屎怎么办 小朋友大便拉不出来怎么办 儿童便秘拉不出来怎么办 没感冒喉咙有痰怎么办 宝宝喂不进去药怎么办 新生儿只放屁不拉大便怎么办 新生儿腹胀不拉大便怎么办 8月宝宝咳嗽有痰怎么办 2个月婴儿惊吓怎么办 吃了米粉不拉屎怎么办 奇异果奶昔苦了怎么办 8个月宝宝偏瘦怎么办 一岁宝宝螺旋腿怎么办 七个月宝宝晚上咳嗽厉害怎么办 孕7个月感冒咳嗽怎么办 4个月婴儿肺炎怎么办 宝宝吃胡萝卜泥拉肚子怎么办 宝宝吃土豆泥不消化怎么办 五个月宝宝奶睡怎么办 橘子和牛奶一起吃了怎么办 半岁宝宝不喝水怎么办 一岁宝宝总是便秘怎么办 1岁的宝宝不喝水怎么办 两月宝宝不喝水怎么办 破壁机打出的果汁很浓稠怎么办 榨的果汁不甜怎么办 11个月宝宝吃盐怎么办 1岁半宝宝长牙慢怎么办 小孩里面的牙黑怎么办 7个半月宝宝便秘怎么办 2个月婴幼儿便秘怎么办 3个月宝宝不消化怎么办 一天大便二三次不消化怎么办 不消化没胃口几天不大便怎么办? 两个月的宝宝拉绿屎怎么办 肠胃不好消化功能差怎么办