SAP-写了一个FUNCTION,用于读取订单中,指定工序的状态。

本文档介绍了在SAP开发过程中,由于系统未提供获取订单工序状态的Function,作者自行编写了一个FUNCTION,输入AFVC表主键,返回工序所有已激活状态的空格分隔字符串。内容包括需求说明、截图展示和源代码分享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求

在开发一个涉及工序的Report的过程中发现,SAP仅提供了Function去获取订单的状态,没有提供获取订单工序状态的Function。考虑到后续开发的过程中,还需要复用到这个功能,于是打算按这个需求去开发一个Function,传入AFVC表的主键,返回的是把该工序的全部已激活的状态,串成一个以空格分隔的字符串返回。

话不多说,直接上干货。先上截图,后上源码。

截图

代码

FUNCTION zpp_processes_status_read.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     REFERENCE(AUFPL) TYPE  CO_AUFPL
*"     REFERENCE(APLZL) TYPE  CO_APLZL
*"  EXPORTING
*"     REFERENCE(STTXT) TYPE  CO_STTXT
*"     REFERENCE(RETURNMSG) TYPE  BAPIRET2
*"----------------------------------------------------------------------

  DATA: lt_tj02t LIKE STANDARD TABLE OF tj02t,
        ls_tj02t LIKE tj02t.

  SELECT  tj02t~txt04
  FROM    afvc
          INNER JOIN
          jest
          ON jest~objnr = afvc~objnr AND jest~inact <> 'X'
          INNER JOIN
          tj02t
          ON jest~stat = tj02t~istat AND tj02t~spras = sy-langu
  INTO CORRESPONDING FIELDS OF TABLE lt_tj02t
  WHERE   afvc~aufpl = aufpl AND afvc~aplzl = aplzl.

  IF sy-subrc NE 0.
    returnmsg-type = 'E'.
    returnmsg-message = '获取工序状态失败!'.

    return.
  ENDIF.

  CLEAR: ls_tj02t.
  LOOP AT lt_tj02t INTO ls_tj02t.

    IF strlen( sttxt ) EQ 0.
      sttxt = ls_tj02t-txt04.
    ELSE.
*        STTXT =  STTXT && ' ' && ls_tj02t-txt04.  "这种写法是不会保留分隔符‘ ’的。

*        concatenate  sttxt ' ' ls_tj02t-txt04 into sttxt.  "这种写法是不会保留分隔符‘ ’的。

      concatenate  sttxt ' ' ls_tj02t-txt04 into sttxt SEPARATED BY ' '.
    ENDIF.
  ENDLOOP.
ENDFUNCTION.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rarenmen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值