ABAP-交货冲销
FUNCTION zsd_fm_43 .
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(I_VBELN_DN) LIKE  LIKP-VBELN
*"     VALUE(I_BUDAT) LIKE  SY-DATLO
*"  EXPORTING
*"     VALUE(STATUS) TYPE  C
*"     VALUE(MESSAGE) TYPE  CHAR200
*"----------------------------------------------------------------------
  DATA: ident     LIKE sy-uzeit.
  DATA: lt_mesgx LIKE STANDARD TABLE OF mesg WITH HEADER LINE,
        lt_mesg  TYPE tsmesg,
        ls_mesg  TYPE smesg.
  CLEAR lt_mesg[].
  DATA: lf_user        TYPE symsgv,
        lf_enqueue_arg LIKE seqg3-garg,                     "n_1662694
        lt_enqueue     LIKE seqg3 OCCURS 0 WITH HEADER LINE.
  CLEAR:lf_user,lf_enqueue_arg,lt_enqueue,lt_enqueue[].
  CONCATENATE sy-mandt i_vbeln_dn INTO lf_enqueue_arg.
  CALL FUNCTION 'ENQUEUE_READ'
    EXPORTING
      gclient               = sy-mandt
      gname                 = 'LIKP'
      garg                  = lf_enqueue_arg
      guname                = '*'
    TABLES
      enq                   = lt_enqueue
    EXCEPTIONS
      communication_failure = 1
      system_failure        = 2
      OTHERS                = 3.
  READ TABLE lt_enqueue INDEX 1.
  IF sy-subrc = 0.
    status  = 'E'.
    WRITE lt_enqueue-guname TO lf_user.                     "^_n_1662694
    MESSAGE e046(vl) WITH i_vbeln_dn lf_user INTO message.
    EXIT.
  ENDIF.
  CALL FUNCTION 'MESSAGES_INITIALIZE'    "消息初始化
    EXPORTING
      i_identification = ident
    IMPORTING
      e_identification = ident
    EXCEPTIONS
      OTHERS           = 0.
  CALL FUNCTION 'MESSAGES_ACTIVE'      "激活消息
    EXCEPTIONS
      OTHERS = 1.
  CALL FUNCTION 'WS_REVERSE_GOODS_ISSUE'
    EXPORTING
      i_vbeln                   = i_vbeln_dn
      i_budat                   = i_budat
      i_tcode                   = 'VL09'
      i_vbtyp                   = 'J'
    TABLES
      t_mesg                    = lt_mesgx
    EXCEPTIONS
      error_reverse_goods_issue = 1
      OTHERS                    = 2.
  IF sy-subrc =  0.
    COMMIT WORK AND WAIT.
    status  = 'S'.
    message = '冲销成功'.
  ELSE.
    status  = 'E'.
    ROLLBACK WORK.
    CALL FUNCTION 'MESSAGES_GIVE'     "获取消息
      TABLES
        t_mesg = lt_mesg.
    LOOP AT lt_mesg INTO ls_mesg.
      IF ls_mesg-msgty IS INITIAL.
        ls_mesg-msgty = 'S'.
      ENDIF.
      MESSAGE ID ls_mesg-arbgb TYPE ls_mesg-msgty NUMBER ls_mesg-txtnr
      WITH ls_mesg-msgv1 ls_mesg-msgv2 ls_mesg-msgv3 ls_mesg-msgv4 INTO message.
    ENDLOOP.
  ENDIF.
  CALL FUNCTION 'MESSAGES_INITIALIZE'
    EXPORTING
      i_identification = ident
    IMPORTING
      e_identification = ident
    EXCEPTIONS
      OTHERS           = 0.                                 "^_n_720286
  CALL FUNCTION 'MESSAGES_STOP'. "释放消息
ENDFUNCTION.
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号