[ABAP] Materialbelegliste (MB51) anzeigen

Variante 1 (CALL TRANSACTION)

PARAMETERS: p_werk TYPE werks DEFAULT '10'.
PARAMETERS: p_matnr TYPE matnr.
PARAMETERS: p_lgort TYPE lgort_d.
PARAMETERS: p_bwart TYPE bwart.
PARAMETERS: p_charg TYPE charg_d.
PARAMETERS: p_lifnr TYPE lifnr.
PARAMETERS: p_kunnr TYPE kunnr.
PARAMETERS: p_kdauf TYPE kdauf.

START-OF-SELECTION.

* Werk
  SET PARAMETER ID 'WRK' FIELD p_werk.
* Material
  SET PARAMETER ID 'MAT' FIELD p_matnr.
* Lagerort
  SET PARAMETER ID 'LAG' FIELD p_lgort.
* Bewegungsart
  SET PARAMETER ID 'BWA' FIELD p_bwart.
* Charge
  SET PARAMETER ID 'CHA' FIELD p_charg.
* Lieferant
  SET PARAMETER ID 'LIF' FIELD p_lifnr.
* Kunde
  SET PARAMETER ID 'KUN' FIELD p_kunnr.
* Kundenuftrag
  SET PARAMETER ID 'AUN' FIELD p_kdauf.

  CALL TRANSACTION 'MB51' AND SKIP FIRST SCREEN.

Variante 2 (SUBMIT)

* Werk
DATA(lv_werk) = VALUE werks( ).
SELECT-OPTIONS: so_werk FOR lv_werk.
* Warenbegleitscheinnummer
DATA(lv_xabln) = VALUE xabln( ).
SELECT-OPTIONS: so_xabln FOR lv_xabln.
* Referenz-Belegnummer
DATA(lv_xblnr) = VALUE xblnr1( ).
SELECT-OPTIONS: so_xblnr FOR lv_xblnr.

INITIALIZATION.
* Vorbelegung für Werk
  so_werk[] = VALUE #( ( sign = 'I' option = 'EQ' low = '10' high = '' ) ).
  
START-OF-SELECTION.

* MB51 ist eine Reporttransaktion, also kann auch der dahinter
* liegende Report RM07DOCS direkt mit Übergabewerten aufgerufen werden
  SUBMIT rm07docs
    WITH werks IN so_werk
    WITH xabln IN so_xabln
    WITH xblnr IN so_xblnr
    WITH rhier_l = abap_true  " Radiobutton "Hierarchische Liste" aktiv setzen
    WITH rflat_l = abap_false " Radiobutton "Flache Liste" deaktivieren
    AND RETURN.

[ABAP] Verwendung SAP-Memory

  • Der SAP-Memory arbeitet im Gegensatz zum ABAP-Memory Session-(Modus-)übergreifend.
  • Es können also Daten zw. zwei Programmen ausgetauscht werden.
  • Speicherung ist nutzerspezifisch
  • Speicherung erfolgt solange der Nutzer angemeldet ist

Report 1 (Sender)

* Variablenname im SAP-Memory
CONSTANTS: co_mem TYPE usr05-parid VALUE 'MEM1'.

* Wert zum Abspeichern
PARAMETERS: p_parval TYPE usr05-parva DEFAULT 'Test1'.
* Schalter speichern / löschen
PARAMETERS: p_delete TYPE abap_bool DEFAULT abap_false.

START-OF-SELECTION.

  IF p_delete = abap_false.
* Wert im SAP-Memory setzen
    SET PARAMETER ID co_mem FIELD p_parval.
    WRITE: / 'Wert gesetzt.'.
  ELSE.
* Wert in SAP-Memory schreiben
    SET PARAMETER ID co_mem FIELD space.
    WRITE: / 'Wert gelöscht.'.
  ENDIF.

Report 2 (Empfänger)

* Variablenname im SAP-Memory
CONSTANTS: co_mem TYPE usr05-parid VALUE 'MEM1'.

DATA: lv_parval TYPE usr05-parva.

* Wert aus SAP-Memory lesen
GET PARAMETER ID co_mem FIELD lv_parval.
IF sy-subrc = 0.
  WRITE: / lv_parval.
ELSE.
  WRITE: / co_mem, 'nicht vorhanden.'.
ENDIF.

Links

[ABAP] Transaktion mit Parametern vorbelegen und aufrufen

Variante 1 (Batch-Input-Daten)

DATA: it_batchdata TYPE STANDARD TABLE OF bdcdata.
DATA: it_msg TYPE STANDARD TABLE OF bdcmsgcoll.
  
* Batch-Input-Daten, mit Transaktion SHDB aufgezeichnet
it_batchdata = VALUE #( ( program = 'SAPLSD_ENTRY' dynpro = '1000' dynbegin = 'X' fnam = '' fval = '' )
                        ( program = '' dynpro = '' dynbegin = '' fnam = 'BDC_CURSOR' fval = 'RSRD1-VIMA_VAL' )
                        ( program = '' dynpro = '' dynbegin = '' fnam = 'BDC_OKCODE' fval = '=WB_DISPLAY' )
                        ( program = '' dynpro = '' dynbegin = '' fnam = 'RSRD1-VIMA' fval = 'X' )
                        ( program = '' dynpro = '' dynbegin = '' fnam = 'RSRD1-VIMA_VAL' fval = 'MARA' ) ). 

* SE11 aufrufen, kein AUTHORITY-CHECK
CALL TRANSACTION 'SE11' WITHOUT AUTHORITY-CHECK
  USING it_batchdata
  MODE 'E'
  UPDATE 'A'
  MESSAGES INTO it_msg.

IF sy-subrc NE 0.
  MESSAGE 'Fehler beim Aufruf des SE11' TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.

Variante 2 (SET PARAMETER – SE11)

* Parameter "Datenbakname" mit Wert 'MARA' vorbelegen
SET PARAMETER ID 'DTB' FIELD 'MARA'.
* SE11 ohne Prüfung aufrufen
CALL TRANSACTION 'SE11' WITHOUT AUTHORITY-CHECK.

IF sy-subrc NE 0.
  MESSAGE 'Fehler beim Aufruf des SE11' TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.

Variante 3 (SET PARAMETER – MM03)

PARAMETERS: p_matnr TYPE matnr.

* MATNR setzen
SET PARAMETER ID 'MAT' FIELD p_matnr.
* Grunddaten anzeigen
SET PARAMETER ID 'MXX' FIELD 'K'.
* Transaktion MM03 aufrufen (Material anzeigen)
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.

Links