Cmd ei api

Aus SAP Wiki ツ

Die Klasse ist sehr mächtig und es ist schnell ohne weiteres möglich Daten aus dem Geschäftspartner zu löschen. Es ist sehr anzuraten mit einem konkreten Test-Geschäftsparntersatz zu testen, wenn ein Geschäftparnter oder dessen Rollen mit dieser Klasse gepflegt werden.

Klassenmethode maintain_bapi

Der beispielhafte Code unten ist nicht quasi out-of-the-box zu verstehen. Abhängig welche Felder als Pflichtfelder im Customizing definiert sind, sind ggf. weitere Felder mitzugeben.

Es wird davon ausgegangen, dass der Geschäftspartner bereits angelegt (BAPI_BUPA_CREATE_FROM_DATA) und die GP-Rolle hinzugefügt (BAPI_BUPA_ROLE_ADD_2) wurde.

Vertriebsdaten

cmd_ei_api_check=>get_mand_partner_functions( 
 EXPORTING iv_ktokd = 'CUST' "natürlich dynamisch vom Kundenstammsatz holen
 IMPORTING et_parvw = DATA(lt_parw) ).

DATA lt_master_data TYPE cmds_ei_extern.
lt_master_data = VALUE #( header-object_instance-kunnr = '9980000360'
                          header-object_task = 'U'
                          sales_data = VALUE #( sales = VALUE #( ( task = 'I'
                                                                   data-waers = 'EUR'
                                                                   data_key-vkorg = '1010'
                                                                   data_key-vtweg = '10'
                                                                   data_key-spart = '00'
                                                                   datax-waers = 'X'
                                                                   functions = VALUE #( functions = VALUE #( FOR ls_parw IN lt_parw
                                                                                                             ( task = 'I'
                                                                                                              data_key-parvw = ls_parw-parvw
                                                                                                              data-partner = '9980000360'
                                                                                                              datax-partner = 'X' )
                                                                                                            )

                                                                                      )
                                                                    )
                                                                )

                                             )
                        ).

Buchungskreis

   DATA(lt_master_data) = VALUE cmds_ei_extern( header-object_instance-kunnr = '9980000360'
                                                header-object_task = 'U' "Update, because created with ycl_bp->create_role_with_bapi( )
                                                company_data = VALUE #( company = VALUE #( ( task = 'I'
                                                                                          data_key-bukrs = ms_company_code_data-company_code
                                                                                          data-akont = ms_company_code_data-reconciliation_account
                                                                                          datax-akont = abap_true )
                                                                                      )
                                                                   )
                                          ).

Aufruf und Message-Handling

"Prüfen lt_master_data nicht intial ...

   "Hier sperren mit ENQUEUE_EXKNA1 ...
   cmd_ei_api=>maintain_bapi(
     EXPORTING
        iv_test_run              = iv_test_run
        iv_collect_messages      = abap_true
        is_master_data           = VALUE #( customers = VALUE #( ( lt_master_data ) ) )
     IMPORTING
       es_master_data_correct   = DATA(lt_correct_data)
       es_message_correct       = DATA(lt_correct_messages)
       es_message_defective     = DATA(lt_error_messages)
       ).
   IF lt_error_messages-is_error = abap_false AND iv_test_run = abap_false.
     IF lt_error_messages-is_error = abap_false.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
       exporting
        wait = abap_true.
       "Hier entsperren mit DEQUEUE_EXKNA1
       "S-Meldung oder sonstiges
     ELSE.
       CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
       "Hier entsperren mit DEQUEUE_EXKNA1
       "RAISE EXCEPTION TYPE oder oder sonstiges
     ENDIF.
   ELSEIF lt_error_messages-is_error = abap_true.
     IF iv_test_run = abap_false.
       CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
     ENDIF.
     "Hier entsperren mit DEQUEUE_EXKNA1
     "RAISE EXCEPTION TYPE oder sonstiges
   ENDIF.

Nützliche Seiten


Dieses Wiki wird privat in Freizeit nach bestem Wissen und Gewissen gepflegt und dient primär als eigene Wissenssammlung für die tägliche Arbeit im SAP-ERP-Umfeld.
Alle dargestellten Softwareprodukte, auch in Form von Screenshots, sind Eigentum der SAP SE. Ihre Marken, vgl. Link, sind u.a.: SAP®, ABAP®, SAP Fiori®, SAP HANA®, SAP S/4HANA®, SAP S/4HANA® Cloud