hmm...ewx hat geschrieben:musst vorher den Infotypen lesen und dann den BI entsprechend aufbauen. Der BI ist sozusagen ein Makro, was stupide abläuft.
hä??????????????wreichelt hat geschrieben: Du zeichnest Dir mit (glaube SM35) einfach den Batch-Input auf.
Das ABAP-Gerüst kann dann als Report übernommen werden.
Du ergänzt dann deine Abfrage wenn Dienstart = xx dann yy.
Eigentlich ne normale Vorgehensweise.
Gruß Wolfgang
Code: Alles auswählen.
REPORT z_hcm_dart_abkrs NO STANDARD PAGE HEADING LINE-SIZE 255.
TABLES: pernr.
INFOTYPES: 0001, 0231.
INCLUDE bdcrecx1.
START-OF-SELECTION.
PERFORM open_group.
GET pernr .
PROVIDE pernr begda endda abkrs FROM p0001 dart udart FROM p0231 BETWEEN pn-begda AND pn-endda .
IF ( p0231-dart = '22' AND p0001-abkrs <> '99' ).
WRITE: / pernr-pernr, p0001-begda, p0001-endda, p0001-abkrs,
p0231-dart.
p0001-abkrs = '99'.
PERFORM bdc_dynpro USING 'SAPMP50A' '1000'.
PERFORM bdc_field USING 'BDC_OKCODE' '=MOD'.
PERFORM bdc_field USING 'RP50G-PERNR' pernr-pernr.
PERFORM bdc_field USING 'BDC_CURSOR' 'T582S-ITEXT(02)'.
* PERFORM bdc_field using 'RP50G-SELEC(02)' p0001-SELEC.
* PERFORM bdc_field using 'RP50G-TIMR6' * p0001-TIMR6.
PERFORM bdc_dynpro USING 'MP000100' '2000'.
PERFORM bdc_field USING 'BDC_CURSOR'
'P0001-ABKRS'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'P0001-BEGDA' p0001-begda.
PERFORM bdc_field USING 'P0001-ENDDA' p0001-endda.
PERFORM bdc_field USING 'P0001-BTRTL' p0001-btrtl.
PERFORM bdc_field USING 'P0001-KOSTL' p0001-kostl.
PERFORM bdc_field USING 'P0001-ABKRS' p0001-abkrs.
PERFORM bdc_field USING 'P0001-SACHP' p0001-sachp.
PERFORM bdc_field USING 'P0231-DART' p0231-dart.
PERFORM bdc_field USING 'P0231-UDART' p0231-udart.
PERFORM bdc_field USING 'P0001-ZZVAR' p0001-zzvar.
PERFORM bdc_dynpro USING 'MP000100' '2000'.
PERFORM bdc_field USING 'BDC_CURSOR' 'P0001-BEGDA'.
PERFORM bdc_field USING 'BDC_OKCODE' '=UPD'.
PERFORM bdc_transaction USING 'PA30'.
WRITE: / pernr-pernr, p0001-begda, p0001-endda, p0001-abkrs, p0231-dart.
SKIP.
ULINE.
SKIP.
ENDIF.
ENDPROVIDE.
END-OF-SELECTION.
PERFORM close_group.
leider hat es nicht geklappt, ich bekomme weiterhin die FehlermeldungMrBojangles hat geschrieben: bau mal zwischen den Befehlen
p0001-abkrs = '99'.
und
PERFORM bdc_dynpro USING 'SAPMP50A' '1000'.
einen Refresh bdcdata (ich glaub so heisst die int. Tabelle) ein. Sonst werden immer die vorangegangenen Transaktionen zur aktuellen mitgegeben.
DankeMrBojangles hat geschrieben: Weiterhin viel Freude mit SAP...
ich habe den refresh auch eingebaut, wenn ich die Daten per hand ändere, gibt es keine Fehlermeldung, nur eine Warnung. Wenn ich dann die BI-Mappe hell abspiele passieren die Fehlermeldungen. Es knackt wegen des Datums. Ich habe nun die Daten umgekehrt sortiert, dann funktioniert zu jeder Person der erste Satz, dann beim zweiten Satz gibt es diese Fehlermeldung. Gültigkeitsende muss gleich 31.12.9999 sein.MrBojangles hat geschrieben: ich bin leider kein 'HR-ler' und kenne mich mit der PA30 nicht aus. Den 'Refresh' (vgl. meine Antwort von gestern) musst Du in jedem Fall einbauen. Ich denke, Du findest den Fehler am leichtesten, wenn Du die erzeugte Mappe 'hell' abspielst. Dann siehst Du jeden einzelnen Dialogschritt und kannst eruieren, wo es hakt.
Nochmal: Ein Batch-Input ist im Prinzip nichts anderes als ein Tastaturmakro, d.h. es wird die PA30 quasi wie im Dialog ausgeführt, nur dass Du eben nicht händisch die Eingaben machst, sondern die Mappe.
ja gerne, allesolli-x hat geschrieben: probier mal folgendes:
ja sehr warm ist es ...olli-x hat geschrieben: Wenn ich das richtig interpretiere sind deine Datumswerte sind im internen Format.
Leg mal eine lokale Variable vom Typ C an, 10 Stellen lang und konvertiere mal:
z.B.
DATA: lv_sttag_char(10) TYPE c.
Dann konvertierst du:
WRITE p0001-begda to lv_sttag_char dd/mm/yyyy.
Dann übergibst du die Character Variable an die Form-Routine.
PERFORM ... USING ... lv_sttag_char
Vielleicht lieg ich jetzt auch total daneben- aber wir haben es schließlich warm heute...