SAP ABAP 采购订单项目文本修改

DATA po_number TYPE bapimepoheader-po_number.
DATA return TYPE TABLE OF bapiret2 WITH HEADER LINE.
DATA lt_poitemtext TYPE TABLE OF bapimepotext.
DATA ls_poitemtext TYPE bapimepotext.
DATA:lv_text_form TYPE i.
DATA:lv_in(200)." TYPE string.
DATA:len TYPE i VALUE ‘60’.
DATA:lv_out TYPE string.
DATA:lv_rest TYPE string.
DATA:lv_error.
DATA:lv_mess TYPE string.
DATA:it_data2 LIKE TABLE OF lt_data2 WITH HEADER LINE.

REFRESH:lt_poitemtext,return,it_data2.

APPEND LINES OF lt_data2 TO it_data2.

LOOP AT it_data2.
IF it_data2-type NE ‘’.
CONTINUE.
ENDIF.

CLEAR:ls_poitemtext.

ls_poitemtext-po_item = it_data2-ebelp.
ls_poitemtext-text_id = 'F01'.
"文本处理 begin
IF it_data2-text = ''.
  APPEND ls_poitemtext TO lt_poitemtext.
ELSE.
  CLEAR:lv_text_form,lv_in,lv_out,lv_rest.
  lv_in = it_data2-text.

  WHILE lv_in IS NOT INITIAL.

    CALL FUNCTION 'TEXT_SPLIT'
      EXPORTING
        length = len    "传入文本值
        text   = lv_in  "拆分长度
      IMPORTING
        line   = lv_out "按长度拆得文本值
        rest   = lv_rest. "剩余文本值

    lv_in = lv_rest.

    ADD 1 TO lv_text_form.
    ls_poitemtext-text_form = lv_text_form.
    ls_poitemtext-text_line = lv_out.
    APPEND ls_poitemtext TO lt_poitemtext.

    CLEAR lv_out.

  ENDWHILE.
ENDIF.
"文本处理 end
po_number = it_data2-ebeln.

AT END OF ebeln.

  CALL FUNCTION 'BAPI_PO_CHANGE'
    EXPORTING
      purchaseorder = po_number
    TABLES
      return        = return
  •     POITEM        =
    
  •     POITEMX       =
    
  •     POADDRDELIVERY               =
        potextitem    = lt_poitemtext.
    
    CLEAR:lv_error,lv_mess.
    
    LOOP AT return WHERE type CA 'EAX' .
      lv_mess = lv_mess && '/' && return-message.
      lv_error = 'E'.
    ENDLOOP.
    
    IF lv_error = ''.
      lv_error = 'S'.
      lv_mess = '修改成功'.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    ENDIF.
    
    LOOP AT lt_data2 WHERE ebeln = it_data2-ebeln AND type = ''.
      lt_data2-type = lv_error.
      lt_data2-mess = lv_mess.
      MODIFY lt_data2.
    ENDLOOP.
    REFRESH:lt_poitemtext,return.
    

    ENDAT.

    ENDLOOP.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值