问题描述
我需要使用自定义报告来更新ICMSTAXPAY
表中的KNA1
字段。因此,我尝试使用cmd_ei_api=>maintain_bapi
更新表。但是一旦运行程序,该特定字段就不会更新,并且我也不会收到任何错误消息。
我的逻辑:
- 阅读KNA1条目。
- 将必填字段修改为我的值。
- 将必填数据传递到HEADER以进行更新。
- 将我的新KNA1条目传递给CENTRAL_DATA。
从表中读取数据:
CALL METHOD cmd_ei_api_memory=>get_global_kna1
EXPORTING
iv_kunnr = <lfs_final>-kunnr
IMPORTING
es_kna1_old = ls_old.
更改字段的值:
ls_old-icmstaxpay = 9.
MOVE-CORRESPONDING ls_old TO ls_customer-central_data-central-data.
分配标题数据:
ls_customer-header-object_instance-kunnr = <lfs_final>-kunnr.
ls_customer-header-object_task = 'U'.
将以上所有内容添加到主数据结构中:
APPEND ls_customer TO lt_customers[].
ls_master_data-customers = lt_customers[].
传递数据并更新到表:
cmd_ei_api=>initialize( ).
LOOP AT lt_customers INTO ls_customer.
cmd_ei_api=>lock( iv_kunnr = ls_customer-header-object_instance-kunnr ).
ENDLOOP.
" Update Customer with CMD_EI_API
CALL METHOD cmd_ei_api=>maintain_bapi
EXPORTING
iv_test_run = space
is_master_data = ls_master_data
IMPORTING
es_message_defective = ls_message_defective.
IF ls_message_defective IS INITIAL.
BREAK-POINT.
COMMIT WORK.
ELSE.
BREAK-POINT.
ENDIF.
LOOP AT lt_customers INTO ls_customer.
cmd_ei_api=>unlock( iv_kunnr = ls_customer-header-object_instance-kunnr ) .
ENDLOOP.
调试时,我可以看到正在获取更新的条目是当前内存中存在的旧条目。
在将值传递到表时,如果我做错了什么,请告诉我。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)