Code: Alles auswählen.
DATA: lv_var TYPE string,
lt_p2001 TYPE p2001.
lv_var = '(MP200000)PSAVE'.
ASSIGN (lv_var) TO FIELD-SYMBOL(<psave>).
CALL METHOD cl_hr_pnnnn_type_cast=>prelp_to_pnnnn
EXPORTING
prelp = <psave>
IMPORTING
pnnnn = lt_p2001
Code: Alles auswählen.
CONCATENATE 'ls_p9010-vprnr' lv_index INTO lv_fieldname.
ASSIGN (lv_fieldname) TO <vprnr>.
Ist das Programm MP200000, von dem du versuchst die Variable PSAVE auszulesen, im Speicher auch geladen?Dominic hat geschrieben:Irgendwas übersehe ich hier noch oder ist mir nicht bewusst ...Code: Alles auswählen.
lv_var = '(MP200000)PSAVE'. ASSIGN (lv_var) TO FIELD-SYMBOL(<psave>).
Code: Alles auswählen.
TABLES: p0008.
DATA: lv_var TYPE string.
DATA: ls_p0008_old TYPE p0008.
DATA: ls_prelp TYPE prelp.
FIELD-SYMBOLS: <psave> TYPE prelp.
FORM process_at_change.
lv_var = '(MP000800)PSAVE'.
ASSIGN (lv_var) TO FIELD-SYMBOL(<psave>) .
CALL METHOD cl_hr_pnnnn_type_cast=>pnnnn_to_prelp
EXPORTING
pnnnn = <psave>
IMPORTING
prelp = ls_prelp.
CALL METHOD cl_hr_pnnnn_type_cast=>prelp_to_pnnnn
EXPORTING
prelp = ls_prelp
IMPORTING
pnnnn = ls_p0008_old.
ENDFORM.
Folgende Benutzer bedankten sich beim Autor Dominic für den Beitrag:
DeathAndPain
Ja, natürlich, ich Trottel, da hätte ich auch dran denken können. Jeder Infotyp hat für seine Dynprodarstellung ein Steuerprogramm, das MPxxxx00 heißt, wobei xxxx die Infotypnummer ist. Bei meinem Debuggertest habe ich eine Dynamische Maßnahme im IT 0 ausgelöst, deshalb war es bei mir MP000000. Du pfuschelst im IT 8 rum, also ist es bei Dir MP000800. Das sind Sachen, die ich eigentlich im Schlaf kann.Danke für den Tipp.
Aber mit dem Modulpool MP000000 hat es auch nicht funktioniert.
Der IT8 hat wie es aussieht sogar einen eigenen Modulpool
Code: Alles auswählen.
ls_p0008_old = <psave>.
Code: Alles auswählen.
DATA: VINFT LIKE T582V-VINFT,
IXXXX TYPE REF TO DATA,
SECONDARY_INFOTYPE LIKE T582W-INFTY,
STRUCTURE_OF_SECONDARY_INFTY(5) TYPE C.
CLEAR: VINFT, SECONDARY_INFOTYPE.
SELECT SINGLE VINFT INTO VINFT FROM T582V
WHERE MOLGA = T001P-MOLGA " hier muss die MOLGA zum Personalteilbereich des Mitarbeiters angegeben werden, siehe Tabelle T001P
AND INFTY = '0016'.
IF SY-SUBRC = 0.
SELECT SINGLE INFTY INTO SECONDARY_INFOTYPE FROM T582W
WHERE VINFT = VINFT
AND SEQNR = '02'.
ENDIF.
IF SY-SUBRC = 0. " wenn aus einem der beiden vorangegangenen SELECTS ein SY-SUBRC <> 0 kommt, gehen wir von einem IT ohne Infotypview aus.
STRUCTURE_OF_SECONDARY_INFTY = 'P' && SECONDARY_INFOTYPE. " && sind zwei Ampersands; da spinnt das Code-Tag hier im Forum rum
* <IXXXX> mit der Struktur des in VINFT bezeichneten Infotyps typisieren
CREATE DATA IXXXX TYPE (STRUCTURE_OF_SECONDARY_INFTY).
ASSIGN IXXXX->* TO <IXXXX>.
* Umwandeln PRELP nach Infotypview
CALL METHOD CL_HR_PNNNN_TYPE_CAST=>PRELP_TO_VIEW
EXPORTING
PRELP = INNNN "Puffer Personalstammdaten
SECONDARY_INFTY = SECONDARY_INFOTYPE
IMPORTING
PRIMARY_RECORD = P0016
SECONDARY_RECORD = <IXXXX>.
ELSE. " Land, bei dem kein Viewinfotyp hinten dranhängt
CALL METHOD CL_HR_PNNNN_TYPE_CAST=>PRELP_TO_PNNNN
EXPORTING PRELP = INNNN
IMPORTING PNNNN = P0016.
ENDIF.
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag (Insgesamt 2):
abuma • Dominic
Code: Alles auswählen.
ls_p0008_old = <psave>.