Dynpro-Felder vorbelegen wenn’s eigentlich nicht geht

Die Kollegen aus der Instandhaltung möchten unbedingt einige Dynprofelder der Wartungsplanerstellung mit Werten vorbelegt haben. Es ist aber nicht immer möglich diesem Wunsch zu entsprechen, da viele Felder keine Dynpro-ID besitzen und deshalb nicht über Benutzerparameter zu belegen sind. Auch im Einführungsleitfaden findet sich zu diesem Thema keine Abhilfe, so bediene ich mich hier einer vorgeschalteten Transaktion. Dort wird zunächst eine Batch-Input-Mappe erzeugt und mit Werten gefüllt. Diese wird dann an die SAP-Standardtransaktion übergeben und die entsprechenden Dynpro-Felder sind mit Werten gefüllt, Ohlala!


*&---------------------------------------------------------------------*
*& Report ZPM_IP41
*&
*&---------------------------------------------------------------------*
*& Es sollen einige Felder der Dynpros zur Erstellung von Wartungsplänen
*& mit voreingestellten Werten gefüllt werden. Da diese Felder jedoch über keine
*& Dynpro-ID verfügen und es auch im Einführungsleitfaden keine Möglichkeit
*& gibt diese Felder zu befüllen, ist hier die Transaktion ZIP41 der eigentlichen
*& TA IP41 vorgeschaltet. Es werden Batch-Input-Daten erzeugt, die der
*& regulären Transaktion übergeben werden.
*&
*& Die Ausführung der Transaktion erfolgt über das Berechtigungsobjekt
*& S_TCODE und muss auch in den Berechtigungsdaten zur Rolle gepflegt sein.
*&
*&---------------------------------------------------------------------*

REPORT ZPM_IP41.

DATA: BEGIN OF G_BDCDATA OCCURS 100.
INCLUDE STRUCTURE BDCDATA.
DATA: END OF G_BDCDATA .

PERFORM FILL_BDCDATA.

* Sichtbar abspielen (im Modus A) da sonst die Transaktion sofort wieder verlassen würde
CALL TRANSACTION 'IP41' USING G_BDCDATA MODE 'A'.

INCLUDE ZIP41_F01. "Hier sind die Unterprogramme enthalten

Die Unterprogramme:

*----------------------------------------------------------------------*
***INCLUDE ZIP41_F01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* *----------------------------------------------------------------------*
FORM BDC_DYNPRO USING P_PROGRAM P_DYNPRO.
CLEAR G_BDCDATA.
G_BDCDATA-PROGRAM = P_PROGRAM.
G_BDCDATA-DYNPRO = P_DYNPRO.
G_BDCDATA-DYNBEGIN = 'X'.
APPEND G_BDCDATA.

ENDFORM. " BDC_DYNPRO

*&---------------------------------------------------------------------*
*& Form BDC_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* *----------------------------------------------------------------------*
FORM BDC_FIELD USING P_FNAM VALUE(P_FVAL) .
CLEAR G_BDCDATA.
G_BDCDATA-FNAM = P_FNAM.
G_BDCDATA-FVAL = P_FVAL.
APPEND G_BDCDATA.


ENDFORM. " BDC_FIELD
*&---------------------------------------------------------------------*
*& Form FILL_BDCDATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* *----------------------------------------------------------------------*
FORM FILL_BDCDATA .
REFRESH G_BDCDATA.
PERFORM BDC_DYNPRO USING 'SAPLIWP3' '0100'. " X
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'RMIPM-MPTYP'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
PERFORM BDC_FIELD USING 'RMIPM-MPTYP' 'PM'.

PERFORM BDC_DYNPRO USING 'SAPLIWP3' '0201'. " X
PERFORM BDC_FIELD USING 'RMIPM-AUART' 'WART'.
PERFORM BDC_FIELD USING 'RMIPM-ILART' '002'.
PERFORM BDC_FIELD USING 'RMIPM-GEWERK' 'MC2'.
PERFORM BDC_FIELD USING 'RMIPM-WERGW' '100'.
PERFORM BDC_FIELD USING 'RMIPM-IWERK' '100'.
PERFORM BDC_FIELD USING 'RMIPM-ZYKL1' '52'.
PERFORM BDC_FIELD USING 'RMIPM-ZEIEH' 'WCH'.
PERFORM BDC_FIELD USING 'RMIPM-WPGRP' '001'.

PERFORM BDC_DYNPRO USING 'SAPLIWP3' '0201'. " X
PERFORM BDC_FIELD USING 'RMIPM-VSPOS' '100'.
PERFORM BDC_FIELD USING 'RMIPM-HORIZ' '80'.
PERFORM BDC_FIELD USING 'RMIPM-ZEIT' 'X'.
PERFORM BDC_FIELD USING 'RMIPM-ABRHO' '2'.
PERFORM BDC_FIELD USING 'RMIPM-HUNIT' 'JHR'.
PERFORM BDC_FIELD USING 'RMIPM-VSNEG' '100'.
PERFORM BDC_FIELD USING 'RMIPM-SFAKT' '1,00'.

ENDFORM. " FILL_BDCDATA
Dieser Eintrag wurde veröffentlicht in SAP/ABAP von . Setze ein Lesezeichen zum Permalink.

Schreibe einen Kommentar