BAPI_USER_GET_DETAIL aufrufen

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

BAPI_USER_GET_DETAIL aufrufen

Beitrag von bohne (Specialist / 437 / 0 / 0 ) »
Hallo!

Wie kann ich den FuBa "BAPI_USER_GET_DETAIL"
so aufrufen, dass ich ein vernünftiges Ergebnis
bekomme. Ich fürchte ich habe bei der
Parameterübergabe ein Fehler gemacht.
Die Tabelle Return ist nicht optional d.h ich
muss eine Tabelle mitgeben.
Muss hierbei alle Felder der Struktur BAPIRET2 berücksichtigen.

Code: Alles auswählen.

REPORT  ZILKPROG  .
data itab like table of BAPIRET2.
data adresse type BAPIADDR3.

CALL FUNCTION 'BAPI_USER_GET_DETAIL'
  EXPORTING
    USERNAME             = 'DDIC'
* IMPORTING
*   LOGONDATA            =
*   DEFAULTS             =
    ADDRESS              = adresse
*   COMPANY              =
*   SNC                  =
  TABLES
*   PARAMETER            =
*   PROFILES             =
*   ACTIVITYGROUPS       =
    RETURN               = itab
*   ADDTEL               =
*   ADDFAX               =
*   ADDTTX               =
*   ADDTLX               =
*   ADDSMTP              =
*   ADDRML               =
*   ADDX400              =
*   ADDRFC               =
*   ADDPRT               =
*   ADDSSF               =
*   ADDURI               =
*   ADDPAG               =
*   ADDCOMREM            = .
Viele Grüße
bohne

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von zzcpak (Expert / 673 / 5 / 67 ) »
so viel ich weiß arbeiten die meisten BAPI's mit dieser Rückgabetabelle. Wenn ich mich nicht irre, ist diese Tabelle nach dem Aufruf des Bapi leer, wenn keine Fehler aufgetreten sind.

Sieh dir doch mal die Struktur von RETURN an. Und auch die Doku von BAPI_USER_GET_DETAIL (glaube dieser ist einer der glücklichen Fubas, die dokumentiert sind) ;-)

Beitrag von bohne (Specialist / 437 / 0 / 0 ) »
Hi,

könntest du mir bitte an einem kleinen Bsp. zeigen wie man
diesen FuBa aufruft. Ich bekomme zu einem vorhandenen User
z.B keine Werte. Wozu gibt es diesen FuBa wenn er nicht funktioniert?

Grüße
bohne
Viele Grüße
bohne

Beitrag von pepedoc (ForumUser / 51 / 0 / 0 ) »
Hi,

wenn ich obiges Codingbeispiel sehe, so fällt mir spontan auf, dass Du IMPORTING auch noch aussternen solltest, sonst gibts auch nix zurück, da sollte aber der Syntaxchecker auch schon gemeckert haben.

Ansonsten kann ich morgen oder Montag auch noch ein kleines Beispiel einstellen, komm gerade an kein System ran.

Viele Grüße,

Peter
Linux is Userfriendly, its only just selective who its friends are...

Beitrag von ChrisB (Specialist / 406 / 8 / 20 ) »
Hallo,

eigentlich sieht Dein Coding ganz gut aus... bis auf den bereits erwähnten Punkt, dass der Stern in der Zeile vor "IMPORTING" entfernt werden sollte. Ich habe das gerade mal kurz getestet und bei mir funktioniert das folgende Coding...

Code: Alles auswählen.

REPORT  zzz_bapi_user_get_detail.

DATA:
  l_f_uname        TYPE xubname   VALUE 'DDIC',
  l_r_logon        TYPE bapilogond,
  l_r_defaults     TYPE bapidefaul,
  l_r_address      TYPE bapiaddr3,
  l_r_company      TYPE bapiuscomp,
  l_r_snc          TYPE bapisncu,
  l_r_refuser      TYPE bapirefus,
  l_r_alias        TYPE bapialias,
  l_r_uclass       TYPE bapiuclass,
  l_r_lastmod      TYPE bapimoddat,
  l_r_islocked     TYPE bapislockd,
  l_t_return       TYPE TABLE OF bapiret2.

CALL FUNCTION 'BAPI_USER_GET_DETAIL'
  EXPORTING
    username             = l_f_uname
  IMPORTING
    logondata            = l_r_logon
    defaults             = l_r_defaults
    address              = l_r_address
    company              = l_r_company
    snc                  = l_r_snc
    ref_user             = l_r_refuser
    alias                = l_r_alias
    uclass               = l_r_uclass
    lastmodified         = l_r_lastmod
    islocked             = l_r_islocked
  TABLES
*   PARAMETER            =
*   PROFILES             =
*   ACTIVITYGROUPS       =
    return               = l_t_return
*   ADDTEL               =
*   ADDFAX               =
*   ADDTTX               =
*   ADDTLX               =
*   ADDSMTP              =
*   ADDRML               =
*   ADDX400              =
*   ADDRFC               =
*   ADDPRT               =
*   ADDSSF               =
*   ADDURI               =
*   ADDPAG               =
*   ADDCOMREM            =
*   PARAMETER1           =
*   GROUPS               =
*   UCLASSSYS            =
*   EXTIDHEAD            =
*   EXTIDPART            =
*   SYSTEMS              =
          .
IF l_t_return IS INITIAL.
  WRITE: / l_r_address-fullname.
ENDIF.
Getestet unter Release 4.7

Beitrag von pepedoc (ForumUser / 51 / 0 / 0 ) »
Hallo,

habs gerade auch noch einmal getestet. Mit dem Importing ausgesternt funktioniert es hier auch, sowohl auf einem 4.6C, als auch einem 4.7 und nem 6.00 und 7.00-System, alle tun was sie sollen...

Viele Grüße,

Peter
Linux is Userfriendly, its only just selective who its friends are...

Beitrag von bohne (Specialist / 437 / 0 / 0 ) »
hi,

also es tut mir leid aber bei mir hat das überhaupt nicht funktioniert.
Ich habe MiniSAp 46D-BASIS, WP2.1, KW5
im Einsatz. Woran kann das liegen?

Außerdem habe ich eine Verständnisfrage:
Warum diese Write-Anweisung innerhalb der If-Abfrage?
Warum darf die interne Tabelle "l_t_return" leer bzw. keinen Wert haben?

Code: Alles auswählen.

IF l_t_return IS INITIAL. 
  WRITE: / l_r_address-fullname. 
ENDIF.
Viele Grüße
bohne

Beitrag von pepedoc (ForumUser / 51 / 0 / 0 ) »
Üblicherweise ist in den Return-Parametern immer nur eine Nachricht falls eine Warnung oder ein Fehler aufgetreten sind. Daher wird hier abgefragt, ob da etwas drin ist. Allerdings würde ich mich da nicht immer darauf verlassen, da durchaus auch Sätze bei einem BAPI geliefert werden können, obwohl Warnungen mitgegeben werden.

Das ganze war wohl so eher zu Testzwecken implementiert. Setz mal Dein komplettes Coding hier rein, dann kann auch auch noch einmal draufschauen.

Viele Grüße,

Peter
Linux is Userfriendly, its only just selective who its friends are...

Beitrag von bohne (Specialist / 437 / 0 / 0 ) »
Hi Pepedoc
bekomme die Meldung wenn ich u.s. Code prüfe

ist unbekannt
l_r_uclass TYPE bapiuclass,
l_r_lastmod TYPE bapimoddat,
l_r_islocked TYPE bapislockd,
lastmodified = l_r_lastmod
islocked = l_r_islocked

uclass = l_r_uclass
ist unbekannt es existiert aber
Feld mit dem ähnlichen Namen l_r_alias

Und wenn ich all diese Stellen aus dem Code herausnehme dann
bekomme ich garnichts angezeigt weil die If Abfrage nicht true ist

Code: Alles auswählen.

DATA: 
  l_f_uname        TYPE xubname   VALUE 'DDIC', 
  l_r_logon        TYPE bapilogond, 
  l_r_defaults     TYPE bapidefaul, 
  l_r_address      TYPE bapiaddr3, 
  l_r_company      TYPE bapiuscomp, 
  l_r_snc          TYPE bapisncu, 
  l_r_refuser      TYPE bapirefus, 
  l_r_alias        TYPE bapialias, 
  l_r_uclass       TYPE bapiuclass, 
  l_r_lastmod      TYPE bapimoddat, 
  l_r_islocked     TYPE bapislockd, 
  l_t_return       TYPE TABLE OF bapiret2. 

CALL FUNCTION 'BAPI_USER_GET_DETAIL' 
  EXPORTING 
    username             = l_f_uname 
  IMPORTING 
    logondata            = l_r_logon 
    defaults             = l_r_defaults 
    address              = l_r_address 
    company              = l_r_company 
    snc                  = l_r_snc 
    ref_user             = l_r_refuser 
    alias                = l_r_alias 
    uclass               = l_r_uclass 
    lastmodified         = l_r_lastmod 
    islocked             = l_r_islocked 
  TABLES 
*   PARAMETER            = 
*   PROFILES             = 
*   ACTIVITYGROUPS       = 
    return               = l_t_return 
*   ADDTEL               = 
*   ADDFAX               = 
*   ADDTTX               = 
*   ADDTLX               = 
*   ADDSMTP              = 
*   ADDRML               = 
*   ADDX400              = 
*   ADDRFC               = 
*   ADDPRT               = 
*   ADDSSF               = 
*   ADDURI               = 
*   ADDPAG               = 
*   ADDCOMREM            = 
*   PARAMETER1           = 
*   GROUPS               = 
*   UCLASSSYS            = 
*   EXTIDHEAD            = 
*   EXTIDPART            = 
*   SYSTEMS              = 
          . 
IF l_t_return IS INITIAL. 
  WRITE: / l_r_address-fullname. 
ENDIF.
Viele Grüße
bohne

Beitrag von pepedoc (ForumUser / 51 / 0 / 0 ) »
Ähm, nutzt Du das Programm auch genau so? Hier ist l_f_uname ja noch initial, d.h. da steht nix drin. Testweise könntest Du hier sy-uname verwenden (also Deinen eigenen User). Entweder Du machst vorher ein MOVE sy-uname to l_f_uname oder Du ersetzt l_f_uname bei der Übergabe durch sy-uname.

Viele Grüße,

Peter
Linux is Userfriendly, its only just selective who its friends are...

'BAPI_USER_GET_DETAIL'

Beitrag von Bernhard_C (ForumUser / 26 / 0 / 0 ) »
Hallo bohne,

Du weißt aber dass Du auch diesen BAPI wie jeden anderen FuBau auch in der se37, direkt vom Einstieg aus (oder auch wenn Du in der Transaktion drin bist) mit der Drucktaste mit dem "Schraubenschlüssel" bzw. F8 testen / ausführen kannst ?
Wenn Du dann beim Import-Parameter USERNAME Deinen usernamen einträgst und ausführst, siehst Du auch, was der BAPI Dir zurückliefert.
Die BAPI-return-Tabelle liefert bei BAPIs nicht das Ergebnis (also nicht Deine gewünschten user-Daten), sondern nur die Nachrichten aus der Verarbeitung. Mit Nachrichtentyp S kommen da auch Nachrichten vor wie "Beleg xyz wurde erfolgreich verbucht" (in Deinem Fall wohl nicht, weil Du ja nur Datenlesen willst).

Schöne Grüße
Bernhard

Seite 1 von 1

Vergleichbare Themen

1
Antw.
2340
Views
per BAPI-Control über Visual Basic ein BAPI aufrufen
von Kaiwalker » 25.07.2005 15:22 • Verfasst in ABAP® Core
0
Antw.
2685
Views
Aus PL/SQL einen BAPI aufrufen
von joern » 29.03.2005 17:57 • Verfasst in Exchange Infrastructure
6
Antw.
3470
Views
Bapi aus VBA aufrufen // Probleme mit einer Tabelle
von Carsten31 » 04.09.2014 20:30 • Verfasst in ABAP® für Anfänger
5
Antw.
3154
Views
Transaktion aufrufen
von phil1982 » 13.09.2007 14:12 • Verfasst in ABAP® für Anfänger
1
Antw.
2495
Views
BSP Eventhandler aufrufen
von Tommy Nightmare » 13.03.2018 08:48 • Verfasst in Web-Dynpro, BSP + BHTML

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.