Funktionsbaustein DYNP VALUES UPDATE
Aus SAP-Wiki
Zur Navigation springenZur Suche springen
Mit dem Funktionsbaustein DYNP_VALUES_UPDATE kann man mehrere Werte auf einem Dynpro ändern, ohne dass der PBO durchlaufen werden muss.
Hier soll beim ersten Parameter PDF (bzw. P_PDF1) möglich sein mehrere Dateien auszuwählen, die dann in maximal 10 Parameterfelder zurückgeschrieben werden.
Muster
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
DYNAME =
DYNUMB =
TABLES
DYNPFIELDS =
" EXCEPTIONS
" INVALID_ABAPWORKAREA = 1
" INVALID_DYNPROFIELD = 2
" INVALID_DYNPRONAME = 3
" INVALID_DYNPRONUMMER = 4
" INVALID_REQUEST = 5
" NO_FIELDDESCRIPTION = 6
" UNDEFIND_ERROR = 7
" OTHERS = 8
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
Coding
* Beim ersten PDF-Upload kann man gleich mehrere Dateien auswählen
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_pdf1.
CALL METHOD /vtis/cl_schn=>file_open_dialog_pdf_multi
IMPORTING
et_pdf_filename = gt_pdf_filename.
IF gt_pdf_filename IS NOT INITIAL.
PERFORM dynp_values_update
USING gt_pdf_filename.
ENDIF.
METHOD file_open_dialog_pdf_multi.
DATA: lt_filetable TYPE filetable,
ls_filetable LIKE LINE OF lt_filetable,
ld_rc TYPE i.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = 'Datei auswählen'
file_filter = 'PDF-Dateien (*.PDF)|*.PDF'
initial_directory = 'H:\'
multiselection = true
CHANGING
file_table = lt_filetable
rc = ld_rc
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
IF ld_rc > 0.
LOOP AT lt_filetable INTO ls_filetable.
append ls_filetable-filename to et_pdf_filename.
ENDLOOP.
ENDIF.
ENDMETHOD.
*&---------------------------------------------------------------------*
*& Form DYNP_VALUES_UPDATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM dynp_values_update
USING pit_pdf_filename TYPE filetable.
READ TABLE pit_pdf_filename INDEX 1 INTO p_pdf1.
READ TABLE pit_pdf_filename INDEX 2 INTO p_pdf2.
READ TABLE pit_pdf_filename INDEX 3 INTO p_pdf3.
READ TABLE pit_pdf_filename INDEX 4 INTO p_pdf4.
READ TABLE pit_pdf_filename INDEX 5 INTO p_pdf5.
READ TABLE pit_pdf_filename INDEX 6 INTO p_pdf6.
READ TABLE pit_pdf_filename INDEX 7 INTO p_pdf7.
READ TABLE pit_pdf_filename INDEX 8 INTO p_pdf8.
READ TABLE pit_pdf_filename INDEX 9 INTO p_pdf9.
READ TABLE pit_pdf_filename INDEX 10 INTO p_pdf10.
DATA: ls_fields TYPE dynpread.
DATA: lt_fields TYPE TABLE OF dynpread.
ls_fields-fieldname = 'P_PDF1'.
ls_fields-fieldvalue = p_pdf1.
APPEND ls_fields TO lt_fields.
ls_fields-fieldname = 'P_PDF2'.
ls_fields-fieldvalue = p_pdf2.
APPEND ls_fields TO lt_fields.
"...
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname = 'Z_MA_PROTOTYP'
dynumb = '1000'
TABLES
dynpfields = lt_fields
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
undefind_error = 7
OTHERS = 8.
IF sy-subrc <> 0.
break muellem1.
ENDIF.
ENDFORM. " DYNP_VALUES_UPDATE
Literatur
- Function Modules in ABAP: A Quick Reference Guide, von Tanmaya Gupta, S. 259 (EN)
- Common SAP R/3 Functions Manual, von William Lawlor, S. 193 (EN)
