本人诚心接ABAP远程开发任务,价格公道,有需要的联系我,欢迎个人,甲方爸爸,乙方私信联系。
基本每个上公司上了PP 模块的都会有一个BOM查询报表
SE37->CS_BOM_EXPL_KND_V1 (展开销售BOM的函数)
DATA: LT_STB LIKE STPOX OCCURS 0 WITH HEADER LINE .
DATA: LT_MATCAT LIKE CSCMAT OCCURS 0 WITH HEADER LINE .
CALL FUNCTION 'CS_BOM_EXPL_KND_V1'
EXPORTING
VBELN = IV_VBELN "销售订单号
VBPOS = IV_POSNR "销售订单行号
CAPID = P_CAPID "bom应用程序
DATUV = P_BUDAT "有效期
MKTLS = 'X'
MEHRS = IV_MEHRS " X标识多层展开到底,空为单层展开
MTNRV = IV_MATNR
WERKS = IV_WERKS
STLAL = P_STLAL "可选BOM
TABLES
STB = LT_STB
MATCAT = LT_MATCAT
EXCEPTIONS
MATERIAL_NOT_FOUND = 4
NO_PLANT_DATA = 8
NO_BOM_FOUND = 12
NO_SUITABLE_BOM_FOUND = 16
ALT_NOT_FOUND = 24
MISSING_AUTHORIZATION = 28
CONVERSION_ERROR = 36.
IF LT_STB[] IS NOT INITIAL .
LOOP AT LT_STB .
CLEAR GS_DATA.
GS_DATA-PSITP = LT_STB-STLTY. "项目类别
GS_DATA-SPOSN = LT_STB-STLNR. "BOM 项目号
GS_DATA-STLAN = LT_STB-STLAN. "bom 用途
GS_DATA-STLAL = P_STLAL. "可选bom
GS_DATA-PLNBEZ = IV_MATNR. "顶层物料编码
GS_DATA-KDAUF = IV_VBELN. "销售订单
GS_DATA-KDPOS = IV_POSNR. "销售订单项目
GS_DATA-WERKS = IV_WERKS. "工厂
LV_STUFE = LT_STB-STUFE.
LV_WEGXX = LT_STB-WEGXX.
CONDENSE: LV_STUFE, LV_WEGXX.
CONCATENATE LV_STUFE '_' LV_WEGXX INTO GS_DATA-BOMLEV. "BOM 层级
*这一段是根据子物料找他的父物料,就是将 LT_MATCAT 和 LT_STB关联起来
READ TABLE LT_MATCAT
WITH KEY INDEX = LT_STB-TTIDX.
IF SY-SUBRC = 0 .
GS_DATA-MATNR = LT_MATCAT-MATNR. "父阶物料编码
SELECT SINGLE MAKTX INTO GS_DATA-MATNR_MAKTX "父阶物料描述
FROM MAKT
WHERE MATNR = GS_DATA-MATNR
AND SPRAS = SY-LANGU.
GS_DATA-SBOMF = LT_MATCAT-STKTX. "销售BOM创建标识
ENDIF.
GS_DATA-MATNR1 = LT_STB-IDNRK. "组件物料号
GS_DATA-MATNR1_MAKTX = LT_STB-OJTXP. "组件物料描述
GS_DATA-MENGE = LT_STB-MENGE. "组件数量
GS_DATA-MEINS = LT_STB-MMEIN. "组件计量单位
GS_DATA-AACOD = LT_STB-POTX1. "属性代码
IF IV_MEHRS IS NOT INITIAL .
GS_DATA-ZTYPE = '多层展开'. "展开类型
ELSE.
GS_DATA-ZTYPE = '单层展开'. "展开类型
ENDIF.
GS_DATA-ZZGXM = LT_STB-SORTF. "工序码
GS_DATA-ECNNO = LT_STB-AENNR. "ECN码
GS_DATA-FILLS = LT_STB-SCHGT. "散装物料
GS_DATA-COSTF = LT_STB-SANKA. "与成本相关标识
GS_DATA-VIRTS = LT_STB-ITSOB. "虚设件
GS_DATA-REPLA = LT_STB-ALPGR. "替代项目组
GS_DATA-PROIS = LT_STB-ALPRF. "优先级
GS_DATA-STATG = LT_STB-ALPST. "策略
GS_DATA-ACAIL = LT_STB-EWAHR. "使用可能性
APPEND GS_DATA TO GT_DATA.
ENDLOOP.
SE37-->CS_BOM_EXPL_MAT_V2 (物料BOM展开函数)
DATA: LT_STB LIKE STPOX OCCURS 0 WITH HEADER LINE .
DATA: LT_MATCAT LIKE CSCMAT OCCURS 0 WITH HEADER LINE .
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
CAPID = P_CAPID " BOM应用
DATUV = P_BUDAT " 有效起始日
EHNDL = '1'
EMENG = P_MENGE " 需求数量
MEHRS = IV_MEHRS " 多层展开
MMORY = '1' " 是否使用缓存
MTNRV = IV_MATNR " 展开物料号
STLAN = '1' " BOM用途
STLAL = P_STLAL
WERKS = IV_WERKS " 物料所在工厂
TABLES
STB = LT_STB
MATCAT = LT_MATCAT
EXCEPTIONS
ALT_NOT_FOUND = 1
CALL_INVALID = 2
MATERIAL_NOT_FOUND = 3
MISSING_AUTHORIZATION = 4
NO_BOM_FOUND = 5
NO_PLANT_DATA = 6
NO_SUITABLE_BOM_FOUND = 7
CONVERSION_ERROR = 8
OTHERS = 9.
IF LT_STB[] IS NOT INITIAL .
LOOP AT LT_STB .
CLEAR GS_DATA.
GS_DATA-PSITP = LT_STB-STLTY. "项目类别
GS_DATA-SPOSN = LT_STB-STLNR. "BOM 项目号
GS_DATA-STLAN = LT_STB-STLAN. "bom 用途
GS_DATA-STLAL = P_STLAL. "可选bom
GS_DATA-PLNBEZ = IV_MATNR. "顶层物料编码
* gs_data-kdauf = iv_vbeln. "销售订单
* gs_data-kdpos = iv_posnr. "销售订单项目
LV_STUFE = LT_STB-STUFE.
LV_WEGXX = LT_STB-WEGXX.
CONDENSE: LV_STUFE, LV_WEGXX.
CONCATENATE LV_STUFE '_' LV_WEGXX INTO GS_DATA-BOMLEV. "BOM 层级
GS_DATA-WERKS = IV_WERKS. "工厂
READ TABLE LT_MATCAT
WITH KEY INDEX = LT_STB-TTIDX.
IF SY-SUBRC = 0 .
GS_DATA-MATNR = LT_MATCAT-MATNR. "父阶物料编码
SELECT SINGLE MAKTX INTO GS_DATA-MATNR_MAKTX "父阶物料描述
FROM MAKT
WHERE MATNR = GS_DATA-MATNR
AND SPRAS = SY-LANGU.
GS_DATA-SBOMF = LT_MATCAT-STKTX. "销售BOM创建标识
ENDIF.
GS_DATA-MATNR1 = LT_STB-IDNRK. "组件物料号
GS_DATA-MATNR1_MAKTX = LT_STB-OJTXP. "组件物料描述
GS_DATA-MENGE = LT_STB-MENGE. "组件数量
GS_DATA-MEINS = LT_STB-MMEIN. "组件计量单位
GS_DATA-AACOD = LT_STB-POTX1. "属性代码
IF IV_MEHRS IS NOT INITIAL .
GS_DATA-ZTYPE = '多层展开'. "展开类型
ELSE.
GS_DATA-ZTYPE = '单层展开'. "展开类型
ENDIF.
GS_DATA-ZZGXM = LT_STB-SORTF. "工序码
GS_DATA-ECNNO = LT_STB-AENNR. "ECN码
GS_DATA-FILLS = LT_STB-SCHGT. "散装物料
GS_DATA-COSTF = LT_STB-SANKA. "与成本相关标识
GS_DATA-VIRTS = LT_STB-ITSOB. "虚设件
GS_DATA-REPLA = LT_STB-ALPGR. "替代项目组
GS_DATA-PROIS = LT_STB-ALPRF. "优先级
GS_DATA-STATG = LT_STB-ALPST. "策略
GS_DATA-ACAIL = LT_STB-EWAHR. "使用可能性
APPEND GS_DATA TO GT_DATA.
ENDLOOP.