PO Print
REPORT??ZPO_test LINE-SIZE?255.
TABLES?:?EKPO.
TABLES?:?EKET.
TABLES?:?EKKO.
TABLES?:?LFA1.
TABLES?:?KNVK.
TABLES?:?NAST.
TABLES:T006.
PARAMETER?P_SMART?TYPE?TDSFNAME?DEFAULT?'ZDEMO_POTEST2_STRUCTURE'.???"這個改了!!
DATA:?ITPO?TYPE?TABLE?OF?ZDEMO_POTEST2_STRUCTURE?INITIAL?SIZE?0,
??????WA_PO?TYPE?ZDEMO_POTEST2_STRUCTURE.
DATA:?SEL2?TYPE?I.
DATA:MONTH?TYPE?MONTH.
DATA:IT_247?LIKE?T247.
DATA:MAT?TYPE?CHAR200.
DATA:mony?TYPE?p?decimals?2.
DATA:mony2?TYPE?CHAR200.
DATA:mony3?TYPE?CHAR200.
DATA:baizhutou?TYPE?CHAR300.
DATA:?it_tline?LIKE?tline?OCCURS?0?WITH?HEADER?LINE,
??????vl_name?LIKE?thead-tdname,
??????v_tdid?like?STXH-TDID.
??????DATA:T1?TYPE?CHAR200.
SELECTION-SCREEN:?BEGIN?OF?BLOCK?1?WITH?FRAME?TITLE?TEXT-001.
PARAMETERS:??PONO?LIKE??EKPO-EBELN.??"采購訂單號
SELECTION-SCREEN:?END?OF?BLOCK?1.
START-OF-SELECTION.
??PERFORM?DATA_RETRIEVAL?USING?PONO.
??PERFORM?PRINT_OUT?USING?P_SMART.
*&---------------------------------------------------------------------*
*&??????Form??DATA_RETRIEVAL
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
FORM?DATA_RETRIEVAL?USING?PONO.
??CLEAR?SEL2.
*CLEAR?FIELSD
*?Start?of?Looping
??SELECT?EKPO~EBELN?EKPO~MATNR?EKPO~TXZ01?EKPO~MENGE?EKPO~NETPR?EKPO~WERKS?EKPO~MEINS?EKPO~EBELP
?????????EKPO~BRTWR?EKPO~PRDAT?EKPO~WERKS?EKPO~LOEKZ?EKET~EINDT?EKET~EBELP??ekpo~MWSKZ?ekpo~bukrs
??FROM?EKPO
??INNER?JOIN?EKET
??ON?EKPO~EBELN?=?EKET~EBELN?AND
?????EKPO~EBELP?=?EKET~EBELP
*?INNER?JOIN?EKKO?ON?EKPO~EBELN?=?EKKO~EBELN
*?INNER?JOIN?LFA1?ON?LFA1~LIFNR?=?EKKO~LIFNR
*??INNER?JOIN?T006?ON?EKPO~MEINS?=?T006~MSEHI
*??INNER?JOIN?T006J?ON?T006J~ISOCODE?=?T006~ISOCODE
??INTO?CORRESPONDING?FIELDS?OF?WA_PO
????WHERE?EKPO~EBELN?=?PONO?AND
??????????EKPO~LOEKZ?<>?'L'.???????????"?DW20090122?已刪除的不選
*?AND?EKPO~LOEKZ?<>?'L'.
*?AND?T006J~LANGU?=?1.
??if?sy-subrc?=?0.
????sel2?=?sel2?+?1.???????????????????"?DW20090122?行號加一
????wa_po-sel?=?sel2.
??endif.
??IF?WA_PO-LIFNR?IS?NOT?INITIAL.
????SELECT?SINGLE?NAMEV?INTO?WA_PO-NAMEV?FROM?KNVK?WHERE?LIFNR?=?WA_PO-LIFNR.
*????????SELECT?SINGLE?VTEXT?INTO?WA_ZQT-VTEXT_EN?FROM?TVZBT?WHERE?ZTERM?=?WA_ZQT-ZTERM?AND?SPRAS?=?'E'.
*??WERKS工廠代碼
??ENDIF.
??if?WA_PO-MEINS?is?not?initial.
????SELECT?SINGLE?T006A~MSEHL?INTO?WA_PO-MSEHL
??????from?T006A
??????WHERE??T006A~MSEHI?=?WA_PO-MEINS.
??endif.
*??IF?WA_PO-MEINS?IS?NOT?INITIAL.
*??????SELECT?SINGLE?ISOTXT?INTO?WA_PO-ISOTXT?FROM?T006J?WHERE?ISOCODE?=?WA_PO-ISOCODE?and?LANGU?=?'ZH'.
*??ENDIF.
??IF?WA_PO-WERKS?IS?NOT?INITIAL.
????SELECT?SINGLE?ORT01?STRAS???INTO?CORRESPONDING?FIELDS?OF?WA_PO?FROM?T001W?WHERE?WERKS?=?WA_PO-WERKS.
??ENDIF.
*
??IF?WA_PO-EBELN?IS?NOT?INITIAL.
????SELECT?SINGLE?LFA1~LIFNR?WAERS?NAME1?TELFX?INTO?CORRESPONDING?FIELDS?OF?WA_PO
??????FROM?EKKO
??????INNER?JOIN?LFA1?ON?LFA1~LIFNR?=?EKKO~LIFNR
??????WHERE?EKKO~EBELN?=?WA_PO-EBELN.
??ENDIF.
*?選出稅碼
??if?wa_po-MWSKZ?is?not?initial.
????select?single?KBETR?KONWA?INTO?CORRESPONDING?FIELDS?OF?WA_PO
??????from?konp
??????inner?join?a003?on?a003~KNUMH?=?konp~KNUMH
??????where?a003~ALAND?=?'CN'?and?a003~MWSKZ?=??wa_po-MWSKZ.
???endif.
*計算總金額
???wa_po-je?=?(?1?+?wa_po-KBETR?/?1000?)?*?wa_po-BRTWR.
*將總額轉為字符型
???WRITE?wa_po-je?TO?wa_po-je_C.
???SHIFT?wa_po-je_C?LEFT?DELETING?LEADING?SPACE.
*計算單價
???WA_PO-DJ?=?WA_PO-JE?/?WA_PO-MENGE.
????WRITE?WA_PO-DJ?TO?WA_PO-DJ_C.
????SHIFT?WA_PO-DJ_C?LEFT?DELETING?LEADING?SPACE.
????CONCATENATE??WA_PO-ORT01?WA_PO-STRAS?INTO?WA_PO-INCPLACE."將城市與地址合成一個
????WRITE?WA_PO-MENGE?TO?WA_PO-MENGE_C.
????SHIFT?WA_PO-MENGE_C?LEFT?DELETING?LEADING?SPACE.
????WRITE?WA_PO-NETPR?TO?WA_PO-NETPR_C.
????SHIFT?WA_PO-NETPR_C?LEFT?DELETING?LEADING?SPACE.
????WRITE?WA_PO-BRTWR?TO?WA_PO-BRTWR_C.
????SHIFT?WA_PO-BRTWR_C?LEFT?DELETING?LEADING?SPACE.
????mony?=??WA_PO-JE?+?mony.
*?Read?Text
????PERFORM?GET_TEXT?USING?'F01'?SY-LANGU?'EKKO'?WA_PO-EBELN?WA_PO-EBELP?-1
??????CHANGING?WA_PO-BEIZHU.
????PERFORM?GET_TEXT?USING?'PRUE'?SY-LANGU?'MATERIAL'?WA_PO-MATNR?SPACE?-1?"將數據傳入
??????CHANGING?WA_PO-BEIZHU2.
*帶出備注頭
*????PERFORM?GET_TEXT?USING?'F01'?SY-LANGU?'EKKO'?WA_PO-EBELN?WA_PO-EBELP?-1
*????CHANGING?WA_PO-EBELN?WA_PO-EBELP?WA_PO-BEIZHU.
*?MAT是將備注放在一行里
????IF?WA_PO-BEIZHU2?IS??NOT?INITIAL.
??????CONCATENATE?MAT?WA_PO-BEIZHU2?INTO?MAT?SEPARATED??BY?'、'.
????ENDIF.
??vl_name?=?WA_PO-EBELN.
??CLEAR?V_TDID.
???SELECT?SINGLE?TDID?FROM?STXH
?????INTO?V_TDID
?????WHERE?TDOBJECT?=?'EKKO'
???????AND?TDNAME?=?VL_NAME
???????AND?TDSPRAS?=?'1'.
???????CALL?FUNCTION?'READ_TEXT'
??????????EXPORTING
????????????client????????????????????????=?sy-mandt
?????????????id???????????????????????????=?V_TDID
????????????language?????????????????????=?'1'
????????????name????????????????????????=?vl_name??"?PUCHASING?ORDER
????????????object????????????????????????=?'EKKO'?"'EKKO'
??????????TABLES
????????????lines?????????????????????????=?it_tline
?????????EXCEPTIONS
???????????id????????????????????????????=?1
???????????language??????????????????????=?2
???????????name??????????????????????????=?3
???????????not_found?????????????????????=?4
???????????object????????????????????????=?5
???????????reference_check???????????????=?6
???????????wrong_access_to_archive???????=?7
???????????OTHERS????????????????????????=?8
??????????????????.
??CLEAR:?T1.
????loop?at?it_tline.
??????CONCATENATE?T1?it_tline?INTO?T1.
????endloop.
*?DW20090122??所有字段準備好才APPEND?到?Internal?Table
??APPEND?WA_PO?TO?ITPO.
??ENDSELECT.
???mony2?=??mony.
??SHIFT?mony2?LEFT?DELETING?LEADING?SPACE.
??mony3?=?mony2.
*出現8行,序號出現到8.
??DATA:?V_X?TYPE?I?VALUE?1.
??DO?8?TIMES.
???READ?TABLE?ITPO?INDEX?V_X?INTO?WA_PO.
???IF?SY-SUBRC?<>?0.?"不等于0是不成功的意思,當讀不成功時,則向下走加1.
?????CLEAR?WA_PO.
??????WA_PO-SEL?=?V_X.
??????APPEND?WA_PO?TO?ITPO.
*????modify?table?itpo?from?wa_po.
????ENDIF.
????V_X?=?V_X?+?1.
??ENDDO.
ENDFORM.????????????????????"DATA_RETRIEVAL
*取行備注值
FORM?GET_TEXT??USING????ID???????LIKE??THEAD-TDID
????????????????????????LANGUAGE?LIKE??THEAD-TDSPRAS
????????????????????????OBJECT???LIKE??THEAD-TDOBJECT
????????????????????????EBELN
????????????????????????EBELP
????????????????????????NO_OF_LINES?TYPE?I
???????????????CHANGING?P_ALL.
??DATA?:?ITEXT?LIKE?TLINE?OCCURS?0?WITH?HEADER?LINE.
??DATA?:?TEXTNAME?LIKE?STXH-TDNAME.
??DATA?:?TEMPCNTR?TYPE?I.
??CLEAR:?P_ALL.
??IF?EBELP?EQ?'000000'?OR?EBELP?EQ?SPACE.
????TEXTNAME?=?EBELN.
??ELSE.
????CONCATENATE?EBELN?EBELP?INTO?TEXTNAME.
??ENDIF.
??CALL?FUNCTION?'READ_TEXT'
????EXPORTING
??????ID??????????????????????=?ID
??????LANGUAGE????????????????=?SY-LANGU
??????NAME????????????????????=?TEXTNAME
??????OBJECT??????????????????=?OBJECT
????TABLES
??????LINES???????????????????=?ITEXT
????EXCEPTIONS
??????ID??????????????????????=?1
??????LANGUAGE????????????????=?2
??????NAME????????????????????=?3
??????NOT_FOUND???????????????=?4
??????OBJECT??????????????????=?5
??????REFERENCE_CHECK?????????=?6
??????WRONG_ACCESS_TO_ARCHIVE?=?7
??????OTHERS??????????????????=?8.
??IF?SY-SUBRC?<>?0.
????CLEAR?ITEXT.
????EXIT.
??ENDIF.
??DATA?LT_TEXT?TYPE?TDTAB_C132.
??DATA?WA_TEXT?LIKE?LINE?OF?LT_TEXT.
??CALL?FUNCTION?'CONVERT_ITF_TO_ASCII'
????EXPORTING
??????FORMATWIDTH???????=?128
????IMPORTING
??????C_DATATAB?????????=?LT_TEXT
????TABLES
??????ITF_LINES?????????=?ITEXT
????EXCEPTIONS
??????INVALID_TABLETYPE?=?1
??????OTHERS????????????=?2.
??LOOP?AT?LT_TEXT?INTO?WA_TEXT.
????IF?WA_TEXT?IS?NOT?INITIAL.
??????CONCATENATE?P_ALL?WA_TEXT?INTO?P_ALL.
????ENDIF.
*????TEMPCNTR?=?TEMPCNTR?+?1.
*????CONCATENATE?P_ALL?WA_TEXT?INTO?P_ALL?SEPARATED?BY?SPACE.
??ENDLOOP.
??SHIFT?P_ALL?LEFT?DELETING?LEADING?SPACE.
ENDFORM.????????????????????"?GET_TEXT
*以上是取行備注值
FORM?PRINT_OUT?USING?FRM_NAME?TYPE?C.
??DATA:?LF_FM_NAME????????????TYPE?RS38L_FNAM,
????????CONTROL???????????????TYPE?SSFCTRLOP,
????????LF_FORMNAME???????????TYPE?TDSFNAME.
??LF_FORMNAME?=?P_SMART.
???LF_FM_NAME?=?''.
*?根據Smart?Form?名稱,?找出對應的?function?Module?name
??CALL?FUNCTION?'SSF_FUNCTION_MODULE_NAME'
????EXPORTING
??????FORMNAME???????????=?FRM_NAME
????IMPORTING
??????FM_NAME????????????=?LF_FM_NAME
????EXCEPTIONS
??????NO_FORM????????????=?1
??????NO_FUNCTION_MODULE?=?2
??????OTHERS?????????????=?3.
*?錯誤處理
??IF?SY-SUBRC?<>?0.
????MESSAGE?ID?SY-MSGID?TYPE?SY-MSGTY?NUMBER?SY-MSGNO
????????????WITH?SY-MSGV1?SY-MSGV2?SY-MSGV3?SY-MSGV4.
????EXIT.
??ENDIF.
*?設定預覽參數
??CONTROL-NO_DIALOG?=?'X'.
??CONTROL-PREVIEW???=?'X'.
??CONTROL-NO_OPEN???=?'X'.
??CONTROL-NO_CLOSE??=?'X'.
*?預覽開始
??CALL?FUNCTION?'SSF_OPEN'
????EXPORTING
??????CONTROL_PARAMETERS?=?CONTROL
????EXCEPTIONS
??????FORMATTING_ERROR???=?1
??????INTERNAL_ERROR?????=?2
??????SEND_ERROR?????????=?3
??????USER_CANCELED??????=?4
??????OTHERS?????????????=?5.
*?錯誤處理
??IF?SY-SUBRC?<>?0.
????MESSAGE?ID?SY-MSGID?TYPE?SY-MSGTY?NUMBER?SY-MSGNO
????????????WITH?SY-MSGV1?SY-MSGV2?SY-MSGV3?SY-MSGV4.
????EXIT.
??ENDIF.
??READ?TABLE?ITPO?INTO?WA_PO?WITH?KEY?EBELN?=?PONO."-LOW?."修改了.
*?呼叫Smart?Form?產生的?Function?Module
??CALL?FUNCTION?LF_FM_NAME
???????EXPORTING
?????????CONTROL_PARAMETERS???=?CONTROL
?????????MAT?=?MAT
?????????T1?=?T1
?????????mony3?=?mony3
?????????WA_PO??????????????=?WA_PO????"將ZDEMO_H改為ZQQ
*?????????x1?=?X1
*?????????NAME1?=?X2
???????TABLES
?????????ITPO??????????=?ITPO??"改為ZLFTABLE
?????????EXCEPTIONS
?????????FORMATTING_ERROR?????=?1
?????????INTERNAL_ERROR???????=?2
?????????SEND_ERROR???????????=?3
?????????USER_CANCELED????????=?4
?????????OTHERS???????????????=?5.
*??錯誤處理
??IF?SY-SUBRC?<>?0.
????MESSAGE?ID?SY-MSGID?TYPE?SY-MSGTY?NUMBER?SY-MSGNO
????????????WITH?SY-MSGV1?SY-MSGV2?SY-MSGV3?SY-MSGV4.
??ENDIF.
*?顯示預覽
??CALL?FUNCTION?'SSF_CLOSE'
????EXCEPTIONS
??????FORMATTING_ERROR?=?1
??????INTERNAL_ERROR???=?2
??????SEND_ERROR???????=?3
??????OTHERS???????????=?4.
*?錯誤處理
??IF?SY-SUBRC?<>?0.
????MESSAGE?ID?SY-MSGID?TYPE?SY-MSGTY?NUMBER?SY-MSGNO
????????????WITH?SY-MSGV1?SY-MSGV2?SY-MSGV3?SY-MSGV4.
??ENDIF.
ENDFORM.????????????????????"?print_out
*loop?at?ITPO.
*以下是用于與單據聯接的
*---------------------------------------------------------------------*
*???????FORM?ENTRY
*---------------------------------------------------------------------*
FORM?ENTRY?USING?RETURN_CODE?US_SCREEN.
??PERFORM?DATA_RETRIEVAL?USING?NAST-OBJKY.
??PERFORM?PRINT_OUT?USING?'ZDEMO_POTEST2_STRUCTURE'.
ENDFORM.????????????????????"ENTRY
總結
- 上一篇: SAP中寻找增强的实现方法
- 下一篇: alv导出本地文件DUMP