【ABAP】BAPI_PR_CREATE更新EBAN扩展字段

  DATA:ls_prheader    TYPE bapimereqheader,
       ls_prheaderx   TYPE bapimereqheaderx,
       lv_number      TYPE bapimereqheader-preq_no,
       l_comp         TYPE TABLE OF bapimereqcomponent WITH HEADER LINE,
       l_compx        TYPE TABLE OF bapimereqcomponentx WITH HEADER LINE,
       l_pritem       TYPE TABLE OF bapimereqitemimp  WITH HEADER LINE,
       l_pritemx      TYPE TABLE OF bapimereqitemx    WITH HEADER LINE,
       l_pritemtext   TYPE TABLE OF bapimereqitemtext WITH HEADER LINE,
       l_praccount    TYPE TABLE OF bapimereqaccount WITH HEADER LINE,
       l_praccountx   TYPE TABLE OF bapimereqaccountx WITH HEADER LINE,
*       ls_req_item    TYPE bapi_te_mereqitem,
       ls_req_item    TYPE bapi_te_requisition_item,
       ls_req_itemx   TYPE bapi_te_mereqitemx,
       ls_extensionin TYPE bapiparex,
       lt_extensionin TYPE STANDARD TABLE OF bapiparex,
       l_return       TYPE TABLE OF bapiret2 WITH HEADER LINE.

	  IF <l_data>-zrwl IS NOT INITIAL.
        ls_req_item-zrwl    = <l_data>-zrwl.
        ls_req_itemx-zrwl    = 'X'.
      ENDIF.

      CLEAR ls_extensionin.
      ls_extensionin-STRUCTURE = 'BAPI_TE_MEREQITEM'.
      PERFORM transfer_to_extensionin USING ls_req_item CHANGING ls_extensionin.
      APPEND ls_extensionin TO lt_extensionin.

      CLEAR ls_extensionin.
      ls_extensionin-STRUCTURE = 'BAPI_TE_MEREQITEMX'.
      PERFORM transfer_to_extensionin USING ls_req_itemx CHANGING ls_extensionin.
      APPEND ls_extensionin TO lt_extensionin.

    CALL FUNCTION 'BAPI_PR_CREATE'
      EXPORTING
        prheader      = ls_prheader
        prheaderx     = ls_prheaderx
*       testrun       = p_test
      IMPORTING
        number        = lv_number
      TABLES
        return        = l_return
        pritem        = l_pritem[]
        pritemx       = l_pritemx[]
        extensionin   = lt_extensionin
        prcomponents  = l_comp[]
        prcomponentsx = l_compx[]
*       praccount     = l_praccount[]
*       praccountx    = l_praccountx[]
      .

    CLEAR l_return.
    LOOP AT l_return WHERE type = 'E' OR type = 'A'.
      PERFORM frm_error_add USING l_return-message CHANGING lv_msg.
    ENDLOOP.
    IF lv_msg IS NOT INITIAL.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      lv_light = 1.
    ELSE.

      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
      lv_light = 3.
      lv_msg = 'ok.'.
    ENDIF.
FORM transfer_to_extensionin USING is_bapi_extensionin TYPE any
                             CHANGING cs_bapiparex TYPE bapiparex.

  DATA l_distance_characters TYPE i.

  FIELD-SYMBOLS <any> TYPE any.

  DESCRIBE DISTANCE BETWEEN cs_bapiparex-structure
                        AND cs_bapiparex-valuepart1
  INTO l_distance_characters IN CHARACTER MODE.

  ASSIGN cs_bapiparex+l_distance_characters(*) TO <any>
                                               CASTING LIKE is_bapi_extensionin.

  <any> = is_bapi_extensionin.

ENDFORM.

上面代码仅供参考,根据实际情况调整参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程卓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值