Skip to Content
0
Former Member
Oct 25, 2007 at 10:38 AM

Program to post goods issue

1359 Views

Hi, gurus

i created a program from sales order creation to transfer order creation now i want to post godds issue for tht i am giving my code plz help me wht FM i have to use and wht values i have to fill plzzz its urgent

plz help me

thanks in advance

***********************************************************************

  • SALES DOCUMENT CREATION

***********************************************************************

DATA: p_auart TYPE auart .

DATA: p_vkorg TYPE vkorg .

DATA: p_vtweg TYPE vtweg .

DATA: p_spart TYPE vtweg .

DATA: p_sold TYPE kunnr .

DATA: p_ship TYPE kunnr .

TABLES:

VBAK, LIKP.

*ITEM

data:

begin of it_item occurs 0,

p_matnr TYPE matnr,

p_menge TYPE kwmeng,

p_plant TYPE werks_d,

p_itcat TYPE pstyv,

end of it_item.

  • DATA DECLARATIONS.

DATA: v_vbeln LIKE vbak-vbeln.

DATA: header LIKE bapisdhead1.

DATA: headerx LIKE bapisdhead1x.

DATA: item LIKE bapisditem OCCURS 0 WITH HEADER LINE.

DATA: itemx LIKE bapisditemx OCCURS 0 WITH HEADER LINE.

DATA: partner LIKE bapipartnr OCCURS 0 WITH HEADER LINE.

DATA: return LIKE bapiret2 OCCURS 0 WITH HEADER LINE.

DATA: lt_schedules_inx TYPE STANDARD TABLE OF bapischdlx

WITH HEADER LINE.

DATA: lt_schedules_in TYPE STANDARD TABLE OF bapischdl

WITH HEADER LINE.

DATA:

W_COUNTER TYPE I,

IT_NUM(6) TYPE C value '000010',

IT_LINE(4) TYPE C value '0001'.

CALL SCREEN 100.

  • HEADER DATA

header-doc_type = p_auart.

headerx-doc_type = 'X'.

header-sales_org = p_vkorg.

headerx-sales_org = 'X'.

header-distr_chan = p_vtweg.

headerx-distr_chan = 'X'.

header-division = p_spart.

headerx-division = 'X'.

headerx-updateflag = 'I'.

partner-partn_role = 'AG'.

partner-partn_numb = p_sold.

APPEND partner.

partner-partn_role = 'WE'.

partner-partn_numb = p_ship.

APPEND partner.

loop at it_item.

CLEAR ITEM.

item-material = it_item-p_matnr.

item-plant = it_item-p_plant.

item-target_qty = it_item-p_menge.

item-target_qu = 'ST'.

item-item_categ = it_item-p_itcat.

APPEND item.

W_COUNTER = W_COUNTER + 1.

endloop.

DO W_COUNTER TIMES.

itemx-updateflag = 'I'.

itemx-material = 'X'.

itemx-plant = 'X'.

itemx-target_qty = 'X'.

itemx-target_qu = 'X'.

itemx-item_categ = 'X'.

APPEND itemx.

ENDDO.

  • Fill schedule lines

LOOP AT IT_ITEM.

CLEAR lt_schedules_in.

lt_schedules_in-itm_number = IT_NUM.

lt_schedules_in-sched_line = IT_LINE.

lt_schedules_in-req_qty = IT_ITEM-p_menge.

APPEND lt_schedules_in.

IT_NUM = IT_NUM + 10.

IT_LINE = IT_LINE + 1.

ENDLOOP.

IT_NUM = '000010'.

IT_LINE = '0001'.

  • Fill schedule line flags

LOOP AT IT_ITEM.

CLEAR lt_schedules_inx.

lt_schedules_inx-itm_number = IT_NUM.

lt_schedules_inx-sched_line = IT_LINE.

lt_schedules_inx-updateflag = 'X'.

lt_schedules_inx-req_qty = 'X'.

APPEND lt_schedules_inx.

IT_NUM = IT_NUM + 10.

IT_LINE = IT_LINE + 1.

ENDLOOP.

  • Call the BAPI

CALL FUNCTION 'BAPI_SALESDOCU_CREATEFROMDATA1'

EXPORTING

sales_header_in = header

sales_header_inx = headerx

IMPORTING

salesdocument_ex = v_vbeln

TABLES

return = return

sales_items_in = item

sales_items_inx = itemx

sales_schedules_in = lt_schedules_in

sales_schedules_inx = lt_schedules_inx

sales_partners = partner.

LOOP AT return WHERE type = 'E' OR type = 'A'.

EXIT.

ENDLOOP.

IF sy-subrc = 0.

WRITE / return-message.

WRITE: / 'Error in creating document'.

ELSE.

COMMIT WORK AND WAIT.

WRITE: / 'Document ', v_vbeln, ' created'.

ENDIF.

***********************************************************************

  • DELIVERY ORDER CREATION

***********************************************************************

*

*PARAMETERS: p_vbeln LIKE vbak-vbeln.

DATA: BEGIN OF t_vbap OCCURS 0,

vbeln LIKE vbap-vbeln,

posnr LIKE vbap-posnr,

kwmeng LIKE vbap-kwmeng,

matnr LIKE vbap-matnr,

werks LIKE vbap-werks,

END OF t_vbap.

DATA: t_request TYPE STANDARD TABLE OF bapideliciousrequest

WITH HEADER LINE.

DATA: t_created TYPE STANDARD TABLE OF bapideliciouscreateditems

WITH HEADER LINE.

DATA: t_return TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE.

SELECT vbeln posnr kwmeng matnr werks

INTO TABLE t_vbap

FROM vbap

WHERE vbeln = v_vbeln

.

LOOP AT t_vbap.

t_request-document_numb = t_vbap-vbeln.

t_request-document_item = t_vbap-posnr.

t_request-quantity_sales_uom = t_vbap-kwmeng.

t_request-id = 1.

t_request-document_type = 'A'.

t_request-delivery_date = sy-datum.

t_request-material = t_vbap-matnr.

t_request-plant = t_vbap-werks.

t_request-date = sy-datum.

t_request-goods_issue_date = sy-datum.

t_request-goods_issue_time = sy-uzeit.

APPEND t_request.

ENDLOOP.

CALL FUNCTION 'BAPI_DELIVERYPROCESSING_EXEC'

TABLES

request = t_request

createditems = t_created

return = t_return.

READ TABLE t_return WITH KEY type = 'E'.

IF sy-subrc = 0.

MESSAGE e208(00) WITH 'Delivery creation error'.

ENDIF.

COMMIT WORK.

READ TABLE t_created INDEX 1.

WRITE: / 'Delivery Number : ',

t_created-document_numb.

************************************************************************

  • CREATE TRANSFER ORDER

************************************************************************

DATA: w_tanum TYPE ltak-tanum.

CALL FUNCTION 'L_TO_CREATE_DN'

EXPORTING

i_lgnum = '010'

i_vbeln = t_created-document_numb

IMPORTING

e_tanum = w_tanum

EXCEPTIONS

foreign_lock = 1

dn_completed = 2

partial_delivery_forbidden = 3

xfeld_wrong = 4

ldest_wrong = 5

drukz_wrong = 6

dn_wrong = 7

squit_forbidden = 8

no_to_created = 9

teilk_wrong = 10

update_without_commit = 11

no_authority = 12

no_picking_allowed = 13

dn_hu_not_choosable = 14

input_error = 15

OTHERS = 16

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

COMMIT WORK AND WAIT.

WRITE: / 'Transfer order number',

w_tanum.

*&SPWIZARD: DECLARATION OF TABLECONTROL 'TAB_CON1' ITSELF

CONTROLS: TAB_CON1 TYPE TABLEVIEW USING SCREEN 0100.

*&SPWIZARD: OUTPUT MODULE FOR TC 'TAB_CON1'. DO NOT CHANGE THIS LINE!

*&SPWIZARD: UPDATE LINES FOR EQUIVALENT SCROLLBAR

MODULE TAB_CON1_CHANGE_TC_ATTR OUTPUT.

DESCRIBE TABLE IT_ITEM LINES TAB_CON1-lines.

ENDMODULE.

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


module STATUS_0100 output.

SET PF-STATUS 'MENU'.

  • SET TITLEBAR 'xxx'.

endmodule. " STATUS_0100 OUTPUT

&----


*& Module USER_COMMAND_0100 INPUT

&----


  • text

----


module USER_COMMAND_0100 input.

P_AUART = VBAK-AUART.

P_VKORG = VBAK-VKORG.

P_VTWEG = VBAK-VTWEG.

P_SPART = VBAK-SPART.

P_SOLD = LIKP-KUNAG.

P_SHIP = LIKP-KUNNR.

IF SY-UCOMM EQ 'START'.

LEAVE to screen 0 .

ENDIF.

endmodule. " USER_COMMAND_0100 INPUT

&----


*& Module APPEND_IT_ITEM INPUT

&----


  • text

----


module APPEND_IT_ITEM input.

APPEND IT_ITEM.

CLEAR IT_ITEM.

endmodule. " APPEND_IT_ITEM INPUT