hub2002 написал(а):
через пакетник не очень хочется.
И долго и не очень удобно.
Если вдруг что - то угощайтесь
Code:
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE,
messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE,
rettab TYPE TABLE OF bapiret2,
ctumode LIKE ctu_params-dismode VALUE 'N',
cupdate LIKE ctu_params-updmode VALUE 'L'.
PARAMETERS: pa_vbeln TYPE vbeln_va MATCHCODE OBJECT vmva MEMORY ID aun.
START-OF-SELECTION.
PERFORM: bdc_dynpro USING 'SAPMV45A' '0102',
bdc_field USING 'BDC_CURSOR' 'VBAK-VBELN',
bdc_field USING 'BDC_OKCODE' '/00',
bdc_field USING 'VBAK-VBELN' pa_vbeln,
bdc_dynpro USING 'SAPMV45A' '4001',
bdc_field USING 'BDC_OKCODE' '=MKAL',
bdc_field USING 'BDC_CURSOR' 'RV45A-MABNR(01)',
bdc_dynpro USING 'SAPMV45A' '4001',
bdc_field USING 'BDC_OKCODE' '=PORE',
bdc_field USING 'BDC_CURSOR' 'RV45A-MABNR(01)',
bdc_dynpro USING 'SAPMV45A' '4001',
bdc_field USING 'BDC_OKCODE' '=SICH',
bdc_field USING 'BDC_CURSOR' 'RV45A-MABNR(01)'.
CALL TRANSACTION 'VA02' USING bdcdata
MODE ctumode UPDATE cupdate MESSAGES INTO messtab.
CALL FUNCTION 'CONVERT_BDCMSGCOLL_TO_BAPIRET2'
TABLES
imt_bdcmsgcoll = messtab[]
ext_return = rettab.
CALL FUNCTION 'C14ALD_BAPIRET2_SHOW'
TABLES
i_bapiret2_tab = rettab.
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "BDC_DYNPRO
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDFORM. "BDC_FIELD