‎2007 Sep 03 11:38 AM
hI,
'
Can anyone post me a simple program for creating sales order using BAPI.
Thanks
‎2007 Sep 03 7:02 PM
hi,
check out this program,this may giv you some idea of creating a sales order thru BAPI
&----
*& Report ZSALESORDER243
*&
******************************************************************************
REPORT ZSALESORDER243 MESSAGE-ID Z243_MESS.
TYPE-POOLS : SLIS.
TABLES : ZSIVA_KA_FE_12,
VBAK,
KUAGV,
KUWEV,
VBAP,
VBKD,
VBEP,
VBUK.
&--
DATA: OK_CODE LIKE SY-UCOMM, "user command
SAVE_CODE LIKE OK_CODE.
DATA: IT_EXTAB TYPE SLIS_T_EXTAB,
WA_EXTAB LIKE LINE OF IT_EXTAB.
DATA: USERID LIKE ZSIVA_KA_FE_12-USERID,
WA_USERID LIKE TABLE OF ZSIVA_KA_FE_12 WITH HEADER LINE.
DATA : BEGIN OF WA_HEAD,
VBELN LIKE VBUK-VBELN,
KUNNR LIKE VBAK-KUNNR,
BSTKD LIKE VBKD-BSTKD,
ZTERM LIKE VBKD-ZTERM,
AUTLF LIKE VBAK-AUTLF,
LIFSK LIKE VBAK-LIFSK,
AUGRU LIKE VBAK-AUGRU,
PRSDT LIKE VBKD-PRSDT,
INCO1 LIKE VBKD-INCO1,
INCO2 LIKE VBKD-INCO2,
VSBED LIKE VBAK-VSBED,
EXPAND,
BOX ,
END OF WA_HEAD.
DATA : BEGIN OF WA_ITEM,
VBELN LIKE VBUK-VBELN,
POSNR LIKE VBAP-POSNR,
MATNR LIKE VBAP-MATNR,
MAKTX LIKE MAKT-MAKTX,
WERKS LIKE VBAP-WERKS,
VDATU LIKE VBAK-VDATU,
LPRIO LIKE VBAP-LPRIO,
KWMENG LIKE VBAP-KWMENG,
ABGRU LIKE VBAP-ABGRU,
PRSDT LIKE VBKD-PRSDT,
END OF WA_ITEM.
DATA : IT_HEAD LIKE TABLE OF WA_HEAD , "head table
IT_HEADRES LIKE IT_HEAD , "header screen
IT_ITEM LIKE TABLE OF WA_ITEM WITH HEADER LINE, "item table
IT_ITEMRES LIKE IT_ITEM.
DATA : BEGIN OF WA_HEADSCR. "structure for header screen
INCLUDE STRUCTURE WA_HEAD.
DATA : END OF WA_HEADSCR.
DATA : BEGIN OF WA_ITEMSCR. "structure for item screen
INCLUDE STRUCTURE WA_ITEM.
DATA : END OF WA_ITEMSCR.
DATA : IT_HEADSCR LIKE TABLE OF WA_HEADSCR, "i_table for header screen &itemscrenn
IT_ITEMSCR LIKE TABLE OF WA_ITEMSCR.
DATA: NODE_TABLE TYPE TREEV_NTAB,
WA_NODE LIKE LINE OF NODE_TABLE.
DATA : G_KEY TYPE TREEV_NKS WITH HEADER LINE,
WA_REPID TYPE SY-REPID,
WA_KEYINFO TYPE SLIS_KEYINFO_ALV.
DATA : WA_HEADER TYPE BAPISDH1X,
WA_HEADDATA TYPE BAPISDH1,
RETURN LIKE TABLE OF BAPIRET2 WITH HEADER LINE,
RETMSG LIKE TABLE OF BAPIRET2 WITH HEADER LINE,
RETURN1 LIKE TABLE OF BAPIRET2 WITH HEADER LINE.
DATA: IT_FIELDC TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELDC LIKE LINE OF IT_FIELDC,
IT_FIELDC1 TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELDC1 LIKE LINE OF IT_FIELDC,
U_COMM LIKE SY-UCOMM VALUE '&ETA',
WA_LAYOUT TYPE SLIS_LAYOUT_ALV,
IT_EVENT TYPE SLIS_T_EVENT,
WA_EVENT LIKE LINE OF IT_EVENT.
&--
SELECTION-SCREEN : BEGIN OF SCREEN 9002 ,
BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001,
SKIP 1.
SELECT-OPTIONS : SALESORG FOR VBAK-VKORG OBLIGATORY DEFAULT '1000',
CHANNEL FOR VBAK-VTWEG OBLIGATORY DEFAULT '10',
DIVISION FOR VBAK-SPART OBLIGATORY DEFAULT '00',
SOLD FOR KUAGV-KUNNR,
SHIP FOR KUWEV-KUNNR,
DOCDATE FOR VBAK-AUDAT,
DOCTYPE FOR VBAK-AUART,
PONUM FOR VBKD-BSTKD,
MATERIAL FOR VBAP-MATNR,
SALESNO FOR VBAK-VBELN,
DELBLK FOR VBAK-LIFSK,
INCO FOR VBKD-INCO1,
INCO2 FOR VBKD-INCO2,
REASON FOR VBAP-ABGRU,
PRICDATE FOR VBKD-PRSDT,
ISSUDATE FOR VBEP-WADAT,
DELDATE FOR VBAK-VDATU,
PLANT FOR VBAP-WERKS.
SELECTION-SCREEN : SKIP 1.
PARAMETER : DELETESO LIKE ZSIVA_KA_FE_12-DELETESALESORDER AS
CHECKBOX.
SELECTION-SCREEN : SKIP 1,
END OF BLOCK BLK1,
END OF SCREEN 9002.
CALL SELECTION-SCREEN 9002.
&----
*& Module PF_STATUS OUTPUT
&----
text
----
MODULE PF_STATUS OUTPUT.
SET PF-STATUS 'STATUS1'.
SET TITLEBAR 'TITLE1'.
ENDMODULE. " PF_STATUS OUTPUT
&----
*& Module INIT_PAI INPUT
&----
text
----
MODULE INIT_PAI INPUT.
SAVE_CODE = OK_CODE.
CLEAR OK_CODE.
CASE SAVE_CODE.
WHEN 'EXECUTE'.
IF NOT DELETESO EQ 'X'.
IF IT_HEAD IS INITIAL AND
IT_ITEM IS INITIAL.
SELECT A~AUTLF
A~KUNNR
A~VSBED
A~LIFSK
A~AUGRU
B~VBELN
CBSTKD CZTERM CPRSDT CINCO1 C~INCO2
FROM VBUK AS B
INNER JOIN VBAK AS A ON AVBELN = BVBELN
INNER JOIN VBKD AS C ON CVBELN = BVBELN
INTO CORRESPONDING FIELDS OF TABLE IT_HEAD
WHERE B~GBSTK NE 'C' AND
A~VKORG IN SALESORG AND
A~VTWEG IN CHANNEL AND
A~SPART IN DIVISION AND
B~VBELN IN SALESNO.
SELECT A~POSNR
A~MATNR
A~WERKS
A~LPRIO
A~KWMENG
A~ABGRU
B~MAKTX
C~VDATU
D~PRSDT
E~VBELN
FROM VBUK AS E
INNER JOIN VBAP AS A ON AVBELN = EVBELN
INNER JOIN MAKT AS B ON AMATNR = BMATNR AND B~SPRAS = 'EN'
INNER JOIN VBAK AS C ON CVBELN = EVBELN
INNER JOIN VBKD AS D ON DVBELN = EVBELN
INTO CORRESPONDING FIELDS OF TABLE IT_ITEM
WHERE E~GBSTK NE 'C' AND
C~VKORG IN SALESORG AND
C~VTWEG IN CHANNEL AND
C~SPART IN DIVISION AND
E~VBELN IN SALESNO.
ENDIF.
IF SY-SUBRC = 0.
PERFORM KEY_INFO.
PERFORM FILL_LAYOUT.
PERFORM FIELD_CATALOG.
PERFORM EVENTS.
PERFORM H_DISPLAY.
ENDIF.
ELSEIF SALESNO <> ' '.
IF ZSIVA_KA_FE_12-DELETESALESORDER = ' '.
MESSAGE i006.
CALL SCREEN 9002.
ELSE.
SALESNO = SALESNO-LOW.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
SALESDOCUMENT = SALESNO
ORDER_HEADER_INX = WA_HEADER
TABLES
RETURN = RETURN.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
IMPORTING
RETURN = RETURN1.
IF RETURN-TYPE = 'S'.
MESSAGE I007 WITH SALESNO.
CLEAR DELETESO.
ELSE.
MESSAGE I007.
CLEAR: DELETESO, SALESNO[].
ENDIF.
ENDIF.
ELSE.
MESSAGE S000(Z243_MESS).
ENDIF.
WHEN 'BACK'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. "INIT_PAI INPUT
**********************************REUSE_ALV_HIERSEQ_LIST_DISPLAY***************
FORM H_DISPLAY.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = WA_REPID
I_CALLBACK_PF_STATUS_SET = 'STATUS'
I_CALLBACK_USER_COMMAND = 'UCOMMAND'
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = IT_FIELDC
IT_EVENTS = IT_EVENT
I_TABNAME_HEADER = 'IT_HEAD'
I_TABNAME_ITEM = 'IT_ITEM'
IS_KEYINFO = WA_KEYINFO
TABLES
T_OUTTAB_HEADER = IT_HEAD
T_OUTTAB_ITEM = IT_ITEM.
ENDFORM. "H_DISPLAY
" INIT_PAI INPUT
&----
*& Module STATUS_9003 OUTPUT
&----
text
----
MODULE STATUS_9003 OUTPUT.
SET PF-STATUS 'STATUS3'.
DATA CHECK.
SELECT * FROM ZSIVA_KA_FE_12 INTO TABLE WA_USERID.
IF SY-SUBRC = 0.
READ TABLE WA_USERID WITH KEY USERID = SY-UNAME .
ELSE.
MESSAGE S006(Z243_MESSAGES).
ENDIF.
***************CHECKING CURRENT USER FOR AUTHENTICATION***
IF WA_USERID-SHIP_CONDITION EQ 'X'
AND ZSIVA_KA_FE_12-SHIP_CONDITION NE 'X'.
PERFORM DISABLE USING 'G1'.
ENDIF.
IF WA_USERID-ORDERREASON = 'X' AND ZSIVA_KA_FE_12-ORDERREASON NE 'X' .
PERFORM DISABLE USING 'G2'.
ENDIF.
IF WA_USERID-DEL_BLOCK EQ 'X' AND ZSIVA_KA_FE_12-DEL_BLOCK NE'X'.
PERFORM DISABLE USING 'G3'.
ENDIF.
IF WA_USERID-INCO1 = 'X' AND ZSIVA_KA_FE_12-INCO1 NE 'X'.
PERFORM DISABLE USING 'G4'.
ENDIF.
IF WA_USERID-INCO2 = 'X' AND ZSIVA_KA_FE_12-INCO2 NE 'X'.
PERFORM DISABLE USING 'G5'.
ENDIF.
IF WA_USERID-COMP_DEL_IND = 'X' AND ZSIVA_KA_FE_12-COMP_DEL_IND NE 'X' .
PERFORM DISABLE USING 'G6'.
ENDIF.
IF WA_USERID-SHIPTO = 'X' AND ZSIVA_KA_FE_12-SHIPTO NE 'X'.
PERFORM DISABLE USING 'G7'.
ENDIF.
IF WA_USERID-PRICE_DATE = 'X' AND ZSIVA_KA_FE_12-PRICE_DATE NE 'X'.
PERFORM DISABLE USING 'G8'.
ENDIF.
IF WA_USERID-PAYTERM = 'X' AND ZSIVA_KA_FE_12-PAYTERM NE 'X'.
PERFORM DISABLE USING 'G9'.
ENDIF.
IF WA_USERID-PRICE_DATE_ITEM = 'X' .
PERFORM DISABLE USING 'G10'.
ENDIF.
IF WA_USERID-CUSTPO = 'X' AND ZSIVA_KA_FE_12-CUSTPO NE 'X'.
PERFORM DISABLE USING 'G11'.
ENDIF.
IF WA_USERID-MATERIAL = 'X' AND ZSIVA_KA_FE_12-MATERIAL NE 'X' .
PERFORM DISABLE USING 'G12'.
ENDIF.
IF WA_USERID-QUANTITY = 'X' AND ZSIVA_KA_FE_12-QUANTITY NE 'X'.
PERFORM DISABLE USING 'G13'.
ENDIF.
IF WA_USERID-DEL_PLANT = 'X' AND ZSIVA_KA_FE_12-DEL_PLANT NE 'X'.
PERFORM DISABLE USING 'G14'.
ENDIF.
IF WA_USERID-REJ_REASON = 'X' AND ZSIVA_KA_FE_12-REJ_REASON NE 'X'.
PERFORM DISABLE USING 'G15'.
ENDIF.
IF WA_USERID-DEL_PRIORITY = 'X' AND ZSIVA_KA_FE_12-DEL_PRIORITY NE 'X'.
PERFORM DISABLE USING 'G16'.
ENDIF.
MESSAGE S008(Z243_MESS).
ENDMODULE. " STATUS_9003 OUTPUT
&----
*& Module USER_COMMAND_9003 INPUT
&----
text
----
MODULE USER_COMMAND_9003 INPUT.
CASE OK_CODE.
WHEN 'MODIFY'.
LOOP AT IT_HEAD INTO WA_HEAD WHERE BOX = 'X'.
MODIFY IT_HEAD INDEX SY-TABIX FROM WA_HEADSCR TRANSPORTING INCO1 PRSDT ZTERM .
LOOP AT IT_ITEM WHERE VBELN = WA_HEAD-VBELN.
MODIFY IT_ITEM INDEX SY-TABIX FROM WA_ITEMSCR TRANSPORTING MATNR KWMENG.
ENDLOOP.
ENDLOOP.
PERFORM H_DISPLAY.
WHEN 'T1'.
CHECK = 'X'.
IF ZSIVA_KA_FE_12-SHIP_CONDITION = 'X' .
PERFORM TICKON USING 'WA_HEADSCR-VSBED'.
ELSEIF ZSIVA_KA_FE_12-SHIP_CONDITION <> 'X'.
PERFORM TICKOFF USING 'WA_HEADSCR-VSBED'.
ENDIF.
WHEN 'T2'.
IF ZSIVA_KA_FE_12-ORDERREASON = 'X'.
PERFORM TICKON USING 'WA_HEADSCR-AUGRU'.
ELSEIF ZSIVA_KA_FE_12-ORDERREASON <> 'X'.
PERFORM TICKOFF USING 'WA_HEADSCR-AUGRU'.
ENDIF.
WHEN 'T3'.
IF ZSIVA_KA_FE_12-DEL_BLOCK = 'X'.
PERFORM TICKON USING 'WA_HEADSCR-LIFSK'.
ELSEIF ZSIVA_KA_FE_12-DEL_BLOCK <> 'X'.
PERFORM TICKOFF USING 'WA_HEADSCR-LIFSK'.
ENDIF.
WHEN 'T4'.
IF ZSIVA_KA_FE_12-INCO1 = 'X'.
PERFORM TICKON USING 'WA_HEADSCR-INCO1'.
ELSEIF ZSIVA_KA_FE_12-INCO1 <> 'X'.
PERFORM TICKOFF USING 'WA_HEADSCR-INCO1'.
ENDIF.
WHEN 'T5'.
IF ZSIVA_KA_FE_12-INCO2 = 'X'.
PERFORM TICKON USING 'WA_HEADSCR-INCO2'.
ELSEIF ZSIVA_KA_FE_12-INCO2 <> 'X'.
PERFORM TICKOFF USING 'WA_HEADSCR-INCO2'.
ENDIF.
WHEN 'T6'.
IF ZSIVA_KA_FE_12-COMP_DEL_IND = 'X'.
PERFORM TICKON USING 'WA_HEADSCR-AUTLF'.
ELSEIF ZSIVA_KA_FE_12-COMP_DEL_IND <> 'X'.
PERFORM TICKOFF USING 'WA_HEADSCR-AUTLF'.
ENDIF.
WHEN 'T7'.
IF ZSIVA_KA_FE_12-SHIPTO = 'X'.
PERFORM TICKON USING 'WA_HEADSCR-KUNNR'.
ELSEIF ZSIVA_KA_FE_12-SHIPTO <> 'X'.
PERFORM TICKOFF USING 'WA_HEADSCR-KUNNR'.
ENDIF.
WHEN 'T8'.
IF ZSIVA_KA_FE_12-PRICE_DATE = 'X'.
PERFORM TICKON USING 'WA_HEADSCR-PRSDT'.
ELSEIF ZSIVA_KA_FE_12-PRICE_DATE <> 'X'.
PERFORM TICKOFF USING 'WA_HEADSCR-PRSDT'.
ENDIF.
WHEN 'T9'.
IF ZSIVA_KA_FE_12-PAYTERM = 'X'.
PERFORM TICKON USING 'WA_HEADSCR-ZTERM'.
ELSEIF ZSIVA_KA_FE_12-SHIP_CONDITION <> 'X'.
PERFORM TICKOFF USING 'WA_HEADSCR-ZTERM'.
ENDIF.
WHEN 'T11'.
IF ZSIVA_KA_FE_12-CUSTPO = 'X'.
PERFORM TICKON USING 'WA_HEADSCR-BSTKD'.
ELSEIF ZSIVA_KA_FE_12-SHIP_CONDITION <> 'X'.
PERFORM TICKOFF USING 'WA_HEADSCR-BSTKD'.
ENDIF.
WHEN 'T12'.
IF ZSIVA_KA_FE_12-MATERIAL = 'X'.
PERFORM TICKON USING 'WA_ITEMSCR-MATNR'.
ELSEIF ZSIVA_KA_FE_12-SHIP_CONDITION <> 'X'.
PERFORM TICKOFF USING 'WA_ITEMSCR-MATNR'.
ENDIF.
WHEN 'T13'.
IF ZSIVA_KA_FE_12-QUANTITY = 'X'.
PERFORM TICKON USING 'WA_ITEMSCR-KWMENG'.
ELSEIF ZSIVA_KA_FE_12-SHIP_CONDITION <> 'X'.
PERFORM TICKOFF USING 'WA_ITEMSCR-KWMENG'.
ENDIF.
WHEN 'T14'.
IF ZSIVA_KA_FE_12-DEL_PLANT = 'X'.
PERFORM TICKON USING 'WA_ITEMSCR-WERKS'.
ELSEIF ZSIVA_KA_FE_12-SHIP_CONDITION <> 'X'.
PERFORM TICKOFF USING 'WA_ITEMSCR-WERKS'.
ENDIF.
WHEN 'T15'.
IF ZSIVA_KA_FE_12-REJ_REASON = 'X'.
PERFORM TICKON USING 'WA_ITEMSCR-ABGRU'.
ELSEIF ZSIVA_KA_FE_12-SHIP_CONDITION <> 'X'.
PERFORM TICKOFF USING 'WA_ITEMSCR-ABGRU'.
ENDIF.
WHEN 'T16'.
IF ZSIVA_KA_FE_12-DEL_PRIORITY = 'X'.
PERFORM TICKON USING 'WA_ITEMSCR-LPRIO'.
ELSEIF ZSIVA_KA_FE_12-SHIP_CONDITION <> 'X'.
PERFORM TICKOFF USING 'WA_ITEMSCR-LPRIO'.
ENDIF.
WHEN 'BACK'.
CALL SCREEN 9002.
ENDCASE.
ENDMODULE. " USER_COMMAND_9003 INPUT
&----
*& Form DISABLE
&----
text
----
DISABLING THE FIELDS ACCORDING TO THE AUTHORITY
----
FORM DISABLE USING GRP.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = GRP.
SCREEN-INPUT = '1'.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDFORM. "DISABLE
&----
*& Form KEY_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM KEY_INFO .
WA_KEYINFO-HEADER01 = 'VBELN'.
WA_KEYINFO-ITEM01 = 'VBELN'.
WA_REPID = SY-REPID.
ENDFORM. " KEY_INFO
&----
*& Form FIELD_CATALOG
&----
text
----
--> p1 text
<-- p2 text
----
FORM FIELD_CATALOG .
CLEAR WA_FIELDC.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = WA_REPID
I_INTERNAL_TABNAME = 'IT_HEAD' "I_INTERNAL_TABNAME
I_STRUCTURE_NAME = 'Z243_HEADER' "I_STRUCTURE_NAME
I_CLIENT_NEVER_DISPLAY = 'X'
CHANGING
CT_FIELDCAT = IT_FIELDC.
DELETE IT_FIELDC WHERE FIELDNAME <> 'AUTLF' AND
FIELDNAME <> 'KUNNR' AND
FIELDNAME <> 'VSBED' AND
FIELDNAME <> 'LIFSK' AND
FIELDNAME <> 'AUGRU' AND
FIELDNAME <> 'VBELN' AND
FIELDNAME <> 'BSTKD' AND
FIELDNAME <> 'ZTERM' AND
FIELDNAME <> 'PRSDT' AND
FIELDNAME <> 'INCO1' AND
FIELDNAME <> 'INCO2' .
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = WA_REPID
I_INTERNAL_TABNAME = 'IT_ITEM' "I_INTERNAL_TABNAME
I_STRUCTURE_NAME = 'Z243_ITEM' "I_STRUCTURE_NAME
CHANGING
CT_FIELDCAT = IT_FIELDC1.
DELETE IT_FIELDC1 WHERE FIELDNAME <> 'POSNR' AND
FIELDNAME <> 'MATNR' AND
FIELDNAME <> ' WERKS' AND
FIELDNAME <> 'LPRIO' AND
FIELDNAME <> 'KWMENG' AND
FIELDNAME <> 'ABGRU' AND
FIELDNAME <> 'MAKTX' AND
FIELDNAME <> 'VDATU' AND
FIELDNAME <> 'PRSDT' AND
FIELDNAME <> 'VBELN' .
LOOP AT IT_FIELDC1 INTO WA_FIELDC.
APPEND WA_FIELDC TO IT_FIELDC.
ENDLOOP.
ENDFORM. " FIELD_CATALOG
&----
*& Form FILL_LAYOUT
&----
text
----
--> p1 text
<-- p2 text
----
FORM FILL_LAYOUT .
WA_LAYOUT-ZEBRA = 'X'.
WA_LAYOUT-EXPAND_FIELDNAME = 'EXPAND'. "FOR EXPANDING
WA_LAYOUT-EXPAND_ALL = 'X'.
WA_LAYOUT-BOX_FIELDNAME = 'BOX'.
WA_LAYOUT-BOX_TABNAME = 'IT_HEAD'.
WA_LAYOUT-KEY_HOTSPOT = 'X'.
WA_LAYOUT-F2CODE = U_COMM.
WA_LAYOUT-DETAIL_POPUP = 'X'.
WA_LAYOUT-LIGHTS_CONDENSE = 'X'.
ENDFORM. " FILL_LAYOUT
&----
*& Form STATUS
&----
text
----
--> p1 text
<-- p2 text
----
FORM STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'SBAR' EXCLUDING RT_EXTAB.
SET TITLEBAR 'TITLE2'.
ENDFORM. " STATUS
&----
*& Form ucomm
&----
text
----
--> p1 text
<-- p2 text
----
FORM UCOMMAND USING R_COMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD .
CASE R_COMM.
WHEN 'UP'.
LOOP AT IT_HEAD INTO WA_HEAD WHERE BOX = 'X'.
APPEND WA_HEAD TO IT_HEADSCR.
ENDLOOP.
CALL SCREEN 9003.
WHEN 'UPS'.
DATA RETANS.
DATA LEN(2) TYPE N.
DATA QUESTION(75) TYPE C.
DESCRIBE TABLE IT_HEADSCR LINES LEN.
CONCATENATE LEN TEXT-002 INTO QUESTION.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = 'Sales Order selected for Changes'
TEXT_QUESTION = QUESTION
TEXT_BUTTON_1 = 'Yes'
ICON_BUTTON_1 = 'ICON_OKAY'
TEXT_BUTTON_2 = 'No'
ICON_BUTTON_2 = 'ICON_CANCEL'
DISPLAY_CANCEL_BUTTON = ' '
IV_QUICKINFO_BUTTON_1 = 'CONFIRM CHANGE'
IV_QUICKINFO_BUTTON_2 = 'CANCEL CHANGE'
IMPORTING
ANSWER = RETANS
EXCEPTIONS
TEXT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
LEAVE TO LIST-PROCESSING.
SET PF-STATUS SPACE.
WRITE / SY-SUBRC.
ENDIF.
IF RETANS = 1.
PERFORM BAPI.
ENDIF..
ENDCASE.
ENDFORM. " ucomm
&----
*& Form BAPI
&----
text
----
--> p1 text
<-- p2 text
----
FORM BAPI .
CLEAR: RETURN[], RETURN1[].
WA_HEADER-UPDATEFLAG = 'U'.
WA_HEADER-PURCH_NO_C = 'X'.
WA_HEADER-PMNTTRMS = 'X'.
WA_HEADER-INCOTERMS1 = 'X'.
WA_HEADER-SHIP_COND = 'X'.
LOOP AT IT_HEAD INTO WA_HEAD WHERE BOX ='X'.
READ TABLE IT_HEAD INTO WA_HEAD WITH KEY VBELN = WA_HEAD-VBELN.
WA_HEADDATA-PURCH_NO_C = WA_HEAD-BSTKD.
WA_HEADDATA-PMNTTRMS = WA_HEAD-ZTERM.
WA_HEADDATA-INCOTERMS1 = WA_HEAD-INCO1.
WA_HEADDATA-SHIP_COND = WA_HEAD-VSBED.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
SALESDOCUMENT = WA_HEAD-VBELN
ORDER_HEADER_IN = WA_HEADDATA
ORDER_HEADER_INX = WA_HEADER
TABLES
RETURN = RETURN.
LOOP AT RETURN.
MOVE-CORRESPONDING RETURN TO RETMSG.
APPEND RETMSG.
ENDLOOP.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
IMPORTING
RETURN = RETURN1.
ENDLOOP.
PERFORM POPUP.
ENDFORM. " BAPI
&----
*& Form POPUP
&----
text
----
--> p1 text
<-- p2 text
----
FORM POPUP .
DATA : IT_FCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
DATA : BEGIN OF WA_DATATAB,
TYPE(4) TYPE C,
MSG LIKE RETURN-MESSAGE,
END OF WA_DATATAB,
IT_DATATAB LIKE TABLE OF WA_DATATAB.
IF IT_FCAT IS INITIAL.
IT_FCAT-FIELDNAME = 'TYPE'.
IT_FCAT-TABNAME = 'IT_DATATAB'.
IT_FCAT-SELTEXT_L = 'TYPE'.
IT_FCAT-OUTPUTLEN = 10.
APPEND IT_FCAT.
CLEAR IT_FCAT.
IT_FCAT-FIELDNAME = 'MSG'.
IT_FCAT-TABNAME = 'IT_DATATAB'.
IT_FCAT-SELTEXT_L = 'MESSAGE'.
IT_FCAT-OUTPUTLEN = 70.
APPEND IT_FCAT.
ENDIF.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_GRID_TITLE = 'BAPI Return Messages'
IT_FIELDCAT = IT_FCAT[]
I_SCREEN_START_COLUMN = 10
I_SCREEN_START_LINE = 5
I_SCREEN_END_COLUMN = 100
I_SCREEN_END_LINE = 20
TABLES
T_OUTTAB = RETMSG.
*
LEAVE TO LIST-PROCESSING.
SET PF-STATUS SPACE.
*
LOOP AT RETMSG.
WRITE RETMSG-MESSAGE.
ENDLOOP.
ENDFORM. " POPUP
" INIT OUTPUT
&----
*& Form TICKON
&----
text
----
-->P_1345 text
----
FORM TICKON USING SON .
LOOP AT SCREEN.
IF SCREEN-NAME = SON.
SCREEN-INPUT = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDFORM. " TICKON
&----
*& Form TICKOFF
&----
text
----
-->P_1353 text
----
FORM TICKOFF USING SOFF.
LOOP AT SCREEN.
IF SCREEN-NAME = SOFF.
SCREEN-INPUT = '1'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDFORM. " TICKOFF
<b>Reward points if you find this Helpful</b>
Regards
Siva
‎2007 Sep 03 2:26 PM
Hi Ram,
BAPI stands for Business API(Application Program Interface).
A BAPI is remotely enabled function module ie it can be invoked from remote programs like standalone JAVA programs, web interface etc..
You can make your function module remotely enabled in attributes of Function module but
A BAPI are standard SAP function modules provided by SAP for remote access. Also they are part of Businees Objest Repository(BOR).
BAPI are RFC enabled function modules. the difference between RFc and BAPI are business objects. You create business objects and those are then registered in your BOR (Business Object Repository) which can be accessed outside the SAP system by using some other applications (Non-SAP) such as VB or JAVA. in this case u only specify the business object and its method from external system in BAPI there is no direct system call. while RFC are direct system call Some BAPIs provide basic functions and can be used for most SAP business object types. These BAPIs should be implemented the same for all business object types. Standardized BAPIs are easier to use and prevent users having to deal with a number of different BAPIs. Whenever possible, a standardized BAPI must be used in preference to an individual BAPI.
The following standardized BAPIs are provided:
Reading instances of SAP business objects
GetList ( ) With the BAPI GetList you can select a range of object key values, for example, company codes and material numbers.
The BAPI GetList() is a class method.
GetDetail() With the BAPI GetDetail() the details of an instance of a business object type are retrieved and returned to the calling program. The instance is identified via its key. The BAPI GetDetail() is an instance method. BAPIs that can create, change or delete instances of a business object type
The following BAPIs of the same object type have to be programmed so that they can be called several times within one transaction. For example, if, after sales order 1 has been created, a second sales order 2 is created in the same transaction, the second BAPI call must not affect the consistency of the sales order 2. After completing the transaction with a COMMIT WORK, both the orders are saved consistently in the database.
Create( ) and CreateFromData! ( )
The BAPIs Create() and CreateFromData() create an instance of an SAP business object type, for example, a purchase order. These BAPIs are class methods.
Change( )
The BAPI Change() changes an existing instance of an SAP business object type, for example, a purchase order. The BAPI Change () is an instance method.
Delete( ) and Undelete( ) The BAPI Delete() deletes an instance of an SAP business object type from the database or sets a deletion flag.
The BAPI Undelete() removes a deletion flag. These BAPIs are instance methods.
Cancel ( ) Unlike the BAPI Delete(), the BAPI Cancel() cancels an instance of a business object type. The instance to be cancelled remains in the database and an additional instance is created and this is the one that is actually canceled. The Cancel() BAPI is an instance method.
Add<subobject> ( ) and Remove<subobject> ( ) The BAPI Add<subobject> adds a subobject to an existing object inst! ance and the BAPI and Remove<subobject> removes a subobject from an object instance. These BAPIs are instance methods.
ex BAPI:
API_SALESORDER_CREATEFROMDAT1
BAPI_SALESORDER_CREATEFROMDAT2
You can get good help form the following links,
BAPI-step by step
http://www.sapgenie.com/abap/bapi/example.htm
list of all bapis
http://www.planetsap.com/LIST_ALL_BAPIs.htm
for BAPI's
http://www.sappoint.com/abap/bapiintro.pdf
http://www.sappoint.com/abap/bapiprg.pdf
http://www.sappoint.com/abap/bapiactx.pdf
http://www.sappoint.com/abap/bapilst.pdf
http://www.sappoint.com/abap/bapiexer.pdf
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCMIDAPII/CABFAAPIINTRO.pdf
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CABFABAPIREF/CABFABAPIPG.pdf
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCFESDE8/BCFESDE8.pdf
http://www.planetsap.com/Bapi_main_page.htm
http://www.topxml.com/sap/sap_idoc_xml.asp
http://www.sapdevelopment.co.uk/
http://www.sapdevelopment.co.uk/java/jco/bapi_jco.pdf
Also refer to the following links..
www.sappoint.com/abap/bapiintro.pdf
www.sap-img.com/abap/bapi-conventions.htm
www.planetsap.com/Bapi_main_page.htm
www.sapgenie.com/abap/bapi/index.htm
Checkout !!
http://searchsap.techtarget.com/originalContent/0,289142,sid21_gci948835,00.html
http://techrepublic.com.com/5100-6329-1051160.html#
http://www.sap-img.com/bapi.htm
http://www.sap-img.com/abap/bapi-conventions.htm
http://www.sappoint.com/abap/bapiintro.pdf
EG::
Here is the step by step procedure for creating BAPIs.
There are 5 different steps in BAPI.
- Create BAPI Structure
- Create BAPI Function Module or API Method.
- Create BAPI object
- Release BAPI Function Module.
- Release BAPI object.
Step1. Creating BAPI Structure:
- Go to <SE11>.
- Select Data Type & Enter a name.
- Click on Create.
- Note: Always BAPI should be in a development class with request number (Not Local Object).
- Select Structure & hit ENTER.
- Enter the fields from your database. Make sure that the first field is the Primary Key Field.
- Then SAVE & ACTIVATE.
Step 2. Creating BAPI module:
- Enter TR.CODE <SE37>.
- Before entering any thing, from the present screen that you are in, select the menu
Goto -> Function Groups -> Create Group.
Enter a name (Note: This name Must start with ZBAPI)
Let this screen be as it is and open another window and there, enter TR.CODE <SE80).
Click on the Third ICON that says Inactive Objects.
Select the group that you just created and click on Activate.
Notice that the group you created will disappear from the list of inactive objects.
- Go back to ><SE37> screen and enter a name and hit <ENTER>. Then enter the group name that you just created and activated.
NOTE: When you release a function module the respective group will be attached to that particular application. It cannot be used for any other application. NEVER include an already existing group that is attached to another module.
Now click on the first Tab that says [ATTRIBUTES] and select the radio button that says remote-enabled module since we will be accessing this from any external system.
Then click on the second tab that says [IMPORT].
Enter a PARAMETER NAME, TYPE and the structure you created in the first step. Also select the check box Pa. All remotely enabled functional modules MUST be Pa enabled, where Pa means Passed by Value and if you dont select Pa, then that means it will be passed by reference..
Then click on tab that says [EXPORT].
Enter the following as is in the first three fields
RETURN TYPE BAPIRETURN (These 3 field values are always same)
Here also select Pa meaning Pass by value.
Note: BAPIRETURN contains structure with message fields.
Then SAVE and ACTIVATE.
Step 3. Creating BAPI object:
- Enter Tr.Code <SWO1> (Note. It is letter O and not Zero).
- Enter a name and then click on create. Enter details.
NOTE: Make sure that that Object Type and Program name are SAME.
- Enter Application M, if you are using standard table Mara. If you are using your own database then select Z at the bottom.
- Then hit <ENTER>.
- Now we have to add Methods. High light METHODS and then select the following from the menu:
Goto Utilities -> API Methods -> Add Methods.
- Enter function Module name and hit <ENTER>.
- Select the second FORWARD ARROW button (>)to go to next step.
- Check if every thing looks ok and again click on FORWARD ARROW button (>).
- Then select YES and click on <SAVE>.
- Now on a different screen goto TR.CODE <SE37>. Enter Function Module name and select from the top menu Function Module -> Release -> Release.
- Goback to TR.CODE <SWO1>.
Here select the menu combination shown below in the same order.
- Edit -> Change Release Status -> Object Type Component -> To Implemented.
- Edit -> Change Release Status -> Object Type Component -> To Released.
- Edit -> Change Release Status -> Object Type -> To Implemented.
- Edit -> Change Release Status -> Object Type -> To Released.
- Then click on <SAVE>.
- Then click on Generate Button (4th button from left hand side looks like spinning wheel).
- Then Click on the button that says PROGRAM to see the source code.
To check if this is present in work flow goto TR.CODE <BAPI>.
Here it shows business object repository.
- First click on the middle button and then select ALL and hit ENTER.
- Goto tab [ALPHABETICAL] and look for the object that you created. This shows that the BAPI object has been created successfully
Reward points if helpful.
Thanks
Naveen khan
‎2007 Sep 03 5:07 PM
Check the example code :
&----
*& Report ZNA_SH_CREATE_CHANGE_SO_BAPI
*&
&----
*&
*&
&----
report zna_sh_create_change_so_bapi message-id z7new.
*Internal table declaration for Creating SO
data: i_header type bapisdhd1.
data: i_details type bapisditm occurs 0 with header line.
data: i_partner type bapiparnr occurs 0 with header line.
data: i_return1 type bapiret2 occurs 0 with header line.
data: i_return2 type bapiret2.
*Work Area declaration for Creating SO
data: wa_return1 type bapiret2.
data: wa_header type bapisdhd1.
data: wa_partner type bapiparnr.
data: wa_flag type bapisdhd1x.
data: ok_code type sy-ucomm.
data: n type i.
*Declaration's for changing SO
*Type Declaration for Item table
types: begin of type_vbap,
vbeln type vbeln_va,
posnr type posnr_va,
werks type werks_ext,
lgort type lgort_d,
zmeng type dzmeng,
zieme type dzieme,
end of type_vbap.
data: i_flag like bapisdh1x occurs 0 with header line.
data: i_vbap type standard table of type_vbap.
data: wa_vbap type type_vbap.
data: i_bapisditm type bapisditm occurs 0 with header line,
i_bapisditmx type bapisditmx occurs 0 with header line.
data: p_vbeln type vbak-vbeln.
data: v_vbeln type bapivbeln-vbeln.
parameters : rad1 radiobutton group g1 ,
rad2 radiobutton group g1.
selection-screen begin of screen 12 as window title creat_so.
parameters: o_vkorg type vkorg, "Sales Organization
o_vtweg type vtweg, "Distribution Channel
o_spart type spart, "Division
o_auart type auart, "Sales Doc Type
o_matnr type matnr, "Material No.
o_parvw type parvw, "Partner Role
o_kunnr type kunnr. "Partner Number
selection-screen end of screen 12.
selection-screen begin of screen 123 as window title chang_so.
parameters: o_vbeln type vbeln. "sales doc. no.
selection-screen end of screen 123.
start-of-selection.
if rad1 = 'X'.
call selection-screen '12'.
else.
call selection-screen '123'.
endif.
if rad1 = 'X'.
i_header-doc_type = o_auart.
i_header-sales_org = o_vkorg.
i_header-distr_chan = o_vtweg.
i_header-division = o_spart.
i_partner-partn_role = o_parvw.
i_partner-partn_numb = o_kunnr.
append i_partner.
i_details-material = o_matnr.
append i_details.
call function 'BAPI_SALESORDER_CREATEFROMDAT2'
exporting
order_header_in = i_header
importing
salesdocument = v_vbeln
tables
return = i_return1
order_items_in = i_details
order_partners = i_partner.
if not v_vbeln is initial.
call function 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT =
importing
return = i_return2
.
else.
call function 'BAPI_TRANSACTION_ROLLBACK'
IMPORTING
RETURN =
.
endif.
loop at i_return1 into wa_return1.
write:/ wa_return1-message.
endloop.
--
else.
call screen '0101'.
endif.
&----
*& Module STATUS_0101 OUTPUT
&----
text
----
module status_0101 output.
SET PF-STATUS 'xxxxxxxx'.
SET TITLEBAR 'xxx'.
p_vbeln = o_vbeln.
refresh: i_flag,
i_bapisditm,
i_bapisditmx,
i_return1.
if i_vbap[] is initial.
select
vbeln
posnr
werks
lgort
zmeng
zieme
from vbap into table i_vbap where
vbeln = p_vbeln.
n = 1.
endif.
read table i_vbap into wa_vbap index n."with key vbeln = p_vbeln.
n = n + 1.
endmodule. " STATUS_0101 OUTPUT
&----
*& Module USER_COMMAND_0101 INPUT
&----
text
----
module user_command_0101 input.
case ok_code.
when 'CHA1'.
sort i_vbap by posnr.
loop at i_vbap into wa_vbap .
i_flag-updateflag = 'U'.
append i_flag.
i_bapisditm-itm_number = wa_vbap-posnr.
i_bapisditm-plant = wa_vbap-werks.
i_bapisditm-store_loc = wa_vbap-lgort.
i_bapisditm-target_qty = wa_vbap-zmeng.
i_bapisditm-target_qu = wa_vbap-zieme.
append i_bapisditm.
i_bapisditmx-itm_number = wa_vbap-posnr.
i_bapisditmx-updateflag = 'U'.
i_bapisditmx-po_itm_no = 'U'.
i_bapisditmx-plant = 'U'.
i_bapisditmx-store_loc = 'U'.
i_bapisditmx-target_qty = 'U'.
i_bapisditmx-target_qu = 'U'.
append i_bapisditmx.
call function 'BAPI_SALESORDER_CHANGE'
exporting
salesdocument = p_vbeln
order_header_inx = i_flag
tables
return = i_return1
order_item_in = i_bapisditm
order_item_inx = i_bapisditmx.
call function 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT =
importing
return = i_return2.
clear wa_vbap.
call screen '0101'.
endloop.
WRITE:/ 'Status ' , i_return1-type.
WRITE:/ 'Reason ' , i_return1-message.
CLEAR i_return1.
REFRESH i_return1.
when 'EXI1'.
leave program.
endcase.
endmodule. " USER_COMMAND_0101 INPUT
text elements :
O_AUART DOCUMENT TYPE
O_KUNNR CUSTOMER NUMBER
O_MATNR MATERIAL NUMBER
O_PARVW PARTNER FUNCTION
O_SPART DIVISION
O_VBELN SALES DOCUMNET NO.
O_VKORG SALES ORGANIZATION
O_VTWEG DISTRIBUTION CHANNEL
RAD1 FOR CREATING SALES ORDER
RAD2 FOR CHANGING SALES ORDER
S_AUART DOCUMENT TYPE
S_KUNNR CUSTOMER NUMBER
S_MATNR MATERIAL NUMBER
S_PARVW PARTNER FUNCTION
S_SPART DIVISION
S_VBELN SALES DOCUMNET NO.
S_VKORG SALES ORGANIZATION
S_VTWEG DISTRIBUTION CHANNEL
First goto VA01 Transaction ,create sales order manually and see the results.
use same values in program and see the results
Thanks
Seshu
‎2007 Sep 03 7:02 PM
hi,
check out this program,this may giv you some idea of creating a sales order thru BAPI
&----
*& Report ZSALESORDER243
*&
******************************************************************************
REPORT ZSALESORDER243 MESSAGE-ID Z243_MESS.
TYPE-POOLS : SLIS.
TABLES : ZSIVA_KA_FE_12,
VBAK,
KUAGV,
KUWEV,
VBAP,
VBKD,
VBEP,
VBUK.
&--
DATA: OK_CODE LIKE SY-UCOMM, "user command
SAVE_CODE LIKE OK_CODE.
DATA: IT_EXTAB TYPE SLIS_T_EXTAB,
WA_EXTAB LIKE LINE OF IT_EXTAB.
DATA: USERID LIKE ZSIVA_KA_FE_12-USERID,
WA_USERID LIKE TABLE OF ZSIVA_KA_FE_12 WITH HEADER LINE.
DATA : BEGIN OF WA_HEAD,
VBELN LIKE VBUK-VBELN,
KUNNR LIKE VBAK-KUNNR,
BSTKD LIKE VBKD-BSTKD,
ZTERM LIKE VBKD-ZTERM,
AUTLF LIKE VBAK-AUTLF,
LIFSK LIKE VBAK-LIFSK,
AUGRU LIKE VBAK-AUGRU,
PRSDT LIKE VBKD-PRSDT,
INCO1 LIKE VBKD-INCO1,
INCO2 LIKE VBKD-INCO2,
VSBED LIKE VBAK-VSBED,
EXPAND,
BOX ,
END OF WA_HEAD.
DATA : BEGIN OF WA_ITEM,
VBELN LIKE VBUK-VBELN,
POSNR LIKE VBAP-POSNR,
MATNR LIKE VBAP-MATNR,
MAKTX LIKE MAKT-MAKTX,
WERKS LIKE VBAP-WERKS,
VDATU LIKE VBAK-VDATU,
LPRIO LIKE VBAP-LPRIO,
KWMENG LIKE VBAP-KWMENG,
ABGRU LIKE VBAP-ABGRU,
PRSDT LIKE VBKD-PRSDT,
END OF WA_ITEM.
DATA : IT_HEAD LIKE TABLE OF WA_HEAD , "head table
IT_HEADRES LIKE IT_HEAD , "header screen
IT_ITEM LIKE TABLE OF WA_ITEM WITH HEADER LINE, "item table
IT_ITEMRES LIKE IT_ITEM.
DATA : BEGIN OF WA_HEADSCR. "structure for header screen
INCLUDE STRUCTURE WA_HEAD.
DATA : END OF WA_HEADSCR.
DATA : BEGIN OF WA_ITEMSCR. "structure for item screen
INCLUDE STRUCTURE WA_ITEM.
DATA : END OF WA_ITEMSCR.
DATA : IT_HEADSCR LIKE TABLE OF WA_HEADSCR, "i_table for header screen &itemscrenn
IT_ITEMSCR LIKE TABLE OF WA_ITEMSCR.
DATA: NODE_TABLE TYPE TREEV_NTAB,
WA_NODE LIKE LINE OF NODE_TABLE.
DATA : G_KEY TYPE TREEV_NKS WITH HEADER LINE,
WA_REPID TYPE SY-REPID,
WA_KEYINFO TYPE SLIS_KEYINFO_ALV.
DATA : WA_HEADER TYPE BAPISDH1X,
WA_HEADDATA TYPE BAPISDH1,
RETURN LIKE TABLE OF BAPIRET2 WITH HEADER LINE,
RETMSG LIKE TABLE OF BAPIRET2 WITH HEADER LINE,
RETURN1 LIKE TABLE OF BAPIRET2 WITH HEADER LINE.
DATA: IT_FIELDC TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELDC LIKE LINE OF IT_FIELDC,
IT_FIELDC1 TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELDC1 LIKE LINE OF IT_FIELDC,
U_COMM LIKE SY-UCOMM VALUE '&ETA',
WA_LAYOUT TYPE SLIS_LAYOUT_ALV,
IT_EVENT TYPE SLIS_T_EVENT,
WA_EVENT LIKE LINE OF IT_EVENT.
&--
SELECTION-SCREEN : BEGIN OF SCREEN 9002 ,
BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001,
SKIP 1.
SELECT-OPTIONS : SALESORG FOR VBAK-VKORG OBLIGATORY DEFAULT '1000',
CHANNEL FOR VBAK-VTWEG OBLIGATORY DEFAULT '10',
DIVISION FOR VBAK-SPART OBLIGATORY DEFAULT '00',
SOLD FOR KUAGV-KUNNR,
SHIP FOR KUWEV-KUNNR,
DOCDATE FOR VBAK-AUDAT,
DOCTYPE FOR VBAK-AUART,
PONUM FOR VBKD-BSTKD,
MATERIAL FOR VBAP-MATNR,
SALESNO FOR VBAK-VBELN,
DELBLK FOR VBAK-LIFSK,
INCO FOR VBKD-INCO1,
INCO2 FOR VBKD-INCO2,
REASON FOR VBAP-ABGRU,
PRICDATE FOR VBKD-PRSDT,
ISSUDATE FOR VBEP-WADAT,
DELDATE FOR VBAK-VDATU,
PLANT FOR VBAP-WERKS.
SELECTION-SCREEN : SKIP 1.
PARAMETER : DELETESO LIKE ZSIVA_KA_FE_12-DELETESALESORDER AS
CHECKBOX.
SELECTION-SCREEN : SKIP 1,
END OF BLOCK BLK1,
END OF SCREEN 9002.
CALL SELECTION-SCREEN 9002.
&----
*& Module PF_STATUS OUTPUT
&----
text
----
MODULE PF_STATUS OUTPUT.
SET PF-STATUS 'STATUS1'.
SET TITLEBAR 'TITLE1'.
ENDMODULE. " PF_STATUS OUTPUT
&----
*& Module INIT_PAI INPUT
&----
text
----
MODULE INIT_PAI INPUT.
SAVE_CODE = OK_CODE.
CLEAR OK_CODE.
CASE SAVE_CODE.
WHEN 'EXECUTE'.
IF NOT DELETESO EQ 'X'.
IF IT_HEAD IS INITIAL AND
IT_ITEM IS INITIAL.
SELECT A~AUTLF
A~KUNNR
A~VSBED
A~LIFSK
A~AUGRU
B~VBELN
CBSTKD CZTERM CPRSDT CINCO1 C~INCO2
FROM VBUK AS B
INNER JOIN VBAK AS A ON AVBELN = BVBELN
INNER JOIN VBKD AS C ON CVBELN = BVBELN
INTO CORRESPONDING FIELDS OF TABLE IT_HEAD
WHERE B~GBSTK NE 'C' AND
A~VKORG IN SALESORG AND
A~VTWEG IN CHANNEL AND
A~SPART IN DIVISION AND
B~VBELN IN SALESNO.
SELECT A~POSNR
A~MATNR
A~WERKS
A~LPRIO
A~KWMENG
A~ABGRU
B~MAKTX
C~VDATU
D~PRSDT
E~VBELN
FROM VBUK AS E
INNER JOIN VBAP AS A ON AVBELN = EVBELN
INNER JOIN MAKT AS B ON AMATNR = BMATNR AND B~SPRAS = 'EN'
INNER JOIN VBAK AS C ON CVBELN = EVBELN
INNER JOIN VBKD AS D ON DVBELN = EVBELN
INTO CORRESPONDING FIELDS OF TABLE IT_ITEM
WHERE E~GBSTK NE 'C' AND
C~VKORG IN SALESORG AND
C~VTWEG IN CHANNEL AND
C~SPART IN DIVISION AND
E~VBELN IN SALESNO.
ENDIF.
IF SY-SUBRC = 0.
PERFORM KEY_INFO.
PERFORM FILL_LAYOUT.
PERFORM FIELD_CATALOG.
PERFORM EVENTS.
PERFORM H_DISPLAY.
ENDIF.
ELSEIF SALESNO <> ' '.
IF ZSIVA_KA_FE_12-DELETESALESORDER = ' '.
MESSAGE i006.
CALL SCREEN 9002.
ELSE.
SALESNO = SALESNO-LOW.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
SALESDOCUMENT = SALESNO
ORDER_HEADER_INX = WA_HEADER
TABLES
RETURN = RETURN.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
IMPORTING
RETURN = RETURN1.
IF RETURN-TYPE = 'S'.
MESSAGE I007 WITH SALESNO.
CLEAR DELETESO.
ELSE.
MESSAGE I007.
CLEAR: DELETESO, SALESNO[].
ENDIF.
ENDIF.
ELSE.
MESSAGE S000(Z243_MESS).
ENDIF.
WHEN 'BACK'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. "INIT_PAI INPUT
**********************************REUSE_ALV_HIERSEQ_LIST_DISPLAY***************
FORM H_DISPLAY.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = WA_REPID
I_CALLBACK_PF_STATUS_SET = 'STATUS'
I_CALLBACK_USER_COMMAND = 'UCOMMAND'
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = IT_FIELDC
IT_EVENTS = IT_EVENT
I_TABNAME_HEADER = 'IT_HEAD'
I_TABNAME_ITEM = 'IT_ITEM'
IS_KEYINFO = WA_KEYINFO
TABLES
T_OUTTAB_HEADER = IT_HEAD
T_OUTTAB_ITEM = IT_ITEM.
ENDFORM. "H_DISPLAY
" INIT_PAI INPUT
&----
*& Module STATUS_9003 OUTPUT
&----
text
----
MODULE STATUS_9003 OUTPUT.
SET PF-STATUS 'STATUS3'.
DATA CHECK.
SELECT * FROM ZSIVA_KA_FE_12 INTO TABLE WA_USERID.
IF SY-SUBRC = 0.
READ TABLE WA_USERID WITH KEY USERID = SY-UNAME .
ELSE.
MESSAGE S006(Z243_MESSAGES).
ENDIF.
***************CHECKING CURRENT USER FOR AUTHENTICATION***
IF WA_USERID-SHIP_CONDITION EQ 'X'
AND ZSIVA_KA_FE_12-SHIP_CONDITION NE 'X'.
PERFORM DISABLE USING 'G1'.
ENDIF.
IF WA_USERID-ORDERREASON = 'X' AND ZSIVA_KA_FE_12-ORDERREASON NE 'X' .
PERFORM DISABLE USING 'G2'.
ENDIF.
IF WA_USERID-DEL_BLOCK EQ 'X' AND ZSIVA_KA_FE_12-DEL_BLOCK NE'X'.
PERFORM DISABLE USING 'G3'.
ENDIF.
IF WA_USERID-INCO1 = 'X' AND ZSIVA_KA_FE_12-INCO1 NE 'X'.
PERFORM DISABLE USING 'G4'.
ENDIF.
IF WA_USERID-INCO2 = 'X' AND ZSIVA_KA_FE_12-INCO2 NE 'X'.
PERFORM DISABLE USING 'G5'.
ENDIF.
IF WA_USERID-COMP_DEL_IND = 'X' AND ZSIVA_KA_FE_12-COMP_DEL_IND NE 'X' .
PERFORM DISABLE USING 'G6'.
ENDIF.
IF WA_USERID-SHIPTO = 'X' AND ZSIVA_KA_FE_12-SHIPTO NE 'X'.
PERFORM DISABLE USING 'G7'.
ENDIF.
IF WA_USERID-PRICE_DATE = 'X' AND ZSIVA_KA_FE_12-PRICE_DATE NE 'X'.
PERFORM DISABLE USING 'G8'.
ENDIF.
IF WA_USERID-PAYTERM = 'X' AND ZSIVA_KA_FE_12-PAYTERM NE 'X'.
PERFORM DISABLE USING 'G9'.
ENDIF.
IF WA_USERID-PRICE_DATE_ITEM = 'X' .
PERFORM DISABLE USING 'G10'.
ENDIF.
IF WA_USERID-CUSTPO = 'X' AND ZSIVA_KA_FE_12-CUSTPO NE 'X'.
PERFORM DISABLE USING 'G11'.
ENDIF.
IF WA_USERID-MATERIAL = 'X' AND ZSIVA_KA_FE_12-MATERIAL NE 'X' .
PERFORM DISABLE USING 'G12'.
ENDIF.
IF WA_USERID-QUANTITY = 'X' AND ZSIVA_KA_FE_12-QUANTITY NE 'X'.
PERFORM DISABLE USING 'G13'.
ENDIF.
IF WA_USERID-DEL_PLANT = 'X' AND ZSIVA_KA_FE_12-DEL_PLANT NE 'X'.
PERFORM DISABLE USING 'G14'.
ENDIF.
IF WA_USERID-REJ_REASON = 'X' AND ZSIVA_KA_FE_12-REJ_REASON NE 'X'.
PERFORM DISABLE USING 'G15'.
ENDIF.
IF WA_USERID-DEL_PRIORITY = 'X' AND ZSIVA_KA_FE_12-DEL_PRIORITY NE 'X'.
PERFORM DISABLE USING 'G16'.
ENDIF.
MESSAGE S008(Z243_MESS).
ENDMODULE. " STATUS_9003 OUTPUT
&----
*& Module USER_COMMAND_9003 INPUT
&----
text
----
MODULE USER_COMMAND_9003 INPUT.
CASE OK_CODE.
WHEN 'MODIFY'.
LOOP AT IT_HEAD INTO WA_HEAD WHERE BOX = 'X'.
MODIFY IT_HEAD INDEX SY-TABIX FROM WA_HEADSCR TRANSPORTING INCO1 PRSDT ZTERM .
LOOP AT IT_ITEM WHERE VBELN = WA_HEAD-VBELN.
MODIFY IT_ITEM INDEX SY-TABIX FROM WA_ITEMSCR TRANSPORTING MATNR KWMENG.
ENDLOOP.
ENDLOOP.
PERFORM H_DISPLAY.
WHEN 'T1'.
CHECK = 'X'.
IF ZSIVA_KA_FE_12-SHIP_CONDITION = 'X' .
PERFORM TICKON USING 'WA_HEADSCR-VSBED'.
ELSEIF ZSIVA_KA_FE_12-SHIP_CONDITION <> 'X'.
PERFORM TICKOFF USING 'WA_HEADSCR-VSBED'.
ENDIF.
WHEN 'T2'.
IF ZSIVA_KA_FE_12-ORDERREASON = 'X'.
PERFORM TICKON USING 'WA_HEADSCR-AUGRU'.
ELSEIF ZSIVA_KA_FE_12-ORDERREASON <> 'X'.
PERFORM TICKOFF USING 'WA_HEADSCR-AUGRU'.
ENDIF.
WHEN 'T3'.
IF ZSIVA_KA_FE_12-DEL_BLOCK = 'X'.
PERFORM TICKON USING 'WA_HEADSCR-LIFSK'.
ELSEIF ZSIVA_KA_FE_12-DEL_BLOCK <> 'X'.
PERFORM TICKOFF USING 'WA_HEADSCR-LIFSK'.
ENDIF.
WHEN 'T4'.
IF ZSIVA_KA_FE_12-INCO1 = 'X'.
PERFORM TICKON USING 'WA_HEADSCR-INCO1'.
ELSEIF ZSIVA_KA_FE_12-INCO1 <> 'X'.
PERFORM TICKOFF USING 'WA_HEADSCR-INCO1'.
ENDIF.
WHEN 'T5'.
IF ZSIVA_KA_FE_12-INCO2 = 'X'.
PERFORM TICKON USING 'WA_HEADSCR-INCO2'.
ELSEIF ZSIVA_KA_FE_12-INCO2 <> 'X'.
PERFORM TICKOFF USING 'WA_HEADSCR-INCO2'.
ENDIF.
WHEN 'T6'.
IF ZSIVA_KA_FE_12-COMP_DEL_IND = 'X'.
PERFORM TICKON USING 'WA_HEADSCR-AUTLF'.
ELSEIF ZSIVA_KA_FE_12-COMP_DEL_IND <> 'X'.
PERFORM TICKOFF USING 'WA_HEADSCR-AUTLF'.
ENDIF.
WHEN 'T7'.
IF ZSIVA_KA_FE_12-SHIPTO = 'X'.
PERFORM TICKON USING 'WA_HEADSCR-KUNNR'.
ELSEIF ZSIVA_KA_FE_12-SHIPTO <> 'X'.
PERFORM TICKOFF USING 'WA_HEADSCR-KUNNR'.
ENDIF.
WHEN 'T8'.
IF ZSIVA_KA_FE_12-PRICE_DATE = 'X'.
PERFORM TICKON USING 'WA_HEADSCR-PRSDT'.
ELSEIF ZSIVA_KA_FE_12-PRICE_DATE <> 'X'.
PERFORM TICKOFF USING 'WA_HEADSCR-PRSDT'.
ENDIF.
WHEN 'T9'.
IF ZSIVA_KA_FE_12-PAYTERM = 'X'.
PERFORM TICKON USING 'WA_HEADSCR-ZTERM'.
ELSEIF ZSIVA_KA_FE_12-SHIP_CONDITION <> 'X'.
PERFORM TICKOFF USING 'WA_HEADSCR-ZTERM'.
ENDIF.
WHEN 'T11'.
IF ZSIVA_KA_FE_12-CUSTPO = 'X'.
PERFORM TICKON USING 'WA_HEADSCR-BSTKD'.
ELSEIF ZSIVA_KA_FE_12-SHIP_CONDITION <> 'X'.
PERFORM TICKOFF USING 'WA_HEADSCR-BSTKD'.
ENDIF.
WHEN 'T12'.
IF ZSIVA_KA_FE_12-MATERIAL = 'X'.
PERFORM TICKON USING 'WA_ITEMSCR-MATNR'.
ELSEIF ZSIVA_KA_FE_12-SHIP_CONDITION <> 'X'.
PERFORM TICKOFF USING 'WA_ITEMSCR-MATNR'.
ENDIF.
WHEN 'T13'.
IF ZSIVA_KA_FE_12-QUANTITY = 'X'.
PERFORM TICKON USING 'WA_ITEMSCR-KWMENG'.
ELSEIF ZSIVA_KA_FE_12-SHIP_CONDITION <> 'X'.
PERFORM TICKOFF USING 'WA_ITEMSCR-KWMENG'.
ENDIF.
WHEN 'T14'.
IF ZSIVA_KA_FE_12-DEL_PLANT = 'X'.
PERFORM TICKON USING 'WA_ITEMSCR-WERKS'.
ELSEIF ZSIVA_KA_FE_12-SHIP_CONDITION <> 'X'.
PERFORM TICKOFF USING 'WA_ITEMSCR-WERKS'.
ENDIF.
WHEN 'T15'.
IF ZSIVA_KA_FE_12-REJ_REASON = 'X'.
PERFORM TICKON USING 'WA_ITEMSCR-ABGRU'.
ELSEIF ZSIVA_KA_FE_12-SHIP_CONDITION <> 'X'.
PERFORM TICKOFF USING 'WA_ITEMSCR-ABGRU'.
ENDIF.
WHEN 'T16'.
IF ZSIVA_KA_FE_12-DEL_PRIORITY = 'X'.
PERFORM TICKON USING 'WA_ITEMSCR-LPRIO'.
ELSEIF ZSIVA_KA_FE_12-SHIP_CONDITION <> 'X'.
PERFORM TICKOFF USING 'WA_ITEMSCR-LPRIO'.
ENDIF.
WHEN 'BACK'.
CALL SCREEN 9002.
ENDCASE.
ENDMODULE. " USER_COMMAND_9003 INPUT
&----
*& Form DISABLE
&----
text
----
DISABLING THE FIELDS ACCORDING TO THE AUTHORITY
----
FORM DISABLE USING GRP.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = GRP.
SCREEN-INPUT = '1'.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDFORM. "DISABLE
&----
*& Form KEY_INFO
&----
text
----
--> p1 text
<-- p2 text
----
FORM KEY_INFO .
WA_KEYINFO-HEADER01 = 'VBELN'.
WA_KEYINFO-ITEM01 = 'VBELN'.
WA_REPID = SY-REPID.
ENDFORM. " KEY_INFO
&----
*& Form FIELD_CATALOG
&----
text
----
--> p1 text
<-- p2 text
----
FORM FIELD_CATALOG .
CLEAR WA_FIELDC.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = WA_REPID
I_INTERNAL_TABNAME = 'IT_HEAD' "I_INTERNAL_TABNAME
I_STRUCTURE_NAME = 'Z243_HEADER' "I_STRUCTURE_NAME
I_CLIENT_NEVER_DISPLAY = 'X'
CHANGING
CT_FIELDCAT = IT_FIELDC.
DELETE IT_FIELDC WHERE FIELDNAME <> 'AUTLF' AND
FIELDNAME <> 'KUNNR' AND
FIELDNAME <> 'VSBED' AND
FIELDNAME <> 'LIFSK' AND
FIELDNAME <> 'AUGRU' AND
FIELDNAME <> 'VBELN' AND
FIELDNAME <> 'BSTKD' AND
FIELDNAME <> 'ZTERM' AND
FIELDNAME <> 'PRSDT' AND
FIELDNAME <> 'INCO1' AND
FIELDNAME <> 'INCO2' .
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = WA_REPID
I_INTERNAL_TABNAME = 'IT_ITEM' "I_INTERNAL_TABNAME
I_STRUCTURE_NAME = 'Z243_ITEM' "I_STRUCTURE_NAME
CHANGING
CT_FIELDCAT = IT_FIELDC1.
DELETE IT_FIELDC1 WHERE FIELDNAME <> 'POSNR' AND
FIELDNAME <> 'MATNR' AND
FIELDNAME <> ' WERKS' AND
FIELDNAME <> 'LPRIO' AND
FIELDNAME <> 'KWMENG' AND
FIELDNAME <> 'ABGRU' AND
FIELDNAME <> 'MAKTX' AND
FIELDNAME <> 'VDATU' AND
FIELDNAME <> 'PRSDT' AND
FIELDNAME <> 'VBELN' .
LOOP AT IT_FIELDC1 INTO WA_FIELDC.
APPEND WA_FIELDC TO IT_FIELDC.
ENDLOOP.
ENDFORM. " FIELD_CATALOG
&----
*& Form FILL_LAYOUT
&----
text
----
--> p1 text
<-- p2 text
----
FORM FILL_LAYOUT .
WA_LAYOUT-ZEBRA = 'X'.
WA_LAYOUT-EXPAND_FIELDNAME = 'EXPAND'. "FOR EXPANDING
WA_LAYOUT-EXPAND_ALL = 'X'.
WA_LAYOUT-BOX_FIELDNAME = 'BOX'.
WA_LAYOUT-BOX_TABNAME = 'IT_HEAD'.
WA_LAYOUT-KEY_HOTSPOT = 'X'.
WA_LAYOUT-F2CODE = U_COMM.
WA_LAYOUT-DETAIL_POPUP = 'X'.
WA_LAYOUT-LIGHTS_CONDENSE = 'X'.
ENDFORM. " FILL_LAYOUT
&----
*& Form STATUS
&----
text
----
--> p1 text
<-- p2 text
----
FORM STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'SBAR' EXCLUDING RT_EXTAB.
SET TITLEBAR 'TITLE2'.
ENDFORM. " STATUS
&----
*& Form ucomm
&----
text
----
--> p1 text
<-- p2 text
----
FORM UCOMMAND USING R_COMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD .
CASE R_COMM.
WHEN 'UP'.
LOOP AT IT_HEAD INTO WA_HEAD WHERE BOX = 'X'.
APPEND WA_HEAD TO IT_HEADSCR.
ENDLOOP.
CALL SCREEN 9003.
WHEN 'UPS'.
DATA RETANS.
DATA LEN(2) TYPE N.
DATA QUESTION(75) TYPE C.
DESCRIBE TABLE IT_HEADSCR LINES LEN.
CONCATENATE LEN TEXT-002 INTO QUESTION.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = 'Sales Order selected for Changes'
TEXT_QUESTION = QUESTION
TEXT_BUTTON_1 = 'Yes'
ICON_BUTTON_1 = 'ICON_OKAY'
TEXT_BUTTON_2 = 'No'
ICON_BUTTON_2 = 'ICON_CANCEL'
DISPLAY_CANCEL_BUTTON = ' '
IV_QUICKINFO_BUTTON_1 = 'CONFIRM CHANGE'
IV_QUICKINFO_BUTTON_2 = 'CANCEL CHANGE'
IMPORTING
ANSWER = RETANS
EXCEPTIONS
TEXT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
LEAVE TO LIST-PROCESSING.
SET PF-STATUS SPACE.
WRITE / SY-SUBRC.
ENDIF.
IF RETANS = 1.
PERFORM BAPI.
ENDIF..
ENDCASE.
ENDFORM. " ucomm
&----
*& Form BAPI
&----
text
----
--> p1 text
<-- p2 text
----
FORM BAPI .
CLEAR: RETURN[], RETURN1[].
WA_HEADER-UPDATEFLAG = 'U'.
WA_HEADER-PURCH_NO_C = 'X'.
WA_HEADER-PMNTTRMS = 'X'.
WA_HEADER-INCOTERMS1 = 'X'.
WA_HEADER-SHIP_COND = 'X'.
LOOP AT IT_HEAD INTO WA_HEAD WHERE BOX ='X'.
READ TABLE IT_HEAD INTO WA_HEAD WITH KEY VBELN = WA_HEAD-VBELN.
WA_HEADDATA-PURCH_NO_C = WA_HEAD-BSTKD.
WA_HEADDATA-PMNTTRMS = WA_HEAD-ZTERM.
WA_HEADDATA-INCOTERMS1 = WA_HEAD-INCO1.
WA_HEADDATA-SHIP_COND = WA_HEAD-VSBED.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
SALESDOCUMENT = WA_HEAD-VBELN
ORDER_HEADER_IN = WA_HEADDATA
ORDER_HEADER_INX = WA_HEADER
TABLES
RETURN = RETURN.
LOOP AT RETURN.
MOVE-CORRESPONDING RETURN TO RETMSG.
APPEND RETMSG.
ENDLOOP.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
IMPORTING
RETURN = RETURN1.
ENDLOOP.
PERFORM POPUP.
ENDFORM. " BAPI
&----
*& Form POPUP
&----
text
----
--> p1 text
<-- p2 text
----
FORM POPUP .
DATA : IT_FCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
DATA : BEGIN OF WA_DATATAB,
TYPE(4) TYPE C,
MSG LIKE RETURN-MESSAGE,
END OF WA_DATATAB,
IT_DATATAB LIKE TABLE OF WA_DATATAB.
IF IT_FCAT IS INITIAL.
IT_FCAT-FIELDNAME = 'TYPE'.
IT_FCAT-TABNAME = 'IT_DATATAB'.
IT_FCAT-SELTEXT_L = 'TYPE'.
IT_FCAT-OUTPUTLEN = 10.
APPEND IT_FCAT.
CLEAR IT_FCAT.
IT_FCAT-FIELDNAME = 'MSG'.
IT_FCAT-TABNAME = 'IT_DATATAB'.
IT_FCAT-SELTEXT_L = 'MESSAGE'.
IT_FCAT-OUTPUTLEN = 70.
APPEND IT_FCAT.
ENDIF.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_GRID_TITLE = 'BAPI Return Messages'
IT_FIELDCAT = IT_FCAT[]
I_SCREEN_START_COLUMN = 10
I_SCREEN_START_LINE = 5
I_SCREEN_END_COLUMN = 100
I_SCREEN_END_LINE = 20
TABLES
T_OUTTAB = RETMSG.
*
LEAVE TO LIST-PROCESSING.
SET PF-STATUS SPACE.
*
LOOP AT RETMSG.
WRITE RETMSG-MESSAGE.
ENDLOOP.
ENDFORM. " POPUP
" INIT OUTPUT
&----
*& Form TICKON
&----
text
----
-->P_1345 text
----
FORM TICKON USING SON .
LOOP AT SCREEN.
IF SCREEN-NAME = SON.
SCREEN-INPUT = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDFORM. " TICKON
&----
*& Form TICKOFF
&----
text
----
-->P_1353 text
----
FORM TICKOFF USING SOFF.
LOOP AT SCREEN.
IF SCREEN-NAME = SOFF.
SCREEN-INPUT = '1'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDFORM. " TICKOFF
<b>Reward points if you find this Helpful</b>
Regards
Siva