isekaid_maou
isekaid_maou

Reputation: 283

cmd_ei_api=>maintain_bapi to update kna1 table field (ICMSTAXPAY)

I have a requirement to update this field ICMSTAXPAY in KNA1 table using my custom report. So, I tried using cmd_ei_api=>maintain_bapi to update the table. But once I run the program, that particular field is not updated and I don't get any error messages too.

My logic:

Read data from table:

CALL METHOD cmd_ei_api_memory=>get_global_kna1
    EXPORTING
        iv_kunnr    = <lfs_final>-kunnr 
    IMPORTING
        es_kna1_old = ls_old.

Change the value of field:

ls_old-icmstaxpay = 9.

MOVE-CORRESPONDING ls_old TO ls_customer-central_data-central-data.

Assign header data:

ls_customer-header-object_instance-kunnr = <lfs_final>-kunnr.
ls_customer-header-object_task  = 'U'.

Add all the above to the master data structure:

APPEND ls_customer TO lt_customers[].        
ls_master_data-customers = lt_customers[].

Pass the data and update to table:

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.

When I debug, I can see that the entry that is being fetched for update is the old entry that is present in the current memory.

Please let me know if i am doing something wrong while passing the value to the table.

Upvotes: 0

Views: 5902

Answers (1)

Rafael
Rafael

Reputation: 26

You need including DATAX with X for all fields that you need change.

DATA: ls_datax TYPE cmds_ei_vmd_central_data_xflag. ls_datax-icmstaxpay = 'X'. MOVE ls_datax TO ls_customer-central_data-central-datax.

And thanx for your question, helped me with find this methody :)

Upvotes: 1

Related Questions