Monday, December 14, 2009
Dynamische Suchhilfe für ein Feld
(z.B. Partner bei Qualitätsmeldungen), muss die Suchhilfe zur Laufzeit
angebunden werden. Dies ist über den FuBa F4IF_FIELD_VALUE_REQUEST
möglich. Diesem kann ein Referenztabellenfeld übergeben werden, für das er
dann die F4-Hilfe anzeigt.
Thursday, October 29, 2009
Verbuchung bei QM-Maßnahmen
definiert werden (Customizing). Damit für das Anlegen von Bestellungen
auch der Belegfluss fortgeschrieben wird, muss die Folgeaktivität DELIVERY
ablaufen. Diese wird über das Katalog-Customizing (QS41) definiert.
Thursday, October 22, 2009
Texte (sprachunabhängig) ablegen
des FuBa Read_Text können Sie wieder ausgelesen werden.
Thursday, October 1, 2009
Suchhilfe mit Mehfachfeldfüllung
Belegposition und Belegnummer), haben ihre Tücken. Voraussetzung ist, dass
beider Felder in der Suchhilfe als Exportparameter vorkommen und die
Bezeichner in Suchhilfe, Suchfunktion (z.B. View) und Report/Dynpro
identisch sind.
Beide Felder müssen in ein und derselben Struktur/Tabelle vorkommen, die
als Referenztyp für die Variablendeklaration verwendet wird. In diese muss
die selbsterstellte Suchhilfe nochmal explizit angegeben werden (Herkunft
der Suchhilfe: 'explizite Suchhilfeanbindung am Feld').
Bei Erstellung eines Selektionsscreens als Dynpro muss als Variable eines
Tables-Statement verwendet werden. Nur dann funktionieren die
Abhängigkeiten und das paralle Füllen der Felder.
Monday, September 14, 2009
Textelement/-symbole für Report finden
Reports ausliest und in welchen Tabellen sie abgelegt sind:
https://forums.sdn.sap.com/message.jspa?messageID=7216948
Funktionsbaustein READ_TEXT_ELEMENTS gibt alle Textsymbole eines Reports
zurück. Mit dem ABAP-Befehl 'READ TEXTPOOL' hat die gleiche Funktionalität.
Thursday, September 10, 2009
Transaktion für (Pflege-)View
erstellt werden. Das Häkchen 'Einstiegsbild übersprüngen' sollte aktiv
sein. Für die Vorschlagswerte ist auf jeden Fall ein Wert für das
Dynprofeld VIEWNAME anzugeben. Das Feld UPDATE kann mit einem 'X' belegt
werden. Der SM30-Selektionsbildschirm erscheint dann nicht. Will man
diesen haben, muss stattdessen das Feld UPDATE_LTD gefüllt werden.
Thursday, September 3, 2009
CALL SELECTION-SCREEN
werden. Damit können Probleme mit den OK-Codes und Endlosschleifen beim
Screen-Aufruf verhindert werden.
Thursday, August 27, 2009
Encoding
(mehr Infos über die Klassendokumentation).
Der Report RSCP0032 kann für Tests und Informationsgewinnung rund um
Encoding genutzt werden.
Die Funktionsbausteine ECATT_CONV_STRING_TO_XSTRING und
ECATT_CONV_XSTRING_TO_STRING können für Transformationen genutzt werden.
In der Tabelle TCP00 sind die Codepages aufgeführt.
FORM decode_response USING pi_xstring type xstring CHANGING pie_string
type string.
DATA: lo_eref TYPE REF TO cx_transformation_error,
lv_errstr TYPE string,
lo_converter TYPE REF TO cl_abap_conv_obj.
* ändern des Encoding auf ISO-8859-1 (nur das versteht Inforate)
CREATE OBJECT lo_converter
EXPORTING
incode = '1133' " ISO-8859-1
outcode = '4103' " UTF-8
EXCEPTIONS
invalid_codepage = 1
internal_error = 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.
CALL METHOD lo_converter->convert
EXPORTING
inbuff = pi_xstring
outbufflg = 0
IMPORTING
outbuff = pie_string
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.
ENDFORM.
Monday, August 24, 2009
Tuesday, August 18, 2009
Problem Import WSDL von Fremdsystem
importieren. Dies kann u.a. an den policy-tags liegen. In diesem Fall
hilft es, in der WSDL-URL 'ws_policy' durch 'standard' zu ersetzen.
Wednesday, July 22, 2009
Webservice Consumer
unter:
https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/media/uuid/20eb3174-41ab-2a10-a383-907faf60eed3
Wenn das Einlesen einer WSDL-URL nicht funktioniert oder eine
Fehlermeldung beim Aufruf des Services auftritt, kann das damit
zusammenhängen, dass die Proxy-Einstellungen im SAP falsch/ungepflegt
sind. Dazu die SICF aufrufen und die Einstellungen unter
Client/Proxyeinstellungen vornehmen.
Tuesday, July 14, 2009
System Traces
findet man auch die RFC-Developer Traces, die den Netzwerkverkehr
protokollieren.
Tuesday, June 23, 2009
Dynprotextarea für Anzeige
gc_eq0 TYPE i VALUE '0',
gc_line_length TYPE i VALUE '100'.
CREATE OBJECT go_custom_container
EXPORTING
container_name = 'CC_INFO'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
CREATE OBJECT go_editor
EXPORTING
parent = go_custom_container
wordwrap_mode =
cl_gui_textedit=>wordwrap_at_fixed_position
wordwrap_position = gc_line_length
wordwrap_to_linebreak_mode = cl_gui_textedit=>true.
go_editor->set_readonly_mode( gc_ne0 ).
go_editor->set_statusbar_mode( gc_eq0 ).
go_editor->set_toolbar_mode( gc_eq0 ).
Monday, June 22, 2009
Pflegeviewvariante für Tabelle
erreichen, dass nur bestimmte Datensätze bzw. Spalten angezeigt werden,
kann eine Pflegeview-Variante erzeugt werden. Auch dafür die SE54
aufrufen. Als Referenz für die Variante nimmt man den zuvor erzeugten
Pflegeview.
Über die SE93 kann man eine Transaktion anlegen, über die man den
Pflegedialog direkt aufrufen kann ohne über die SM30 gehen zu müssen.
Friday, June 19, 2009
Sonderzeichen und Codepage
cl_gui_frontend_services=>gui_upload, kann es zu Problemen mit der
Codierung kommen und Sonderzeichen werden falsch dargestellt. Weiß man die
Codepage des Dokuments kann diese dem Leseprogramm mitgegeben werden und
die Zeichen werden korrekt umgesetzt.
In der Tabelle TCP00A sind Codepages und die internen SAP-ID's abgelegt.
Tuesday, June 16, 2009
Nachricht an anderen SAP-User schicken
anderen User geschickt werden. Diese erscheint als Pop-up auf seinem
Bildschirm.
Thursday, May 28, 2009
Tabellen änderbar machen
können über einen Trick dennoch geändert werden. Im Kommandofeld muss
dafür '&sap_edit' eingegeben werden.
Tuesday, May 19, 2009
Texttabelle zu Tabelle finden
Funktionsbaustein DDUT_TEXTTABLE_GET verwendet werden.
Thursday, April 23, 2009
Datei auf Applikationsserver umbenennen
(Kontrolle mit AL11). Dafür und andere File-Kommandos ist die Klasse
CL_ISH_AT_EDI_FILETRANSFER nützlich.
Beispielcode:
DATA: lo_edi TYPE REF TO cl_ish_at_edi_filetransfer,
ls_exppath TYPE rnwat_edi_filcom.
ls_exppath-exppathtype = 'S'.
ls_exppath-exppath = '/usr/sap/GLD/DVEBMGS00/work/'.
CREATE OBJECT lo_edi
EXPORTING
is_exppath = ls_exppath.
CALL METHOD lo_edi->rename_file
EXPORTING
i_filename_src = 'altes_file.xml'
i_filename_dest = 'neues_file.doc'
EXCEPTIONS
error_renaming_file = 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.
ELSE.
WRITE: / 'File successfully renamed'.
ENDIF.
Friday, April 17, 2009
Eigenes IDoc bauen
müssen vorher neue Segmente mit WE31 angelegt werden.
Kann das IDoc keinem bestehenden Nachrichtentyp zugeordnet werden, muss
für die Ein- und Ausgangsverarbeitung zusätzlich ein eigener
Nachrichtentyp erstellt werden. Hierfür die Transaktion WE81 verwenden.
Dem Nachrichtentyp wird dann mit Transaktion WE82 das neue IDoc zugeordnet.
Der Name des IDocs sollte 8 Zeichen nicht überschreiten, damit
Funktionsbausteine, die für Ein-/Ausgangsverarbeitung benutzt werden,
damit umgehen können. Einige alte aber noch aktive FuBa's wie
MASTER_IDOC_DISTRIBUTE verwenden das alte Kontrollsatzformat EDIDC, das
nur Namen mit max. 8 Zeichen unterstützen.
Tuesday, April 14, 2009
Tabelle in CSV-Format umwandeln
Semikolon, getrennt), kann der Funktionsbaustein SAP_CONVERT_TO_CSV_FORMAT
verwendet werden.
TYPES ly_text_data(4096) TYPE c.
DATA: lt_datatable TYPE STANDARD TABLE OF ...,
lv_filename TYPE string,
lt_csv TYPE STANDARD TABLE OF ly_text_data,
lv_csv_line TYPE ly_text_data,
lv_errortext TYPE string.
[...]
* Catch system exceptions:
CATCH SYSTEM-EXCEPTIONS
open_dataset_no_authority = 1
dataset_cant_open = 2
dataset_write_error = 3
dataset_cant_close = 4
OTHERS = 99.
* Open dataset:
OPEN DATASET lv_filename FOR OUTPUT IN TEXT MODE
ENCODING DEFAULT "4.7
MESSAGE lv_errortext.
IF sy-subrc <> 0.
IF lv_errortext IS INITIAL.
lv_errortext = 'Error on opening file'. "#EC NOTEXT
ENDIF.
MESSAGE lv_errortext TYPE 'E'.
ENDIF.
* convert result table into csv format
CALL FUNCTION 'SAP_CONVERT_TO_CSV_FORMAT'
TABLES
i_tab_sap_data = lt_datatable
CHANGING
i_tab_converted_data = lt_csv
EXCEPTIONS
conversion_failed = 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.
* Transfer data:
LOOP AT lt_csv INTO lv_csv_line.
TRANSFER lv_csv_line TO lv_filename.
ENDLOOP.
* Close dataset:
CLOSE DATASET lv_filename.
ENDCATCH.
* Check for error:
CASE sy-subrc.
WHEN 1.
MESSAGE 'No authority' TYPE 'E'. "#EC NOTEXT
WHEN 2.
MESSAGE 'Can not open file' TYPE 'E'. "#EC NOTEXT
WHEN 3.
MESSAGE 'File write error' TYPE 'E'. "#EC NOTEXT
WHEN 4.
MESSAGE 'Can not close file' TYPE 'E'. "#EC NOTEXT
WHEN OTHERS.
MESSAGE 'Error on creating file' TYPE 'E'. "#EC NOTEXT
ENDCASE.
Monday, April 6, 2009
Senden DEBITOR (Kunde) per IDoc
ist mit der Transaktion BD12 möglich
Mittels des Porttyps (ABAP-PSS) kann ein eigener Funktionsbaustein
eingebunden werden, der das IDoc verarbeiten kann. Als Vorlage kann der
FuBa own_function verwendet werden.
Friday, March 20, 2009
Verfügbarkeit von Artikel/Material
BESTAND_AKTUELL bzw. der BAPI BAPI_MATERIAL_AVAILABILITY geeignet.
Die derzeit lieferbare Menge (ATP) kann davon aber abweichen, da hier der
Bestand um aktuelle Aufträge/Lieferungen bereinigt ist. Ein FuBa, der die
Übersicht aus der Transaktion MD04 liefert, ist
MD_STOCK_REQUIREMENTS_LIST_API.
Dieser liefert alle Informationen im Detail. Ist nur die reine ATP-Menge
von Interesse kann auf den unterliegenden FuBa AVAILABILITY_CHECK
zurückgegriffen werden. Die Parameter sind allerdings nicht einfach zu
setzen. Am besten setzt man hier einen Breakpoint und ruft dann die
Transaktion MD04 auf.
Ein minimaler Aufruf ist so möglich:
DATA: lt_atpcs TYPE TABLE OF atpcs,
ls_atp TYPE atpcs.
ls_atp-matnr = '000000000000000208'.
ls_atp-werks = '1000'.
ls_atp-prreg = 'BO'.
ls_atp-bdter = '20090320'.
ls_atp-trtyp = 'H'.
ls_atp-idxatp = '1'.
ls_atp-resmd = 'X'.
ls_atp-chkflg = 'X'.
APPEND ls_atp TO lt_atpcs.
CALL FUNCTION 'AVAILABILITY_CHECK'
TABLES
p_atpcsx = lt_atpcs.
Thursday, March 19, 2009
Beschreibung von Typen und Strukturen
Feldern/Typen nicht. Dafür sind die Klassen CL_ABAP_TYPEDESCR bzw.
CL_ABAP_STRUCTDESCR sehr hilfreich. Mit Letzterer kann man u.a. eine
Struktur beschreiben lassen und erhält eine Liste mit allen Feldnamen und
ihren Längen.
data: o_structdescr type ref to cl_abap_structdescr,
t_component type abap_compdescr_tab.
o_structdescr ?= cl_abap_typedescr=>describe_by_data( pe_data ).
t_component = o_structdescr->components.
Es kann auch versucht werden, den FuBa REUSE_ALV_FIELDCATALOG_MERGE zu
verwenden.
Datenkonvertierung internes/externes Format
(Stichwort führende Nullen) bzw. andersherum können die Funktionsbausteine
CONVERSION_EXIT_ALPHA_INPUT bzw. CONVERSION_EXIT_ALPHA_OUTPUT verwendet
werden.
Für Datumswerte sind die FuBas CONVERSION_EXIT_PDATE_OUTPUT bzw.
CONVERSION_EXIT_PDATE_INPUT zu verwenden.
Für viele Datenformate/Domänen sind Konvertierungsroutinen hinterlegt
(siehe SE11). Über Dopppelklick auf diese können die
Konvertierungsroutinen ermittelt werden, sprich welche FuBa's verwendet
werden.
Wednesday, March 11, 2009
Programmierung für SD-Preisfindung
Endpreis wird beeinflusst durch Umsatzsteuer, Rabatte, u.a. Über
Customizing und Programmierung können hierbei kundeneigene Spezialitäten
umgesetzt werden. Mit der Transaktion VOFM können diese Einstellungen
vorgenommen werden (Bedingungen, Formeln, etc.)
Belegen von IDoc-Feldern
Felder korrekt gefüllt sein. Die Struktur eines IDocs kann über die
Transaktion WE60 besorgt werden. Hier muss der Basic Type des IDocs (z.B.
ORDERS05) angegeben werden.
Die Doku kann auch als XML-Schema erstellt werden.
Der Funktionsbaustein IDOC_CREATE_OILORD wandelt einen Kundenauftrag in
die IDoc-Struktur um. Mit Hilfe von Debugging kann die Belegung der Felder
gut nachvollzogen werden.
Folgende Transaktionen sind weiterhin hilfreich:
WE09 - IDoc Suche
BD87 - IDoc Queue
WE19 - Testwerkzeug für IDoc Verarbeitung, es können die Werte eines
bestehenden IDocs für Testzwecke verändert werden
WE64 - Vorgangscodes von Partnervereinbarungen
WE20 - Partnervereinbarungen
WE21 - Ports in der IDoc Verarbeitung