zoukankan      html  css  js  c++  java
  • 工单相关函数

     项目中,生产订单的状态是了解生产过程的主要依据,也是自开发报表中常用到的,下面是生产订单状态的几个函数以及生产订单技术关闭、生产订单报工的几个函数,希望对用到的兄弟有所帮助。

    [相关表]

    JEST-对象的系统状态(I****)和用户状态(E****)

    JSTO-状态对象信息

    TJ02T-系统状态文本

    -用户状态文本

     

    【锁对象】:生产订单锁对象  ESORDER

    函数:  ENQUEUE_ESORDER,  DEQUEUE_ESORDER

     

    [函数1]:检查多个对象的状态并过滤

        CALL FUNCTION 'STATUS_CHECK_MULTI'
          EXPORTING
            status      = cns_stat_20  "系统状态或用户状态
            flg_exclude = cns_active   "X or space
          TABLES
            OBJECTS     = gt_objnr_tab.

     

    [函数2]:读取对象的所有有效状态的文本

     

           CALL FUNCTION 'STATUS_TEXT_EDIT'
          EXPORTING
    *       CLIENT                  = SY-MANDT
    *       FLG_USER_STAT           = ' '
            objnr                   = <fs_aufk>-objnr
            only_active             = 'X'
            spras                   = sy-langu
    *       BYPASS_BUFFER           = ' '
         IMPORTING
    *       ANW_STAT_EXISTING       =
    *       E_STSMA                 =
            line                    = <fs_aufk>-sttxt
    *       USER_LINE               =
    *       STONR                   =
         EXCEPTIONS
           object_not_found        = 1
           OTHERS                  = 2

     

    [函数3]:读取单个对象的对象状态

           CALL FUNCTION 'STATUS_OBJECT_READ'
          EXPORTING
            client           = sy-mandt
            objnr            = up_objnr
          IMPORTING
            e_jsto           = ls_jsto
          EXCEPTIONS
            object_not_found = 1
            OTHERS           = 2.

     

    [函数4]:改变对象用户状态

           CALL FUNCTION 'I_CHANGE_STATUS'
          EXPORTING
            objnr          = up_objnr
            estat_inactive = cns_stat_20
            estat_active   = cns_stat_10
            stsma          = ls_jsto-stsma
          EXCEPTIONS
            cannot_update  = 1
            OTHERS         = 2.

    注意:用户状态改变时,一个状态设置为激活,另一个状态需要设置为非激活

     

    【函数5】:改变对象系统状态

         CALL FUNCTION 'STATUS_CHANGE_INTERN'
           EXPORTING
    *       CHECK_ONLY                = ' '
            client                    = sy-mandt
            objnr                     = up_objnr
    *       ZEILE                     = ' '
    *       SET_CHGKZ                 =
          IMPORTING
           error_occurred            = lv_error
           object_not_found          = lv_object_not_found
           status_inconsistent       = lv_status_inconsistent
           status_not_allowed        = lv_status_not_allowed
          TABLES
            status                    = tp_jstat
          EXCEPTIONS
           object_not_found          = 1
           status_inconsistent       = 2
           status_not_allowed        = 3
           OTHERS                    = 4

    注意:在Tables参数Status中,需要一并准备好相互切换的两组状态,一个设置为激活,另一个设置为非激活

     

    【函数6】:订单技术关闭

     

         CALL FUNCTION 'BAPI_PRODORD_COMPLETE_TECH'
    * EXPORTING
    *   SCOPE_COMPL_TECH         = '1'
    *   WORK_PROCESS_GROUP       = 'COWORK_BAPI'
    *   WORK_PROCESS_MAX         = 99
       IMPORTING
         return                   = ls_return
       TABLES
         orders                   = lt_aufnr
         detail_return            = lt_detail
    *   APPLICATION_LOG          =

     

     

    【函数6】:生产订单报工函数

              DATA:IT_TT        TYPE TABLE OF BAPI_PP_TIMETICKET,
                   WA_TT        TYPE BAPI_PP_TIMETICKET,
                   IT_DR        TYPE TABLE OF BAPI_CORU_RETURN,
                   WA_DR        TYPE BAPI_CORU_RETURN,
                   WA_RETURN    TYPE BAPIRET1,
                   I_ERRMSG     TYPE BAPIRET2-MESSAGE,"记录返回消息中的错误消息
                   I_TIME(14)   TYPE C, "传送时间
                   I_ERRFLG     TYPE C,
                   I_COUNT      TYPE I."用于对导入数据的行数记录

                  CLEAR:WA_TT,
                        I_COUNT,
                        I_ERRMSG,
                        I_ERRFLG,
                        WA_RETURN.

    *          * 订单号转换
                  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
                    EXPORTING
                      INPUT = ITAB_SER05-PPAUFNR
                    IMPORTING
                      OUTPUT = WA_TT-ORDERID.
                  WA_TT-OPERATION = V_VORNR.
                  WA_TT-YIELD      = '1'.
                  WA_TT-POSTG_DATE = SY-DATUM.


              DATA:C_VORNR TYPE AFVC-VORNR,
                   C_AUFNR TYPE AFKO-AUFNR,
                   C_APLZL TYPE AFVC-APLZL,
                   C_AUFPL TYPE AFVC-AUFPL,
                   WA_AFVV TYPE AFVV.

                  CLEAR IT_TT.
                  REFRESH IT_TT.

                  CLEAR IT_DR.
                  REFRESH IT_DR.

                  SELECT SINGLE AFVC~APLZL AFVC~AUFPL
                                INTO (C_APLZL, C_AUFPL)
                                FROM AFVC INNER JOIN AFKO
                                ON    AFVC~AUFPL = AFKO~AUFPL
                                WHERE AFKO~AUFNR = WA_TT-ORDERID
                                AND   AFVC~VORNR = V_VORNR.

                  SELECT SINGLE * FROM AFVV INTO WA_AFVV
                                  WHERE AUFPL = C_AUFPL
                                  AND   APLZL = C_APLZL.

                  WA_TT-FIN_CONF = '1'.

                  WA_TT-CONF_ACTI_UNIT1 = WA_AFVV-VGE01.
                  WA_TT-CONF_ACTI_UNIT2 = WA_AFVV-VGE02.
                  WA_TT-CONF_ACTI_UNIT3 = WA_AFVV-VGE03.
                  WA_TT-CONF_ACTI_UNIT4 = WA_AFVV-VGE04.
                  WA_TT-CONF_ACTI_UNIT5 = WA_AFVV-VGE05.
                  WA_TT-CONF_ACTI_UNIT6 = WA_AFVV-VGE06.
                  WA_TT-CONF_ACTIVITY1 = WA_TT-YIELD * WA_AFVV-VGW01 / WA_AFVV-BMSCH.
                  WA_TT-CONF_ACTIVITY2 = WA_TT-YIELD * WA_AFVV-VGW02 / WA_AFVV-BMSCH.
                  WA_TT-CONF_ACTIVITY3 = WA_TT-YIELD * WA_AFVV-VGW03 / WA_AFVV-BMSCH.
                  WA_TT-CONF_ACTIVITY4 = WA_TT-YIELD * WA_AFVV-VGW04 / WA_AFVV-BMSCH.
                  WA_TT-CONF_ACTIVITY5 = WA_TT-YIELD * WA_AFVV-VGW05 / WA_AFVV-BMSCH.
                  WA_TT-CONF_ACTIVITY6 = WA_TT-YIELD * WA_AFVV-VGW06 / WA_AFVV-BMSCH.
    *          ************************

                  APPEND WA_TT TO IT_TT.
                  CALL FUNCTION 'BAPI_PRODORDCONF_CREATE_TT'   "主要是这个BAPI
                    IMPORTING
                      RETURN        = WA_RETURN
                    TABLES
                      TIMETICKETS   = IT_TT
                      DETAIL_RETURN = IT_DR.

    *             处理BAPI错误
                  CLEAR I_ERRFLG.
                  CLEAR I_ERRMSG.
                  LOOP AT IT_DR INTO WA_DR.
                    IF WA_DR-TYPE = 'E'.
                      I_ERRFLG = 'X'.

                      I_ERRMSG = WA_DR-MESSAGE.
                    ELSE.

                    ENDIF.

                    IF I_ERRFLG IS INITIAL.
                      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
                        EXPORTING
                          WAIT = 'X'.

                    ELSE.
                      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

                          MESSAGE E232(ZLC) WITH I_ERRMSG.
                          DELETE FROM ZPPBG  WHERE SERNR = RESULT1-SERNR.

                    ENDIF.
                  ENDLOOP.
    ---------------------
    作者:ChampaignWolf
    来源:CSDN
    原文:https://blog.csdn.net/champaignwolf/article/details/45362637
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    docker 安装mysql
    Java web项目搭建系列之二 Jetty下运行项目
    Java web项目搭建系列之一 Eclipse中新建Maven项目
    Maven 添加其他Maven组件配置问题
    C# 中定义扩展方法
    Oracle 函数
    【Webservice】2 counts of IllegalAnnotationExceptions Two classes have the same XML type name
    Linux精简版系统安装网络配置问题解决
    Rsync 故障排查整理
    Failed to set session cookie. Maybe you are using HTTP instead of HTTPS to access phpMyAdmin.
  • 原文地址:https://www.cnblogs.com/hdchen/p/10291155.html
Copyright © 2011-2022 走看看