2008 Aug 21 10:17 AM
Good morning to everybody!
I've a problem with my Batch Input, I have to create the batch input after the data are choosen in the previous ALV but when I tried this i received the following message "BDC_INSERT, dynpro .&. no válido."
This is my code, does anybody know why this is happend?
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
* EXPORTING
* IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
* ET_EXCLUDING =
* E_REPID =
* E_CALLBACK_PROGRAM =
* E_CALLBACK_ROUTINE =
E_GRID = ref1.
* ET_FIELDCAT_LVC =
* ER_TRACE =
* E_FLG_NO_HTML =
* ES_LAYOUT_KKBLO =
* ES_SEL_HIDE =
* ET_EVENT_EXIT =
* ER_FORM_TOL =
* ER_FORM_EOL =
call method ref1->check_changed_data.
loop at itab_tabla INTO wa_tabla where chk = 'X'.
valid = 'X'.
exit.
endloop.
CASE R_UCOMM.
WHEN '&BI'.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = 'Ventana de confirmación'
* DIAGNOSE_OBJECT = ' '
TEXT_QUESTION = '¿Está seguro de querer ejecutar la carga de datos?'
TEXT_BUTTON_1 = 'Yes'
* ICON_BUTTON_1 = 'No '
TEXT_BUTTON_2 = 'No'
* ICON_BUTTON_2 = ' '
DEFAULT_BUTTON = '1'
* DISPLAY_CANCEL_BUTTON = 'X'
* USERDEFINED_F1_HELP = ' '
START_COLUMN = 25
START_ROW = 6
* POPUP_TYPE =
* IV_QUICKINFO_BUTTON_1 = ' '
* IV_QUICKINFO_BUTTON_2 = ' '
IMPORTING
ANSWER = answer.
* TABLES
* PARAMETER =
* EXCEPTIONS
* TEXT_NOT_FOUND = 1
* OTHERS = 2
.
IF answer = '1'.
perform ejecutarBI.
ENDIF.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
**** LOOP AT ITAB_TABLA INTO wa_tabla WHERE CHK = 'X'.
**** wa_tabla-CHK = 'X'.
****
**** MODIFY ITAB_TABLA FROM WA_TABLA TRANSPORTING CHK WHERE PERID = wa_tabla-PERID .
**** ENDLOOP.
****
****
**** PERFORM ejecutarBI.
ENDCASE.
*&---------------------------------------------------------------------*
*& Form Ejecutar BI
*&---------------------------------------------------------------------*
FORM EJECUTARBI.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
* DEST = FILLER8
GROUP = 'PRUEBA'
* HOLDDATE = FILLER8
* KEEP = FILLER1
USER = 'RREOL'
* RECORD = FILLER1
* PROG = SY-CPROG
* DCPFM = '%'
* DATFM = '%'
* IMPORTING
* QID =
* EXCEPTIONS
* CLIENT_INVALID = 1
* DESTINATION_INVALID = 2
* GROUP_INVALID = 3
* GROUP_IS_LOCKED = 4
* HOLDDATE_INVALID = 5
* INTERNAL_ERROR = 6
* QUEUE_ERROR = 7
* RUNNING = 8
* SYSTEM_LOCK_ERROR = 9
* USER_INVALID = 10
* OTHERS = 11
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Ventana 1000
LOOP at itab_tabla INto wa_tabla.
PERFORM BDC_DYNPRO USING 'SAPMP50A' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=INS'.
PERFORM BDC_FIELD USING 'RP50G-PERNR' wa_tabla-PERNR.
PERFORM BDC_FIELD USING 'RP50G-CHOIC' '15'.
* Ventana Infotipo 0015 con simulacion de ENTER
PERFORM BDC_DYNPRO USING 'MP001500' '2000'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'Q0015-BETRG'.
* PERFORM BDC_FIELD USING 'P0015-BEGDA' BEGDA.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=UPD'.
PERFORM BDC_FIELD USING 'P0015-LGART' '9998'. " Insertamos el total de la prorrata en el concepto de nómina 9998
* PERFORM BDC_FIELD USING 'P001-ENDDA' RECORD-ENDDA.
ENDLOOP.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'PA30'
* POST_LOCAL = NOVBLOCAL
* PRINTING = NOPRINT
* SIMUBATCH = ' '
* CTUPARAMS = ' '
TABLES
DYNPROTAB = BDC_TAB
* EXCEPTIONS
* INTERNAL_ERROR = 1
* NOT_OPEN = 2
* QUEUE_ERROR = 3
* TCODE_INVALID = 4
* PRINTING_INVALID = 5
* POSTING_INVALID = 6
* OTHERS = 7
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'BDC_CLOSE_GROUP'
* EXCEPTIONS
* NOT_OPEN = 1
* QUEUE_ERROR = 2
* OTHERS = 3
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. "EjecutarBI
2008 Aug 21 10:35 AM
The problem is with the BDC , and why can't you use the the Function
HR_INFOTYPE_OPERATION for updating, why are you going for BDC, any sepecific reason..
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = 'PRUEBA'
USER = 'RREOL'
EXCEPTIONS
CLIENT_INVALID = 1
DESTINATION_INVALID = 2
GROUP_INVALID = 3
GROUP_IS_LOCKED = 4
HOLDDATE_INVALID = 5
INTERNAL_ERROR = 6
QUEUE_ERROR = 7
RUNNING = 8
SYSTEM_LOCK_ERROR = 9
USER_INVALID = 10
OTHERS = 11
.
IF SY-SUBRC NE 0.
"Check first this Function OPen group success or failure.
"then only insert othter wise you get the problems..
ENDIF.
2008 Aug 21 10:58 AM
Because I've to create the BDC_Data for after insert it into the BI, the function 'HR_INFOTYPE_OPERATION' I don't know how to use and I have to create the Batch Input before the data are inserted into the transacction PA30.... infotype 0015...
2008 Aug 21 11:13 AM
any way , keep the break point and BDC_OPEN_GROUP function call and check what is happening exactly.
if Open Function fails , Insert Function will fail.
Call function 'BDC_OPEN_GROUP'..
if sy-subrc eq 0.
call Function 'BDC_INSERT_GROUP'...
...
endif.what is the message number and id for the message you are getting.
2008 Aug 21 11:17 AM
The number of the message I received is this:
BDC_INSERT, dynpro .&. no válido.
Nº mensaje: 00339
Diagnóstico
Error al crear un juego de datos batch input.
Procedimiento
Informar al responsable.
I can't create my data group, and I don't know why, the code is the same code of a report that make the same without the ALV before... can anybody help me? please!!
Thanks a lot!
2008 Aug 21 11:21 AM
Translate:
Error al crear un juego de datos batch input.
Procedimiento
Informar al responsable.Amit.
2008 Aug 21 11:27 AM
Sorry, I'm spanish and I forgot to transalte that, sorry a lot. Now I have changed the order of the code and now, I can see in SM35 the Batch Input but this doesn't have nothing, this is the new code... now i don't received any message...
FORM EJECUTARBI.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
* DEST = FILLER8
GROUP = 'PRUEBA'
* HOLDDATE = FILLER8
* KEEP = FILLER1
USER = 'RREOL'
* RECORD = FILLER1
* PROG = SY-CPROG
* DCPFM = '%'
* DATFM = '%'
* IMPORTING
* QID =
* EXCEPTIONS
* CLIENT_INVALID = 1
* DESTINATION_INVALID = 2
* GROUP_INVALID = 3
* GROUP_IS_LOCKED = 4
* HOLDDATE_INVALID = 5
* INTERNAL_ERROR = 6
* QUEUE_ERROR = 7
* RUNNING = 8
* SYSTEM_LOCK_ERROR = 9
* USER_INVALID = 10
* OTHERS = 11
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* Ventana 1000
LOOP at itab_tabla INto wa_tabla.
PERFORM BDC_DYNPRO USING 'SAPMP50A' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
PERFORM BDC_FIELD USING 'RP50G-PERNR' wa_tabla-PERNR.
PERFORM BDC_FIELD USING 'RP50G-CHOIC' '15'.
PERFORM BDC_DYNPRO USING 'SAPMP50A' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=INS'.
PERFORM BDC_FIELD USING 'RP50G-PERNR' wa_tabla-PERNR.
PERFORM BDC_FIELD USING 'RP50G-CHOIC' '15'.
* Ventana Infotipo 0015 con simulacion de ENTER
PERFORM BDC_DYNPRO USING 'MP001500' '2000'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'Q0015-BETRG'.
* PERFORM BDC_FIELD USING 'P0015-BEGDA' BEGDA.
PERFORM BDC_FIELD USING 'BDC_OKCODE' 'UPD'.
PERFORM BDC_FIELD USING 'P0015-LGART' wa_tabla-CINCO. " Insertamos el total de la prorrata en el concepto de nómina 9998
* PERFORM BDC_FIELD USING 'P001-ENDDA' wa_tabla-betrg.
ENDLOOP.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'PA30'
* POST_LOCAL = NOVBLOCAL
* PRINTING = NOPRINT
* SIMUBATCH = ' '
* CTUPARAMS = ' '
TABLES
DYNPROTAB = BDC_TAB
* EXCEPTIONS
* INTERNAL_ERROR = 1
* NOT_OPEN = 2
* QUEUE_ERROR = 3
* TCODE_INVALID = 4
* PRINTING_INVALID = 5
* POSTING_INVALID = 6
* OTHERS = 7
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
CALL FUNCTION 'BDC_CLOSE_GROUP'
* EXCEPTIONS
* NOT_OPEN = 1
* QUEUE_ERROR = 2
* OTHERS = 3
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. "EjecutarBI
2008 Aug 21 11:31 AM
Check you have populated BDC_TAB.
Do you have any records in BDC_TAB.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'PA30'
* POST_LOCAL = NOVBLOCAL
* PRINTING = NOPRINT
* SIMUBATCH = ' '
* CTUPARAMS = ' '
TABLES
DYNPROTAB = BDC_TAB
* EXCEPTIONS
* INTERNAL_ERROR = 1
* NOT_OPEN = 2
* QUEUE_ERROR = 3
* TCODE_INVALID = 4
* PRINTING_INVALID = 5
* POSTING_INVALID = 6
* OTHERS = 7
.
IF SY-SUBRC 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
2008 Aug 21 11:42 AM
Yes I have data in the BDC data...now I received the same message,
BDC_INSERT, dynpro .&. no válido.
Nº mensaje: 00339
Diagnóstico
Error al crear un juego de datos batch input.
Error where creating the data for the Batch Input
Procedimiento
Informar al responsable.
Inform to the person in charge.
2008 Aug 21 11:54 AM
Redeca,
Vijay wrote:The problem is with the BDC , and why can't you use the the Function
HR_INFOTYPE_OPERATION for updatingHe is Absolutely right.
BDC for PA30 never prefferd.i think you can achieve all goal for HR master data from HR_INFOTYPE_OPERATION.
either use PA40.
this is how you should use:
CALL FUNCTION 'HR_INFOTYPE_OPERATION'
EXPORTING
INFTY = '0008'"0015 in your case and fill data accordingly
NUMBER = EMPLOYEENUMBER
SUBTYPE = SUBTYPE
VALIDITYEND = VALIDITYEND
VALIDITYBEGIN = VALIDITYBEGIN
RECORD = P0008
OPERATION = CHECK_RECORD
IMPORTING
RETURN = RETURN
KEY = PERSONALDATAKEY
EXCEPTIONS
OTHERS = 0.Amit.
Edited by: Amit Gujargoud on Aug 21, 2008 12:56 PM
Edited by: Amit Gujargoud on Aug 21, 2008 12:56 PM
2008 Aug 21 12:06 PM
What should I put in the parameter operation of the function HR_INFOTYPE_OPERATION ?
2008 Aug 21 12:12 PM
Rebeca,
see these are the possible option we can give in OPRATION:
COP Copy
DEL Delete
DIS Display
EDQ Lock/unlock
INS Create
LIS9 Delimit
MOD Change
INSS Create for Actions is not converted to Changechoose either accordinf to your requirement.
Amit.
2008 Aug 21 12:14 PM
Sorry for all the questions, now I have delete the funciton "BDC_OPEN_GROUP" and now, when I tried to insert the data with the function HR_INFOTYPE_OPERATION when I execute the message I received is "The data group is not open" please...can you give me any example?
Thanks for all your help!
Thanksa lot
Regards
2008 Aug 21 12:26 PM
when you are using the Function HR_INFOTYPE_OPERATION you don't need to call any BDC realted functions insert or close.
So remove those functions and use only HR_INFOTYPE_OPERATION and if you want to use this function module you have to lock the PERNR before calling the FUnction.
call function 'BAPI_EMPLOYEE_ENQUEUE'
exporting
number = p0002-pernr
importing
return = return_struc.
....
call function 'HR_INFOTYPE_OPERATION'
exporting
infty = '0002'
number = p0002-pernr
validityend = p0002-endda
validitybegin = p0002-begda
recordnumber = p0002-seqnr
record = p0002
operation = 'MOD'
dialog_mode = '1'
importing
return = return_struc
key = record_key.
if not return_struc is initial.
endif.
......
call function 'BAPI_EMPLOYEE_DEQUEUE'
exporting
number = p0002-pernr.
2009 May 18 2:40 PM
Hi all, I have another problem with Batch input map creating. I process some data internal table for modification in infotype using FM HR_INFOTYPE_OPERATION and when some error appeared I should this record save in batch input map. This map will be processed manually in SM35 after run this report.
BDC_OPEN_GROUP.
LOOP AT IT_TABLE.
CALL FUNCTION HR_INFOTYPE_OPERATION.(modify)
IF error from FM.
REFRESH it_bim.
PERFORM fill_it_bim.
BDC_INSERT using it_bim.(create map for manually process in SM35)
ENDIF.
ENDLOOP.
BDC_CLOSE_GROUP.
BDC_OPEN_GROUP = sy-subrc EQ 0.
BDC_INSERT = sy-subrc EQ 0.
All is ok but when two records are processed and should be closed those session an error queue error raising and I do not why. 1 record in it_table processed successfully and 2 records not. Please help me anyone. Thnx.