Bapi ,Converter für Extenstion BAPI_TE_MEPOITEM

Getting started ... Alles für einen gelungenen Start.
3 Beiträge Seite 1 von 1
3 Beiträge Seite 1 von 1

Bapi ,Converter für Extenstion BAPI_TE_MEPOITEM

Beitrag von autohandel7 (Specialist / 174 / 61 / 0 ) » 8. Okt 2019 10:48

Hallo Experten, weisst jemand ein Method für convertet von struktur to container.
ich habe eine struktur:
Data:lt_extenszion type bapiparex.
Data:ls_BAPI_TE_MEPOITEM type BAPI_TE_MEPOITEM.
dann fühle ich diese struktur und dann versuche ich move zu ls_extention machen.
Bekomme ich Fehler, das bei Unicode geht es nicht.
Dann habe ich probiert solche converter benutzen:
CALL METHOD cl_abap_container_utilities=>fill_container_c
EXPORTING
im_value = ls_BAPI_TE_MEPOITEM
IMPORTING
ex_container = ls_extension+30(960)
EXCEPTIONS
illegal_parameter_type = 1
OTHERS = 2.
er convertirt, aber leider habe ich viel fleder von Typ FLOAT, DEC oder INT, deshalb bekomme ich da nicht richtige format. Gibte es ander Möglichkeit?
Danke


Re: Bapi ,Converter für Extenstion BAPI_TE_MEPOITEM

Beitrag von jocoder (ForumUser / 74 / 0 / 15 ) » 11. Okt 2019 14:06

Eine Möglichkeit wäre BASE64-Codierung zu nutzen
wie nachfolgendes Code-Snippet zeigt:

Code: Alles auswählen.

class base64_converter definition.

  public section.

     class-methods convert_to_base64
        importing
           bapi_mepoitem type bapi_mepoitem
        returning value(result) TYPE string.

  private section.

     class-methods is_utf16
        returning value(unicode) type sap_bool.

endclass.

class base64_converter implementation.
  method convert_to_base64.
    DATA: struct_descr TYPE REF TO cl_abap_view_offlen,
             hex_bapi_mepoitem TYPE xstring.

    IF is_utf16( ) = abap_true.
      struct_descr = cl_abap_view_offlen=>create_unicode16_view(
        bapi_mepoitem ).
    ELSE.
      struct_descr = cl_abap_view_offlen=>create_legacy_view(
        bapi_mepoitem ).
    ENDIF.

   data(hex_converter) = cl_abap_conv_out_ce=>create( ).
    hex_converter->convert_struc( EXPORTING data = bapi_mepoitem view = struct_descr
      IMPORTING buffer = hex_bapi_mepoitem ).

    result = cl_http_utility=>encode_x_base64( hex_bapi_mepoitem ).

  endmethod.

  method is_utf16.
    DATA: codepage TYPE cpcodepage.

    CALL FUNCTION 'SCP_CODEPAGE_FOR_LANGUAGE'
      EXPORTING
        language = sy-langu
      IMPORTING
        codepage = codepage.

    IF codepage(1) = '1'.
      unicode = abap_false.
    ELSE.
      unicode = abap_true.
    ENDIF.

  endmethod.
endclass.

Codiert wird dann wie folgt:

Code: Alles auswählen.

ls_extension+30(960) = base64_converter=>convert_to_base64( ls_bapi_mepoitem ).
Die Dekodierung von BASE64 in die Struktur bapi_mepoitem erfolgt analog. Hierfür muss nur die Klasse cl_abap_conv_out_ce durch die Klasse cl_abap_conv_in_ce ersetzt werden und die Methode cl_http_utility=>decode_x_base64 anstatt der Methode cl_http_utility=>encode_x_base64 gewählt werden.
Autor von Qualitätsmanagement in der ABAP-Entwicklung,
ABAP, Java, JavaScript, GitHub

Re: Bapi ,Converter für Extenstion BAPI_TE_MEPOITEM

Beitrag von black_adept (Top Expert / 3304 / 58 / 601 ) » 11. Okt 2019 15:44

Hallo autohandel ( hast du eigentlich keinen richtigen Namen? )

normalerweise schreibt SAP für BAPI-Strukturen immer Strukturen nur aus C-Feldern vor. Bei dir sind sicherlich durch den CI-Include in der BAPI_TE_MEPOITEM ein paar Zahlenfelder da reingekommen die dir Probleme bereiten.

Wenn du eine Alternativstruktur zu BAPI_TE_MEPOITEM erstellst, die aus namensgleichen Feldern besteht, bei der aber die nummerischen Felder durch C-Felder ersetzt werden sollte das dein Problem lösen, da SAP üblicherweise tief im Coding in solchen Fällen mit "MOVE-CORRESPONDING" arbeitet. Und da deine Alternativstruktur nun lediglich aus C-Feldern besteht gibt es auch nicht mehr deine Fehlermeldung.

Coding dann etwa:

Code: Alles auswählen.

data: ls_alternativstruktur type alternativstruktur.
MOVE-CORRESPONDING bapi_te_mepoitem to ls_alternativstruktur.
ls_extension-structure = 'ALTERNATIVSTRUKTUR'.
ls_extension+30 = ls_alternativstruktur.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Aktuelle Forenbeiträge

Web Service Restful API
vor 11 Stunden von Tron 2 / 32
Entwurfsmuster in ABAP / OO
vor 2 Tagen von Maximus 16 / 2132
VA01, Kundenauftragserfassung Preisdatum
vor 2 Tagen von SAP_ENTWICKLER 1 / 53
Rabax Fehlermeldung
vor 2 Tagen von zzcpak 2 / 84
Aufgabe Programm/- Tabellenerstellung
vor 2 Tagen von SaskuAc 3 / 84

Unbeantwortete Forenbeiträge

VA01, Kundenauftragserfassung Preisdatum
vor 2 Tagen von SAP_ENTWICKLER 1 / 53
HANA Audit Trail
vor einer Woche von JohnLocklay 1 / 97
Halber Tag Urlaub
vor einer Woche von SO4SAP 1 / 61
Funktionsbausteine BAPI_INCOMINGINVOICE*****
vor einer Woche von Rabea1103 1 / 70
S4/HANA in der Cloud / 14 Tage Trial
vor 3 Wochen von Tron 1 / 101