[ABAP] Excel spalten berechnen

  • Ersteller Ersteller Sasku
  • Erstellt am Erstellt am
S

Sasku

Gast
Hey zusammen,

ich habe von meinem Ausbilder, der aber nun bis Anfang August nicht mehr da ist, eine Aufgabe bekommen.

Ich soll ein Programm schreiben, welches, wenn eine Zahl eingegeben wird, die jeweilige Excel-Spalte dazu berechnet.
z. B. 1 = A, 2 = B, usw. ^^

ich hoffe die eigentliche Aufgabe ist soweit klar?


So jetzt habe ich das Alphabet in einen String geschrieben ( heißt "ABC...XYZ" ) und möchte nun je nachdem wie die zahl herauskommt auf den String zugreifen und dann die Stelle nehmen. Heißt wenn ich 1 eingebe soll die erste Stelle des Strings ( A ) genommen werden und in die Ergebnis variable eingespeichert werden.

Weis jemand ob das in ABAP geht und wenn ja wie man das macht, bzw. wenn nicht wie ich das sonst noch lösen könnte.
 
ich habe doch nur nach einer solchen Möglichkeit gefragt ob es die gibt und wenn ja wie man die anwendet .. ihr sollt es ja nicht für mich machen ;) der eigentlich Algorithmus ist ja das komplizierte dahinter .. ich wollte bloß fragen ob ihr da vielleicht was wisst dass man da etwas machen könnte
 
guck in die ABAP API ;=)

F1 auf schlüßelwörter....

aber bin ja nit so fieß und kriegst nen tipp...

das zauberwort ist "suchen in Zeichenketten ABAP"

den rest sollte dir google erklären .

Lösung ist max. nen 5 Zeiler ;=)
 
Mal frei formliert:
Variable Ergebnis = CharFromKeyCode ((Offset - 1) + Zahl )
, Offset abhängig von Zeichensatz, in ASCII wäre das dann 64 (da 65 schon das 'A' ist) + die Zahl.
Wenn Du unbedingt langsam in nem String rumwühlen musst,
Heißt wenn ich 1 eingebe soll die erste Stelle des Strings ( A ) genommen werden und in die Ergebnis variable eingespeichert werden
In den meisten Programmiersprachen kannst Du via Indizierung dann Suchstring[1-1] darauf zugreifen, -1 wenn das Array bei 0 beginnt,
oder Substring(<deinbuchstabenstring>,Startposition,Länge) wobei Länge immer 1 und Startposition abhängig von der Eingabe (auch hier eventuell wieder -1)
Da es allerdings eine gestellte Aufgabe ist, wird der eher praxisorientierte Einzeiler vermutlich wegfallen X)
 
So da ich das ganze jetzt nicht so gestalten kann wie ich das möchte probiere ich das ganze jetzt hier über ASCII ... so wie es alxtraxxx auch schon vorgestellt hat.

jetzt ist hier das Problem dass wenn ich bei meinem Programm eine variable habe vom Type c und dann wiederum das Zeichen ausgeben lassen möchte, dass da dann irgend ein Schmarn raus kommt.

Code:
   DATA: lv_zei1 TYPE c, lv_zei2 TYPE c , lv_zei3 TYPE c ,  lv_zwErg TYPE i.

lv_zwerg =  p_zahl mod 26 .
lv_zei3 = 64 + lv_zwerg.

write:/ lv_zei3.

.. so in p_zahl steht die Zahl drinnen, von der die Spalte ausgegeben werden soll. Jetzt probiere ich das hier mit dem Beispiel wert 792 ... also rechne ich 792 Modulo 26 = 12 ... dann rechne ich den ASCII wert 64 + die 12 kommt 76 raus ... müsste somit ein L ausgeben ... allerdings gibt es hier einfach n Stern aus ... also "*" ...

kann mir da jemand erklären wieso ... nutze ich das hier einfach falsch ... ist das eine Eigenschaft vom TYPE c die ich nich kenne?
 
Dazu habe ich folgendes gefunden

hi, If you are R3 4.7 and above, try this one



cl_abap_conv_in_ce=>uccp( 'XXXX' ).

XXXX is the ASCII code in hex code.

return value is the char you expected
Also geht die direkte Umwandlung in einen Char wohl nicht. Das wußte ich nicht, da ich ja
nicht Abap programmiere, vielleicht gibts noch eine bessere Idee als diese Lösung weil jetzt
musst Du ja auch noch in HexCode umrechnen X)
 
Zurück
Oben