ABAP销售订单审批状态 - 海边星
【原创】 ABAP销售订单审批状态
栏目:ABAP  作者:在海边看星星  阅读:(77)

先CALL FM:  'I_CHANGE_STATUS' 修改状态,但是这个FM不会刷新销售订单里前台的状态,所以还需要调用BDC刷新一下

代码如下:

    READ TABLE gt_data WITH KEY chk = abap_true.
      IF sy-subrc NE 0.
        MESSAGE s001(00) WITH '请至少选中一行数据处理!' DISPLAY LIKE 'E'.
        RETURN.
      ENDIF.

*****  弹框提示
* Confirmation
      CLEAR:lv_answer,lt_t_msg[].
      CALL FUNCTION 'POPUP_TO_CONFIRM'
        EXPORTING
          text_question  = '是否确认进行审核操作?'
        IMPORTING
          answer         = lv_answer
        EXCEPTIONS ##FM_SUBRC_OK
          text_not_found = 1
          OTHERS         = 2.
      IF sy-subrc <> 0.
      ENDIF.
      CHECK lv_answer EQ '1'. " OK

      LOOP AT gt_data WHERE chk = abap_true.
        CALL FUNCTION 'I_CHANGE_STATUS'
          EXPORTING
            objnr          = gt_data-objnr "对象编号
            estat_inactive = 'E0001'     "原状态
            estat_active   = 'E0002'      "新状态
            stsma          = 'ZSD01'        ”状态参数文件
          EXCEPTIONS
            cannot_update  = 1
            OTHERS         = 2.
        IF sy-subrc <> 0.
          gt_data-mess = |审核失败|.
        ELSE.
          PERFORM call_va02.  "调用va02刷新状态
          IF gt_data-mess IS INITIAL.
            gt_data-mess = |审核成功|.
          ENDIF.

        ENDIF.
        MODIFY gt_data TRANSPORTING mess.
      ENDLOOP.

*&---------------------------------------------------------------------*
*&      Form  CALL_VA02
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM call_va02 .

  DATA: l_mode     TYPE c VALUE 'N',
        l_msg(220).

  REFRESH bdcdata[] .
  CLEAR bdcdata .
  CLEAR: messtab,messtab[].

  PERFORM bdc_dynpro    USING 'SAPMV45A' '0102'.
  PERFORM bdc_field     USING 'VBAK-VBELN'   gt_data-vbeln.
  PERFORM bdc_field     USING 'BDC_OKCODE'   '/00'.

  PERFORM bdc_dynpro    USING 'SAPMV45A' '4008'.
  PERFORM bdc_field     USING 'BDC_OKCODE'   '=POPO'.

  PERFORM bdc_dynpro    USING 'SAPMV45A' '0251'.
  PERFORM bdc_field     USING 'RV45A-POSNR'   gt_data-posnr.
  PERFORM bdc_field     USING 'BDC_OKCODE'   '=POSI'.

  PERFORM bdc_dynpro    USING 'SAPMV45A' '4008'.
  PERFORM bdc_field     USING 'RV45A-VBAP_SELKZ(01)'   'X'.
  PERFORM bdc_field     USING 'BDC_OKCODE'   '=ITEM'.

  PERFORM bdc_dynpro    USING 'SAPMV45A' '4003'.
  PERFORM bdc_field     USING 'BDC_OKCODE'   '=T\11'.

  PERFORM bdc_dynpro    USING 'SAPMV45A' '4003'.
  PERFORM bdc_field     USING 'BDC_OKCODE'   '/EBACK'.

  PERFORM bdc_dynpro    USING 'SAPMV45A' '4008'.
  PERFORM bdc_field     USING 'BDC_OKCODE'   '=SICH'.


  IF gv_option-dismode EQ space.
    gv_option-dismode = l_mode.
  ENDIF.

  gv_option-updmode  = 'S'.
  gv_option-racommit = 'X'.
  gv_option-cattmode = ''.
  gv_option-nobinpt  = 'X'.

  CALL TRANSACTION 'VA02' USING bdcdata
                          OPTIONS FROM gv_option
                          MESSAGES INTO messtab.

  LOOP AT messtab WHERE msgtyp = 'E' OR msgtyp = 'A'.
    MESSAGE ID messtab-msgid TYPE messtab-msgtyp NUMBER messtab-msgnr
            INTO l_msg
            WITH messtab-msgv1 messtab-msgv2
                 messtab-msgv3 messtab-msgv4.

    l_msg = l_msg && ';'.
    gt_data-mess = gt_data-mess && l_msg.
  ENDLOOP.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  BDC_DYNPRO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->PROGRAM    text
*      -->DYNPRO     text
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
  CLEAR bdcdata.
  bdcdata-program = program.
  bdcdata-dynpro = dynpro.
  bdcdata-dynbegin = 'X'.
  APPEND bdcdata.
ENDFORM.                    "BDC_DYNPRO

*&---------------------------------------------------------------------*
*&      Form  BDC_FIELD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->FNAM       text
*      -->FVAL       text
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
  CLEAR bdcdata.
  bdcdata-fnam = fnam.
  bdcdata-fval = fval.
  APPEND bdcdata.
ENDFORM.                    "BDC_FIELD



下一篇: 没有了


我的评论
昵称
邮箱
域名
  记住 通知博主
验证码

  联系我们

微信扫一扫

 登录  打赏

  随机文章