помогите пожалуйста создать BDC для транзакции VL02N .
Я пробовал но столкнулся на то что для укомплектование поставки через VL02N на разных мониторов разное количество материалов видны и для того чтоб всегда ставить значение в первое поле экрана нету есть только следующий экран.
И получается что я в программе поставил что поля на экране видны 16 а на другом мониторе 30 то программа не срабатывает и за того что когда он дошел до 16 он опять начинает с первой позиции на экране .
Code:
FORM postavka.
DATA: posnr LIKE lips-posnr,
wa(30),
wi(10),
k(4),
t(4),
s1(4),
ss(4),
tt TYPE i,
vbeln LIKE lips-vbeln.
CLEAR: bdcdata.
REFRESH: bdcdata.
s1 = 2.
CONDENSE s1 NO-GAPS.
PERFORM bdc_dynpro USING 'RVV50R10C' '1000'.
PERFORM bdc_field USING 'BDC_CURSOR' 'ST_LEDAT-HIGH'.
PERFORM bdc_field USING 'BDC_OKCODE' '=S0S_TAB5'.
PERFORM bdc_field USING 'ST_LEDAT-LOW' ''.
PERFORM bdc_field USING 'ST_LEDAT-HIGH' ''.
PERFORM bdc_field USING 'P_LERUL' s1.
PERFORM bdc_dynpro USING 'RVV50R10C' '1000'.
PERFORM bdc_field USING 'BDC_CURSOR' 'ST_EBELN-LOW'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'ST_LEDAT-HIGH' ''.
PERFORM bdc_field USING 'P_LERUL' s1.
PERFORM bdc_field USING 'ST_EBELN-LOW' lv_tab-num_order."trebuie de pus zacazu tim
PERFORM bdc_dynpro USING 'RVV50R10C' '1000'.
PERFORM bdc_field USING 'BDC_CURSOR' 'ST_EBELN-LOW'.
PERFORM bdc_field USING 'BDC_OKCODE' '=ONLI'.
PERFORM bdc_field USING 'ST_LEDAT-HIGH' ''.
PERFORM bdc_field USING 'P_LERUL' s1.
PERFORM bdc_field USING 'ST_EBELN-LOW' lv_tab-num_order."trebuie de pus zacazu tim
PERFORM bdc_dynpro USING 'SAPMSSY0' '0120'.
PERFORM bdc_field USING 'BDC_CURSOR' '06/03'.
PERFORM bdc_field USING 'BDC_OKCODE' '=&ALL'.
PERFORM bdc_dynpro USING 'SAPMSSY0' '0120'.
PERFORM bdc_field USING 'BDC_CURSOR' '06/03'.
PERFORM bdc_field USING 'BDC_OKCODE' '=SAMD'.
PERFORM bdc_dynpro USING 'SAPMSSY0' '0120'.
PERFORM bdc_field USING 'BDC_CURSOR' '06/03'.
PERFORM bdc_field USING 'BDC_OKCODE' '=&F03'.
PERFORM bdc_dynpro USING 'RVV50R10C' '1000'.
PERFORM bdc_field USING 'BDC_CURSOR' 'ST_VSTEL-LOW'.
PERFORM bdc_field USING 'BDC_OKCODE' '/EE'.
CALL TRANSACTION 'VL10D' USING bdcdata MODE pa_mode UPDATE 'S'
MESSAGES INTO messtab.
CLEAR s1.
LOOP AT messtab WHERE msgnr = '311' .
vbeln = messtab-msgv2.
ENDLOOP.
CLEAR ss.
LOOP AT lv_tab1 WHERE docid = lv_tab-id.
SELECT SINGLE vbeln posnr FROM lips INTO (lv_tab1-doc_number, posnr) WHERE vbeln = vbeln AND
ernam = sy-uname AND matnr = lv_tab1-num_sap_mat
AND charg = lv_tab1-sap_part_number AND lfimg = lv_tab1-quant.
lv_tab1-mvz = posnr .
ss = ss + 1.
IF lv_tab1-mvz < 10.
CONCATENATE '0' lv_tab1-mvz INTO lv_tab1-mvz.
ENDIF.
vbeln = lv_tab1-doc_number.
MODIFY lv_tab1 INDEX sy-tabix.
ENDLOOP.
s1 = ss.
ss = ceil( ss / 16 ).
s1 = s1 - ( ( ss - 1 ) * 16 ).
CLEAR: bdcdata.
REFRESH: bdcdata.
PERFORM bdc_dynpro USING 'SAPMV50A' '4004'.
PERFORM bdc_field USING 'BDC_CURSOR' 'LIKP-VBELN'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'LIKP-VBELN' vbeln. " nomer postavchi
PERFORM bdc_dynpro USING 'SAPMV50A' '1000'.
PERFORM bdc_field USING 'BDC_CURSOR' 'LIPS-MATNR(02)'.
PERFORM bdc_field USING 'BDC_OKCODE' '=T\01'.
PERFORM bdc_dynpro USING 'SAPMV50A' '1000'.
PERFORM bdc_field USING 'BDC_CURSOR' 'LIKP-WADAT_IST'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'LIKP-WADAT_IST' lv_tab-date_proved. " data provodchi
PERFORM bdc_dynpro USING 'SAPMV50A' '1000'.
PERFORM bdc_field USING 'BDC_CURSOR' 'LIPS-MATNR(02)'.
PERFORM bdc_field USING 'BDC_OKCODE' '=T\02'.
PERFORM bdc_field USING 'LIKP-WADAT_IST' lv_tab-date_proved. " data provodchi
k = 1.
LOOP AT lv_tab1 WHERE docid = lv_tab-id.
t = k + t.
IF k = t AND k <> ss .
PERFORM bdc_dynpro USING 'SAPMV50A' '1000'.
PERFORM bdc_field USING 'BDC_OKCODE' '=NPAG_T'."=NPAG_T
k = k + 1.
CLEAR tt.
ELSEIF k = ss AND k = t.
PERFORM bdc_dynpro USING 'SAPMV50A' '1000'.
PERFORM bdc_field USING 'BDC_OKCODE' '=WABU_T'.
ENDIF.
ADD 1 TO tt.
IF tt > 16.
tt = tt - s1.
ENDIF.
t = tt.
IF tt < 10.
CONCATENATE '0' t INTO t.
ENDIF.
CONDENSE t NO-GAPS.
CONCATENATE 'LIPS-LGORT(' t ')' INTO wa.
PERFORM bdc_field USING 'BDC_CURSOR' wa.
CONCATENATE 'LIPS-LGORT(' t ')' INTO wa.
PERFORM bdc_field USING wa lv_tab-sap_reciever_store. "
CONCATENATE 'LIPSD-PIKMG(' t ')' INTO wa.
wi = lv_tab1-quant.
CONDENSE wi NO-GAPS.
REPLACE '.' WITH ',' INTO wi.
PERFORM bdc_field USING wa wi. " cantitatea
t = tt.
IF tt = 16.
CLEAR: t.
ENDIF.
ENDLOOP.
CALL TRANSACTION 'VL02N' USING bdcdata MODE pa_mode UPDATE 'S'
MESSAGES INTO messtab.
Age: 40 Joined: 01 Feb 2008 Posts: 387 Location: Воронеж
Posted: Thu Apr 11, 2013 3:58 pm Post subject:
Может немного не в тему, но может лучше использовать ФМ для создания документов? Что то типа SD_SHIPMENT_PROCESS или BAPI_SHIPMENT_CREATE или BAPI_SHIPMENT_CHANGE? _________________ Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Age: 40 Joined: 01 Feb 2008 Posts: 387 Location: Воронеж
Posted: Thu Apr 11, 2013 5:12 pm Post subject:
Сам то я не помню, когда с поставками последний раз работал, но может что то из этих фм-ов подойдет
http://sapboard.ru/forum/viewtopic.php?f=13&t=78531
Кажется WS_DELIVERY_UPDATE_2 или WS_DELIVERY_UPDATE, но давно не работал в этой области...
Можно попробовать по нашему форуму воспользоваться поиском по "WS_DELIVERY_UPDATE"
Может кто из SD-шников даст более точный рецепт _________________ Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
*----------------------------------------------------------------------*
* Start new transaction according to parameters *
*----------------------------------------------------------------------*
FORM bdc_transaction USING tcode CHANGING p_subrc TYPE sy-subrc.
DATA: ls_params TYPE ctu_params.
* batch input session
REFRESH messtab.
ls_params-defsize = 'X'.
ls_params-updmode = 'S'.
ls_params-nobinpt = g_nobinpt. "='X'. "do not set batch input mode
ls_params-nobiend = 'X'.
IF NOT p_test IS INITIAL.
ls_params-dismode = 'A'.
ELSE.
ls_params-dismode = p_dismod.
ENDIF.
CALL TRANSACTION tcode USING bdcdata
OPTIONS FROM ls_params
MESSAGES INTO messtab.
CLEAR p_subrc.
LOOP AT messtab WHERE msgtyp = 'E' OR msgtyp = 'A'.
p_subrc = 4.
ENDLOOP.
REFRESH bdcdata.
ENDFORM. "BDC_TRANSACTION
_________________ Молитва - это запрос разработчику на изменение кода программы.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.