Agent Purple
-
Gesamte Inhalte
48 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Beiträge von Agent Purple
-
-
Hi,
hier ist das Programm zum Herunterladen von DB-Tabellen.
Die Daten werden in einer CSV-Datei auf dem Applikations-Server gespeichert.
Der FB 'Z_ZRPARAMETER_READ' holt nur ein Temporäres Verzeichnis aus einer Kundeneigenen Tabelle, muss also irgendwie ersetzt werden. Denke aber, dass dich das an dieser Stelle gar nicht so interessiert.
Message 183(zr) ist eine Fehlermeldung, falls die Datei nicht erzeugt werden konnte.
Message 081(zs) ist ein Dummy, den ich vergewaltigt habe. Ist ja auch nur ein Schmutzprogramm gewesen :-)
Wenn noch fragen sind, weisste ja wie du mich erreichen kannst.
REPORT z_tabledownload .
* Lokale Daten
DATA: l_tabname LIKE dd02l-tabname,
lt_data TYPE REF TO data,
l_data TYPE string,
l_field TYPE string,
l_out TYPE string,
l_zrparameter TYPE zrparameter,
l_filename TYPE string,
lt_tablefields TYPE TABLE OF dbfield,
l_count TYPE sydbcnt,
l_sydbcnt TYPE sy-dbcnt.
FIELD-SYMBOLS: <lt_data> TYPE table,
<l_data> TYPE ANY,
<l_field> TYPE ANY,
<l_tablefield> TYPE dbfield.
* Selektionsbild
PARAMETERS: p_tab LIKE dd02l-tabname OBLIGATORY,
p_size TYPE i OBLIGATORY DEFAULT '10000'.
* Programmstart
START-OF-SELECTION.
* Tabelle prüfen
SELECT SINGLE tabname
FROM dd02l
INTO l_tabname
WHERE tabname = p_tab.
* Tabelle nicht vorhanden
IF NOT sy-subrc = 0.
MESSAGE s402(mo) DISPLAY LIKE 'E' WITH p_tab.
RETURN.
ENDIF.
* Feldbezeichnungen lesen
CALL FUNCTION 'DB_GET_TABLE_FIELDS'
EXPORTING
tabname = l_tabname
TABLES
dbfields = lt_tablefields.
* Pfad des Work-Verzeichnisses lesen
CALL FUNCTION 'Z_ZRPARAMETER_READ'
EXPORTING
i_id = 'TEMP_PFAD'
IMPORTING
e_zrparameter = l_zrparameter
EXCEPTIONS
no_input_data = 1
data_not_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
* Dateiname aufbauen
CONCATENATE l_zrparameter-wert sy-sysid '-' l_tabname '-' sy-datum '-' sy-uzeit '.txt' INTO l_filename.
* Instanzierung der lokalen Daten
CREATE DATA: lt_data TYPE STANDARD TABLE OF (l_tabname).
ASSIGN lt_data->* TO <lt_data>.
* Ausgabedatei öffnen
OPEN DATASET l_filename FOR OUTPUT IN TEXT MODE.
IF NOT sy-subrc = 0.
MESSAGE s183(zr) DISPLAY LIKE 'E'.
RETURN.
ENDIF.
* Überschrift der Feldnamen schreiben
LOOP AT lt_tablefields ASSIGNING <l_tablefield>.
CONCATENATE l_out <l_tablefield>-name ';' INTO l_out.
ENDLOOP.
* Überschrift schreibem
TRANSFER l_out TO l_filename.
* Anzahl der Datensätze ermitteln
SELECT COUNT(*) FROM (l_tabname) INTO l_sydbcnt.
* Datensätze paketweise lesen
SELECT * FROM (l_tabname)
INTO TABLE <lt_data>
PACKAGE SIZE p_size
ORDER BY PRIMARY KEY.
* Gelesene Sätze zählen
l_count = l_count + p_size.
* Statusbar aktualisieren
PERFORM show_status USING l_count l_sydbcnt.
* Datensätze für Ausgabe aufbereiten
LOOP AT <lt_data> ASSIGNING <l_data>.
CLEAR l_out.
DO.
ASSIGN COMPONENT sy-index OF STRUCTURE <l_data> TO <l_field>.
IF sy-subrc = 0.
l_field = <l_field>.
CONCATENATE l_out l_field ';' INTO l_out.
ELSE.
EXIT.
ENDIF.
ENDDO.
* Datensatz in Datei schreiben
TRANSFER l_out TO l_filename.
ENDLOOP.
ENDSELECT.
* Ausgabedatei schließen
CLOSE DATASET l_filename.
IF NOT sy-subrc = 0.
MESSAGE s183(zr) DISPLAY LIKE 'E'.
RETURN.
ENDIF.
* Das war's
MESSAGE s081(zs) WITH 'Tabelle' l_tabname 'wurde gespeichert in Datei' l_filename.
*&---------------------------------------------------------------------*
*& Form show_status
*&---------------------------------------------------------------------*
FORM show_status USING p_count TYPE sydbcnt
p_sydbcnt TYPE sydbcnt.
* Lokale Daten
DATA: l_count TYPE string,
l_sydbcnt TYPE string,
l_progress1 TYPE string,
l_progress_percentage(2) TYPE n,
l_progress_text TYPE string.
l_count = p_count.
l_sydbcnt = p_sydbcnt.
* Prozentsatz der Verarbeitung berechnen
l_progress1 = trunc( l_count / l_sydbcnt * 100 ).
l_progress_percentage = l_progress1.
CONCATENATE l_count 'von' l_sydbcnt 'Sätzen gelesen (' l_progress_percentage '%)'
INTO l_progress_text SEPARATED BY space.
* Progress auf den GUI anzeigen
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = l_progress_percentage
text = l_progress_text.
ENDFORM. " show_status
-
Ich schick dir morgen mal ein wenig Source zu dem Thema, OK?
Hab letzt ein Proggie zum Herunterladen von Tabellen geschrieben. Denke, das ist sowas, was du brauchst.
-
Aber für die Felder und in Kombi mit deiner Zeilenmarkierung kannst du alles beliebig freischalten
-
Klar geht das. Musst nur für die gewünschten Felder eine Screen-Group (im Painter) definieren.
Auf die Fragst du dann ab und setzt die entsprechenden Eigenschaften.
-
Hi,
du brauchst in deiner Struktur, mit der du das TV aufbaust ein CHAR1-Feld (z.B. nennst du es "MARK").
Im Screen-Painter kannst du dann angeben, ob du einfach oder mehrfach Marikierung haben möchtest. Den Feldnamen deiner Sturktur musst du dann dort eintragen.
Im PAI holst du dann die Markierungskennzeichen des TV in die IT.
Im PBO loopst du dann über die IT . Wenn das X für MARK sitzt, setzt du die benötigten Felder des TV auf Input = 1.
Kann dir auch mal ein Coding-Beispiel schicken, wenn dir das noch net weiter geholfen hat.
Gruß
P.S.: Bin übrigens auch wieder per ICQ erreichbar.
-
Hi,
vielleicht interessieren dich ein paar Programme zu dem Thema, die ich mal geschrieben habe.
Das erste ist eine recht groß gewordene Gui für das Net Send
Folgendes Programm funktioniert vom Prinzip her ähnlich, nur mit nem eigenen Protokoll, da sie uns in der Firma den Nachrichtendienst abgedreht haben.
Hat noch zusätzlich ne Online-Anzeige ala ICQ, ist aber auch noch in der Testphase.
Viel Spaß damit
-
Hi,
konnte mich gestern leider net an der Diskussion beteiligen. War aber sehr interessant zu lesen
Das mit der Suchhilfe klappt mit alle Feldern einer Struktur oder Tabelle und mit allen Datenelementen. Sie ans Datenelement zu hängen macht natürlich mehr Sinn, weil sie dann überall genutzt werden kann, wo sich das DE befindet.
Musst halt nur aufpassen bei der Deklaration von Select-Options und Parameters.
Im übrigen gibt: Variablen immer mit TYPE deklarieren, wegen AO (Abap Objects). Dann fällt einem die Umstellung net so schwer.
Wenn du noch Fragen hast, kannst dich gern auch per
Mail: agent.purple@gmx.de oder
ICQ: 91958511 melden.
Gruß
-
Axo,
du gehst in die SE11 und verknüpfst die Suchhilfe entweder mit einem Datenelement oder nem Feld einer Tabelle oder Struktur. Gibt da nen extra Reiter in der SE11.
Und dann haste auf dem Dynpro, wenn du auf dem Feld mit dem Cursor stehst, den F4-Button.
-
Jo, was meinst du, wozu eine Suchhilfe da ist :WD :WD
-
Versuchs mal mit sichern und aktivieren
-
Wie schon im anderen Posting gesagt, musst du dir lediglich ein Feld nehmen, hinter dem eine vernünfige NUMC-Domäne liegt (NUMC_RAN). Dann solltest du im Programm deine Eingaben mit führenden Nullen haben.
Standardbeispiele sindhalt LIFNR und KUNNR, bei denen das genau so funktioniert. Sind aber leider nur 10-stellig
-
Tach,
erzähl doch einfach mal, was du da veranstalten sollst.
So ganz kann ich das noch nicht nachvollziehen.
Klingt fast wie dein letztes Posting zu dem Thema.
Beliebig variabel können Ranges übrigens net sein (oder es ist mir noch net über'n Weg gelaufen).
In welchem Modul arbeitest du?
-
Hi,
Suchhilfen kann du auch über die SE11 den Feldern zu.
Idealerweise hängt man die Suchhilfen aber an eine Domäne oder ein Datenelement, damit sie überall wo das Element benutzt wird, verfügbar ist.
Sonst musst du das in alle Strukturen und Tabellen hängen.
Eine Suchhilfe kannst du verschieden anlegen. Wenn du eigenes Coding brauchst, bastelst du dir nen FB, der dir bestimmte Daten zurückliefert. Ansonsten halt über Prüftabellen etc.
Sinn machen die Teile sowieso fast nur bei eigenen Tabellen /Strukturen.
-
Hi!
Das einfachste ist, wenn du dir entspechende Klassen anlegst, in der die ganzen Sprachschlüsel hinterlegt sind.
Je nachdem was der benutzer auswählt, instanziert du dann die entsprechende Klasse. Ist nebenbei auch noch "hübscher" als INIs.
-
Hi,
hat sich dein obiges Problem eigentlich schon gelöst?
Wenn ja -> OK,
wenn nein -> du brauchst eigentlich nur eine Range-Tabelle mit ner richtigen Domäne dahinter, d.h. inkl. Typkonvertierung (NUMC). Dann füllt er dir das immer mit Nullen auf.
Und mal so allgemein:
ABAP ist doch richtig genial, z.B. bei der Verarbeitung von Arrays bzw. internen Tabellen. Da können sich diverse andere Sprachen aber locker noch was von abgucken.
Ich programmiere seit nunmehr fast zwei Jahren im SAP und bin äußerst happy damit. Da ist man wenigstens nicht nur stumpf Kodierer, sondern brauchst auch viel betriebswirtschaftlichen Hintergrund, damit man auch ohne Krücke (viele, viele Helferlein) was auf die Beine krigt.
-
Hi!
Ist eigentlich ganz einfach. Es gibt verschiedene Möglichkeiten:
Eine Liste (bzw. Array) aller Fenster zurückliefern,
Fenster nach einem bestimmten Titel suchen, etc.
Wenn du mir erzählst was du brauchst, kriegste auch ne Antwort
-
Tach!
@Julia: Mach dir mal keine Sorgen. ABAP ist weder leichter noch schwerer als irgendeine andere Sprache.
Das, was den meisten Leuten zu schaffen macht, ist das betriebswirtschaftliche Umfeld. Schließlich will man nicht nur ganz stupf Kodierer sein, sondern hat meisten einen etwas anderen Anspruch.
Zum anderen hat man ja noch die Möglichkeit, aus den (keine ahnung wie vielen) Funktionsbausteinen und Methoden auszuwählen, d.h. so viel muss man dann schon gar net mehr coden.
Aber das kommt dann im Laufe der Zeit.
Wenn es das grüne Buch ist, das du da hast, kann ich nur sagen, dass mir das damals super geholfen hat.
Ne Schulung kann ich zu Beginn nicht empfehlen (jedenfalls nicht die anbsoluten Grundlagenschulungen), weil man da wirklich nur Laufen lernt, d.h. was ist eigentlich eine Variable etc. Wenn du jemanden hast, der dir beim Einstieg hilft, ist das meiner Meinung nach viel mehr Wert.
Das soll's nun aber erstmal gewesen sein.
Wenn du (oder sonstwer) noch Fragen hat, einfach mal melden...
Gruß
-
LOL
wie geil...
Dachte vielleicht kann man trotzdem mal helfen
-
Na, wat liegt an?
Vielleicht kann ich dir helfen
-
Hi!
Du solltest schon sagen, welche Objekte du damit steuern willst.
Klingt irgendwie nach Liste oder Tableview
-
Das SSTab ist doch gar nicht so schlecht. Bin recht zufrieden damit.
Solltest nur den Style umstellen (0 -> 1), dann sieht das Teil auch passabel aus.
-
Hab das Posting grad mal so entdeckt.
Klar gibt es Esc-Sequenzen.
Kannst das mit doppelten Anführungezeichen machen.
MsgBox ("Text1 ""Text2"" Text3")
gibt alles als einen String aus wobei Text2 in anführungszeichen steht.
Text1 "Text2" Text3 <<< das steht dann in der Box
Gruß
ITab in SAP nach dynamischem Typ anlegen
in Delphi/RPG+CL/Sonstige
Geschrieben
Hi,
sag mal... auf welchem Release arbeitet ihr denn? Scheint ja recht alt zu sein.
Probier mal das "STANDARD" wegzulassen.