[ABAP] BAPI für die Prüfung der Existenz eines Business-Partners

DATA(lv_bp) = CONV bu_partner( '10000' ).
DATA(it_bapi_ret) = VALUE bapiret2_t( ).

* Paket BUPA
* SAP-GP, API: Geschäftspartner auf Existenz prüfen
CALL FUNCTION 'BUPA_EXISTENCE_CHECK'
  EXPORTING
    iv_partner = lv_bp
*   IV_PARTNER_GUID       =
  TABLES
    et_return  = it_bapi_ret.

* IS-H: Nachrichten aus BAPIRET2-Tabelle anzeigen
CALL FUNCTION 'ISH_BAPIRET2_DISPLAY'
  EXPORTING
    amodal_window = abap_false " Fenster modal / amodal anzeigen
  TABLES
    ss_bapiret2   = it_bapi_ret.

[ABAP] Warenbewegungen buchen

TYPES: BEGIN OF ty_s_material,
         matnr         TYPE mara-matnr,                            " Materialnummer
         erfmg         TYPE mseg-erfmg,                            " Menge in Erfassungsmengeneinheit (mseg-erfmg) / Menge (mseg-menge)
         entry_uom_iso TYPE bapi2017_gm_item_create-entry_uom_iso, " ISO-Code Maßeinheit
       END OF ty_s_material.

TYPES: ty_it_material TYPE STANDARD TABLE OF ty_s_material WITH KEY matnr.

PARAMETERS: p_test AS CHECKBOX DEFAULT 'X'.

START-OF-SELECTION.

  DATA(it_material) = VALUE ty_it_material( ( matnr = '0815' erfmg = '1' entry_uom_iso = 'PCE' )
                                            ( matnr = '0816' erfmg = '2' entry_uom_iso = 'PCE' )
                                          ).

* Header
  DATA(lv_header) = VALUE bapi2017_gm_head_01( pstng_date    = sy-datum " Buchungsdatum im Beleg
                                               doc_date      = sy-datum " Belegdatum im Beleg
                                               pr_uname      = sy-uname " Benutzername
                                               gr_gi_slip_no = '12345'  " Warenbegleitscheinnummer
                                               header_txt    = 'Text1'  " Belegkopftext
                                               ref_doc_no    = 'Refdoc' " Nummer des externen Materialscheins
                                             ).

* gm_code (siehe auch Tabelle T158G)
* 01  MB01 (Wareneingang zur Bestellung buchen)
* 02  MB31 (Wareneingang zum Fertigungsauftrag)
* 03  MB1A (Warenentnahme)
* 04  MB1B (Umbuchung)
* 05  MB1C (Wareneingang Sonstige)
* 06  MB11 (Warenbewegung)
* 07  MB04 (Nachverrechnung von Beistellmaterial)
  DATA(lv_mvt_code) = VALUE bapi2017_gm_code( gm_code = '03' ). " Zuordnung Code zu Transaktion für BAPI Warenbewegung

* Items für Bewegungsdaten füllen
  DATA(it_items_to_move) = VALUE bapi2017_gm_item_create_t( FOR <m> IN it_material
                                                            (
                                                              material  = CONV #( <m>-matnr ) " 18-stellige Materialnummer
                                                              plant     = '10'                " Werk
                                                              stge_loc  = '01'                " Lagerort
                                                              move_type = '262'               " Bewegungsart (Bestandsführung)
* KZBEW	(Bewegungskennzeichen)
* ' '  Warenbewegung ohne Referenz
*  B  Warenbewegung zur Bestellung
*  F  Warenbewegung zum Auftrag
*  L  Warenbewegung zum Lieferschein
*  K  Warenbewegung zur Kanban-Anforderung (Nur WM intern)
*  O  Nachverrechnung von Beistellmaterial
*  W  Nachverrechnung von Anteils-/Produkt ME Material
                                                              mvt_ind       = ' '                     " Bewegungskennzeichen (Warenbewegung ohne Referenz)
                                                              entry_qnt     = CONV #( <m>-erfmg )     " Menge in Erfassungsmengeneinheit
                                                              entry_uom_iso = <m>-entry_uom_iso       " ISO-Code Maßeinheit
                                                              gl_account    = ''                      " Nummer des Sachkontos
                                                              gr_rcpt       = 'ABC'                   " Warenempfänger
                                                              costcenter    = '100200'                " Kostenstelle
                                                              orderid       = ''                      " Auftragsnummer
                                                              wbs_elem      = ''                      " Projektstrukturplanelement (PSP-Element)
                                                            )
                                                          ).
  DATA(lv_headret) = VALUE bapi2017_gm_head_ret( ).
  DATA(it_return) = VALUE bapiret2_t( ).

  CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
    EXPORTING
      goodsmvt_header  = lv_header
      goodsmvt_code    = lv_mvt_code
      testrun          = p_test
    IMPORTING
      goodsmvt_headret = lv_headret
    TABLES
      goodsmvt_item    = it_items_to_move
      return           = it_return.

* Fehlerauswertung: E - Error, A - Abort
  LOOP AT it_return ASSIGNING FIELD-SYMBOL(<e>).
    WRITE: / |RETURN [{ <e>-type } { <e>-number }]: { <e>-message }|.
  ENDLOOP.

  DATA(lv_return) = VALUE bapiret2( ).

  IF lines( it_return ) > 0.
* Rollback bei Fehler
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
      IMPORTING
        return = lv_return.

    WRITE: / |ROLLBACK [{ lv_return-type } { lv_return-number }]: { lv_return-message }|.
  ELSE.
* Daten verbuchen
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait   = abap_true
      IMPORTING
        return = lv_return.

    WRITE: / |COMMIT [{ lv_return-type } { lv_return-number }]: { lv_return-message }|.
  ENDIF.

Links

[ABAP] Popup-Dialog zur Anzeige von BAPI-Meldungen

DATA(it_bapi_ret) = VALUE bapiret2_t( ( type       = 'S'
                                        id         = '01'
                                        number     = '319'
                                        message_v1 = 'Test'
                                      )
                                      ( type       = 'S'
                                        id         = '01'
                                        number     = '319'
                                        message_v1 = 'Test2'
                                      )
                                    ).

Variante 1 (cl_rmsl_message)

cl_rmsl_message=>display( it_bapi_ret ).

Variante 2 (cl_tex_message_handler)

cl_tex_message_handler=>display_bapiret2( it_bapi_ret ).

Variante 3 (C14ALD_BAPIRET2_SHOW)

* EHS: Anzeige einer BAPI-Fehlermeldungstabelle (BAPIRET2)
CALL FUNCTION 'C14ALD_BAPIRET2_SHOW'
  TABLES
    i_bapiret2_tab = it_bapi_ret.

Variante 4 (BSSP2_MESSAGE_POPUP)

DATA: lv_ef_continue TYPE boolean.

DATA(it_message) = VALUE bssp_t_message( ( msgid = 'SY' msgty = 'E' msgno = 100 msgv1 = 'Text1' msgv2 = '' msgv3 = '' msgv4 = '' row = 0 fieldname = '' )
                                         ( msgid = 'SY' msgty = 'W' msgno = 101 msgv1 = 'Text2' msgv2 = '' msgv3 = '' msgv4 = '' row = 0 fieldname = '' )
                                         ( msgid = 'SY' msgty = 'i' msgno = 102 msgv1 = 'Text3' msgv2 = '' msgv3 = '' msgv4 = '' row = 0 fieldname = '' ) ).

CALL FUNCTION 'BSSP2_MESSAGE_POPUP'
  EXPORTING
    it_message        = it_message
    if_save_necessary = abap_true
  IMPORTING
    ef_continue       = lv_ef_continue.

IF lv_ef_continue = abap_true.
* Sichern
ELSE.
* Abbrechen
ENDIF.

Variante 5 (C14Z_MESSAGES_SHOW_AS_POPUP)

DATA(it_messages) = VALUE esp1_message_tab_type( ( msgid = 'SY' msgno = '002' msgty = 'I' msgv1 = |Text1| lineno = 1 )
                                                 ( msgid = 'SY' msgno = '002' msgty = 'I' msgv1 = |Text2| lineno = 2 )
                                               ).

* EHS: eine oder mehrere Nachrichten in einem Popup anzeigen
CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
  TABLES
    i_message_tab = it_messages.

Variante 6 (cf_reca_message_list / RECA_GUI_MSGLIST_POPUP)

* Message-Collector Objekt
DATA(o_msg_list) = cf_reca_message_list=>create( ).

TRY.
* Division durch Null provozieren
    DATA(lv_div) = 1 / 0.
  CATCH cx_root INTO DATA(e_txt).
* Exception an den Collector übergeben
    o_msg_list->add_from_exception( e_txt ).
ENDTRY.

* Protokoll als Applikation bzw. Popup anzeigen
CALL FUNCTION 'RECA_GUI_MSGLIST_POPUP'
  EXPORTING
    io_msglist = o_msg_list.

Links