zoukankan      html  css  js  c++  java
  • 删除PO

    FUNCTION zrfc_mm002.
    *"----------------------------------------------------------------------
    *"*"Local interface:
    *"  IMPORTING
    *"     VALUE(CALLNO) TYPE  ZCALLNO
    *"     VALUE(PO_NUMBER) LIKE  BAPIMEPOHEADER-PO_NUMBER
    *"  EXPORTING
    *"     VALUE(FLAG) LIKE  BAPIRET2-TYPE
    *"     VALUE(MESSAGE) LIKE  BAPIRET2-MESSAGE
    *"  TABLES
    *"      ZPOITEM STRUCTURE  ZPOITEM01
    *"----------------------------------------------------------------------
    DATA: ls_zpoitem TYPE zpoitem01,
          lv_message TYPE bapiret2-message,
          lv_datano  TYPE zdatano.
    
    DATA:
          gv_po_number         LIKE  bapimepoheader-po_number,              "PO号
          gt_return            LIKE  TABLE OF bapiret2,                     "返回消息
          gs_return            LIKE  LINE  OF gt_return,
          gt_poitem            LIKE  TABLE OF bapimepoitem,                 "行项目
          gs_poitem            LIKE  LINE  OF gt_poitem,
          gt_poitemx           LIKE  TABLE OF bapimepoitemx,
          gs_poitemx           LIKE  LINE  OF gt_poitemx.
    
    
    CLEAR:gv_po_number,gs_poitemx,gs_poitem,gs_return,gt_poitemx,gt_poitem,gt_return.
    
    gv_po_number = po_number.
    
    LOOP AT zpoitem INTO ls_zpoitem.
    gs_poitem-po_item    = ls_zpoitem-po_item.
    gs_poitem-delete_ind = ls_zpoitem-delete_ind.
    APPEND gs_poitem TO gt_poitem.
    
    gs_poitemx-po_item    = ls_zpoitem-po_item.
    gs_poitemx-po_itemx    = g_flag.
    gs_poitemx-delete_ind = g_flag.
    APPEND gs_poitemx TO gt_poitemx.
    
    CLEAR:gs_poitemx,gs_poitem.
    ENDLOOP.
    
    
    CALL FUNCTION 'BAPI_PO_CHANGE'
      EXPORTING
        purchaseorder               = gv_po_number
     TABLES
       return                       = gt_return
       poitem                       = gt_poitem
       poitemx                      = gt_poitemx.
    
      READ TABLE gt_return INTO gs_return WITH KEY type = 'E'.
      IF sy-subrc NE 0.
        flag = 'S'.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = 'X'.
        CONCATENATE 'PO:'gv_po_number '处理完成' INTO message .
      ELSE.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    
        LOOP AT gt_return INTO gs_return WHERE type CA 'AEX'.
            MESSAGE ID     gs_return-id
                    TYPE   gs_return-type
                    NUMBER gs_return-number
                    WITH   gs_return-message_v1 gs_return-message_v2
                           gs_return-message_v3 gs_return-message_v4
                           INTO lv_message.
            CONCATENATE message lv_message INTO message SEPARATED BY ''.
        ENDLOOP.
        SHIFT message LEFT DELETING LEADING  ''.
        flag = 'E'.
      ENDIF.
    
    
    *记录日志
      CLEAR:gt_log,gs_log,ls_zpoitem.
      LOOP AT zpoitem INTO ls_zpoitem.
        lv_datano     = lv_datano + 1.
        gs_log-datano = lv_datano.
        gs_log-name   = 'ZRFC_MM002'.
        gs_log-cdate  = sy-datum.
        GET TIME.
        gs_log-ctime  = sy-uzeit.
        gs_log-callno = callno.
        gs_log-flag   = flag.
        gs_log-log    = message.
    
        CONCATENATE  po_number  ls_zpoitem-po_item   ls_zpoitem-delete_ind
        INTO gs_log-content SEPARATED BY '|'.
    
        CONDENSE gs_log-content NO-GAPS.
        gs_log-length = STRLEN( gs_log-content ).
        APPEND gs_log TO gt_log.
        CLEAR ls_zpoitem.
      ENDLOOP.
    
    IF gt_log IS NOT INITIAL.
    INSERT zrfc_mm01in_log FROM TABLE gt_log.
    IF sy-subrc = 0.
    COMMIT WORK.
    ENDIF.
    ENDIF.
    ENDFUNCTION.
  • 相关阅读:
    重构二叉树
    LeetCode-Construct Binary Tree from Preorder and Inorder Traversal
    二叉平衡树
    二叉树的三种递归与非递归遍历算法
    Jump Game
    Ubuntu中安装最新 Node.js 和 npm
    ORACLE查看并修改最大连接数
    设计模式之工厂模式
    设计模式之单例模式
    设计模式之模板方法模式
  • 原文地址:https://www.cnblogs.com/caizjian/p/6074199.html
Copyright © 2011-2022 走看看