SAP中Product Orders(生产订单)相关函数BAPI

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

[相关表]

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.

时间: 2024-10-09 08:01:15

SAP中Product Orders(生产订单)相关函数BAPI的相关文章

SAP中对于获取订单的状态

在SAP中对于如何获取订单的状态,提供了至少两个函数,分别是 STATUS_READ 和   STATUS_TEXT_EDIT.下面简单介绍这两个函数 1.STATUS_READ  改函数的实现原理大概是通过订单的对象好(OR+订单号) 到JEST中取出字段STAT INACT. JEST表中STAT是一串从字面看不出意思的字符,可以根据STAT到表TJ02T中找到具体的描述. 下面是具体用法 DATA:objnr TYPE aufk-objnr. objnr = 'OR000000100014

智邦国际ERP如何提高生产订单管理效率

  在生产制造业企业中,生产订单管理难是常见问题,它包含在生产管理流程中,如生产订单管理不当,会造成企业生产流程混乱.员工盲目生产,效率低.品质差.生产成本高等现象.要想解决生产订单管理问题不妨尝试一下用信息化手段来进行管理,下面以智邦国际ERP系统为例,详细了解一下如何在信息化时代加强公司生产订单流程管理,实现产品生产过程安全.高效.低耗.按期交货的. 第一步:生产订单添加 打开着智邦国际ERP系统-生产模块-生产订单-生产订单添加,填写订单主题后选择生产计划单,产品清单会自动关联,由此便可生

SAP中主数据和单据的删除

在SAP实际操作的过程中,有些主数据或者单据需要删除,但是删除的方法却不尽相同,所以笔者今天总结了下,供大家参考. 1,用T-Code去删除 例如我们要删除某个物料,我们可以用T-Code MM06 去删除. 2,利用删除按钮去删除,我们以SAP中标准的采购订单举例,用T-Code ME22N进入采购订单编辑状态,点击如下图红框中的垃圾桶按钮 3,我们可以通过修改数值为0的方法来实现删除 典型应用3.1,Quota Arrangement中供应商比例的调整,我们可以修改比例为0来达到删除配额分配

产品生产成本核算中,生产订单差异计算逻辑及生产订单成本公式

生产订单差异计算 订单差异有两类,即:控制差异和结算差异.结算差异指当订单完工时订单中实际成本减已转入库存的完工产品成本(入库的标准成本)的差异,此差异月末结算到库存,记入财务总帐.控制差异指当订单完工时订单中实际成本减目标成本的差异,此差异只是成本分析的工具,属于管理会计的范畴,同财务会计无关.控制差异按分析的种类主要划分为:价格差异.数量差异.资源利用差异等. 举例如下: 生产订单成本公式:

[SAP ABAP开发技术总结]业务对象和BAPI

目录导航 声明:原创作品,转载时请注明文章来自SAP师太博客,并以超链接形式标明文章原始出处,否则将追究法律责任!原文出自: 18.3.         业务对象和BAPI 184 18.3.1.     SAP业务对象(SWO1)... 184 18.3.1.1.           业务对象类型的组成... 185 18.3.1.2.           业务对象(BO)设计... 185 18.3.1.2.1.       创建业务表... 185 18.3.1.2.2.       创建

S/4HANA生产订单的标准状态和透明工厂原型状态的映射

事务码CO03查看生产订单的状态: 从下面的界面能看出S/4HANA里生产订单在任意时刻可能存在多个状态: 生产订单的ID和状态ID的关系是1:N,维护在数据库表VSAUFK里: 如何把上述SAP系统标准状态映射到透明工厂原型的5个状态去呢? 目前的映射实现采取的是"关键状态法": 只要生产订单的状态里包含I0048 - distributed to MES, 就认为该订单处于组装状态 只要生产订单的状态里包含I0012 - distributed to MES, 就认为该订单处于已交

SAP ABAP 库存盘点注意点及BAPI的使用

欢迎看到文章的朋友加入SAP技术交流QQ群:160061507 关于盘点的一点介绍: 盘赢:帐面库存小于实际库存.盘亏:帐面库存大于实际库存 盘点在系统中的步骤: 1.创建盘点凭证MI01 告知系统在需要盘点的:工厂,库存地,物料,是否批次,是否特殊库存. 2.冻结上述物料的库存移动 如果在盘点凭证中的Posting Block打勾,那么在盘点凭证中登记的物料就自动block了. 当然在实际操作中,最好就是把仓库大门一关,送货进来的供应商敲破大门就是不开,^_^,玩笑. 3.库存盘点MI04 盘

SAP 中如何寻找增强

方法一.利用TCODE寻找增强(第二代的增强) 执行一个程序(源代码后附),在选择屏幕处输入你所需要增强的程序TCODE,执行後,就会出现一个列表,那里就有关于如何增强这个的绝大部分SMOD增强. 点击进去,自己手动寻找需要的增强. 这是第二代增强 方法二.利用系统函数寻找         MODX_FUNCTION_ACTIVE_CHECK 在这个FUNCTION的代码最后添加一个断点.执行需要增强的TCODE,如果有增强,就会自动跳入DEBUG界面.在DEBUG界面,查看f_tab字段,这里

物料BOM和生产订单BOM的区别

物料BOM和生产订单BOM的区别[@[email protected]] 一般企业生产部在SAP创建生产订单的时候,就会产生一个生产订单BOM,这里的生产订单BOM是读取的物料BOM. 由于其它原因,需要修改成品的某几个零部件,在创建订单的时候,就可以修改订单BOM,物料BOM不会受任何的影响. 其实在生产订单的BOM读取完物料BOM之后就与物料BOM没有任何的关系了,下达订单之后,物料BOM订单BOM已经没有任何联系了,所以生产过程当中的物料消耗都与订单BOM有关系了.