Lust, meinen Code zu checken? Fehler bei interner Tabelle

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

Lust, meinen Code zu checken? Fehler bei interner Tabelle

Beitrag von Hilfe77 ( / / 0 / 3 ) »
Hi ihr,

ich weiß, wo (einer ?) der Fehler steckt, habe dort 'nen Teufel hingehauen - in eine interne Tabelle werden die Daten, die aber gefunden werden, nicht eingefügt. Außerdem werden noch immer alle usernamen angegeben und nicht nur die, die eine der Relationen reltyp haben.

[mein Ziel ist es, diejenigen User herauszufiltern und mit dem ALV anzuzeigen, die in Relation zu einer der Firmen stehen. Für diese Personen will ich dann Name, Adresse,... herausfinden + welche Rolle sie haben]

Bin voll verzweifelt, hocke ewig an dem Kram und bin leicht gereizt inzwischen. :-( Kann mir wer helfen? Damit es einfacher ist, habe ich den ganzen Code mitgeschickt.

Wäre echt klasse.
Danke!

__________________________________________

DATA: DY_TF_ORG_EINHEIT(40) type c,
DY_TF_ROLLE(40) type c.

DATA: fcode type SYUCOMM.

DATA: lr_custom_container TYPE REF TO
cl_gui_custom_container,
lr_alv_grid TYPE REF TO cl_gui_alv_grid.

DATA: tf_ausgew_org(40) type c.
DATA: lv_username type BAPIBNAME.
DATA: ev_buspartner type BU_PARTNER.

DATA: lv_zza_szorg_quellsys type ZZA_SZORG-QUELLSYS,
lv_zza_szorg_vkorg type ZZA_SZORG-VKORG,
lv_zza_szorg_bukrs type ZZA_SZORG-BUKRS.

*ADRESSENKRAM
DATA: is_adressdaten type table of BAPIBUS1006_ADDRESS with header line.

DATA: lt_tel type table of BAPIADTEL with header line.

DATA: lt_fax type table of BAPIADFAX with header line.

DATA: begin of gt_ausgabe_name occurs 4,
bname type BNAME,
erdat type XUERDAT,
end of gt_ausgabe_name.

DATA: begin of gt_ausgabe_reltyp occurs 4,
reltyp type BU_RELTYP,
end of gt_ausgabe_reltyp.

data: lv_reltyp type bu_reltyp.

DATA: begin of gt_ausgabe_partner occurs 4,
reltyp like BUT050-reltyp,
partner1 like BUT050-partner1,
partner2 like BUT050-partner2,
end of gt_ausgabe_partner.

DATA: begin of gs_qbv,
org type ZZA_SZORG-ORG,
partner type BU_PARTNER,
quellsys type ZZA_SZORG-QUELLSYS,
bukrs type ZZA_SZORG-BUKRS,
vkorg type ZZA_SZORG-VKORG,
end of gs_qbv.

*große Tabelle für alle Daten in der Ausgabe, wird nach und nach gefüllt

DATA: ls_ausgabe type ZZA_STRUC_AUSGABE.
DATA: gt_ausgabe type table of ZZA_STRUC_AUSGABE.

TYPES: begin of data_etb,
soursystem(2) type c,
/bic/zcompcode(4) type c,
*hier steht natürlich nur 'ne 8 in Klammern, aber mir wurde sonst immer automatisch 'n Smiley eingefügt...
/bic/zcrmsalor(Länge8) type c,
/BIC/ZSOLD_TO(10) type c,
/BIC/ZUBSTLLR(10) type c,
/BIC/ZVERBR(10) type c,
/BIC/ZSHIP_TO(10) type c,
/BIC/ZBILL_TO(10) type c,
/BIC/ZPAYER(10) type c,
/BIC/ZLOHNB(10) type c,
end of data_etb.

DATA: gt_data_etb type table of data_etb,
ls_data_etb type data_etb.

TYPES: begin of data_etf,
soursystem(10) type c,
zcompcode(4) type c,
*hier steht natürlich nur 'ne 8 in Klammern, aber mir wurde sonst immer automatisch 'n Smiley eingefügt...
zcrmsalor(Länge8) type c,
* NAME1(40) type c,
ZSOLD_TO(10) type c,
ZUBSTLLR(10) type c,
ZVERBR(10) type c,
ZSHIP_TO(10) type c,
ZBILL_TO(10) type c,
ZPAYER(10) type c,
ZLOHNB(10) type c,
end of data_etf.

DATA: gt_data_etf type table of data_etf,
ls_data_etf type data_etf.

*****************************************************

perform INIT_GRID.

*****************************************************

call screen 0100.
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'ZZ_100'.
SET TITLEBAR 'ZZ_100'.
ENDMODULE. " STATUS_0100 OUTPUT

MODULE USER_COMMAND_0100 INPUT.
case fcode.
when 'START'.
if DY_TF_ORG_EINHEIT = 'X'.
tf_ausgew_org = '11111'.
elseif DY_TF_ORG_EINHEIT = 'Y'.
tf_ausgew_org = '22222'.
elseif DY_TF_ORG_EINHEIT = 'Z'.
tf_ausgew_org = '33333'.
endif.

******in ZZA_SZORG: Organisationsname, Quellsys, Bukrs, Vkorg,

*Partnernummer
select single *
from ZZA_SZORG
into corresponding fields of gs_qbv
where partner = tf_ausgew_org.

lv_zza_szorg_bukrs = gs_qbv-bukrs.
lv_zza_szorg_quellsys = gs_qbv-quellsys.
lv_zza_szorg_vkorg = gs_qbv-vkorg.

select bname erdat from USR02
into corresponding fields of table
gt_ausgabe_name.

select reltyp
from ZTBZ9_PARTNER
into corresponding fields of table
gt_ausgabe_reltyp
where QUELLSYS = gs_qbv-quellsys
and BUKRS = gs_qbv-bukrs
and VKORG = gs_qbv-vkorg.
append gt_ausgabe_reltyp.

perform GET_DATA_FROM_RFCS.


loop at gt_ausgabe_name.
lv_username = gt_ausgabe_name-bname.

CALL FUNCTION 'COM_BPUS_BUPA_FOR_USER_GET'
EXPORTING
IS_USERNAME = lv_username
IMPORTING
EV_BUSINESSPARTNER = ev_buspartner
EXCEPTIONS
NO_CENTRAL_PERSON = 1
* [BLA]
OTHERS = 8.


:evil: Hier steckt der Fehler irgendwie: ev_buspartner und lv_reltyp erhalten immer neue Werte, aber sie werden nicht in die interne Tabelle übernommen - warum nicht? Wo ist der Fehler???
loop at gt_ausgabe_reltyp into lv_reltyp.
select distinct partner1 partner2 crdat reltyp
from BUT050
into corresponding fields of table
gt_ausgabe_partner
where partner1 = ev_buspartner
and reltyp = lv_reltyp.
append gt_ausgabe_partner.
endloop.

if sy-subrc ne 0.
"tu etwas!!!
endif.

loop at gt_ausgabe_partner.

CALL FUNCTION 'BAPI_BUPA_ADDRESS_GETDETAIL'
EXPORTING
BUSINESSPARTNER = ev_buspartner
IMPORTING
ADDRESSDATA = is_adressdaten
TABLES
BAPIADTEL = lt_tel
BAPIADFAX = lt_fax.

select single name_last name_first
from but000
into (ls_ausgabe-vorname,
ls_ausgabe-nachname)
where partner = ev_buspartner.

ls_ausgabe-username = gt_ausgabe_name-bname.
ls_ausgabe-partner1 = gt_ausgabe_partner-partner1.
ls_ausgabe-reltyp = gt_ausgabe_partner-reltyp.
ls_ausgabe-partner2 = gt_ausgabe_partner-partner2.
ls_ausgabe-crdat = gt_ausgabe_name-erdat.
append ls_ausgabe to gt_ausgabe.

endloop. "Ende von gt_ausgabe_partner

endloop. "Ende von gt_ausgabe_name

CALL METHOD lr_alv_grid->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
i_structure_name = 'ZZA_STRUC_AUSGABE'
CHANGING
IT_OUTTAB = gt_ausgabe
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
others = 4.

lr_alv_grid->refresh_table_display( ).

when 'BACK'.
set screen 0.
leave screen.
when 'EXIT'.

set screen 0.
leave screen.

endcase.

ENDMODULE. " USER_COMMAND_0100 INPUT


FORM GET_DATA_FROM_RFCS .

CALL Function 'Z_ZA_FB_CHECK_USER_ETB' Destination 'ETBCLNT333'
EXPORTING
IV_ZZA_SZORG_BUKRS = lv_zza_szorg_bukrs
IV_ZZA_SZORG_VKORG = lv_zza_szorg_vkorg
IV_ZZA_SZORG_QUELLSYS = lv_zza_szorg_quellsys
TABLES
lt_daten = gt_data_etb
EXCEPTIONS
CALL_FUNCTION_NOT_REMOTE = 1
* [BLA]
OTHERS = 8.


CALL Function 'Z_ZA_FB_CHECK_USER_ETF' Destination 'ETFCLNT333'
EXPORTING
IV_ZZA_SZORG_BUKRS = lv_zza_szorg_bukrs
IV_ZZA_SZORG_VKORG = lv_zza_szorg_vkorg
IV_ZZA_SZORG_QUELLSYS = lv_zza_szorg_quellsys
TABLES
lt_join = gt_data_etf
EXCEPTIONS
CALL_FUNCTION_NOT_REMOTE = 1
* [BLA]
OTHERS = 8.

ENDFORM. " GET_DATA_FROM_RFCS

FORM INIT_GRID.
IF lr_custom_container IS NOT BOUND.
CREATE OBJECT lr_custom_container
EXPORTING container_name = 'CU_CONT_VIEW'.

IF lr_alv_grid IS NOT BOUND.
CREATE OBJECT lr_alv_grid
EXPORTING i_parent = lr_custom_container.

Data: lt_orgs type table of ZZA_szORG.

select * into table lt_orgs from ZZA_szORG.
CALL METHOD lr_alv_grid->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
i_structure_name = 'ZZA_STRUC_AUSGABE'
CHANGING
IT_OUTTAB = gt_ausgabe
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
others = 4.

endif.

endif.

ENDFORM. " INIT_GRID

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


Beitrag von Paint (Specialist / 116 / 0 / 1 ) »
pass mal die reihenfolge bei der internen tablle deinem select an.

DATA: begin of gt_ausgabe_partner occurs 4,
partner1 like BUT050-partner1,
partner2 like BUT050-partner2,
reltyp like BUT050-reltyp,

end of gt_ausgabe_partner.

select distinct partner1 partner2 reltyp from BUT050
APPENDING CORRESPONDING FIELDS OF TABLE
gt_ausgabe_partner
where partner1 = ev_buspartner
and reltyp = lv_reltyp.
endloop.

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Die Reihenfolge ist bei Angabe von CORRESPONDING FIELDS OF egal, wenn die Namen übereinstimmen.
Und wenn die Feldreihenfolge übereinstimmt (die Namen der itab-Felder können dann auch abweichen), kann man CORRESPONDING FIELDS OF weglassen. Das geht dann auch etwas schneller.

Beitrag von Gast ( / / 0 / 3 ) »
Hallo,

wenn ich einen Debugger und die Umgebung des Programmes hätte, wäre es leichter ...

Ich hab' da mal zwei Fragen:

Du machst hier

Code: Alles auswählen.

select reltyp 
from ZTBZ9_PARTNER 
into corresponding fields of table 
gt_ausgabe_reltyp 
where QUELLSYS = gs_qbv-quellsys 
and BUKRS = gs_qbv-bukrs 
and VKORG = gs_qbv-vkorg. 
append gt_ausgabe_reltyp. 
Also erst "Select in Tabelle" und dann nochmal APPEND in die gleiche Tabelle???

Geht das gut???

------------

und später ist da noch was, was ich teste müsste, jetzt muß ich fragen:

Code: Alles auswählen.

loop at gt_ausgabe_name. 
...
loop at gt_ausgabe_reltyp into lv_reltyp. 

select distinct partner1 partner2 crdat reltyp 
from BUT050 
into corresponding fields of table 
gt_ausgabe_partner 
where partner1 = ev_buspartner 
and reltyp = lv_reltyp. 
append gt_ausgabe_partner. 
endloop. 
Also diesmal eine Schleife (Loop) und drin ein Select into Table gt_ausgabe_partner
und danach noch einmal
APPEND gt_ausgabe_partner
(bei jedem Durchlauf der LOOP-Schleife)

Wie sieht danach die Tabelle gt_ausgabe_partner aus?

Bitte verzeih mir, daß ich frage, aber ich kann es leider nicht ausprobieren.

Gruß
babap

Beitrag von babap (Expert / 681 / 1 / 1 ) »
Da war ich doch irgenwie abgemeldet

Seite 1 von 1

Vergleichbare Themen

1
Antw.
2274
Views
lust meine coding zu checken ?!?!
von Gast » 11.07.2005 09:45 • Verfasst in ABAP Objects®
1
Antw.
1494
Views
Smartforms-Formular: interner Fehler: was tun?
von Jura » 08.05.2007 18:35 • Verfasst in ABAP® für Anfänger
6
Antw.
3850
Views
Key Felder von interner Tabelle auf dem ALV
von thesaint » 14.07.2005 16:32 • Verfasst in ABAP Objects®
14
Antw.
10387
Views
Löschen aus interner Tabelle
von Beginner014 » 21.11.2014 09:26 • Verfasst in ABAP® für Anfänger
7
Antw.
4646
Views
Concatenate in interner Tabelle
von wenigerABAP » 16.09.2016 12:47 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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.