Zum Inhalt springen
Die Codezentrale
Programmierung, Tipps, Tricks, Snippets, Links (.Net, Java, JavaScript, C++, PHP, Python, SQL, SAP, ABAP, SAPUI5)
Zum Inhalt springen
  • Home
  • Links
    • Kachelmannwetter
    • MrLeehs Blog
    • Deskmodder
    • winfuture.de
    • Tricktresor
    • Python Online Compiler
    • [Raspberry Pi] Wichtige Terminal-Kommandos für Raspian
    • CodeSandbox JS Vanilla
  • Datenschutzerklärung
  • Impressum
Startseite Beiträge getaggt mit "ME_POST_INFORECORD"

Schlagwort: ME_POST_INFORECORD

[ABAP] Infosätze mit Konditionen pflegen

Folgende Bausteine sind ab S/4 HANA verfügbar:

Variante 1 (Anlegen und ändern eines Infosatzes)

* Testlauf?
PARAMETERS: p_test TYPE abap_bool DEFAULT abap_true.

* Kennzeichen Regellieferant?
PARAMETERS: p_relif TYPE abap_bool DEFAULT abap_true.
* Nummer des Einkaufsinfosatzes EINA
PARAMETERS: p_infnr TYPE infnr.
* Materialnummer MARA
PARAMETERS: p_matnr TYPE matnr.
* Lieferant LFA1
PARAMETERS: p_lifnr TYPE lfa1-lifnr.
* Basismengeneinheit T006
PARAMETERS: p_meins TYPE t006-msehi DEFAULT 'ST'.
* Bestellmengeneinheit T006
PARAMETERS: p_bstme TYPE t006-msehi DEFAULT 'ST'.
* Zähler für die Umrechnung BPRME in BME
PARAMETERS: p_bpumz TYPE bpumz DEFAULT '1'.
* Nenner für die Umrechnung BPRME in BME
PARAMETERS: p_bpumn TYPE bpumn DEFAULT '1'.
* Einkaufsorganisation T024E
PARAMETERS: p_ekorg TYPE t024e-ekorg.
* Werk T001W
PARAMETERS: p_werks TYPE werks_d.
* Typ des Einkaufsinfosatzes
* 0 Normal
* 2 Konsignation
* 3 Lohnbearbeitung
* P Pipeline
* 1 Chargeable
PARAMETERS: p_esokz TYPE esokz DEFAULT '0'.
* Planlieferzeit in Tagen
PARAMETERS: p_plifz TYPE plifz DEFAULT '5'.
* Einkäufergruppe T024
PARAMETERS: p_bkgrp TYPE t024-ekgrp.
* Umsatzsteuerkennzeichen T007A
PARAMETERS: p_mwskz TYPE t007a-mwskz DEFAULT 'V1'.
* Konditionsbetrag
PARAMETERS: p_kbetr TYPE konp-kbetr DEFAULT '100.0'.

START-OF-SELECTION.

* Einkaufsinfosatz - allgemeine Daten
  SELECT SINGLE FROM eina
    FIELDS infnr
    WHERE matnr = @p_matnr
      AND lifnr = @p_lifnr
    INTO @DATA(lv_infnr).

* Schalter für Neuanlage oder Update Tabellen EINA und EINE
  DATA(lv_eina_update) = abap_true.
  DATA(lv_eine_update) = abap_false.

  IF sy-subrc = 0.
    lv_eina_update = abap_true.

* Einkaufsinfosatz - Einkaufsorganisationsdaten
    SELECT SINGLE FROM eine
      FIELDS loekz
      WHERE infnr = @lv_infnr
        AND werks = @p_werks
      INTO @DATA(lv_loekz).

    IF sy-subrc = 0.
      lv_eine_update = abap_true.
    ELSE.
      lv_eine_update = abap_false.
    ENDIF.

  ELSE.
    lv_eina_update = abap_false.
  ENDIF.

  DATA(ls_eina) = VALUE mewieina( info_rec  = COND infnr( WHEN lv_eina_update = abap_true THEN lv_infnr ELSE '' )
                                  vendor    = p_lifnr
                                  norm_vend = CONV relif( p_relif )
                                  material  = p_matnr
                                  vend_mat  = CONV idnlf( |{ p_matnr ALPHA = IN WIDTH = 10 }| )
                                  base_uom  = p_meins
                                  po_unit   = p_bstme
                                  conv_num1 = p_bpumz
                                  conv_den1 = p_bpumn ).

  DATA(ls_einax) = VALUE mewieinax( info_rec  = lv_eina_update " Infosatz neu/update
                                    vendor    = 'X'
                                    norm_vend = p_relif
                                    material  = 'X'
                                    base_uom  = 'X'
                                    po_unit   = 'X'
                                    conv_num1 = 'X'
                                    conv_den1 = 'X' ).

  DATA(ls_eine) = VALUE mewieine( info_rec   = COND infnr( WHEN lv_eine_update = abap_true THEN lv_infnr ELSE '' )
                                  purch_org  = p_ekorg
                                  plant      = p_werks
                                  info_type  = p_esokz
                                  conv_num1  = p_bpumz
                                  conv_den1  = p_bpumn
                                  plnd_delry = p_plifz
                                  pur_group  = p_bkgrp
                                  tax_code   = p_mwskz
                                  net_price  = p_kbetr
                                  currency   = 'EUR'
                                  price_unit = '1' ).

  DATA(ls_einex) = VALUE mewieinex( info_rec   = lv_eine_update " Infosatz neu/update
                                    purch_org  = 'X'
                                    plant      = 'X'
                                    info_type  = 'X'
                                    conv_num1  = 'X'
                                    conv_den1  = 'X'
                                    plnd_delry = 'X'
                                    pur_group  = 'X'
                                    tax_code   = 'X' ).

* Konditionen
  DATA: it_cond_validity TYPE STANDARD TABLE OF mewivalidity WITH DEFAULT KEY.
  DATA: it_condition TYPE STANDARD TABLE OF mewicondition WITH DEFAULT KEY.

  APPEND VALUE #( plant      = p_werks
                  valid_from = sy-datum
                  valid_to   = '99991231'
                ) TO it_cond_validity.

  APPEND VALUE #( cond_type  = 'PB00'
                  cond_value = p_kbetr
                  currency   = 'EUR'
                  cond_p_unt = '1'     " KPEIN '1'
                  cond_unit  = p_bstme " KMEIN 'ST'
                ) TO it_condition.

  DATA(it_return) = VALUE mewi_t_return( ).

* RFC Function Module to Create and Change Info Record
  CALL FUNCTION 'ME_INFORECORD_MAINTAIN'
    EXPORTING
      i_eina        = ls_eina
      i_einax       = ls_einax
      i_eine        = ls_eine
      i_einex       = ls_einex
      testrun       = p_test
* IMPORTING
*     E_EINA        =
*     E_EINE        =
    TABLES
*     TXT_LINES     =
      cond_validity = it_cond_validity
      condition     = it_condition
*     COND_SCALE_VALUE       =
*     COND_SCALE_QUAN        =
      return        = it_return.

* Fehlerauswertung
  DATA(lv_message) = ||.

  LOOP AT it_return ASSIGNING FIELD-SYMBOL(<m>) WHERE type CA 'AEX'.
    IF lv_message IS INITIAL.
      lv_message = <m>-message.
    ELSE.
      lv_message = |{ lv_message }/{ <m>-message }|.
    ENDIF.

    WRITE: / <m>-message.
  ENDLOOP.

  IF lv_message IS INITIAL.
    DATA(lv_return) = VALUE bapiret2( ).
* alles ok: COMMIT
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait   = 'X'
      IMPORTING
        return = lv_return.

    WRITE: / lv_return-message.
  ELSE.
* bei Fehlern: ROLLBACK
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  ENDIF.

Variante 2 (Anlegen und ändern mehrerer Infosätze)

* https://wiki.scn.sap.com/wiki/pages/viewpage.action?pageId=533669791
* SAP Note: 2492873 (Verbesserung im Beschaffungsprozess zur Pflege mehrerer Infosätze zusammen mit Konditionen)
* https://launchpad.support.sap.com/#/notes/2492873
* SAP Note: 3070467 (ME_INFORECORD_MAINTAIN_MULTI: Template for creating info record - SAP for Me)
* https://me.sap.com/notes/3070467/E

* RFC Function Module to Create and Change multiple Info Records
CALL FUNCTION 'ME_INFORECORD_MAINTAIN_MULTI'
* EXPORTING
*   TESTRUN                =
* IMPORTING
*   ET_EINA                =
*   ET_EINE                =
* TABLES
*   T_EINA                 =
*   T_EINAX                =
*   T_EINE                 =
*   T_EINEX                =
*   TXT_LINES              =
*   COND_VALIDITY          =
*   CONDITION              =
*   COND_SCALE_VALUE       =
*   COND_SCALE_QUAN        =
*   RETURN                 =
          .

DATA(lv_return) = VALUE bapiret2( ).

* 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 }|.

Variante 3 (DMC_MIG_PURCH_INFO_RECORD)

DATA(lv_test) = abap_true.
DATA(ls_eina) = VALUE eina( ).
DATA: it_eine TYPE STANDARD TABLE OF eine WITH DEFAULT KEY.

* Migration of purchasing info record
* kapselt folgende Funktionsbausteine
* ME_INITIALIZE_INFORECORD
* ME_MAINTAIN_INFORECORD
* ME_POST_INFORECORD
CALL FUNCTION 'DMC_MIG_PURCH_INFO_RECORD'
  EXPORTING
*   ACTIVITY = 'H' " V - update, H - create
    i_eina   = ls_eina
*   I_EINE   =
*   O_EINA   =
*   O_EINE   =
*   I_VORGA  = 'B' " Kennung für die Anwendung, die den Funktionsbaustein aufruft: A - Integrierte Artikelpflege, B - ALE
    testrun  = lv_test
* IMPORTING
*   E_EINA  =
*   E_EINE  =
  TABLES
*   T_HEAD  =
*   T_LINE  =
    t_eine  = it_eine.
admin 27. November 2020 21. März 2025MM DMC_MIG_PURCH_INFO_RECORD, ME_INFORECORD_MAINTAIN, ME_INFORECORD_MAINTAIN_MULTI, ME_INITIALIZE_INFORECORD, ME_MAINTAIN_INFORECORD, ME_POST_INFORECORD
  • Kategorien

    aufklappen | zuklappen
  • Neueste Beiträge

    • [ABAP] Workflow: Workitems zu Objekt
    • [RAP] Excel-Upload in Fiori-Apps
    • [ABAP] OLE2-Objekt ‚SAPINFO‘ aufrufen
    • [ABAP] Excel-Daten mit XCO API (xco_cp_xlsx) lesen
    • [ABAP] Daten einer internen Tabelle als Excel-Datei speichern (xco_cp_xlsx)
    • [ABAP] JSON -> ABAP (xco_cp_json)
    • [ABAP] ABAP -> JSON (xco_cp_json)
    • [ABAP] String nach SYMSG-Struktur konvertieren
    • [ABAP] Unix-Timestamp erzeugen
    • [ABAP] SALV-Grid: Eventhandler für Doppelklick auf eine Zelle (double_click)
  • Archiv

  • Meta

    • Anmelden
    • Feed der Einträge
    • Kommentar-Feed
    • WordPress.org
  • Related Posts

    • [SAP] Infosätze
  • Tags

    ABAP (976) Android (18) CLASS (20) cl_abap_list_layout (19) cl_bcs_convert (28) cl_gui_alv_grid (24) cl_gui_container (39) cl_gui_docking_container (25) cl_gui_frontend_services (50) cl_salv_table (58) cntl_simple_event (16) create (27) Date (16) default_screen (28) display (14) EWM (17) Fiori (21) FREE OBJECT (15) get_columns (22) gui_download (15) HTML (16) JavaScript (78) JSON (23) MIME (17) NEW (20) OData (32) ole2_object (15) OpenSQL (44) Python (23) Raspberry Pi (50) Raspberry Pi 2 (27) Raspberry Pi 4 (23) Raspian (22) RegEx (18) SAP (351) SAPUI5 (27) SELECT (25) String (33) stringtab (15) suppress_toolbar (19) UTF-8 (15) Value (27) XML (29) xstring (20) xstring_to_solix (15)
(W) 2025 by codezentrale.de
Präsentiert von Tempera & WordPress.