SAP S4HANA使用ABAP获得生产订单的状态

在S/4HANA里,我们如何根据一个销售订单的行项目,查看对应的生产订单状态?

双击行项目:
SAP S4HANA使用ABAP获得生产订单的状态
点击Schedule line:
SAP S4HANA使用ABAP获得生产订单的状态

这里就能看到生产订单的ID和状态了。
SAP S4HANA使用ABAP获得生产订单的状态
其中订单的状态存储在表vsaufk里,注意订单和状态可以是1对多的关系。
状态的ID和描述信息存储在表tj02t里,所以有了下面的代码:

  METHOD get_prod_order_status.
    DATA: lt_status TYPE TABLE OF j_status,
          lt_text   TYPE TABLE OF tj02t,
          lv_id     LIKE iv_prod_order_id,
          ls_result LIKE LINE OF rt_status_in_s4_format.

    lv_id = iv_prod_order_id.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  = lv_id
      IMPORTING
        output = lv_id.

    SELECT stat INTO TABLE lt_status FROM vsaufk WHERE inact = space AND
       aufnr = lv_id.

    CHECK sy-subrc = 0.

    SELECT * INTO TABLE lt_text FROM tj02t FOR ALL ENTRIES IN lt_status
       WHERE istat = lt_status-table_line AND spras = 'EN'.


    LOOP AT lt_text ASSIGNING FIELD-SYMBOL(<text>).
      CLEAR: ls_result.

      ls_result-status_id = <text>-istat.
      ls_result-status_code = <text>-txt04.
      ls_result-status_text = <text>-txt30.
      APPEND ls_result TO rt_status_in_s4_format.
    ENDLOOP.

  ENDMETHOD.

测试一下,成功拿到所有状态,和事务码CO03里看到的一样。
SAP S4HANA使用ABAP获得生产订单的状态

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

SAP S4HANA使用ABAP获得生产订单的状态