cmd_ei_api => maintain_bapi以更新kna1表字段ICMSTAXPAY

问题描述

我需要使用自定义报告来更新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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...