ITPub博客

首页 > 数据库 > 数据库开发技术 > bapi_po_change增加删除标识,

bapi_po_change增加删除标识,

原创 数据库开发技术 作者:jie_jie 时间:2023-04-25 10:26:26 0 删除 编辑

FORM bapi_po_change  .
   DATA :  BEGIN  OF lt_doc  OCCURS  0 ,
          ebeln  TYPE ekpo -ebeln ,
          ebelp  TYPE ekpo -ebelp ,
         END  OF lt_doc .
   DATA : lt_doc_bapi  LIKE  TABLE  OF lt_doc .
   DATA :
    ls_poitem   TYPE  TABLE  OF bapimepoitem  WITH  HEADER  LINE ,
    ls_poitemx  TYPE  TABLE  OF bapimepoitemx  WITH  HEADER  LINE .

     LOOP  AT gt_data  .
       IF gt_data -elikz  =  'X'  AND gt_data -erekz  =  'X'  AND gt_data -del  =  'X' .

        ls_poitem -po_item  = gt_data -ebelp .
        ls_poitem -delete_ind  =  'X' .
         APPEND ls_poitem .
         CLEAR ls_poitem .

        ls_poitemx -po_item  = gt_data -ebelp .
        ls_poitemx -delete_ind  =  'X' .
         APPEND ls_poitemx .
         CLEAR ls_poitemx .

       ENDIF .

     PERFORM call_bapi  TABLES ls_poitem
                             ls_poitemx
                       CHANGING gt_data -ebeln
                               gt_data -ebelp .

   ENDLOOP .

ENDFORM .

FORM call_bapi   TABLES lt_poitem  STRUCTURE bapimepoitem
                       lt_poitemx  STRUCTURE bapimepoitemx
                 USING p_ebeln
                      p_ebelp .

   DATA : ls_return  TYPE  TABLE  OF bapiret2 .
   DATA n  TYPE  i  VALUE  0 .

   CALL  FUNCTION  'BAPI_PO_CHANGE'
     EXPORTING
      purchaseorder  = p_ebeln

     TABLES
       return         = ls_return
      poitem         = lt_poitem
      poitemx        = lt_poitemx .

   READ  TABLE ls_return  ASSIGNING  FIELD - SYMBOL (<ls_return> )
                             WITH  KEY  type  =  'S' .
   IF sy -subrc  =  0 .
     CALL  FUNCTION  'BAPI_TRANSACTION_COMMIT'
       EXPORTING
         wait  =  'X' .

     WRITE :/   '已为'&& p_ebeln &&  '的' && p_ebelp && '项次中委外已完成的采购单增加删除标识' .
   ELSE .
     READ  TABLE ls_return  ASSIGNING <ls_return>
                             WITH  KEY  type  =  'E' .
     IF sy -subrc  =  0 .
       CALL  FUNCTION  'BAPI_TRANSACTION_ROLLBACK' .
     ENDIF .
   ENDIF .

ENDFORM .

能否有人指出到底是哪里出错了吗。

错误操作:

当我输入多个po时,第一个po能够正常运行,返回参数为“S”,

但是第二个以及后面的po却都失败了,返回参数为“E” 并显示change indicators could not be uniquely determined in material mapping


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70029342/viewspace-2948575/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2023-04-25

  • 博文量
    1
  • 访问量
    1142