Start of code
DECLARE
v_args OLE2.LIST_TYPE;
vBAPICtrl SAPBAPIControlLib_CONSTANTS.SAPBAPIControl;
v_conn_result SAPLogonCtrl_CONSTANTS.CRfcConnectionStatus;
v_dummy olevar;
vLogonControl OleObj;
vGoodsMovement oleobj;
vGoodsMovementHeader oleobj;
vGoodsMvtHeaderReturn oleobj;
vGoodsMovementCode oleobj;
vTabGoodsMovementItem oleobj;
vGoodsMovementReturn oleobj;
vGMSerialNumber oleobj;
v_Item_rows oleobj;
BEGIN
vBAPICtrl := ole2.create_obj('SAP.BAPI.1');
vLogonControl := ole2.create_obj('SAP.LOGONCONTROL.1');
SAP_CWdoAuto.Connection(vBAPICtrl,SAP_CSAPLogonControl.NewConnection(vLogonControl));
vGoodsMovement := SAP_CWdoAuto.GetSAPObject(vBAPICtrl,'GoodsMovement');
vGoodsMovementHeader := SAP_CWdoAuto.DimAs(vBAPICtrl,vGoodsMovement,'CreateFromData','GoodsmvtHeader');
vGoodsMovementCode := SAP_CWdoAuto.DimAs(vBAPICtrl,vGoodsMovement,'CreateFromData','GoodsmvtCode');
vGoodsMvtHeaderReturn := SAP_CWdoAuto.DimAs(vBAPICtrl,vGoodsMovement,'CreateFromData','GoodsmvtHeadret');
vTabGoodsMovementItem := SAP_CWdoAuto.DimAs(vBAPICtrl,vGoodsMovement,'CreateFromData','GoodsmvtItem');
vGoodsMovementReturn := SAP_CWdoAuto.DimAs(vBAPICtrl,vGoodsMovement,'CreateFromData','Return');
vGMSerialNumber := SAP_CWdoAuto.DimAs(vBAPICtrl,vGoodsMovement,'CreateFromData','GoodsmvtSerialnumber');
SAP_IStructure.Value(vGoodsMovementHeader,to_variant('20040226),to_variant('PSTNG_DATE'));
SAP_IStructure.Value(vGoodsMovementCode, to_variant('04'),to_variant('GM_CODE'));
v_Item_rows := SAP_CSAPTaFacTable.AppendRow(vTabGoodsMovementItem);
SAP_CSAPTaFacTable.Value(vTabGoodsMovementItem, 1, TO_VARIANT('1865E29H01'),to_variant(1));
v_args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG_OBJ(v_args, vGoodsMovementHeader);
OLE2.ADD_ARG_OBJ(v_args, vGoodsMovementCode);
OLE2.ADD_ARG_OBJ(v_args, vGoodsMvtHeaderReturn);
OLE2.ADD_ARG_OBJ(v_args, vTabGoodsMovementItem);
OLE2.ADD_ARG_OBJ(v_args, vGMSerialNumber);
OLE2.ADD_ARG_OBJ(v_args, vGoodsMovementReturn);
OLE2.ADD_ARG(v_args, ' ');
OLE2.INVOKE(vGoodsMovement, 'CreateFromData',v_args);
pu_release(vBAPICtrl);
pu_release(vLogonControl);
END LOOP;
END;
End of code.
The packages are created from OLE Importer. When I run this code, an error is reported in the trace file. The following is the text from trace file.
2144: >>Invoke ID 1 (GoodsMovement.)
2144: >>Invoke:
Requires Free Membership to View
Thu Feb 26 12:18:46 2004
2144: *** ERROR => Parameter GOODSMVTHEADRET must be passed by reference [wdostub.cpp 1934]
2144: *** ERROR => [-2147352571] Data type mismatch or data conversion failed.
Parameter or attribute GOODSMVTHEADRET. [wdostub.cpp 3817]
Can you tell me what I am doing wrong?
Did you provide me the entire code? What type of trigger in Form does this code belong to? I see an END LOOP in your PL/SQL code... but I do not see the beginning of the loop. Can you provide me with the complete code so I can better respond to your question.
On the surface it seems that the program unit parameters (IN, vs. OUT vs. IN OUT) binding need to be examined. But I could be quite off base on this one. So, please do provide me with the complete text of your PL/SQL trigger code (I say that because I see a DECLARE keyword in your PL/SQL).
This was first published in March 2004

Join the conversationComment
Share
Comments
Results
Contribute to the conversation