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 SAP ABAP MM [ABAP] Infosätze mit Konditionen pflegen

[ABAP] Infosätze mit Konditionen pflegen

admin 27. November 2020 27. November 2020MM

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

Variante 1 (Anlegen und ändern eines Infosatzes)

* Neuen Infosatz anlegen?
PARAMETERS: lv_creat TYPE abap_bool DEFAULT abap_true.
* Testlauf?
PARAMETERS: lv_test TYPE abap_bool DEFAULT abap_true.

* Nummer des Einkaufsinfosatzes
PARAMETERS: lv_infnr TYPE infnr.
* Materialnummer
PARAMETERS: lv_matnr TYPE matnr.
* Lieferant
PARAMETERS: lv_lifnr TYPE lifnr.
* Basismengeneinheit
PARAMETERS: lv_meins TYPE meins.
* Bestellmengeneinheit
PARAMETERS: lv_bstme TYPE bstme.
* Zähler für die Umrechnung BPRME in BME
PARAMETERS: lv_bpumz TYPE bpumz.
* Nenner für die Umrechnung BPRME in BME
PARAMETERS: lv_bpumn TYPE bpumn.
* Einkaufsorganisation
PARAMETERS: lv_ekorg TYPE ekorg.
* Werk
PARAMETERS: lv_werks TYPE werks.
* Typ des Einkaufsinfosatzes
* 0	Normal
* 2	Konsignation
* 3	Lohnbearbeitung
* P	Pipeline
* 1	Chargeable
PARAMETERS: lv_esokz TYPE esokz.
* Planlieferzeit in Tagen
PARAMETERS: lv_plifz TYPE plifz.
* Einkäufergruppe
PARAMETERS: lv_bkgrp TYPE bkgrp.
* Umsatzsteuerkennzeichen
PARAMETERS: lv_mwskz TYPE mwskz.

START-OF-SELECTION.
  DATA(ls_eina) = VALUE mewieina( info_rec  = lv_infnr
                                  material  = lv_matnr
                                  vendor    = lv_lifnr
                                  base_uom  = lv_meins
                                  po_unit   = lv_bstme
                                  conv_num1 = lv_bpumz
                                  conv_den1 = lv_bpumn ).

  DATA(ls_einax) = VALUE mewieinax( info_rec  = lv_creat " neuen Infosatz anlegen?
                                    material  = 'X'
                                    vendor    = 'X'
                                    base_uom  = 'X'
                                    po_unit   = 'X'
                                    conv_num1 = 'X'
                                    conv_den1 = 'X' ).

  DATA(ls_eine) = VALUE mewieine( info_rec   = lv_infnr
                                  purch_org  = lv_ekorg
                                  plant      = lv_werks
                                  info_type  = lv_esokz
                                  conv_num1  = lv_bpumz
                                  conv_den1  = lv_bpumn
                                  plnd_delry = lv_plifz
                                  pur_group  = lv_bkgrp
                                  tax_code   = lv_mwskz ).

  DATA(ls_einex) = VALUE mewieinex( info_rec   = lv_creat " neuen Infosatz anlegen?
                                    purch_org  = 'X'
                                    plant      = 'X'
                                    info_type  = 'X'
                                    conv_num1  = 'X'
                                    conv_den1  = 'X'
                                    plnd_delry = 'X'
                                    pur_group  = 'X'
                                    tax_code   = 'X' ).

  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 = lv_test
* IMPORTING
*     E_EINA  =
*     E_EINE  =
    TABLES
*     TXT_LINES              =
*     COND_VALIDITY          =
*     CONDITION              =
*     COND_SCALE_VALUE       =
*     COND_SCALE_QUAN        =
      return  = it_return.

* Fehlerauswertung
  DATA(lv_message) = ||.

  LOOP AT it_return INTO DATA(ls_return) WHERE type CA 'AEX'.
    IF lv_message IS INITIAL.
      lv_message = ls_return-message.
    ELSE.
      lv_message = |{ lv_message }/{ ls_return-message }|.
    ENDIF.
  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.
  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

* 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.
  DMC_MIG_PURCH_INFO_RECORD, ME_INFORECORD_MAINTAIN, ME_INFORECORD_MAINTAIN_MULTI, ME_INITIALIZE_INFORECORD, ME_MAINTAIN_INFORECORD, ME_POST_INFORECORD. Lesezeichen.
Corona
[ABAP] Auslesen der Schnittstelle eines Funktionsbausteins
  • Kategorien

    aufklappen | zuklappen
  • Neueste Beiträge

    • [ABAP] Testen, ob per RFC ein Funktionsbaustein im Zielsystem vorhanden ist
    • [SAP] LSMW: Materialstammdaten per Dateiupload pflegen
    • [ABAP] Editierbares SALV-Grid (IF_SALV_GUI_OM_EXTEND_GRID_API, IF_SALV_GUI_OM_EDIT_RESTRICTED)
    • [ABAP] Neues SAP-Fenster (Modus) öffnen und wieder schließen
    • [ABAP] Infos zu Datenelementen und Domänen lesen
    • [ABAP] Informationen zu einem Dynpro ermitteln
    • [ABAP] Installierte Softwarekomponenten ermitteln
    • [SAP] Ändern des SAP Easy Access Anmeldebildes (Einstiegsbild)
    • [ABAP] Eigenschaften einer Klasse prüfen
    • [ABAP] Element des Selektionsbiles über RadioButtons ein-/ausblenden
  • Archiv

  • Meta

    • Anmelden
    • Feed der Einträge
    • Kommentare-Feed
    • WordPress.org
  • Tags

    ABAP (891) Android (18) CLASS (20) cl_abap_list_layout (19) cl_abap_matcher (13) cl_bcs_convert (17) cl_gui_alv_grid (23) cl_gui_container (36) cl_gui_docking_container (23) cl_gui_frontend_services (37) cl_salv_table (53) cntl_simple_event (16) create (28) DataGridView (13) Date (15) default_screen (28) display (14) EWM (16) Fiori (17) get_column (13) get_columns (22) gui_download (15) HTML (15) JavaScript (78) JSON (20) MIME (17) NEW (20) OData (29) OpenSQL (21) Python (23) Raspberry Pi (50) Raspberry Pi 2 (27) Raspberry Pi 4 (23) Raspian (22) RegEx (17) SAP (356) SAPUI5 (27) SELECT (25) String (33) stringtab (15) suppress_toolbar (19) UTF-8 (14) Value (26) XML (25) xstring (20)
(W) 2023 by codezentrale.de
Powered by Tempera & WordPress.