DCC - RWB - Monitor - Abgleich/Update Materialstamm - Unicode-Check in der BAPI-Übergabe EXTENSIONIN Check auf Unicode: Wenn Unicode, dann typgerechte Umwandlung der kundeneigenen BAPI-Parameter ----------------------------------------------------------------------- Funktionsgruppe: /GIB/DCC_BARU_GRID FuBa: /GIB/DCC_BR_GRID ----------------------------------------------------------------------- Include: /GIB/LDCC_BARU_GRIDTOP Include: /GIB/LDCC_BARU_GRIDU01 Include: /GIB/LDCC_BARU_GRIDF03 Form OWN_CHECK_BAPI_TE Include: /GIB/LDCC_BARU_GRIDF04 Form OWN_MAT_UPD_DO_ALL ----------------------------------------------------------------------- Programm: /GIB/DCC_BARU_MONITOR ----------------------------------------------------------------------- Include: /GIB/DCC_BARU_MONITOR_STD_TOP2 Include: /GIB/DCC_BARU_MONITOR_CUST_F01 Form CUST_INITIALISATION Include: /GIB/DCC_BARU_MONITOR_OWN_F02 Form OWN_CHECK_BAPI_TE Include: /GIB/DCC_BARU_MONITOR_OWN_F03 Form OWN_MAT_UPD_DO_ALL_200 ------------------------------------------------------------------------- Alle kundeneigenen Felder, die mittels APPEND an die Kopfstruktur (z.B. MARC) angehängt wurden, müssen ebenfalls in einem APPEND an die Struktur z.B. BAPI_TE_MARC appendiert werden. Hierbei ist es wichtig, dass die Felder zeichenartig sein müssen! Es dürfen also keine Felder vom Typ FLOAT, DEC oder INT verwendet werden! Entweder müssen diese Felder außen vor gelassen werden (sie können dann nicht mittels BAPI geändert werden), oder es muss ein eigenes zeichenartiges Datenelement spezielle für den BAPI angelegt werden. -------------------------------------------------------------------------- Die Umwandlung einer Struktur in einen „Container“ braucht man immer, wenn man Kundenfelder in BAPIs verwenden möchte. In vielen BAPIs gibt es einen EXTENSION-Parameter, dem alle Kundenfelder übergeben werden. In diesem speziellen Fall ist es die Übergabetabelle EXTENSIONIN. Die Anweisung zum Füllen der EXTENSIONIN sieht klassischerweise in etwa so aus: DATA ls_bapi_te_marc TYPE bapi_te_marc. DATA ls_extension TYPE bapiparex. DATA lt_extensions TYPE STANDARD TABLE OF bapiparex. ls_bapi_te_marc-zzfeld1 = '1'. ls_bapi_te_marc-zzfeld2 = 'ABCD'. ls_extension-structure = 'BAPI_TE_MARC'. ls_extension+30(960) = ls_bapi_te_marc. "(bapiparex-valuepart1 - 4) APPEND ls_extension TO lt_extensions. Abgesehen davon, dass die Unterteilung der Kundenfelder in VALUEPART1 bis VALUEPART4 absoluter Unsinn ist, ist es unter Unicode nicht mehr einfach möglich, die Strukturen zuzuweisen. Im ABAP-Editor erscheint dann die Meldung: „LS_EXTENSION+30(960)“ und „LS_BAPI_TE_MARC“ sind in einem Unicode-Programm nicht ineinander konvertierbar. --------------------------------------------------------------------------- Mit dieser Klasse – und speziell der Methode FILL_CONTAINER_C – ist es möglich, die typgerechte Umwandlung vorzunehmen. --------------------------------------------------------------------------- CALL METHOD cl_abap_container_utilities=>fill_container_c EXPORTING im_value = ls_bapi_te_marc IMPORTING ex_container = ls_extension+30(960) EXCEPTIONS illegal_parameter_type = 1 OTHERS = 2. ------------------------------------------------------------------
erneute Vorabkorrekturen M38K901157, M38K901159 erstellt erneute Vorabkorrektur M48K901097 erstellt
.
Vorabkorrektur M38K901147 erstellt Vorabkorrektur M48K901088 erstellt