Zum Inhalt springen

Agent Purple

Mitglieder
  • Gesamte Inhalte

    48
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von Agent Purple

  1. Moin, hab vor ewigen Zeiten mal ne halbwegs vernünftige Oberfläsche dafür gebaut. Spart ne Menge Tipperei etc. Bei Bedarf stell ich das gern zur Verfügung. Grüße
  2. Beides... Die Parameter können über deine eigenen Daten vorbelegt und im Programm als Vorschlagwerte verwendet werden. Jede programmtechnische Änderung an dem Wert wird lediglich im Speicher vorgehalten (gilt bis zur Abmeldung) und nicht in die eigenen Daten übernommen. Wenn du das dort ändern willst, musst du das in der Tabelle USR05 (glaub ich) tun. Wenn schon, dann aber vorsichtig sein; kannst auch schnell die Daten anderer Benutzer zerlegen. Grüße Agent Purple
  3. Moin V., ^^ das scheint ein Bug in der Installation zu sein. Ist mir auch schon passiert. Registry aufräumen scheint auch net zu helfen. Ich habs dann einfach auf ner anderen Partition installiert und schon lief's durch. Grüße Agent Purple
  4. Die Datenbank macht einen Full Table Scan, wenn er nur über dne Primärindex läuft. Leg dir doch einfach den passenen Index für dein Statement an. Greetz
  5. Die Navigation des Cursors auf dem Selektionbild erfolgt nur auf dem Frontend. Dein Coding wird nur prozessiert, wenn PAI ausgelöst wird, z.B. durch drücken von Enter, F8 oder sonstwas.
  6. Dein Custom Control auf dem Dynpro hat auch den richtigen Namen? Wenn nicht kriegst du nämlich mal ganau nichts angezeigt. Mit welchem Release werkelst du da?
  7. Kann das sein, dass du den Parameter I_STRUCTURE_NAME kurze Zeit später nachträglich eingefügt hast? Wenn ja, kann das am Puffer des ALV liegen, der "saudämlich" ist. Bei Änderungen der Anzeigestruktur am besten einfach mal den Report BCALV_BUFFER_DELETE oder BALVBUFDEL aufrufen. Danach sollte das klappen.
  8. Schau dir mal den Report DD_ADD_FORM_BUTTON an. Ich find das zwar krank, aber kann man sicherlich so machen. Ich würd da eher nen normales Dynpro mit nem Button anlegen.
  9. OMG ihr armen, wer bringt euch denn noch Table Controls bei. Das ist Technik von vorgestern...
  10. Seltsame Aufgabe^^ Tabelle nicht ändern dürfen schließt ja eigentlich Suchhilfe anbinden und Fremdschlüssel definieren mit ein. Wenn es sich um eine existierende Sammelsuchhilfe handelt, kannst du dort einen Append definieren und weitere einzelne Suchhilfen hinzufügen.
  11. Mir ist noch nicht ganz klar was du eigentlich bauen willst. Es sieht aber erstmal so aus als wäre dein Datenmodell nicht optimal. Mit entsprechenden Fremdschlüsseln könntest du möglicherweise erreichen, was du willst.
  12. Hm, die Ändern-Funktion ist wohl etwas verbuggt ^^
  13. Variablen bzw. Strukturen zum Zugriff auf eine Tabelle sind generell schlecht. Du machst das beispielsweise wie folgt am Beispiel des FI-Beleges. * Local data DATA lt_bkpf TYPE FAGL_T_BKPF. FIELD-SYMBOLS <bkpf> type bkpf. SELECT * FROM BKPF INTO TABLE lt_bkpf WHERE ... SORT lt_bkpf BY bukrs belnr gjahr. READ TABLE lt_bkpf BINARY SEARCH ASSIGNING <bkpf> WITH KEY bukrs = p_bukrs belnr = p_belnr gjahr = p_gjahr. <bkpf>-bktxt = 'Sonstwas'. WRITE / <bkpf>-bukrs. WRITE / <bkpf>-belnr. WRITE / <bkpf>-gjahr. WRITE / <bkpf>-bktxt. Hinweis: BINARY SEACH setzt voraus, dass die Tabelle nach den gesuchten Schlüsseln aufsteigend sortiert ist. Auf Performancegesichtspunkten ist das jedoch dringend zu empfehlen (siehe auch Online-Doku dazu).
  14. Variablen bzw. Strukturen zum Zugriff auf eine Tabelle sind generell schlecht. Du machst das beispielsweise wie folgt am Beispiel des FI-Beleges. * Local data DATA lt_bkpf TYPE FAGL_T_BKPF. FIELD-SYMBOLS <bkpf> type bkpf. SELECT * FROM BKPF INTO TABLE lt_bkpf WHERE ... SORT lt_bkpf BY bukrs belnr gjahr. READ TABLE lt_bkpf BINARY SEARCH ASSIGNING <bkpf> WITH KEY bukrs = p_bukrs belnr = p_belnr gjahr = p_gjahr. <bkpf>-bktxt = 'Sonstwas'. WRITE / <bkpf>-bukrs. WRITE / <bkpf>-belnr. WRITE / <bkpf>-gjahr. WRITE / <bkpf>-bktxt. Hinweis: BINARY SEACH setzt voraus, dass die Tabelle nach den gesuchten Schlüsseln aufsteigend sortiert ist. Auf Performancegesichtspunkten ist das jedoch dringend zu empfehlen.
  15. Variablen bzw. Strukturen zum Zugriff auf eine Tabelle sind generell schlecht. Du machst das beispielsweise wie folgt am Beispiel des FI-Beleges. * Local data DATA lt_bkpf TYPE FAGL_T_BKPF. FIELD-SYMBOLS <bkpf> type bkpf. SELECT * FROM BKPF INTO TABLE lt_bkpf WHERE ... SORT lt_bkpf BY bukrs belnr gjahr. READ TABLE lt_bkpf BINARY SEARCH ASSIGNING <bkpf> WITH KEY bukrs = p_bukrs belnr = p_belnr gjahr = p_gjahr. WRITE / <bkpf>-bukrs. WRITE / <bkpf>-belnr. WRITE / <bkpf>-gjahr. Hinweis: BINARY SEACH setzt voraus, dass die Tabelle nach den gesuchten Schlüsseln aufsteigend sortiert ist. Auf Performancegesichtspunkten ist das jedoch dringend zu empfehlen.
  16. Aha, wie hast'n das versucht? INSERT/UPDATE kann man eigentlich kaum falsch machen...
  17. Das sollte klappen, wenn du ein Feld vom Typ STRING definiert und das auf dem Dynpro platzierst. Da kannste dann alles reinschieben und anzeigen lassen.
  18. Dafür benutzt zu am besten die Klasse CL_GUI_ALV_GRID. Der ALV ist bezüglich der Zeilen- und Spaltenmarkierung parametrisierbar. Über den Verwendungsnachweis findest du auch Beispielreports. Greetz Agent Purple
  19. Um eine Ikone auf einem Dynpro anzuzeigen, legst du ein neues Feld vom Typ ICONNAME an. Wenn du feststellst, dass deine Nummer nicht eindeutig ist, rufst du den Fuba ICON_CREATE im PBO des Dynpros auf, andernfalls halt nicht. Dem Baustein kannst du einen Text und einen zusätzlichen Text für den Tooltip mitgeben (letzteres macht immer nen guten Eindruck^^). Eine Liste aller Icon kannst du dir über den Report RSTXICON anzeigen lassen. Greetz Agent Purple
  20. Hi, das hier sollte dir bei der Konvertierung helfen. Ich bin mal von einer Semikolon-getrennter Datei ausgegangen. Den Update-Teil musste noch einfügen. Wichtig ist, dass der Parameter S_STRUC ein Tabellentyp von deiner Tabelle ist. Die Info wird intern für die dynamische Objekterzeugung benötigt. Sinnvollerweise hinterlegst du noch eine Tabelle aller zulässigen Zieltabellen damit da nicht Unsinn eingegeben werden kann. Ansonsten, bei Fragen.... fragen Greetz Agent Purple REPORT <Wie ich immer das Ding heisst>. * Selection screen PARAMETERS s_file TYPE dxfilename OBLIGATORY. PARAMETERS s_struc TYPE dd40l-typename OBLIGATORY. * Local types TYPES tt_text1000 TYPE TABLE OF text1000. * Global data DATA g_tabname TYPE ddobjname. DATA gt_file_data TYPE tt_text1000. DATA gr_data TYPE REF TO data. * Selection screen handling AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_file. PERFORM f4_filename CHANGING s_file. * Start START-OF-SELECTION. * Upload file PERFORM upload USING s_file CHANGING gt_file_data. * Convert data PERFORM convert_data USING gt_file_data s_struc CHANGING gr_data g_tabname. * Process data PERFORM process USING gr_data g_tabname. *&---------------------------------------------------------------------* *& Form f4_filename *&---------------------------------------------------------------------* * Get filename *----------------------------------------------------------------------* FORM f4_filename CHANGING e_filename TYPE dxfilename. * Local data DATA l_filename TYPE eseftfront. * Fet filename CALL FUNCTION 'C13Z_FRONTEND_FILENAME_GET' IMPORTING e_filename = l_filename EXCEPTIONS internal_error = 1 OTHERS = 2. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. * Export filename e_filename = l_filename. ENDFORM. "f4_filename *&---------------------------------------------------------------------* *& Form upload *&---------------------------------------------------------------------* * Upload file *----------------------------------------------------------------------* FORM upload USING i_file TYPE dxfilename CHANGING et_data TYPE tt_text1000. * Local data DATA l_filename TYPE string. * Set parameter l_filename = i_file. * Upload file CALL METHOD cl_gui_frontend_services=>gui_upload EXPORTING filename = l_filename CHANGING data_tab = et_data EXCEPTIONS file_open_error = 1 file_read_error = 2 no_batch = 3 gui_refuse_filetransfer = 4 invalid_type = 5 no_authority = 6 unknown_error = 7 bad_data_format = 8 header_not_allowed = 9 separator_not_allowed = 10 header_too_long = 11 unknown_dp_error = 12 access_denied = 13 dp_out_of_memory = 14 disk_full = 15 dp_timeout = 16 not_supported_by_gui = 17 error_no_gui = 18 OTHERS = 19. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. ENDFORM. "upload *&---------------------------------------------------------------------* *& Form read_target_structure *&---------------------------------------------------------------------* * Read DDic information of target structure *----------------------------------------------------------------------* FORM read_target_structure USING i_structure TYPE ttypename CHANGING et_ddfields TYPE ddfields e_tabname TYPE ddobjname. * Local data DATA l_ddtypeget TYPE ddtypeget. DATA lt_ddtypes TYPE TABLE OF ddtypes. DATA lt_dd40l TYPE TABLE OF dd40l. FIELD-SYMBOLS <lt_ddtypes> TYPE ddtypes. FIELD-SYMBOLS <lt_dd40l> TYPE dd40l. * Set parameters l_ddtypeget-tthd = 'X'. APPEND INITIAL LINE TO lt_ddtypes ASSIGNING <lt_ddtypes>. <lt_ddtypes>-typename = i_structure. * Read table type info CALL FUNCTION 'DD_TYPEINFO_GET' EXPORTING getstate = l_ddtypeget TABLES ddtypes_tab = lt_ddtypes dd40l_tab = lt_dd40l. * Error handling IF lt_dd40l IS INITIAL. MESSAGE e007(e2) WITH i_structure. ENDIF. * Get line type READ TABLE lt_dd40l INDEX 1 ASSIGNING <lt_dd40l>. e_tabname = <lt_dd40l>-rowtype. * Read field info of line type CALL FUNCTION 'DDIF_NAMETAB_GET' EXPORTING tabname = e_tabname TABLES dfies_tab = et_ddfields EXCEPTIONS not_found = 1 OTHERS = 2. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. ENDFORM. "read_target_structure *&---------------------------------------------------------------------* *& Form transfer_single_field *&---------------------------------------------------------------------* * Transfer data of single field *----------------------------------------------------------------------* FORM transfer_single_field USING i_dfies TYPE dfies i_source_field TYPE any CHANGING e_target_field TYPE any. * Local data DATA l_exception TYPE REF TO cx_root. * Transfer data TRY. e_target_field = i_source_field. * Special handling for some data types CASE i_dfies-datatype. * CHAR WHEN 'CHAR'. * If ALPHA IF i_dfies-convexit = 'ALPHA' OR i_dfies-lowercase IS INITIAL. * Convert IF i_dfies-convexit = 'ALPHA'. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = e_target_field IMPORTING output = e_target_field. ENDIF. * Convert to upper case assording to field definition IF i_dfies-lowercase IS INITIAL. TRANSLATE e_target_field TO UPPER CASE. ENDIF. ENDIF. * NUMC WHEN 'NUMC' OR 'DATS' OR 'TIMS'. * Init IF i_source_field IS INITIAL. CLEAR e_target_field. ENDIF. ENDCASE. * Error message if field conversion fails CATCH cx_root INTO l_exception. sy-lisel = l_exception->if_message~get_longtext( ). MESSAGE e001(00) WITH sy-lisel. ENDTRY. ENDFORM. "transfer_single_field *&---------------------------------------------------------------------* *& Form convert_data *&---------------------------------------------------------------------* * Convert file to data table *----------------------------------------------------------------------* FORM convert_data USING it_file_data TYPE tt_text1000 i_structure TYPE ttypename CHANGING er_data TYPE REF TO data e_tabname TYPE tabname. * Local data DATA lt_fields TYPE tt_text1000. DATA lt_target_ddic TYPE ddfields. FIELD-SYMBOLS <it_file_data> TYPE text1000. FIELD-SYMBOLS <er_data> TYPE table. FIELD-SYMBOLS <er_data_line> TYPE ANY. FIELD-SYMBOLS <source_field> TYPE ANY. FIELD-SYMBOLS <target_field> TYPE ANY. FIELD-SYMBOLS <lt_target_ddic> TYPE dfies. * Read DDic structure of target PERFORM read_target_structure USING i_structure CHANGING lt_target_ddic e_tabname. * Create data object CREATE DATA er_data TYPE (i_structure). * Assign ASSIGN er_data->* TO <er_data> CASTING TYPE (i_structure). * Loop data table LOOP AT it_file_data ASSIGNING <it_file_data>. * Init CLEAR lt_fields. * Split structure into internal table SPLIT <it_file_data> AT ';' INTO TABLE lt_fields. * Append line to data object APPEND INITIAL LINE TO <er_data> ASSIGNING <er_data_line>. * Loop fields of source file LOOP AT lt_fields ASSIGNING <source_field>. * Read info of target field READ TABLE lt_target_ddic INDEX sy-tabix ASSIGNING <lt_target_ddic>. * Add some error handling here!!! IF NOT sy-subrc = 0. EXIT. ENDIF. * Assign target ASSIGN COMPONENT sy-tabix OF STRUCTURE <er_data_line> TO <target_field>. * Transfer data PERFORM transfer_single_field USING <lt_target_ddic> <source_field> CHANGING <target_field>. ENDLOOP. ENDLOOP. ENDFORM. "convert_data *&---------------------------------------------------------------------* *& Form process *&---------------------------------------------------------------------* * Process data *----------------------------------------------------------------------* FORM process USING ir_data TYPE REF TO data i_tabname TYPE ddobjname. * Processing depends on the strucure. CASE i_tabname. WHEN '<Insert structure name here>'. * perform whatever... ENDCASE. ENDFORM. "process
  21. Wir sind zu dem Ergebnis gekommen, dass das scheinbar am erstellen einer Tabelle einer dynamischen Struktur im OO-Umfeld liegt. OO wurde erst vollständig in Release 4.7 implementiert. Probier mal bitte testweise den Tabellennamen fest reinzuschreiben. Wenn das klappt, suchst du im OSS mal nach nem Hinweis wie das in 4.6 geht. Eventuell kommt man da mit Support Packages schon ein Stück weiter. Hängt aber davon ab, auf welchem Releasestand ihr seid.
  22. Na gut, am Release kann es liegen. Wir haben hier auf allen Systemen 4.7 / 620. Deshalb kann ich das leider auch nicht ausprobieren. Ich guck aber mal, ob ich jemanden finde, der das weiss. Hab ja genug Leute hier.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...